@xsolla/payment-client-core 0.1.2 → 0.1.3
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/lib/core/payment/actions/next-action.interface.mjs +1 -1
- package/esm2020/lib/core/payment/actions/next-actions.mjs +1 -3
- package/esm2020/lib/core/payment/actions/show-fields/show-fields.action.token.mjs +3 -2
- package/esm2020/lib/core/payment/form/converters/converter.abstract.mjs +8 -6
- package/esm2020/lib/core/payment/form/converters/email.converter.mjs +3 -3
- package/esm2020/lib/core/payment/form/converters/zip.converter.mjs +4 -5
- package/esm2020/lib/core/payment/form/field-status.interface.mjs +2 -0
- package/esm2020/lib/core/payment/form/form-fields-status.interface.mjs +2 -0
- package/esm2020/lib/core/payment/form/input-event.enum.mjs +6 -0
- package/esm2020/lib/core/payment/form/validators/async-validator-fn.type.mjs +2 -0
- package/esm2020/lib/core/payment/form/validators/convert.function.mjs +6 -14
- package/esm2020/lib/core/payment/form/validators/email-validator.mjs +3 -4
- package/esm2020/lib/core/payment/form/validators/required-validator.mjs +3 -4
- package/esm2020/lib/core/payment/form/validators/validation-error.interface.mjs +1 -1
- package/esm2020/lib/core/payment/payment.interface.mjs +1 -1
- package/esm2020/lib/core/payment/payment.service.mjs +35 -40
- package/esm2020/lib/core/payment/sync/sync-response.class.mjs +7 -4
- package/esm2020/lib/core/payment/sync/sync.service.mjs +4 -10
- package/esm2020/lib/core-library.service.mjs +3 -4
- package/fesm2015/xsolla-payment-client-core.mjs +65 -110
- package/fesm2015/xsolla-payment-client-core.mjs.map +1 -1
- package/fesm2020/xsolla-payment-client-core.mjs +65 -109
- package/fesm2020/xsolla-payment-client-core.mjs.map +1 -1
- package/lib/core/payment/actions/next-action.interface.d.ts +1 -2
- package/lib/core/payment/form/converters/converter.abstract.d.ts +4 -1
- package/lib/core/payment/form/converters/email.converter.d.ts +1 -1
- package/lib/core/payment/form/field-status.interface.d.ts +7 -0
- package/lib/core/payment/form/form-fields-status.interface.d.ts +4 -0
- package/lib/core/payment/form/validators/async-validator-fn.type.d.ts +4 -0
- package/lib/core/payment/form/validators/convert.function.d.ts +1 -1
- package/lib/core/payment/form/validators/email-validator.d.ts +1 -1
- package/lib/core/payment/form/validators/required-validator.d.ts +1 -1
- package/lib/core/payment/form/validators/validation-error.interface.d.ts +0 -1
- package/lib/core/payment/payment.interface.d.ts +3 -1
- package/lib/core/payment/payment.service.d.ts +8 -3
- package/lib/core/payment/sync/sync-response.class.d.ts +2 -4
- package/package.json +1 -1
- package/xsolla-payment-client-core-0.1.3.tgz +0 -0
- package/esm2020/lib/core/payment/actions/show-field-state/show-field-state.action.class.mjs +0 -12
- package/esm2020/lib/core/payment/actions/show-field-state/show-field-state.action.token.mjs +0 -13
- package/esm2020/lib/core/payment/actions/show-field-state/show-field-state.action.type.mjs +0 -2
- package/esm2020/lib/core/payment/form/input-events.enum.mjs +0 -6
- package/esm2020/lib/core/payment/form/validators/errors-codes.enum.mjs +0 -8
- package/esm2020/lib/core/payment/show-field-state.interface.mjs +0 -2
- package/lib/core/payment/actions/show-field-state/show-field-state.action.class.d.ts +0 -8
- package/lib/core/payment/actions/show-field-state/show-field-state.action.token.d.ts +0 -4
- package/lib/core/payment/actions/show-field-state/show-field-state.action.type.d.ts +0 -11
- package/lib/core/payment/form/validators/errors-codes.enum.d.ts +0 -6
- package/lib/core/payment/show-field-state.interface.d.ts +0 -8
- package/xsolla-payment-client-core-0.1.2.tgz +0 -0
- /package/lib/core/payment/form/{input-events.enum.d.ts → input-event.enum.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xsolla-payment-client-core.mjs","sources":["../../../packages/payment-client-core/src/lib/core/payment/form/masks-functions.map.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/app-error.class.ts","../../../packages/payment-client-core/src/lib/core/settings/empty-utils-response.error.ts","../../../packages/payment-client-core/src/lib/core/window.token.ts","../../../packages/payment-client-core/src/lib/core/http/secure-api/api-url.const.ts","../../../packages/payment-client-core/src/lib/core/http/secure-api/secure-api.service.ts","../../../packages/payment-client-core/src/lib/core/settings/settings.service.ts","../../../packages/payment-client-core/src/lib/core/country/country.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/response-error.class.ts","../../../packages/payment-client-core/src/lib/core/boolean-number.enum.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods.service.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods-response.class.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods-response.token.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods.service.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance-response.class.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance-response.token.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance.service.ts","../../../packages/payment-client-core/src/lib/core/url/url.service.ts","../../../packages/payment-client-core/src/lib/core/payment/config/config.service.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-comand.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/field-names.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/submit-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/is-submit-response.function.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-field-state/show-field-state.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/form/input-events.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/initialize-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/initialize-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-errors/show-errors.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-fields/show-fields.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-fields/show-fields.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/check-status/check-status.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/check-status/check-status.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/status-updated/status-updated.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/status-updated/status-updated.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/redirect.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/redirect.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-errors/show-errors.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-field-state/show-field-state.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/next-actions.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/next-action.service.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/initialize.service.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-api-part-request.abstract.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/token-error.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/request/submit-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/request/submit-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/submit-response.token.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/terminal-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/default-terminal-error.class.ts","../../../packages/payment-client-core/src/lib/core/device-finger-print/device-finger-print.service.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/submit.service.ts","../../../packages/payment-client-core/src/lib/core/payment/emit-data.service.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-request.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/sync-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/sync-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/sync-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/sync-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/sync.service.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/control-config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/text-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/convert.function.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/errors-codes.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/email-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/required-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/converter.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/email.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/restricted-value.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/zip.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/converters-map.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/control-config.service.ts","../../../packages/payment-client-core/src/lib/core/payment/form/form.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-search-param.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/required-status-search-params.const.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-search-params.map.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-api-part.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/request/status-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/request/status-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-groups.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/response/status-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/response/status-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-request.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/request/check-status-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/request/check-status-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/response/check-status-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/response/check-status-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/check-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/websocket-status/websocket-status.enum.ts","../../../packages/payment-client-core/src/lib/core/web-socket/web-socket-client-type.enum.ts","../../../packages/payment-client-core/src/lib/core/web-socket/nchan-web-socket.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/elk-error-types.enum.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/tagged-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/ws-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/elk/elk-logger.service.ts","../../../packages/payment-client-core/src/lib/core/web-socket/centrifugo-web-socket.service.ts","../../../packages/payment-client-core/src/lib/core/web-socket/web-socket.factory.ts","../../../packages/payment-client-core/src/lib/core/payment/status/websocket-status/websocket-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/listen-status/listen-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/default-image-patterns.const.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/price.helpers.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/finance-details.class.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/finance-details-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/finance-details.service.ts","../../../packages/payment-client-core/src/lib/core/payment/payment.service.ts","../../../packages/payment-client-core/src/lib/core/legal/refund-policy.service.ts","../../../packages/payment-client-core/src/lib/core/legal/secure-connection.service.ts","../../../packages/payment-client-core/src/lib/core/legal/disclaimer.service.ts","../../../packages/payment-client-core/src/lib/core/legal/legal.service.ts","../../../packages/payment-client-core/src/lib/core-library.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/http-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/http-interceptor/http-exceptions.interceptor.ts","../../../packages/payment-client-core/src/lib/core/payment/form/form.module.ts","../../../packages/payment-client-core/src/lib/core-library.module.ts","../../../packages/payment-client-core/src/public-api.ts","../../../packages/payment-client-core/src/xsolla-payment-client-core.ts"],"sourcesContent":["export const masksFunctionsMap: { [fieldNameOrType: string]: () => string } = {\n zip: () => {\n const zipLength = 5;\n return new Array(zipLength).fill('9').join('');\n },\n};\n","export class AppError extends Error {\n public constructor(message: string) {\n super(message);\n }\n}\n","import { AppError } from '../exceptions-handling/errors/app-error.class';\n\nexport class EmptyUtilsResponseError extends AppError {\n public constructor() {\n super('Utils response is empty or not requested. Check your token.');\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ExtendedWindow } from './extended-window.interface';\n\nexport const windowToken: InjectionToken<ExtendedWindow> = new InjectionToken(\n 'window'\n);\n","export const defaultApiUrl = 'https://secure.xsolla.com/paystation2/api/';\nexport const sandboxApiUrl =\n 'https://sandbox-secure.xsolla.com/paystation2/api/';\n","import { Observable } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { windowToken } from '../../window.token';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { RequestOptions } from './options.interface';\nimport { defaultApiUrl, sandboxApiUrl } from './api-url.const';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecureApiClient {\n private isSandboxMode = false;\n\n public constructor(\n private readonly httpClient: HttpClient,\n @Inject(windowToken)\n private readonly window: ExtendedWindow\n ) {}\n\n public setSandboxMode(isSandboxMode: boolean): void {\n this.isSandboxMode = isSandboxMode;\n }\n\n public get<T>(url: string, options?: RequestOptions): Observable<T> {\n return this.httpClient.get<T>(`${this.baseUrl}${url}`, options);\n }\n\n public post<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.post<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public patch<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.patch<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public put<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.put<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public delete<T>(url: string, options?: RequestOptions): Observable<T> {\n return this.httpClient.delete<T>(`${this.baseUrl}${url}`, options);\n }\n\n public get baseUrl(): string {\n let predefinedBaseUrl: string | null = null;\n\n try {\n predefinedBaseUrl = this.window.localStorage.getItem('devApiUrl');\n } catch (e: unknown) {\n console.warn('localStorage is not available');\n }\n\n if (predefinedBaseUrl) {\n return predefinedBaseUrl;\n }\n\n return this.isSandboxMode ? sandboxApiUrl : defaultApiUrl;\n }\n}\n","import { firstValueFrom } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { HttpParams } from '@angular/common/http';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { DeepReadonly } from '../deep-readonly.type';\nimport { InitConfiguration } from './configuration.interface';\nimport { EmptyUtilsResponseError } from './empty-utils-response.error';\nimport { User } from './user.interface';\nimport { Settings } from './settings.interface';\nimport { Purchase } from './purchase.interface';\nimport { Project } from './project.interface';\nimport { UtilsResponse } from './utils-response.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SettingsService {\n public get project(): DeepReadonly<Project> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.project;\n }\n\n public get purchase(): DeepReadonly<Purchase> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.purchase;\n }\n\n public get settings(): DeepReadonly<Settings> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n if (this.response?.purchase_external_id) {\n return {\n ...this.response.settings,\n purchase_external_id: this.response.purchase_external_id,\n };\n }\n\n return this.response?.settings;\n }\n\n public get user(): DeepReadonly<User> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.user;\n }\n\n public get utilsResponse(): DeepReadonly<UtilsResponse> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response;\n }\n\n public get isEmpty(): boolean {\n return !this.response;\n }\n\n public get token(): string {\n return this._token;\n }\n\n public get hasResponse(): boolean {\n return !!this.response;\n }\n\n public isInitialized = false;\n\n private response!: DeepReadonly<UtilsResponse> | undefined;\n\n private _token = '';\n\n private sandboxMode = false;\n\n public constructor(private readonly secureApi: SecureApiClient) {}\n\n public async init(configuration: InitConfiguration): Promise<void> {\n if (!configuration.token) {\n return Promise.reject('token is missing');\n }\n\n this._token = configuration.token;\n this.sandboxMode = !!configuration.sandbox;\n\n await this.sendRequest(this.token);\n\n this.isInitialized = true;\n }\n\n public isSandboxMode(): boolean {\n return this.sandboxMode;\n }\n\n private async sendRequest(token: string): Promise<void> {\n const params = new HttpParams().set('access_token', token);\n\n this.secureApi.setSandboxMode(this.isSandboxMode());\n\n this.response = await firstValueFrom(\n this.secureApi.get<UtilsResponse>('utils', { params })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CountryService {\n private userDefinedCountry: string | null = null;\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public setCountry(country: string): void {\n this.userDefinedCountry = country;\n }\n\n public getCountry(): string {\n return this.userDefinedCountry ?? this.getTokenCountry();\n }\n\n private getTokenCountry(): string {\n return this.settingsService.user.country.value;\n }\n}\n","import { AppError } from './app-error.class';\n\nexport class ResponseError extends AppError {\n public constructor(message?: string) {\n super('Response failed' + (message ? `: \"${message}\".` : '.'));\n }\n}\n","export enum BooleanNumber {\n false = 0,\n true = 1,\n}\n","import { BooleanNumber } from '../boolean-number.enum';\nimport { PaymentMethodApi } from './payment-method-api.interface';\nimport { PaymentMethod } from './payment-method.interface';\nimport { PaymentMethodsApi } from './payment-methods-api.interface';\n\nexport class PaymentMethodsResponse {\n public readonly top: PaymentMethod[];\n public readonly especial: PaymentMethod[];\n public readonly remained: PaymentMethod[];\n public readonly remainedCount: { total: number; visible: number };\n\n public constructor(paymentMethods: PaymentMethodsApi) {\n this.especial = paymentMethods.especial.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.top = paymentMethods.top.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.remained = paymentMethods.remained.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.remainedCount = {\n total: paymentMethods.remained_count.total,\n visible: paymentMethods.remained_count.visible,\n };\n }\n\n private mapPaymentMethod(method: PaymentMethodApi): PaymentMethod {\n return {\n id: method.id,\n rank: method.rank,\n name: method.name,\n aliases: method.aliases,\n categories: method.cat,\n isVisible: method.is_visible,\n recommended: method.recommended === BooleanNumber.true,\n enabledSaveAccount: method.enabled_save_account,\n iconName: method.switch_icon_name,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { PaymentMethodsResponse } from './payment-methods-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof PaymentMethodsResponse>;\n\nexport type PaymentMethodsResponseFactory = (\n ...args: ResponseParameters\n) => PaymentMethodsResponse;\n\nexport const paymentMethodsResponseFactoryToken: InjectionToken<PaymentMethodsResponseFactory> =\n new InjectionToken<PaymentMethodsResponseFactory>('PaymentMethodsResponse');\n\nexport const paymentMethodsResponseFactoryProvider: ValueProvider = {\n provide: paymentMethodsResponseFactoryToken,\n useValue: (...args: ResponseParameters) =>\n new PaymentMethodsResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { CountryService } from '../country/country.service';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport { PaymentMethod } from './payment-method.interface';\nimport { PaymentMethodsRequestParams } from './payment-methods-request-params.interface';\nimport { PaymentMethodsResponse } from './payment-methods-response.class';\nimport { PaymentMethodsResponseApi } from './payment-methods-response.interface';\nimport {\n PaymentMethodsResponseFactory,\n paymentMethodsResponseFactoryToken,\n} from './payment-methods-response.token';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentMethodsService {\n private readonly apiRoute = 'remained_payment_methods';\n\n private readonly cache = new Map<string, Promise<PaymentMethodsResponse>>();\n\n public constructor(\n @Inject(paymentMethodsResponseFactoryToken)\n private readonly responseFactory: PaymentMethodsResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getList(): Promise<PaymentMethod[]> {\n const response = await this.request();\n return response.remained;\n }\n\n public async getQuickMethods(): Promise<PaymentMethod[]> {\n const response = await this.request();\n return response.especial;\n }\n\n private async request(): Promise<PaymentMethodsResponse> {\n const requestParams: PaymentMethodsRequestParams = {\n access_token: this.settingsService.token,\n country: this.countryService.getCountry(),\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<PaymentMethodsResponseApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n map((response) => this.responseFactory(response.payment_methods))\n )\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n}\n","import { SavedMethodsResponseApi } from './saved-methods-response.interface';\nimport { SavedMethodApi } from './saved-method-api.interface';\nimport { SavedMethod } from './saved-method.interface';\n\nexport class SavedMethodsResponse {\n public readonly list: SavedMethod[];\n\n public constructor(savedMethods: SavedMethodsResponseApi) {\n this.list = savedMethods.list.map((method) => this.mapSavedMethod(method));\n }\n\n private mapSavedMethod(method: SavedMethodApi): SavedMethod {\n return {\n currency: method.currency,\n form: method.form,\n id: method.id,\n isSelected: method.isSelected,\n isBabkaPay: method.is_babka_pay,\n name: method.name,\n pid: method.pid,\n psName: method.psName,\n recurrentType: method.recurrent_type,\n replaced: method.replaced,\n type: method.type,\n cardExpiryDate: method.card_expiry_date,\n iconName: method.switch_icon_name,\n partner: method.partner,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SavedMethodsResponse } from './saved-methods-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof SavedMethodsResponse>;\n\nexport type SavedMethodsResponseFactory = (\n ...args: ResponseParameters\n) => SavedMethodsResponse;\n\nexport const savedMethodsResponseFactoryToken: InjectionToken<SavedMethodsResponseFactory> =\n new InjectionToken<SavedMethodsResponseFactory>('SavedMethodsResponse');\n\nexport const savedMethodsResponseFactoryProvider: ValueProvider = {\n provide: savedMethodsResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new SavedMethodsResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport { SavedMethodsRequestParams } from './saved-methods-request-params.interface';\nimport { SavedMethodsResponseApi } from './saved-methods-response.interface';\nimport {\n SavedMethodsResponseFactory,\n savedMethodsResponseFactoryToken,\n} from './saved-methods-response.token';\nimport { SavedMethodsResponse } from './saved-methods-response.class';\nimport { SavedMethod } from './saved-method.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SavedMethodsService {\n private readonly apiRoute = 'savedmethods';\n\n private readonly cache = new Map<string, Promise<SavedMethodsResponse>>();\n\n public constructor(\n @Inject(savedMethodsResponseFactoryToken)\n private readonly responseFactory: SavedMethodsResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getList(): Promise<SavedMethod[]> {\n const response = await this.request();\n return response.list;\n }\n\n private async request(): Promise<SavedMethodsResponse> {\n const requestParams: SavedMethodsRequestParams = {\n access_token: this.settingsService.token,\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<SavedMethodsResponseApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(map((response) => this.responseFactory(response)))\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n}\n","import { UserBalanceApi } from './user-balance-api.interface';\n\nexport class UserBalanceResponse {\n public readonly isEnoughUserBalance: boolean;\n public readonly isEnoughUserRecurrentBalance: boolean;\n\n public constructor(userBalance: UserBalanceApi) {\n this.isEnoughUserBalance = userBalance.is_enough_user_balance ?? false;\n this.isEnoughUserRecurrentBalance =\n userBalance.is_enough_user_recurrent_balance ?? false;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { UserBalanceResponse } from './user-balance-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof UserBalanceResponse>;\n\nexport type UserBalanceResponseFactory = (\n ...args: ResponseParameters\n) => UserBalanceResponse;\n\nexport const userBalanceResponseFactoryToken: InjectionToken<UserBalanceResponseFactory> =\n new InjectionToken<UserBalanceResponseFactory>('UserBalanceResponse');\n\nexport const userBalanceResponseFactoryProvider: ValueProvider = {\n provide: userBalanceResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new UserBalanceResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport {\n UserBalanceResponseFactory,\n userBalanceResponseFactoryToken,\n} from './user-balance-response.token';\nimport { UserBalanceResponse } from './user-balance-response.class';\nimport { UserBalanceRequestParams } from './user-balance-request-params.interface';\nimport { UserBalanceApi } from './user-balance-api.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserBalanceService {\n private readonly apiRoute = 'balance/sufficiency';\n\n private readonly cache = new Map<string, Promise<UserBalanceResponse>>();\n\n public constructor(\n @Inject(userBalanceResponseFactoryToken)\n private readonly responseFactory: UserBalanceResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getUserBalance(): Promise<UserBalanceResponse> {\n return this.request();\n }\n\n private async request(): Promise<UserBalanceResponse> {\n const requestParams: UserBalanceRequestParams = {\n access_token: this.settingsService.token,\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<UserBalanceApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(map((response) => this.responseFactory(response)))\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SearchParams } from './search-params.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UrlService {\n public addSearchParams(url: string, params: SearchParams = {}): string {\n if (!url) {\n return '';\n }\n\n const urlObject = new URL(url);\n for (const [key, value] of Object.entries(params)) {\n urlObject.searchParams.set(key, value);\n }\n\n return urlObject.toString();\n }\n\n public getSearchParams(url: string): SearchParams {\n if (!url) {\n return {};\n }\n\n const urlObject = new URL(url);\n const searchParams: SearchParams = {};\n\n for (const [key, value] of urlObject.searchParams) {\n searchParams[key] = value;\n }\n\n return searchParams;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../../settings/settings.service';\nimport { UrlService } from '../../url/url.service';\nimport { PaymentConfig } from '../payment-config.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentConfigService {\n public constructor(\n private readonly urlService: UrlService,\n private readonly settingsService: SettingsService\n ) {}\n\n public enrich(config: PaymentConfig): PaymentConfig {\n if (!config.returnUrl) {\n throw new Error('URL is not provided in payment config');\n }\n\n return {\n ...config,\n returnUrl: this.enrichReturnUrl(config.returnUrl),\n };\n }\n\n private enrichReturnUrl(returnUrl: string): string {\n return this.urlService.addSearchParams(returnUrl, {\n token: this.settingsService.token,\n });\n }\n}\n","export enum XpsCommand {\n form = 'form',\n check = 'check',\n status = 'status',\n checkout = 'checkout',\n account = 'account',\n create = 'create',\n}\n","export enum FieldNames {\n address1 = 'address1',\n address2 = 'address2',\n address = 'address',\n allowRecurrentSubscription = 'allowRecurrentSubscription',\n allowSubscription = 'allowSubscription',\n apt = 'apt',\n availableCardTypes = 'available_card_types',\n bank = 'bank',\n birthDate = 'birth_date',\n cardMonth = 'card_month',\n cardYear = 'card_year',\n cardNumber = 'card_number',\n cardholdername = 'cardholdername',\n city = 'city',\n couponCode = 'couponCode',\n cpfName = 'cpf_name',\n cpfNumber = 'cpf_number',\n cvv = 'cvv',\n description = 'description',\n email = 'email',\n psEmail = 'psEmail',\n euCheck = 'eu_check',\n extraCvv = 'extra_cvv',\n extraCardNumber = 'extra_card_number',\n extraCardType = 'extra_card_type',\n fName = 'f_name',\n installments = 'installments',\n lName = 'l_name',\n needInstallments = 'needInstallments',\n personId = 'person_id',\n personIdAr = 'person_id_ar',\n personIdCo = 'person_id_co',\n phone = 'phone',\n purchaseDescription = 'purchaseDescription',\n recurrentType = 'recurrent_type',\n rockstarTaxes = 'rockstar_taxes',\n state = 'state',\n street = 'street',\n streetNumber = 'street_number',\n take2Taxes = 'take2_taxes',\n termsAndConditions = 'termsAndConditions',\n termsAndConditionsAtariPp = 'termsAndConditionsAtariPP',\n termsAndConditionsAtariTc = 'termsAndConditionsAtariTC',\n termsAndConditionsHtcEula = 'termsAndConditionsHtcEula',\n termsAndConditionsRobloxEula = 'termsAndConditionsRobloxEula',\n termsAndConditionsRolandEula = 'termsAndConditionsRolandEula',\n termsAndConditionsDeusLoVultEula = 'termsAndConditionsDeusLoVultEula',\n termsAndConditionsOnzenga = 'termsAndConditionsOnzenga',\n xsollaTipsAmount = 'xsollaTipsAmount',\n zip = 'zip',\n allowSave = 'allowSave',\n koreaLimitsInstruction = 'korea_limits_instruction',\n tokenApplePay = 'token_applepay',\n fixInvoice = 'fix_invoice',\n fixPid = 'fix_pid',\n signature = 'signature',\n qr = 'qr',\n sum = 'sum',\n out = 'out',\n tinkoffDisclaimer = 'ps.tinkoff.disclaimer',\n}\n","import { XpsResponse } from '../../xps-response.interface';\nimport { Field } from '../../field.interface';\nimport { Invoice } from '../../invoice.interface';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { FieldNames } from '../../field-names.enum';\n\nexport class SubmitResponse {\n public readonly parameters: XpsResponse;\n public readonly fields: Field[];\n public onlineBanking?: {\n url: string;\n };\n public readonly data?: unknown;\n public isNeedRedirect: boolean;\n\n public buyData: XpsResponse['buyData'];\n\n public signature?: string;\n public fixInvoice?: string;\n public hasFatalErrors?: boolean;\n public userSession?: Invoice;\n public pid: XpsResponse['pid'];\n public errors: XpsResponse['errors'];\n public summary: XpsResponse['summary'];\n public title: string;\n public currentCommand: XpsCommand | null;\n public messages: XpsResponse['messages'];\n\n public constructor(\n parameters: XpsResponse,\n public readonly responseNumber: number = 0\n ) {\n /* Todo split into properties */\n this.parameters = parameters;\n this.fields = Object.keys(parameters.form).map(\n (key: string): Field => parameters.form[key]\n );\n\n if (parameters.onlineBanking) {\n this.onlineBanking = {\n url: parameters.onlineBanking.value,\n };\n }\n\n this.isNeedRedirect =\n parameters.currentCommand === XpsCommand.account ||\n (parameters.currentCommand === XpsCommand.checkout &&\n Boolean(parameters.checkout));\n\n this.buyData = parameters.buyData;\n\n this.fixInvoice = this.fields.find(\n (field: Field) => field.name === FieldNames.fixInvoice\n )?.value;\n\n this.signature = this.fields.find(\n (field: Field) => field.name === FieldNames.signature\n )?.value;\n\n this.hasFatalErrors = parameters.textAll?.fatal;\n\n this.userSession = parameters.userSession;\n this.pid = parameters.pid;\n this.errors = parameters.errors;\n this.summary = parameters.summary;\n this.title = parameters.title;\n this.currentCommand = parameters.currentCommand;\n this.messages = parameters.messages;\n }\n}\n","import { SubmitResponse } from './submit-response.class';\n\nexport const isSubmitResponse = (value: unknown): value is SubmitResponse => {\n return value instanceof SubmitResponse;\n};\n","import { Action } from '../action.interface';\nimport { ShowFieldState } from '../../show-field-state.interface';\nimport {\n ShowFieldStateActionData,\n ShowFieldStateActionType,\n} from './show-field-state.action.type';\n\nexport class ShowFieldStateAction implements Action {\n public type: ShowFieldStateActionType = 'show_field_state';\n public data: ShowFieldStateActionData;\n\n public constructor(control: ShowFieldState) {\n this.data = {\n fieldName: control.fieldName,\n fieldState: control.fieldState,\n error: control.error,\n isFocused: control.isFocused,\n };\n }\n}\n","export enum InputEventName {\n blur = 'blur',\n focus = 'focus',\n}\n","import { Field } from '../field.interface';\nimport { PaymentForm } from '../payment-form.interface';\nimport { XpsResponse, XpsStatus } from '../xps-response.interface';\n\nexport class InitializeResponse {\n public readonly paymentForm: PaymentForm | null = null;\n\n public constructor(response: XpsResponse) {\n this.paymentForm = this.extractPaymentForm(response);\n }\n\n private extractPaymentForm(response: XpsResponse): PaymentForm | null {\n if (!response) {\n return null;\n }\n\n return {\n totalAmount: response.buyData.sum,\n currency: response.buyData.currency,\n fields: Object.keys(response.form).map(\n (key: string): Field => (response as XpsResponse).form[key]\n ),\n taxDisclaimer: response.taxDisclaimer,\n number: response.number,\n barcode: response.barcode,\n instruction: response.instruction,\n offers: response.offers,\n error: response.error,\n errors: response.errors,\n restrictions: response.restrictions,\n info: response.info,\n buyData: response.buyData,\n pid: response.pid,\n messages: response.messages ?? [],\n title: response.title,\n summary: response.summary,\n skipForm: response.skipForm,\n isSavedMethodPayment: !!response.form?.saved_method_id,\n couponCode: response.form?.couponCode?.value || '',\n publicId: response.public_id,\n skipCheckout: response.skipCheckout,\n koreaNotification: response.form.korea_limits_instruction,\n isCheckout: response.isCheckout,\n categories: response.categories,\n hasFatalErrors: response.textAll?.fatal,\n userSession: response.userSession,\n statusText: (response.status as XpsStatus)?.statusData?.stateText ?? null,\n country: response.country ? response.country.iso : null,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { InitializeResponse } from './initialize-response.class';\n\nexport type ResponseParameters = ConstructorParameters<\n typeof InitializeResponse\n>;\n\nexport type InitializeResponseFactory = (\n ...args: ResponseParameters\n) => InitializeResponse;\n\nexport const initializeResponseFactoryToken: InjectionToken<InitializeResponseFactory> =\n new InjectionToken<InitializeResponseFactory>('InitializeResponse');\n\nexport const initializeResponseFactoryProvider: ValueProvider = {\n provide: initializeResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new InitializeResponse(...args),\n};\n","import { XpsError } from '../../xps-error.interface';\nimport { Action } from '../action.interface';\nimport {\n ShowErrorsActionData,\n ShowErrorsActionType,\n} from './show-errors.action.type';\n\nexport class ShowErrorsAction implements Action {\n public type: ShowErrorsActionType = 'show_errors';\n public data!: ShowErrorsActionData;\n\n public constructor(errors: XpsError[]) {\n this.data = {\n errors,\n };\n }\n}\n","import { Action } from '../action.interface';\nimport {\n ShowFieldsActionData,\n ShowFieldsActionType,\n} from './show-fields.action.type';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsBoolean } from '../../../xps-boolean.enum';\n\nexport class ShowFieldsAction implements Action {\n public type: ShowFieldsActionType = 'show_fields';\n public data: ShowFieldsActionData = {\n fields: [],\n errors: [],\n messages: [],\n order: {},\n };\n\n public constructor(submitResponse: SubmitResponse) {\n this.data.fields = submitResponse.fields.filter(\n (field) => field?.isVisible === XpsBoolean.true\n );\n this.data.errors = submitResponse.errors;\n this.data.messages = submitResponse.messages;\n this.data.order = submitResponse.summary;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ShowFieldsAction } from './show-fields.action.class';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsCommand } from '../../xps-comand.enum';\n\ntype RequestParameters = ConstructorParameters<typeof ShowFieldsAction>;\n\nexport const showFieldsActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('ShowFieldsAction');\n\nexport const showFieldsActionFactoryProvider: ValueProvider = {\n provide: showFieldsActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new ShowFieldsAction(...args),\n isSuitable: (response: SubmitResponse): boolean => {\n return response.currentCommand === XpsCommand.check;\n },\n },\n};\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { Action } from '../action.interface';\nimport {\n CheckStatusActionData,\n CheckStatusActionType,\n} from './check-status.action.type';\nimport { XpsStatus } from '../../xps-response.interface';\n\nexport class CheckStatusAction implements Action {\n public type: CheckStatusActionType = 'check_status';\n public data!: CheckStatusActionData;\n\n public constructor(submitResponse: SubmitResponse) {\n const status = submitResponse.parameters.status as XpsStatus;\n\n this.data = {\n invoice: status?.invoice,\n signature: submitResponse.parameters.form.signature?.value,\n locale: submitResponse.parameters.form.locale?.value,\n testPs: submitResponse.parameters.form.testPs?.value,\n testXsolla: submitResponse.parameters.form.testXsolla?.value,\n testProject: submitResponse.parameters.form.testProject?.value,\n userReturnStatus: submitResponse.parameters.form.userReturnStatus?.value,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { CheckStatusAction } from './check-status.action.class';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsCommand } from '../../xps-comand.enum';\n\ntype RequestParameters = ConstructorParameters<typeof CheckStatusAction>;\n\nexport const checkStatusActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('CheckStatusAction');\n\nexport const checkStatusActionFactoryProvider: ValueProvider = {\n provide: checkStatusActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new CheckStatusAction(...args),\n isSuitable: (response: SubmitResponse): boolean => {\n return response.currentCommand === XpsCommand.status;\n },\n },\n};\n","import { Action } from '../action.interface';\nimport {\n StatusUpdatedActionData,\n StatusUpdatedActionType,\n} from './status-updated.action.type';\nimport { StatusResponse } from '../../status/status-request/response/status-response.class';\n\nexport class StatusUpdatedAction implements Action {\n public type: StatusUpdatedActionType = 'status_updated';\n public data!: StatusUpdatedActionData;\n\n public constructor(statusResponse: StatusResponse) {\n this.data = {\n statusState: statusResponse.status.statusState,\n invoice: statusResponse.status.invoice,\n isSuccess: statusResponse.status.isSuccess,\n isCanceled: statusResponse.status.isCanceled,\n group: statusResponse.status.group,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { StatusUpdatedAction } from './status-updated.action.class';\n\ntype RequestParameters = ConstructorParameters<typeof StatusUpdatedAction>;\n\nexport const statusUpdatedActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('StatusUpdatedAction');\n\nexport const statusUpdatedActionFactoryProvider: ValueProvider = {\n provide: statusUpdatedActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new StatusUpdatedAction(...args),\n isSuitable: () => false,\n },\n};\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { Action } from '../action.interface';\nimport { RedirectActionData, RedirectActionType } from './redirect.action.type';\n\nexport class RedirectAction implements Action {\n public type: RedirectActionType = 'redirect';\n public data!: RedirectActionData;\n\n public constructor(submitResponse: SubmitResponse) {\n this.data = {\n fields: submitResponse.fields,\n errors: submitResponse.errors,\n messages: submitResponse.messages,\n order: submitResponse.summary,\n invoiceId: submitResponse.fixInvoice,\n redirect: this.getRedirect(submitResponse),\n };\n }\n\n private getRedirect(\n submitResponse: SubmitResponse\n ): RedirectActionData['redirect'] {\n return {\n redirectUrl: submitResponse.parameters.checkout.action,\n data: submitResponse.parameters.checkout.data,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { RedirectAction } from './redirect.action.class';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsCommand } from '../../xps-comand.enum';\n\ntype RequestParameters = ConstructorParameters<typeof RedirectAction>;\n\nexport const redirectActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('RedirectAction');\n\nexport const redirectActionFactoryProvider: ValueProvider = {\n provide: redirectActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new RedirectAction(...args),\n isSuitable: (response: SubmitResponse): boolean => {\n return (\n response.currentCommand === XpsCommand.account ||\n (response.currentCommand === XpsCommand.checkout &&\n Boolean(response.parameters.checkout))\n );\n },\n },\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ShowErrorsAction } from './show-errors.action.class';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\n\ntype RequestParameters = ConstructorParameters<typeof ShowErrorsAction>;\n\nexport const showErrorsActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('ShowErrorsAction');\n\nexport const showErrorsActionFactoryProvider: ValueProvider = {\n provide: showErrorsActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new ShowErrorsAction(...args),\n isSuitable: (response: SubmitResponse): boolean => {\n return Boolean(response.errors?.length);\n },\n },\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ShowFieldStateAction } from './show-field-state.action.class';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\n\ntype RequestParameters = ConstructorParameters<typeof ShowFieldStateAction>;\n\nexport const showFieldStateActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('ShowFieldStateAction');\n\nexport const showFieldStateActionFactoryProvider: ValueProvider = {\n provide: showFieldStateActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new ShowFieldStateAction(...args),\n isSuitable: (): boolean => {\n return true;\n },\n },\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { showFieldsActionFactoryProvider } from './show-fields/show-fields.action.token';\nimport { checkStatusActionFactoryProvider } from './check-status/check-status.action.token';\nimport { statusUpdatedActionFactoryProvider } from './status-updated/status-updated.action.token';\nimport { Action } from './action.interface';\nimport { redirectActionFactoryProvider } from './redirect/redirect.action.token';\nimport { showErrorsActionFactoryProvider } from './show-errors/show-errors.action.token';\nimport { showFieldStateActionFactoryProvider } from './show-field-state/show-field-state.action.token';\n\nexport type NextActionTokens = ValueProvider[];\n\nexport const nextActionsToken = new InjectionToken<Action>('Action');\n\nexport const nextActions: NextActionTokens = [\n showFieldsActionFactoryProvider,\n checkStatusActionFactoryProvider,\n redirectActionFactoryProvider,\n];\n\nexport const flowUpdateNextActions: NextActionTokens = [\n statusUpdatedActionFactoryProvider,\n showErrorsActionFactoryProvider,\n showFieldStateActionFactoryProvider,\n];\n","import { Inject, Injectable, Injector, ValueProvider } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { NextAction } from './next-action.interface';\nimport { SubmitResponse } from '../submit/response/submit-response.class';\nimport { nextActionsToken, NextActionTokens } from './next-actions';\nimport { Action } from './action.interface';\nimport { ActionFactoryValue } from './action-factory-value.interface';\nimport { ShowErrorsAction } from './show-errors/show-errors.action.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NextActionService {\n private readonly flowUpdatesSubject = new Subject<NextAction>();\n\n private readonly nextActionsList: ActionFactoryValue[] = [];\n\n public get flowUpdates$(): Observable<NextAction> {\n return this.flowUpdatesSubject.asObservable();\n }\n\n public constructor(\n @Inject(nextActionsToken)\n private readonly nextActionTokens: NextActionTokens,\n private readonly injector: Injector\n ) {\n this.fillNextActionsList();\n }\n\n public getNextAction(submitResponse: SubmitResponse): NextAction | null {\n if (submitResponse.errors?.length) {\n this.emitFlowUpdates(new ShowErrorsAction(submitResponse.errors));\n }\n\n if (!submitResponse.currentCommand) {\n return null;\n }\n\n const nextActionFactory = this.findNextAction(submitResponse);\n\n if (nextActionFactory) {\n return nextActionFactory(submitResponse) as NextAction;\n }\n\n throw new Error('Next action is undefined.');\n }\n\n public emitFlowUpdates(action: NextAction): void {\n this.flowUpdatesSubject.next(action);\n }\n\n private fillNextActionsList(): void {\n this.nextActionTokens.forEach((nextAction: ValueProvider) => {\n const item = this.injector.get<ActionFactoryValue>(nextAction.provide);\n this.nextActionsList.push(item);\n });\n }\n\n private findNextAction(\n submitResponse: SubmitResponse\n ): ((...args: unknown[]) => Action) | undefined {\n const actionType = this.nextActionsList.find(\n (nextAction: ActionFactoryValue) => {\n return nextAction.isSuitable(submitResponse);\n }\n );\n\n if (!actionType) {\n return;\n }\n return actionType.factory;\n }\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map, tap } from 'rxjs';\nimport { CountryService } from '../../country/country.service';\nimport { ResponseError } from '../../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../../http/secure-api/secure-api.service';\nimport { SettingsService } from '../../settings/settings.service';\nimport { InitializeRequestParams } from './initialize-request-params.interface';\nimport { PaymentConfig } from '../payment-config.interface';\nimport { XpsResponse } from '../xps-response.interface';\nimport {\n initializeResponseFactoryToken,\n InitializeResponseFactory,\n} from './initialize-response.token';\nimport { InitializeResponse } from './initialize-response.class';\nimport { NextActionService } from '../actions/next-action.service';\nimport { ShowErrorsAction } from '../actions/show-errors/show-errors.action.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InitializeService {\n private readonly apiRoute = 'directpayment';\n // TODO PAYMENTS-15743: replace with new refer id for headless core\n private readonly ps4ReferId = '22';\n\n public constructor(\n @Inject(initializeResponseFactoryToken)\n protected readonly responseFactory: InitializeResponseFactory,\n private readonly secureApi: SecureApiClient,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly nextActionService: NextActionService\n ) {}\n\n public async request(config: PaymentConfig): Promise<InitializeResponse> {\n const requestParams: InitializeRequestParams = {\n access_token: this.settingsService.token,\n pid: String(config.paymentMethodId),\n refer: this.ps4ReferId,\n country: this.countryService.getCountry(),\n returnUrl: config.returnUrl,\n };\n\n return lastValueFrom(\n this.secureApi\n .post<XpsResponse>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n map((response: XpsResponse) => this.responseFactory(response)),\n tap((response: InitializeResponse) => {\n if (response.paymentForm?.errors?.length) {\n this.nextActionService.emitFlowUpdates(\n new ShowErrorsAction(response.paymentForm.errors)\n );\n }\n })\n )\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n }\n}\n","export abstract class XpsApiPartRequest {\n [fieldName: `xps_${string}`]: unknown;\n\n protected addXpsParameters(parameters: { [key: string]: unknown }): void {\n for (const key in parameters) {\n this[`xps_${key}`] = parameters[key];\n }\n }\n}\n","import { AppError } from './app-error.class';\n\nexport class TokenError extends AppError {\n public constructor() {\n super('XPS API needs token.');\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { AbstractControl, UntypedFormGroup } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { XpsApiPartRequest } from '../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../exceptions-handling/errors/token-error.class';\n\nexport class SubmitRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_dfp_hash?: string;\n\n public constructor(parameters: {\n token: string | null;\n fields: Field[];\n form: UntypedFormGroup;\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n dfpHash: string | null;\n }) {\n super();\n\n const { token, fields, form, dfpHash } = parameters;\n\n if (token === null) {\n throw new TokenError();\n }\n\n this.access_token = token;\n\n if (dfpHash) {\n this.xps_dfp_hash = dfpHash;\n }\n\n this.addXpsParameters(this.getFieldsValues(fields, form));\n }\n\n private getFieldsValues(\n fields: Field[],\n form: UntypedFormGroup\n ): { [key: string]: unknown } {\n return fields.reduce(\n (xpsParams: { [key: string]: string }, field: Field) => {\n const formControl: AbstractControl | null = form.get(field.name);\n\n xpsParams[field.name] = formControl ? formControl.value : field?.value;\n\n return xpsParams;\n },\n {}\n );\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SubmitRequest } from './submit-request.class';\n\nexport type SubmitRequestParameters = ConstructorParameters<\n typeof SubmitRequest\n>;\n\nexport type SubmitRequestFactory = (\n ...args: SubmitRequestParameters\n) => SubmitRequest;\n\nexport const submitRequestFactoryToken: InjectionToken<SubmitRequestFactory> =\n new InjectionToken<SubmitRequestFactory>('SubmitRequest');\n\nexport const submitRequestFactoryProvider: ValueProvider = {\n provide: submitRequestFactoryToken,\n useValue: (...args: SubmitRequestParameters) => new SubmitRequest(...args),\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SubmitResponse } from './submit-response.class';\n\nexport type SubmitResponseParameters = ConstructorParameters<\n typeof SubmitResponse\n>;\n\nexport type SubmitResponseFactory = (\n ...args: SubmitResponseParameters\n) => SubmitResponse;\n\nexport const submitResponseFactoryToken: InjectionToken<SubmitResponseFactory> =\n new InjectionToken<SubmitResponseFactory>('SubmitResponse');\n\nexport const submitResponseFactoryProvider: ValueProvider = {\n provide: submitResponseFactoryToken,\n useValue: (...args: SubmitResponseParameters) => new SubmitResponse(...args),\n};\n","import { AppError } from './app-error.class';\n\nexport class TerminalError extends AppError {\n public code!: string;\n\n public constructor(message: string, code: string) {\n super(message);\n\n this.code = code;\n }\n}\n","import { TerminalError } from './terminal-error.class';\n\nexport class DefaultTerminalError extends TerminalError {\n public constructor() {\n const message = `It's not you, it's us, but we can help. Please contact our customer support.`;\n super(message, '1000-0002');\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { FingerprintJs } from './fingerprint-js.interface';\nimport type XsollaAntifraudFingerprint from '@xsolla/antifraud-fingerprint';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport { windowToken } from '../window.token';\nimport { ExtendedWindow } from '../extended-window.interface';\n\nimport { Hash } from './hash.type';\nimport { TerminalError } from '../exceptions-handling/errors/terminal-error.class';\nimport { DefaultTerminalError } from '../exceptions-handling/errors/default-terminal-error.class';\nimport {\n Agent,\n GetResult,\n sources,\n SourcesToComponents,\n} from '@fingerprintjs/fingerprintjs';\nimport { DeviceFingerPrintComponents } from './device-finger-print-components.interface';\nimport { lastValueFrom } from 'rxjs';\nimport { HttpHeaders } from '@angular/common/http';\nimport { HttpError } from '../exceptions-handling/errors/http-error.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DeviceFingerPrintService {\n private hash!: string;\n private readonly apiRoute = 'dfp';\n private fingerprintJs!: FingerprintJs;\n private antifraudFingerprintLibrary!: typeof XsollaAntifraudFingerprint;\n\n private readonly fingerprintApiUrl = 'https://afs.xsolla.com/dfp/api/v1/';\n\n public constructor(\n private readonly secureApi: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(windowToken)\n private readonly window: ExtendedWindow\n ) {}\n\n public async init(): Promise<void> {\n if (!this.settingsService.isInitialized) {\n return;\n }\n this.fingerprintJs = await this.loadFingerprintJs();\n this.hash = await this.buildHash();\n this.antifraudFingerprintLibrary =\n await this.loadAntifraudFingerprintLibrary();\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n public async getHash(): Promise<string> {\n return this.hash;\n }\n\n private async loadFingerprintJs(): Promise<FingerprintJs> {\n const { default: library, murmurX64Hash128: getHash } = await import(\n '@fingerprintjs/fingerprintjs'\n );\n\n return { library, getHash };\n }\n\n private async loadAntifraudFingerprintLibrary(): Promise<\n typeof XsollaAntifraudFingerprint\n > {\n const library: { default: unknown } = await import(\n '@xsolla/antifraud-fingerprint'\n );\n\n return library.default as typeof XsollaAntifraudFingerprint;\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n private async makeAntifraudFingerprint(): Promise<XsollaAntifraudFingerprint | null> {\n if (!this.settingsService.token) {\n return null;\n }\n\n const antifraudFingerprint: typeof XsollaAntifraudFingerprint =\n this.antifraudFingerprintLibrary;\n\n try {\n return new antifraudFingerprint({\n api: {\n url: this.fingerprintApiUrl,\n token: this.settingsService.token,\n timeout: 3000,\n },\n retry: {\n num: 1,\n timeout: 500,\n },\n });\n } catch (error: unknown) {\n return null;\n }\n }\n\n /**\n *Загружаем библиотеку, генерируем данные,\n *хешируем с помощью BASE64 и отправляем на бэкенд,\n *в ответ получаем dfp_hash.\n **/\n private async buildHash(): Promise<string> {\n const fingerPrintData = await this.generate();\n const hash: Hash = await this.send(fingerPrintData).catch(() => {\n return null;\n });\n\n return JSON.stringify(hash);\n }\n\n /**\n *Новая версия библиотеки содержит не все компоненты, некоторые приходится имплементировать самостоятельно\n **/\n private getHasLiedResolution(): boolean {\n const { screen } = this.window;\n return (\n screen.width < screen.availWidth || screen.height < screen.availHeight\n );\n }\n\n /**\n *Бэкенд заточен под конкретные поля, которые необходимо смапить.\n **/\n private getComponents(\n components: SourcesToComponents<typeof sources>\n ): DeviceFingerPrintComponents {\n return {\n user_agent: navigator.userAgent,\n language: components.languages.value?.shift()?.shift() ?? '',\n color_depth: components.colorDepth.value,\n device_memory: components.deviceMemory.value,\n hardware_concurrency: components.hardwareConcurrency.value,\n resolution: components.screenResolution.value,\n available_resolution: components.screenResolution.value,\n timezone_offset: new Date().getTimezoneOffset(),\n session_storage: components.sessionStorage.value ? 1 : 0,\n local_storage: components.localStorage.value ? 1 : 0,\n indexed_db: components.indexedDB.value ? 1 : 0,\n open_database: components.openDatabase.value ? 1 : 0,\n navigator_platform: components.platform.value,\n regular_plugins:\n components.plugins.value?.map((plugin) => plugin.name) ?? [],\n canvas: components.canvas.value?.text,\n webgl: components.canvas.value?.text,\n webgl_vendor: components.vendor.value,\n has_lied_resolution: this.getHasLiedResolution(),\n touch_support: Object.values(components.touchSupport.value ?? {}),\n js_fonts: components.fonts.value,\n };\n }\n\n /**\n * Получаем данные dfp с помощью FingerprintJS, мапим необходимые поля, добавляем хэш\n **/\n private async generate(): Promise<DeviceFingerPrintComponents> {\n const { library, getHash } = this.fingerprintJs;\n const fingerprint: Agent = await library.load();\n const commonFingerPrintData: GetResult = await fingerprint.get();\n\n const fingerPrintData: DeviceFingerPrintComponents = this.getComponents(\n commonFingerPrintData.components\n );\n fingerPrintData.hash = getHash(JSON.stringify(fingerPrintData));\n return fingerPrintData;\n }\n\n /**\n * Отправка dfp на сервер, в ответ получаем dfp_hash\n **/\n private async send(\n fingerPrintData: DeviceFingerPrintComponents\n ): Promise<{ '200': string } | null> {\n const token = this.settingsService.token;\n\n if (token === null) {\n throw new DefaultTerminalError();\n }\n\n const requestBody: { access_token: string; 'dfp[200]': string } = {\n access_token: token,\n 'dfp[200]': '',\n };\n\n requestBody['dfp[200]'] = btoa(\n encodeURIComponent(JSON.stringify(fingerPrintData))\n );\n return lastValueFrom(\n this.secureApi.post<{ dfp_hash: { '200': string }; user_id?: string }>(\n this.apiRoute,\n new URLSearchParams(\n requestBody as unknown as { [key: string]: string }\n ),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then((response: { dfp_hash: { '200': string }; user_id?: string }) => {\n return response.dfp_hash;\n })\n .then(async (hash: { '200': string }) => {\n const fingerprint: XsollaAntifraudFingerprint | null =\n await this.makeAntifraudFingerprint();\n\n if (!fingerprint) {\n return null;\n }\n\n await fingerprint\n ?.dispatch(hash['200'])\n .catch((err) => console.log(err));\n\n const afsHash = await fingerprint.hash();\n\n return { '301': afsHash, ...hash };\n })\n .catch((error: HttpError) => {\n const response = error.getHttpErrorData().response;\n\n throw new TerminalError(\n response.data?.errors[0]?.message ?? '',\n response.data?.errors[0]?.support_code ?? ''\n );\n });\n }\n}\n","import { Field } from '../field.interface';\nimport { Inject, Injectable } from '@angular/core';\nimport {\n SubmitRequestFactory,\n submitRequestFactoryToken,\n} from './request/submit-request.token';\nimport {\n SubmitResponseFactory,\n submitResponseFactoryToken,\n} from './response/submit-response.token';\nimport { SettingsService } from '../../settings/settings.service';\nimport { SubmitResponse } from './response/submit-response.class';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { DeviceFingerPrintService } from '../../device-finger-print/device-finger-print.service';\nimport { lastValueFrom } from 'rxjs';\nimport { HttpHeaders } from '@angular/common/http';\nimport { ResponseError } from '../../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../../http/secure-api/secure-api.service';\nimport { XpsResponse } from '../xps-response.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class SubmitService {\n private readonly directPaymentApiRoute = 'directpayment';\n public constructor(\n @Inject(submitRequestFactoryToken)\n private readonly requestFactory: SubmitRequestFactory,\n @Inject(submitResponseFactoryToken)\n private readonly responseFactory: SubmitResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly deviceFingerPrintService: DeviceFingerPrintService,\n\n private readonly secureApi: SecureApiClient\n ) {}\n\n // NB: Never add 'async' statement for this method!\n // 'Async' statement wraps current promise into another.\n // In this way two promises become unequal, that can broke XPS API requests logic.\n\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n public request(\n fields: Field[],\n form: UntypedFormGroup\n ): Promise<SubmitResponse> {\n const responsePromise = this.deviceFingerPrintService\n .getHash()\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n .then((dfpHash: Awaited<string | null>) => {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n fields,\n form,\n dfpHash,\n });\n\n return lastValueFrom(\n this.secureApi.post<XpsResponse>(\n this.directPaymentApiRoute,\n new URLSearchParams({ ...requestParams } as unknown as {\n [key: string]: string;\n }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then((response: XpsResponse) => this.responseFactory(response))\n .catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n });\n return responsePromise;\n }\n}\n","import { Observable, Subject } from 'rxjs';\n\nexport abstract class EmitDataService<Data> {\n public data$: Observable<Data>;\n\n private readonly dataSubject = new Subject<Data>();\n\n public constructor() {\n this.data$ = this.dataSubject.asObservable();\n }\n\n public emit(data: Data): void {\n this.dataSubject.next(data);\n }\n}\n","export abstract class XpsRequest {\n [fieldName: `xps_${string}`]: unknown;\n\n protected addXpsParameters(parameters: { [key: string]: unknown }): void {\n for (const key in parameters) {\n this[`xps_${key}`] = parameters[key];\n }\n }\n}\n","import { UntypedFormGroup } from '@angular/forms';\nimport { Field } from '../field.interface';\nimport { XpsRequest } from '../xps-request.abstract';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class SyncRequest extends XpsRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'calculate';\n\n public constructor(parameters: {\n token: string;\n changedField: Field;\n fields: Field[];\n form: UntypedFormGroup;\n }) {\n super();\n\n this.access_token = parameters.token;\n\n const fieldsValues = this.getFieldsValues(\n parameters.changedField,\n parameters.fields,\n parameters.form\n );\n\n this.addXpsParameters({\n ...fieldsValues,\n change_element: parameters.changedField.name,\n });\n }\n\n private getFieldsValues(\n changedField: Field,\n fields: Field[],\n form: UntypedFormGroup\n ): { [key: string]: unknown } {\n const fieldsMap = this.getFieldsMap(fields);\n return changedField?.javascript?.change.params.reduce(\n (xpsParams: { [key: string]: string }, fieldName: string) => {\n const formControl = form.get(fieldName);\n const field: Field | undefined = fieldsMap.get(fieldName);\n\n if (formControl || field) {\n xpsParams[fieldName] = formControl?.value ?? field?.value;\n }\n\n return xpsParams;\n },\n {}\n );\n }\n\n private getFieldsMap(fields: Field[]): Map<string, Field> {\n const map = new Map<string, Field>();\n fields.forEach((field) => map.set(field.name, field));\n return map;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SyncRequest } from './sync-request.class';\n\nexport type SyncRequestParameters = ConstructorParameters<typeof SyncRequest>;\n\nexport type SyncRequestFactory = (\n ...args: SyncRequestParameters\n) => SyncRequest;\n\nexport const syncRequestFactoryToken: InjectionToken<SyncRequestFactory> =\n new InjectionToken<SyncRequestFactory>('SyncRequest');\n\nexport const syncRequestFactoryProvider: ValueProvider = {\n provide: syncRequestFactoryToken,\n useValue: (...args: SyncRequestParameters) => new SyncRequest(...args),\n};\n","import { Field } from '../field.interface';\nimport { XpsResponse } from '../xps-response.interface';\n\nexport class SyncResponse {\n public readonly rewritableError?: { code: number; message: string };\n public readonly fields: Field[];\n public readonly parameters: XpsResponse;\n\n public constructor(changedField: Field, response: XpsResponse) {\n const fieldError = response?.errors?.find(\n (error) => error.element_name === changedField.name\n );\n\n if (fieldError) {\n this.rewritableError = {\n code: fieldError.code,\n message: fieldError.message,\n };\n }\n\n this.fields = Object.keys(response.form).map(\n (key: string): Field => response.form[key]\n );\n\n this.parameters = response;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SyncResponse } from './sync-response.class';\n\nexport type SyncResponseParameters = ConstructorParameters<typeof SyncResponse>;\n\nexport type SyncResponseFactory = (\n ...args: SyncResponseParameters\n) => SyncResponse;\n\nexport const syncResponseFactoryToken: InjectionToken<SyncResponseFactory> =\n new InjectionToken<SyncResponseFactory>('SyncResponse');\n\nexport const syncResponseFactoryProvider: ValueProvider = {\n provide: syncResponseFactoryToken,\n useValue: (...args: SyncResponseParameters) => new SyncResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { UntypedFormGroup, ValidationErrors } from '@angular/forms';\nimport { lastValueFrom } from 'rxjs';\nimport { SecureApiClient } from '../../http/secure-api/secure-api.service';\nimport { SettingsService } from '../../settings/settings.service';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { Field } from '../field.interface';\nimport { XpsResponse } from '../xps-response.interface';\nimport { FieldSyncState } from './field-sync-state.interface';\nimport {\n SyncRequestFactory,\n syncRequestFactoryToken,\n} from './sync-request.token';\nimport { SyncResponse } from './sync-response.class';\nimport {\n SyncResponseFactory,\n syncResponseFactoryToken,\n} from './sync-response.token';\nimport { ValidationError } from '../form/validators/validation-error.interface';\nimport { NextActionService } from '../actions/next-action.service';\nimport { ShowErrorsAction } from '../actions/show-errors/show-errors.action.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SyncService extends EmitDataService<XpsResponse> {\n private readonly apiRoute = 'directpayment';\n\n private prevFieldSyncStates: { [fieldName: string]: FieldSyncState } = {};\n private form: UntypedFormGroup = new UntypedFormGroup({});\n private fields: Field[] = [];\n\n public constructor(\n @Inject(syncRequestFactoryToken)\n private readonly requestFactory: SyncRequestFactory,\n @Inject(syncResponseFactoryToken)\n private readonly responseFactory: SyncResponseFactory,\n private readonly secureApi: SecureApiClient,\n private readonly nextActionService: NextActionService,\n private readonly settingsService: SettingsService\n ) {\n super();\n }\n\n public setup(form: UntypedFormGroup, fields: Field[]): void {\n this.reset();\n\n this.form = form;\n this.fields = fields;\n }\n\n public reset(): void {\n this.prevFieldSyncStates = {};\n this.form = new UntypedFormGroup({});\n this.fields = [];\n }\n\n public async validate(field: Field): Promise<ValidationErrors | null> {\n if (!this.isReadyField(field)) {\n return Promise.resolve(null);\n }\n\n const control = this.form.get(field.name);\n const value = control?.value;\n const prevFieldState = this.getPrevFieldSyncState(field);\n\n const isInitialValue = value === field.value && !prevFieldState;\n\n if (isInitialValue) {\n return Promise.resolve(null);\n }\n\n if (prevFieldState && value === prevFieldState.value) {\n return Promise.resolve(prevFieldState.result).then((response) => {\n return response?.rewritableError ?? null;\n });\n }\n\n const requestPromise = this.request(field);\n this.setPrevFieldSyncState(field, value, requestPromise);\n\n return requestPromise.then((response: SyncResponse) => {\n return response.rewritableError ?? null;\n });\n }\n\n public getSyncValidationErrors(field: Field): ValidationErrors | null {\n const control = this.form.get(field.name);\n if (!control) {\n return null;\n }\n const rewritableError: ValidationError = control.errors?.rewritableError;\n return rewritableError\n ? { message: rewritableError.message, code: rewritableError.code }\n : null;\n }\n\n protected async request(field: Field): Promise<SyncResponse> {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n changedField: field,\n fields: this.fields,\n form: this.form,\n });\n\n return lastValueFrom(\n this.secureApi.post<XpsResponse>(\n this.apiRoute,\n new URLSearchParams(\n requestParams as unknown as { [key: string]: string }\n ),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n ).then((response: XpsResponse) => {\n if (response.errors?.length) {\n this.nextActionService.emitFlowUpdates(\n new ShowErrorsAction(response.errors)\n );\n }\n\n this.emit(response);\n return this.responseFactory(field, response);\n });\n }\n\n private isReadyField(field: Field): boolean {\n const isSyncEnabled = !!field.javascript?.change;\n const isExistsInForm = !!this.form?.get(field.name);\n\n return isSyncEnabled && isExistsInForm;\n }\n\n private getPrevFieldSyncState(field: Field): FieldSyncState {\n return this.prevFieldSyncStates[field.name];\n }\n\n private setPrevFieldSyncState(\n field: Field,\n value: unknown,\n result: Promise<SyncResponse>\n ): void {\n this.prevFieldSyncStates[field.name] = { value, result };\n }\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { ControlType } from './control-type.type';\n\nexport class ControlConfig {\n [option: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n public controlType!: ControlType | string;\n public name!: string;\n public title?: string | null | SafeHtml;\n public shouldHideUserInput?: boolean | null = false;\n}\n","import { ControlConfig } from './control-config';\n\nexport class TextControlConfig extends ControlConfig {\n public controlType = 'text';\n public dataType?: string;\n public maxLength?: number;\n public placeholder?: string;\n public autocomplete?: string;\n public icon?: string;\n public description?: string;\n public inputMode?: string;\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { ValidatorFn as ConvertedValidatorFn } from './validator-fn.type';\nimport { ValidationErrors as ConvertedValidationErrors } from './validation-errors.interface';\nimport { ValidationError as ConvertedValidationError } from './validation-error.interface';\n\nexport function convert(\n validator: ValidatorFn,\n message: string,\n errorCode: string\n): ConvertedValidatorFn {\n return (control: AbstractControl): ConvertedValidationErrors | null => {\n const errors: ValidationErrors | null = validator(control);\n\n if (!errors) {\n return errors;\n }\n\n const firstErrorKey: string = Object.keys(errors)[0];\n let error: ConvertedValidationError = errors[firstErrorKey];\n error = typeof error === 'object' && error !== null ? error : {};\n\n const rewritableError: ConvertedValidationError = { ...error };\n rewritableError.message = message;\n rewritableError.code = errorCode;\n\n if (error[firstErrorKey] != null) {\n rewritableError.value = error[firstErrorKey];\n }\n\n if (rewritableError.requiredLength) {\n rewritableError.number = rewritableError.requiredLength;\n }\n\n errors.rewritableError = rewritableError;\n\n return errors as ConvertedValidationErrors | null;\n };\n}\n","export enum ErrorsCodes {\n minLength = 'min-length',\n maxLength = 'max-length',\n invalidValue = 'invalid-value',\n required = 'required',\n}\n","import { Validators } from '@angular/forms';\nimport { convert } from './convert.function';\nimport { ValidatorFn } from './validator-fn.type';\nimport { ErrorsCodes } from './errors-codes.enum';\n\nconst emailRegexp =\n /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i; // eslint-disable-line\n\nexport function emailValidator(): ValidatorFn {\n return convert(\n Validators.pattern(emailRegexp),\n 'Enter a valid email',\n ErrorsCodes.invalidValue\n );\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\nimport { convert } from './convert.function';\nimport { ErrorsCodes } from './errors-codes.enum';\n\nexport function requiredValidator(): ValidatorFn {\n return convert(Validators.required, 'Required', ErrorsCodes.required);\n}\n","import { UntypedFormControl, ValidatorFn, Validators } from '@angular/forms';\nimport { XpsBoolean } from '../../../xps-boolean.enum';\nimport { Field } from '../../field.interface';\nimport { SyncService } from '../../sync/sync.service';\nimport { CommonControlConfig } from '../common-control-config.interface';\nimport { ControlConfig } from '../controls/control-config';\nimport { FormState } from '../form-state.interface';\nimport { convert } from '../validators/convert.function';\nimport { requiredValidator } from '../validators/required-validator';\nimport { ErrorsCodes } from '../validators/errors-codes.enum';\n\nexport abstract class Converter {\n protected constructor(protected syncService: SyncService) {}\n\n public convertToConfig(field: Field, formState?: FormState): ControlConfig {\n const config = this.createControlConfig(field, formState);\n\n if (formState?.disabled) {\n config.disabled = true;\n }\n\n return config;\n }\n\n public convertToFormControl(field: Field): UntypedFormControl {\n return new UntypedFormControl(\n this.getValue(field),\n this.getValidators(field)\n );\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n\n if (field.isMandatory === XpsBoolean.true) {\n validators.push(requiredValidator());\n }\n\n if (field.regex) {\n const match = /^\\/(.*)\\/([gim]*)$/.exec(field.regex);\n\n if (match) {\n const pattern = new RegExp(match[1], match[2]);\n const errorMessage = field.validation_error_msg\n ? field.validation_error_msg\n : 'Enter valid data';\n validators.push(\n convert(\n Validators.pattern(pattern),\n errorMessage,\n ErrorsCodes.invalidValue\n )\n );\n }\n }\n\n return validators;\n }\n\n public createDefaultControlConfig<T extends { [key: string]: unknown }>(\n controlConfigClass: new () => T,\n field: Field\n ): T {\n const config = new controlConfigClass();\n\n this.copyCommonOptions(config, field);\n\n return config;\n }\n\n public getValue(field: Field): string {\n return field.value;\n }\n\n protected abstract createControlConfig(\n field: Field,\n formState?: FormState\n ): ControlConfig;\n\n protected getDataType(): string {\n return 'text';\n }\n\n protected getAutocomplete(): string {\n return 'off';\n }\n\n protected shouldHideUserInput(): boolean {\n return false;\n }\n\n private getCommonControlConfig(field: Field): CommonControlConfig {\n return {\n name: field.name,\n title: field.title,\n labelHint: field.label_hint,\n dataType: this.getDataType(),\n readonly: field.isReadonly === XpsBoolean.true,\n placeholder: field.example,\n autocomplete: this.getAutocomplete(),\n };\n }\n\n private copyCommonOptions<Target extends { [key: string]: unknown }>(\n target: Target,\n field: Field\n ): void {\n const commonControlConfig = this.getCommonControlConfig(field);\n\n Object.keys(commonControlConfig).forEach((sourceKey: string) => {\n if (!(sourceKey in target)) {\n (target as { [key: string]: unknown })[sourceKey] = (\n commonControlConfig as unknown as { [key: string]: unknown }\n )[sourceKey];\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { SyncService } from '../../sync/sync.service';\nimport { TextControlConfig } from '../controls/text-control.config';\nimport { emailValidator } from '../validators/email-validator';\nimport { Converter } from './converter.abstract';\n\n@Injectable()\nexport class EmailConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super.getValidators(field).concat([emailValidator()]);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.autocomplete = 'email';\n config.icon = 'mail';\n\n return config;\n }\n\n protected getDataType(): string {\n return 'email';\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationErrors } from './validation-errors.interface';\nimport { ValidatorFn } from './validator-fn.type';\n\nexport const restrictedValueValidator = (\n restrictedValue: unknown\n): ValidatorFn => {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n return value !== restrictedValue ? null : { valueAllowed: false };\n };\n};\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { CountryService } from '../../../country/country.service';\nimport { Field } from '../../field.interface';\nimport { SyncService } from '../../sync/sync.service';\nimport { TextControlConfig } from '../controls/text-control.config';\nimport { convert } from '../validators/convert.function';\nimport { restrictedValueValidator } from '../validators/restricted-value.validator';\nimport { Converter } from './converter.abstract';\nimport { masksFunctionsMap } from '../masks-functions.map';\nimport { ErrorsCodes } from '../validators/errors-codes.enum';\nimport { MaskConfig } from '../mask-config.interface';\n\n@Injectable()\nexport class ZipConverter extends Converter {\n private readonly minLength = 3;\n private readonly maxLength = 10;\n private readonly usCountryLength = 5;\n\n public constructor(\n syncService: SyncService,\n private readonly countryService: CountryService\n ) {\n super(syncService);\n }\n\n private get isUsCountry(): boolean {\n return this.countryService.getCountry() === 'US';\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n const minLength = this.isUsCountry ? this.usCountryLength : this.minLength;\n const maxLength = this.isUsCountry ? this.usCountryLength : this.maxLength;\n const validators: ValidatorFn[] = super\n .getValidators(field)\n .concat([\n convert(\n Validators.minLength(minLength),\n `Enter at least ${minLength} characters`,\n ErrorsCodes.minLength\n ),\n\n convert(\n Validators.maxLength(maxLength),\n `Enter no more than ${maxLength} characters`,\n ErrorsCodes.maxLength\n ),\n ]);\n\n if (this.isUsCountry) {\n validators.push(\n convert(\n restrictedValueValidator('00000'),\n 'Enter a valid ZIP code',\n ErrorsCodes.invalidValue\n )\n );\n }\n\n return validators;\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n config.icon = 'location';\n\n if (this.isUsCountry) {\n config.maskConfig = {\n guide: false,\n unmaskModelValue: true,\n showMask: true,\n } as MaskConfig;\n config.inputMode = 'numeric';\n\n if (masksFunctionsMap['zip']) {\n (config.maskConfig as MaskConfig).mask = masksFunctionsMap['zip'];\n }\n } else {\n config.maxLength = this.maxLength;\n }\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'postal-code';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ConvertersMap } from './converters-map.interface';\nimport { EmailConverter } from './email.converter';\nimport { ZipConverter } from './zip.converter';\n\nexport const convertersMapToken = new InjectionToken<ConvertersMap>(\n 'ConvertersTokensMap'\n);\n\nexport const convertersMap: ConvertersMap = {\n zip: ZipConverter,\n email: EmailConverter,\n};\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { Converter } from '../converters/converter.abstract';\nimport { convertersMapToken } from '../converters/converters-map';\nimport { ConvertersMap } from '../converters/converters-map.interface';\nimport { ControlConfig } from './control-config';\n\n@Injectable()\nexport class ControlConfigService {\n public constructor(\n @Inject(convertersMapToken)\n private readonly convertersMap: ConvertersMap,\n private readonly injector: Injector\n ) {}\n\n public getFormControl(field: Field): UntypedFormControl | null {\n const converter = this.getConverter(field);\n\n if (!converter) {\n return null;\n }\n\n return converter.convertToFormControl(field);\n }\n\n public getConfig(field: Field): ControlConfig | null {\n const converter = this.getConverter(field);\n\n if (!converter) {\n return null;\n }\n\n return converter.convertToConfig(field);\n }\n\n public getConverter(field: Field | null): Converter | null {\n if (!field) {\n return null;\n }\n\n const sanitizedName = field.name.replace(/^fix_/i, '');\n let converter = this.convertersMap[sanitizedName];\n\n if (!converter) {\n converter = this.convertersMap[field.type];\n }\n\n if (!converter) {\n return null;\n }\n\n return this.injector.get<Converter>(converter);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { XpsBoolean } from '../../xps-boolean.enum';\nimport { Field } from '../field.interface';\nimport { ControlConfigService } from './controls/control-config.service';\n\n@Injectable()\nexport class FormService {\n public constructor(\n protected readonly controlConfigService: ControlConfigService\n ) {}\n\n public createForm(fields: Field[]): UntypedFormGroup {\n const controls: { [name: string]: UntypedFormControl } =\n this.getVisibleFields(fields).reduce(\n (result: { [key: string]: UntypedFormControl }, field: Field) => {\n const formControl: UntypedFormControl | null =\n this.controlConfigService.getFormControl(field);\n\n if (formControl) {\n result[field.name] = formControl;\n }\n\n return result;\n },\n {}\n );\n\n return new UntypedFormGroup(controls);\n }\n\n private getVisibleFields(fields: Field[]): Field[] {\n return fields.filter(({ isVisible }) => isVisible === XpsBoolean.true);\n }\n}\n","export enum StatusSearchParam {\n token = 'token',\n pid = 'fix_pid',\n invoice = 'fix_invoice',\n signature = 'signature',\n locale = 'locale',\n testProject = 'fix_testProject',\n testPs = 'fix_testPs',\n testXsolla = 'fix_testXsolla',\n userReturnStatus = 'fix_userReturnStatus',\n}\n","import { StatusSearchParam } from './status-search-param.enum';\n\nexport const requiredStatusSearchParams = [\n StatusSearchParam.token,\n StatusSearchParam.locale,\n StatusSearchParam.signature,\n StatusSearchParam.pid,\n StatusSearchParam.invoice,\n];\n","import { StatusRequestParams } from './status-request-params.interface';\nimport { StatusSearchParam } from './status-search-param.enum';\n\ntype SearchParamConverter = (value: string) => string | number;\n\ninterface StatusSearchParamSettings {\n key: keyof StatusRequestParams;\n converter: SearchParamConverter;\n}\n\nconst stringConverter: SearchParamConverter = (value: string): string => value;\nconst numberConverter: SearchParamConverter = (value: string): number => {\n const numberValue = Number(value);\n return isNaN(numberValue) ? 0 : numberValue;\n};\n\nexport const statusSearchParamsMap = new Map<\n StatusSearchParam,\n StatusSearchParamSettings\n>([\n [\n StatusSearchParam.token,\n {\n key: 'token',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.signature,\n {\n key: 'signature',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.locale,\n {\n key: 'locale',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.userReturnStatus,\n {\n key: 'userReturnStatus',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.pid,\n {\n key: 'pid',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.invoice,\n {\n key: 'invoice',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testProject,\n {\n key: 'testProject',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testPs,\n {\n key: 'testPs',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testXsolla,\n {\n key: 'testXsolla',\n converter: numberConverter,\n },\n ],\n]);\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport abstract class XpsApiPart<Response> {\n public get response$(): Observable<Response> {\n return this.response\n .asObservable()\n .pipe(\n filter<Response | null, Response>(\n (response: Response | null): response is Response => response !== null\n )\n );\n }\n\n private readonly response: BehaviorSubject<Response | null> =\n new BehaviorSubject<Response | null>(null);\n\n public emitResponse(response: Response | null): void {\n this.response.next(response);\n }\n\n public get currentValue(): Response | null {\n return this.response.getValue();\n }\n\n protected abstract request(\n ...args: any[] // eslint-disable-line @typescript-eslint/no-explicit-any\n ): void | Promise<Response | void> | Promise<Response> | Observable<Response>;\n}\n","import { XpsApiPartRequest } from '../../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\nimport { StatusRequestParams } from '../status-request-params.interface';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class StatusRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'status';\n public readonly xps_fix_invoice: number;\n public readonly xps_fix_pid: number;\n public readonly xps_signature: string;\n public readonly xps_locale: string;\n public readonly xps_fix_testProject: number | undefined;\n public readonly xps_fix_testPs: number | undefined;\n public readonly xps_fix_testXsolla: number | undefined;\n public readonly xps_fix_userReturnStatus: string | undefined;\n\n public constructor(parameters: StatusRequestParams) {\n super();\n\n if (!parameters.token) {\n throw new TokenError();\n }\n\n this.access_token = parameters.token;\n this.xps_fix_invoice = parameters.invoice;\n this.xps_fix_pid = parameters.pid;\n this.xps_signature = parameters.signature;\n this.xps_fix_testProject = parameters.testProject;\n this.xps_fix_testPs = parameters.testPs;\n this.xps_fix_testXsolla = parameters.testXsolla;\n this.xps_fix_userReturnStatus = parameters.userReturnStatus;\n this.xps_locale = parameters.locale;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusRequest } from './status-request.class';\n\nexport type StatusRequestParameters = ConstructorParameters<\n typeof StatusRequest\n>;\n\nexport type StatusRequestFactory = (\n ...args: StatusRequestParameters\n) => StatusRequest;\n\nexport const statusRequestFactoryToken: InjectionToken<StatusRequestFactory> =\n new InjectionToken<StatusRequestFactory>('StatusRequest');\n\nexport const statusRequestFactoryProvider: ValueProvider = {\n provide: statusRequestFactoryToken,\n useValue: (...args: StatusRequestParameters) => new StatusRequest(...args),\n};\n","export enum StatusGroups {\n troubled = 'troubled',\n done = 'done',\n invoice = 'invoice',\n}\n","export enum StatusEnum {\n created = 'created',\n awaiting = 'awaiting',\n processing = 'processing',\n authorized = 'authorized',\n held = 'held',\n done = 'done',\n error = 'error',\n canceled = 'canceled',\n}\n","import { Status } from '../../status.interface';\nimport { XpsResponse, XpsStatus } from '../../../xps-response.interface';\nimport { TerminalError } from '../../../../exceptions-handling/errors/terminal-error.class';\nimport { StatusGroups } from '../../status-groups';\nimport { StatusEnum } from '../../status.enum';\n\nexport class StatusResponse {\n public readonly status!: Status;\n private readonly error?: { code: string; message: string };\n public constructor(parameters: {\n status: XpsStatus | null;\n errors: XpsResponse['errors'];\n form?: XpsResponse['form'];\n }) {\n if (parameters.errors?.[0]) {\n this.error = {\n code: parameters.errors[0].code.toString(),\n message: parameters.errors[0].message,\n };\n }\n\n if (!parameters.status) {\n throw new TerminalError(\n this.error?.message ?? '',\n this.error?.code.toString() ?? ''\n );\n }\n\n this.status = {\n statusState: parameters.status.statusData.stateText,\n email: parameters.status.statusData.email,\n webSocketUrl: parameters.status.statusData.webSocketChannelUrl,\n webSocketChannelName: parameters.status.statusData.webSocketChannelName,\n webSocketClientType: parameters.status.statusData.webSocketClientType,\n financeInfo: parameters.status.text.info,\n discount: parameters.status.text.info.discount\n ? Math.abs(\n Number.parseFloat(parameters.status.text.info.discount?.value ?? '')\n )\n : null,\n isCancelUser: parameters.status.isCancelUser,\n postMessageStatus: parameters.status.isCancelUser\n ? StatusGroups.troubled\n : parameters.status.group,\n virtualCurrencyAmount: parameters.status.statusData.out,\n backUrlSettings: {\n backUrl: parameters.status.text.backurl,\n backUrlAction: parameters.status.text.backurl_action,\n backUrlCaption: parameters.status.text.backurl_caption,\n returnRegion: parameters.status.return_region,\n },\n additionalBackButton: this.getAdditionalBackButton(parameters.status),\n group: parameters.status.group,\n needToCheck: parameters.status.needToCheck,\n autoRedirect: parameters.status.autoredirect,\n statusMessage: parameters.status.text.state,\n userId: parameters.status.statusData.v1,\n invoice: parameters.status.statusData.invoice,\n pid: parameters.status.statusData.pid,\n projectAmount: this.getProjectAmount(parameters.status),\n titleClass: parameters.status.title_class,\n paymentCountryIso: parameters.status.statusData.payment_country_iso,\n order: parameters.status.text.order,\n };\n\n if (parameters.form) {\n this.status.userReturnStatus = this.getUserReturnStatus(parameters.form);\n }\n\n if (\n this.status.statusState === StatusEnum.done ||\n this.status.statusState === StatusEnum.authorized\n ) {\n this.status.isSuccess = true;\n }\n\n if (\n this.status.statusState === StatusEnum.canceled ||\n this.status.isCancelUser\n ) {\n this.status.isCanceled = true;\n }\n }\n\n private getUserReturnStatus(form: XpsResponse['form']): string | undefined {\n const value = form['fix_userReturnStatus']?.value;\n if (value === 'undefined') return undefined;\n\n return value;\n }\n\n private getProjectAmount(status: XpsStatus): Status['projectAmount'] {\n if (!status.statusData.projectAmount) {\n return;\n }\n\n const [amount, currency] = status.statusData.projectAmount.split(' ');\n return {\n amount,\n currency,\n };\n }\n\n private getAdditionalBackButton(\n status: XpsStatus\n ): Status['additionalBackButton'] {\n if (!status.text.is_additional_back_url_enabled) {\n return {\n link: '',\n action: '',\n label: '',\n region: '',\n isEnabled: false,\n };\n }\n\n return {\n link: status.text.additional_back_url_link ?? '',\n action: status.text.additional_back_url_action ?? '',\n label: status.text.additional_back_url_label ?? '',\n region: status.additional_button_return_region ?? '',\n isEnabled: status.text.is_additional_back_url_enabled,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusResponse } from './status-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof StatusResponse>;\n\nexport type StatusResponseFactory = (\n ...args: ResponseParameters\n) => StatusResponse;\n\nexport const statusResponseFactoryToken: InjectionToken<StatusResponseFactory> =\n new InjectionToken<StatusResponseFactory>('StatusResponse');\n\nexport const statusResponseFactoryProvider: ValueProvider = {\n provide: statusResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new StatusResponse(...args),\n};\n","import { lastValueFrom } from 'rxjs';\nimport { Injectable, Inject } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { XpsResponse, XpsStatus } from '../../xps-response.interface';\nimport { SettingsService } from '../../../settings/settings.service';\nimport { TerminalError } from '../../../exceptions-handling/errors/terminal-error.class';\nimport { SecureApiClient } from '../../../http/secure-api/secure-api.service';\nimport { XpsApiPart } from '../../xps-api-part.abstract';\nimport {\n StatusRequestFactory,\n statusRequestFactoryToken,\n} from './request/status-request.token';\nimport {\n StatusResponseFactory,\n statusResponseFactoryToken,\n} from './response/status-response.token';\nimport { StatusRequestParams } from './status-request-params.interface';\nimport { StatusResponse } from './response/status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusRequestService extends XpsApiPart<StatusResponse> {\n private readonly apiRoute = 'directpayment';\n private requestParams!: StatusRequestParams;\n public constructor(\n private readonly secureApiClient: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(statusRequestFactoryToken)\n private readonly requestFactory: StatusRequestFactory,\n @Inject(statusResponseFactoryToken)\n private readonly responseFactory: StatusResponseFactory\n ) {\n super();\n }\n\n public setRequestParams(params: StatusRequestParams): void {\n this.requestParams = {\n locale: params.locale,\n testProject: params.testProject,\n testPs: params.testPs,\n testXsolla: params.testXsolla,\n userReturnStatus: params.userReturnStatus,\n invoice: params.invoice,\n pid: params.pid,\n signature: params.signature,\n };\n }\n\n public request(): void {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n ...this.requestParams,\n });\n\n lastValueFrom(\n this.secureApiClient.post<XpsResponse>(\n this.apiRoute,\n new URLSearchParams(\n requestParams as unknown as { [key: string]: string }\n ),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then((response: XpsResponse) => {\n const statusResponse = this.responseFactory({\n status: response.status as XpsStatus | null,\n errors: response.errors,\n form: response.form,\n });\n\n this.emitResponse(statusResponse);\n })\n .catch((e: TerminalError) => {\n throw new TerminalError(e.message, e.code);\n });\n }\n}\n","import { XpsApiPartRequest } from '../../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class CheckStatusRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'status';\n public readonly invoice: number;\n public readonly section = 'getstatus';\n\n public constructor(token: string | null, invoice: number) {\n super();\n\n if (token === null) {\n throw new TokenError();\n }\n\n this.access_token = token;\n this.invoice = invoice;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { CheckStatusRequest } from './check-status-request.class';\n\nexport type CheckStatusRequestParameters = ConstructorParameters<\n typeof CheckStatusRequest\n>;\n\nexport type CheckStatusRequestFactory = (\n ...args: CheckStatusRequestParameters\n) => CheckStatusRequest;\n\nexport const checkStatusRequestFactoryToken: InjectionToken<CheckStatusRequestFactory> =\n new InjectionToken<CheckStatusRequestFactory>('CheckStatusRequest');\n\nexport const checkStatusRequestFactoryProvider: ValueProvider = {\n provide: checkStatusRequestFactoryToken,\n useValue: (...args: CheckStatusRequestParameters) =>\n new CheckStatusRequest(...args),\n};\n","import { Properties } from '../../../../properties.type';\nimport { StatusEnum } from '../../status.enum';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class CheckStatusResponse {\n public readonly status?: StatusEnum;\n public readonly final?: boolean;\n public readonly isPaymentAccountAttached?: boolean;\n public constructor(parameters: Properties<CheckStatusResponse>) {\n this.status = parameters.status;\n this.final = parameters.final;\n this.isPaymentAccountAttached = parameters.isPaymentAccountAttached;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { CheckStatusResponse } from './check-status-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof CheckStatusResponse>;\n\nexport type CheckStatusResponseFactory = (\n ...args: ResponseParameters\n) => CheckStatusResponse;\n\nexport const checkStatusResponseFactoryToken: InjectionToken<CheckStatusResponseFactory> =\n new InjectionToken<CheckStatusResponseFactory>('CheckStatusResponse');\n\nexport const checkStatusResponseFactoryProvider: ValueProvider = {\n provide: checkStatusResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new CheckStatusResponse(...args),\n};\n","import { lastValueFrom } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SecureApiClient } from '../../../http/secure-api/secure-api.service';\nimport { SettingsService } from '../../../settings/settings.service';\nimport { XpsResponse } from '../../xps-response.interface';\nimport { StatusEnum } from '../status.enum';\nimport { ResponseError } from '../../../exceptions-handling/errors/response-error.class';\nimport {\n CheckStatusRequestFactory,\n checkStatusRequestFactoryToken,\n} from './request/check-status-request.token';\nimport {\n CheckStatusResponseFactory,\n checkStatusResponseFactoryToken,\n} from './response/check-status-response.token';\nimport { XpsApiPart } from '../../xps-api-part.abstract';\nimport { CheckStatusResponse } from './response/check-status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CheckStatusService extends XpsApiPart<CheckStatusResponse> {\n private readonly apiRoute = 'directpayment';\n private invoice!: number;\n\n public constructor(\n private readonly secureApiClient: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(checkStatusRequestFactoryToken)\n private readonly requestFactory: CheckStatusRequestFactory,\n @Inject(checkStatusResponseFactoryToken)\n private readonly responseFactory: CheckStatusResponseFactory\n ) {\n super();\n }\n\n public setRequestParams(invoice: number): void {\n this.invoice = invoice;\n }\n\n public request(): void {\n const requestParams = this.requestFactory(\n this.settingsService.token,\n this.invoice\n );\n\n lastValueFrom(\n this.secureApiClient.post<XpsResponse>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams } as unknown as {\n [key: string]: string;\n }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then((response: XpsResponse) => {\n const checkStatusResponse = this.responseFactory({\n status: response.status as StatusEnum,\n final: response.final,\n isPaymentAccountAttached: response.is_payment_account_attached,\n });\n\n this.emitResponse(checkStatusResponse);\n })\n .catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n }\n}\n","export enum WebSocketStatus {\n statusChanged = 'status_changed',\n troubledStatus = 'troubled_status',\n}\n","export enum WebSocketClientType {\n nchan = 'nchan',\n centrifugo = 'centrifugo',\n}\n","import { Observable, Subject, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NchanWebSocketService implements WebSocketClient {\n public static readonly reconnectionTimeoutIncrementFactor = 2;\n\n public url!: string;\n\n public type = WebSocketClientType.nchan;\n\n private static readonly timeoutsMs = {\n reconnection: 1500,\n reconnectionMaxDeviation: 1500,\n };\n\n private openPromise: Promise<unknown> | undefined;\n\n private reconnectionTimeoutMs!: number;\n private reconnectionTimerId: ReturnType<typeof setTimeout> | null = null;\n\n private readonly openConnectionTimerId: number | undefined;\n\n private connection!: WebSocket;\n\n private readonly incomingMessages$: Subject<MessageEvent> =\n new Subject<MessageEvent>();\n private readonly successfulReconnectionEventsProxy$: Subject<void> =\n new Subject<void>();\n\n public async open(): Promise<unknown> {\n if (this.openPromise && !this.isClosed()) {\n return this.openPromise;\n }\n\n this.openPromise = this.createConnection()\n .catch(async () => {\n return this.waitWhileNotReconnect();\n })\n .then(() => {\n this.connection.onclose = async () => this.open();\n });\n\n return this.openPromise;\n }\n\n public close(): void {\n this.clearReconnectionTimer();\n\n if (this.isClosed()) {\n return;\n }\n\n this.connection.onclose = null;\n this.connection.close();\n }\n\n public get messages$(): Observable<string> {\n return this.incomingMessages$\n .asObservable()\n .pipe(map((event: MessageEvent<string>) => event.data));\n }\n\n public subscribeOnSuccessfulReconnection(next?: () => void): Subscription {\n return this.successfulReconnectionEventsProxy$\n .asObservable()\n .subscribe(next);\n }\n\n private isClosed(): boolean {\n if (!this.connection) {\n return true;\n }\n\n return [this.connection.CLOSED, this.connection.CLOSING].includes(\n this.connection.readyState\n );\n }\n\n private clearReconnectionTimer(): void {\n if (this.reconnectionTimerId) {\n clearTimeout(this.reconnectionTimerId);\n this.reconnectionTimerId = null;\n }\n }\n\n private setFirstReconnectionTimeout(): void {\n const min =\n NchanWebSocketService.timeoutsMs.reconnection -\n NchanWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n const max =\n NchanWebSocketService.timeoutsMs.reconnection +\n NchanWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n this.reconnectionTimeoutMs =\n Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n private incrementReconnectionTimeout(): void {\n this.reconnectionTimeoutMs =\n this.reconnectionTimeoutMs *\n NchanWebSocketService.reconnectionTimeoutIncrementFactor;\n }\n\n private async createConnection(): Promise<unknown> {\n this.connection = new WebSocket(this.url);\n this.connection.onmessage = this.incomingMessages$.next.bind(\n this.incomingMessages$\n );\n\n return new Promise<void>((resolve, reject) => {\n this.connection.onopen = () => {\n clearTimeout(this.openConnectionTimerId);\n resolve();\n };\n\n this.connection.onclose = () => {\n reject();\n };\n });\n }\n\n private async reconnect(): Promise<boolean> {\n this.clearReconnectionTimer();\n\n return new Promise((resolve) => {\n this.reconnectionTimerId = setTimeout(() => {\n this.createConnection()\n .then(() => resolve(true))\n .catch(() => resolve(false));\n this.incrementReconnectionTimeout();\n }, this.reconnectionTimeoutMs);\n });\n }\n\n private async waitWhileNotReconnect(): Promise<void> {\n this.clearReconnectionTimer();\n this.setFirstReconnectionTimeout();\n\n let isConnected = false;\n\n while (!isConnected) {\n isConnected = await this.reconnect();\n }\n\n this.successfulReconnectionEventsProxy$.next();\n }\n}\n","export enum ErrorTags {\n APP = 'appError',\n HTTP = 'httpError',\n JS = 'jsError',\n WS = 'webSocket',\n ENCRYPT = 'encrypt',\n APPLEPAY = 'applepay',\n HEADLESS_UI = 'headlessUi',\n GOOGLEPAY = 'googlepay',\n PAYTM = 'paytm',\n}\n","import { ErrorTags } from './elk-error-types.enum';\nimport { AdditionalInfo } from '../elk/additional-info.interface';\n\nexport class TaggedError extends Error {\n public childTag!: ErrorTags;\n public trace!: string;\n public tags: ErrorTags[] = [];\n public additionalInfo!: AdditionalInfo;\n\n private readonly parentTag: ErrorTags = ErrorTags.HEADLESS_UI;\n\n public constructor(message: string, tags?: ErrorTags[]) {\n super(message);\n\n this.tags = this.childTag\n ? [this.parentTag, this.childTag]\n : [this.parentTag];\n\n if (tags) {\n const newTags = tags.filter(\n (t, i, arr) => !this.tags.includes(t) && arr.indexOf(t) == i\n );\n this.tags = [...this.tags, ...newTags];\n }\n }\n}\n","import { ErrorTags } from './elk-error-types.enum';\n\nimport { TaggedError } from './tagged-error.class';\n\nexport class WsError extends TaggedError {\n public constructor(message: string, channelName: string, tags?: ErrorTags[]) {\n tags = tags ? [...tags, ErrorTags.WS] : [ErrorTags.WS];\n\n const messageWithChannel = `${message}. ChannelName - ${channelName}`;\n\n super(messageWithChannel, tags);\n }\n}\n","import type StackTrace from 'stacktrace-js';\nimport { firstValueFrom } from 'rxjs';\nimport {\n ErrorHandler,\n Inject,\n Injectable,\n isDevMode,\n NgZone,\n} from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { windowToken } from '../../window.token';\nimport { SettingsService } from '../../settings/settings.service';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { TaggedError } from '../errors/tagged-error.class';\nimport { ErrorTags } from '../errors/elk-error-types.enum';\nimport { AdditionalInfo } from './additional-info.interface';\nimport { ErrorWithoutMetaFields } from './error-without-meta-fields.interface';\nimport { LogMessage } from './log-message.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ElkLoggerService implements ErrorHandler {\n private readonly stackTrace: Promise<typeof StackTrace>;\n private readonly vendors: RegExp = new RegExp(\n 'node_modules\\\\/(@angular|zone).*.js$'\n );\n\n public constructor(\n @Inject(windowToken) private readonly window: ExtendedWindow,\n private readonly settingsService: SettingsService,\n private readonly http: HttpClient,\n private readonly ngZone: NgZone\n ) {\n this.stackTrace = this.loadStackTrace();\n }\n\n public handleError(error: Error): void {\n this.ngZone.runOutsideAngular(() => {\n if (isDevMode()) {\n console.error(error);\n return;\n }\n\n this.parseError(error).catch(console.log);\n });\n }\n\n public log(\n message: string,\n tags: ErrorTags[],\n extra?: { [key: string]: unknown }\n ): void {\n const logTags = [ErrorTags.HEADLESS_UI, ...tags];\n\n if (isDevMode()) {\n console.log(message, tags);\n return;\n }\n\n const logMessage: LogMessage = {\n additionalInfo: this.getAdditionalInfo(),\n extra,\n message,\n };\n\n this.sendLog(logMessage, logTags);\n }\n\n private async parseError(error: Error): Promise<TaggedError> {\n const errorObj =\n error instanceof TaggedError\n ? error\n : new TaggedError(error.message || error.toString());\n\n errorObj.trace = await this.getErrorTrace(errorObj);\n errorObj.additionalInfo = this.getAdditionalInfo();\n\n const { tags } = errorObj;\n\n const cleanError = this.removeErrorMetaFields(errorObj);\n\n this.sendLog(cleanError, tags);\n return errorObj;\n }\n\n private async loadStackTrace(): Promise<typeof StackTrace> {\n const library = await import('stacktrace-js');\n return library.default;\n }\n\n private async getErrorTrace(error: Error): Promise<string> {\n const stackTrace = await this.stackTrace;\n\n const stackFramesArr = await stackTrace.fromError(error);\n\n const filteredFramesArr = stackFramesArr.filter(\n ({ fileName }) => fileName && !this.vendors.test(fileName)\n );\n\n return filteredFramesArr\n .map((stackFrame) => stackFrame.toString())\n .join('\\n');\n }\n\n private getAdditionalInfo(): AdditionalInfo {\n const extractUrlHost = (url: string): string =>\n url.replace(/^https?:\\/\\/([^/?#]+).*$/i, '$1');\n\n return {\n location: {\n url: this.window.location.href,\n },\n project: {\n id: this.settingsService.project.id,\n },\n referrer: {\n url: this.window.document.referrer,\n },\n viewport: {\n width: this.window.document.documentElement.clientWidth,\n height: this.window.document.documentElement.clientHeight,\n },\n cdn_address: this.settingsService.settings.cdnUrl\n ? extractUrlHost(this.settingsService.settings.cdnUrl)\n : 'none',\n country: this.settingsService.user.country.value,\n local: this.settingsService.user.country.localized_name,\n };\n }\n\n private removeErrorMetaFields(error: TaggedError): ErrorWithoutMetaFields {\n const metaPropList = [\n 'parentTag',\n 'childTag',\n 'RESTRICTED_KEYS_REGEXP',\n 'tags',\n ];\n\n Object.keys(error).forEach((key) => {\n if (metaPropList.includes(key)) delete error[key as keyof TaggedError];\n });\n\n // implementing own 'message' property from prototype\n return { ...error, message: error.message };\n }\n\n private sendLog(\n message: ErrorWithoutMetaFields | LogMessage,\n tags: ErrorTags[]\n ): void {\n const url = `https://logs-01.xsolla.com/tag/${tags.join(',')}`;\n\n firstValueFrom(\n this.http.post(url, message, {\n headers: new HttpHeaders().set('Content-Type', 'text/plain'),\n responseType: 'text',\n })\n ).catch((err) => console.error('Elk Logger: request error', err));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport type {\n Centrifuge,\n DisconnectedContext,\n PublicationContext,\n Subscription as CentrifugeSubscription,\n} from 'centrifuge';\nimport { StreamPosition, SubscriptionOptions } from 'centrifuge/build/types';\nimport { ElkLoggerService } from '../exceptions-handling/elk/elk-logger.service';\nimport { WsError } from '../exceptions-handling/errors/ws-error.class';\nimport { ErrorTags } from '../exceptions-handling/errors/elk-error-types.enum';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CentrifugoWebSocketService implements WebSocketClient {\n public static readonly reconnectionTimeoutIncrementFactor = 2;\n\n public type = WebSocketClientType.centrifugo;\n\n private static readonly timeoutsMs = {\n reconnection: 1000,\n reconnectionMaxDeviation: 1000,\n };\n\n private reconnectionTimeoutMs!: number;\n private reconnectionTimerId: ReturnType<typeof setTimeout> | null = null;\n\n private readonly openConnectionTimerId: number | undefined;\n\n private connection!: Centrifuge;\n private subscription!: CentrifugeSubscription;\n private subscriptionPosition?: StreamPosition;\n private isConnectionOpen = false;\n private isConnecting = false;\n private url!: string;\n private channel!: string;\n private prevSubscribedChannel?: string;\n\n private readonly incomingMessages$: Subject<PublicationContext> =\n new Subject<PublicationContext>();\n\n private readonly successfulReconnectionEventsProxy$: Subject<void> =\n new Subject<void>();\n\n public constructor(private readonly elkLoggerService: ElkLoggerService) {}\n\n public async open(url: string, channel: string): Promise<void> {\n if (url === this.url && channel === this.channel) {\n return;\n }\n\n try {\n this.url = url;\n this.channel = channel;\n await this.createConnection(url, channel);\n } catch (error: unknown) {\n // @ts-expect-error error is unknown\n const message = (error?.message || error) as string;\n const unknownError = new WsError(\n `unknown websocket error: ${message}`,\n channel\n );\n\n this.elkLoggerService.handleError(unknownError);\n }\n }\n\n public close(): void {\n this.clearReconnectionTimer();\n\n if (!this.isConnectionOpen) {\n return;\n }\n\n this.connection.disconnect();\n }\n\n public get messages$(): Observable<string> {\n return (\n this.incomingMessages$\n .asObservable()\n // event don't respect type from argument, it's weird\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n .pipe(map((event) => event.data))\n );\n }\n\n public subscribeOnSuccessfulReconnection(next?: () => void): Subscription {\n return this.successfulReconnectionEventsProxy$\n .asObservable()\n .subscribe(next);\n }\n\n private clearReconnectionTimer(): void {\n if (this.reconnectionTimerId) {\n clearTimeout(this.reconnectionTimerId);\n this.reconnectionTimerId = null;\n }\n }\n\n private setFirstReconnectionTimeout(): void {\n const min =\n CentrifugoWebSocketService.timeoutsMs.reconnection -\n CentrifugoWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n const max =\n CentrifugoWebSocketService.timeoutsMs.reconnection +\n CentrifugoWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n this.reconnectionTimeoutMs =\n Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n private incrementReconnectionTimeout(): void {\n this.reconnectionTimeoutMs =\n this.reconnectionTimeoutMs *\n CentrifugoWebSocketService.reconnectionTimeoutIncrementFactor;\n }\n\n private async getCentrifugoClient(): Promise<typeof Centrifuge> {\n return import('centrifuge').then((module) => module.Centrifuge);\n }\n\n private async createConnection(\n url?: string,\n channel?: string\n ): Promise<void> {\n if (this.isConnectionOpen || this.isConnecting) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const CentrifugeClient = await this.getCentrifugoClient();\n\n const websocketUrl = url ?? this.url;\n const websocketChannel = channel ?? this.channel;\n\n this.connection = new CentrifugeClient(websocketUrl, {\n debug: true,\n maxReconnectDelay: 1500,\n maxServerPingDelay: 1000,\n });\n\n return new Promise<void>((resolve, reject) => {\n this.connection\n .on('connecting', () => {\n this.isConnecting = true;\n })\n .on('connected', () => {\n this.onConnect();\n resolve();\n })\n .on('disconnected', (ctx) => {\n this.onDisconnect(ctx, websocketChannel);\n reject();\n })\n .on('error', (ctx) => {\n const message = `code ${ctx.error.code} - ${ctx.error.message}`;\n\n this.elkLoggerService.log(\n `connection error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n })\n .connect();\n\n this.subscription = this.connection.newSubscription(\n websocketChannel,\n this.getSubscriptionOptions(websocketChannel)\n );\n\n this.subscription\n .on('subscribed', (ctx) => {\n this.subscriptionPosition = ctx.streamPosition;\n this.prevSubscribedChannel = websocketChannel;\n })\n .on('publication', (ctx) => {\n const message = ctx.data as string;\n\n this.elkLoggerService.log(\n `websocket message received: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n\n this.incomingMessages$.next(ctx);\n })\n .on('error', (ctx) => {\n const message = `code ${ctx.error.code} - ${ctx.error.message}`;\n\n this.elkLoggerService.log(\n `subscription error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n })\n .subscribe();\n });\n }\n\n private onConnect(): void {\n clearTimeout(this.openConnectionTimerId);\n this.isConnecting = false;\n this.isConnectionOpen = true;\n }\n\n private onDisconnect(\n ctx: DisconnectedContext,\n websocketChannel: string\n ): void {\n this.isConnecting = false;\n this.isConnectionOpen = false;\n\n /* If connection error, cause any connection error isn't 0 */\n if (ctx.code !== 0) {\n const message = `code ${ctx.code} - ${ctx.reason}`;\n\n this.elkLoggerService.log(\n `disconnected error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n\n (async () => {\n await this.waitWhileNotReconnect();\n })();\n }\n }\n\n private async reconnect(): Promise<boolean> {\n this.clearReconnectionTimer();\n\n return new Promise((resolve) => {\n this.reconnectionTimerId = setTimeout(() => {\n this.createConnection()\n .then(() => resolve(true))\n .catch(() => resolve(false));\n this.incrementReconnectionTimeout();\n }, this.reconnectionTimeoutMs);\n });\n }\n\n private async waitWhileNotReconnect(): Promise<void> {\n this.clearReconnectionTimer();\n this.setFirstReconnectionTimeout();\n\n let isConnected = false;\n\n const beforeTimer = performance.now();\n\n while (!isConnected) {\n isConnected = await this.reconnect();\n }\n\n const afterTimer = performance.now();\n\n const timerDuration = afterTimer - beforeTimer;\n\n this.elkLoggerService.log(\n `fallback to reconnection timer: duration ${timerDuration}ms`,\n [ErrorTags.WS],\n {\n channel: this.channel,\n }\n );\n\n this.successfulReconnectionEventsProxy$.next();\n }\n\n private getSubscriptionOptions(\n websocketChannel: string\n ): Partial<SubscriptionOptions> {\n const options: Partial<SubscriptionOptions> = {\n recoverable: true,\n };\n\n if (\n websocketChannel === this.prevSubscribedChannel &&\n this.subscriptionPosition\n ) {\n options.since = this.subscriptionPosition;\n }\n\n return options;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NchanWebSocketService } from './nchan-web-socket.service';\nimport { CentrifugoWebSocketService } from './centrifugo-web-socket.service';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n// @todo: remove this factory and switch to centrifugo client after centrifugo issues resolved\n@Injectable({\n providedIn: 'root',\n})\nexport class WebSocketFactory {\n public constructor(\n private readonly nchanWebSocket: NchanWebSocketService,\n private readonly centrifugoWebSocket: CentrifugoWebSocketService\n ) {}\n\n public createWebSocketClient(\n url: string,\n clientType: WebSocketClientType\n ): WebSocketClient {\n if (clientType === WebSocketClientType.centrifugo) {\n return this.centrifugoWebSocket;\n }\n\n this.nchanWebSocket.url = url;\n\n return this.nchanWebSocket;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { WebSocketFactory } from '../../../web-socket/web-socket.factory';\nimport { WebSocketClient } from '../../../web-socket/web-socket.interface';\nimport { WebSocketClientType } from '../../../web-socket/web-socket-client-type.enum';\nimport { WebSocketStatus } from './websocket-status.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WebsocketStatusService {\n private webSocketSubscription: Subscription | undefined;\n private webSocketReconnectionSubscription: Subscription | undefined;\n private readonly reinsuranceCheckStatus: {\n timeoutId: ReturnType<typeof setTimeout> | null;\n readonly timeoutMs: number;\n } = {\n timeoutId: null,\n timeoutMs: 180000,\n };\n\n private readonly needCheckStatusSubject = new Subject<void>();\n private readonly statusChangedSubject = new Subject<void>();\n\n private webSocketClient: WebSocketClient | null = null;\n\n public get needCheckStatus$(): Observable<void> {\n return this.needCheckStatusSubject.asObservable();\n }\n public get statusChanged$(): Observable<void> {\n return this.statusChangedSubject.asObservable();\n }\n\n public constructor(private readonly webSocketFactory: WebSocketFactory) {}\n\n public async checkStatusWithWebSocket(\n webSocketUrl: string,\n webSocketChannelName: string,\n webSocketClientType: WebSocketClientType\n ): Promise<void> {\n this.webSocketClient = this.webSocketFactory.createWebSocketClient(\n webSocketUrl,\n webSocketClientType\n );\n\n await this.webSocketClient.open(webSocketUrl, webSocketChannelName);\n\n this.webSocketSubscription?.unsubscribe();\n this.webSocketSubscription = this.webSocketClient.messages$.subscribe(\n (message) => this.statusProcessing(message)\n );\n\n this.webSocketReconnectionSubscription =\n this.webSocketClient.subscribeOnSuccessfulReconnection(() => {\n this.needCheckStatusSubject.next();\n });\n this.needCheckStatusSubject.next();\n this.startReinsuranceCheckTimeout();\n }\n\n public closeWebSocket(): void {\n this.removeSubscription();\n this.webSocketClient?.close();\n this.clearReinsuranceCheckTimeout();\n }\n\n public startReinsuranceCheckTimeout(): void {\n this.clearReinsuranceCheckTimeout();\n this.reinsuranceCheckStatus.timeoutId = setTimeout(() => {\n this.needCheckStatusSubject.next();\n }, this.reinsuranceCheckStatus.timeoutMs);\n }\n\n private clearReinsuranceCheckTimeout(): void {\n if (this.reinsuranceCheckStatus.timeoutId) {\n clearTimeout(this.reinsuranceCheckStatus.timeoutId);\n this.reinsuranceCheckStatus.timeoutId = null;\n }\n }\n\n private statusProcessing(message: string): void {\n if (message === WebSocketStatus.statusChanged) {\n this.statusChangedSubject.next();\n this.closeWebSocket();\n this.clearReinsuranceCheckTimeout();\n }\n if (message === WebSocketStatus.troubledStatus) {\n this.clearReinsuranceCheckTimeout();\n this.closeWebSocket();\n }\n }\n\n private removeSubscription(): void {\n this.webSocketSubscription?.unsubscribe();\n this.webSocketReconnectionSubscription?.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { filter, Observable, Subject, takeUntil } from 'rxjs';\nimport { StatusRequestService } from '../status-request/status-request.service';\nimport { CheckStatusService } from '../check-status/check-status.service';\nimport { WebsocketStatusService } from '../websocket-status/websocket-status.service';\nimport { StatusSettings } from '../status-settings.interface';\nimport { StatusEnum } from '../status.enum';\nimport { StatusUpdated } from '../status-updated.interface';\nimport { StatusResponse } from '../status-request/response/status-response.class';\nimport { CheckStatusResponse } from '../check-status/response/check-status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ListenStatusService {\n public isListening = false;\n\n private readonly websocketOpenedSubject = new Subject<StatusSettings>();\n private readonly statusUpdatedSubject = new Subject<StatusUpdated>();\n private readonly statusDoneSubject = new Subject<StatusSettings>();\n private destroy$ = new Subject<void>();\n\n public get websocketOpened$(): Observable<StatusSettings> {\n return this.websocketOpenedSubject.asObservable();\n }\n\n public get statusUpdated$(): Observable<StatusUpdated> {\n return this.statusUpdatedSubject.asObservable();\n }\n\n public constructor(\n private readonly statusService: StatusRequestService,\n private readonly checkStatusService: CheckStatusService,\n private readonly websocketStatusService: WebsocketStatusService\n ) {}\n\n public listen(invoice: number): Observable<StatusSettings> {\n if (this.isListening) {\n this.stopListening();\n }\n\n this.destroy$ = new Subject<void>();\n this.isListening = true;\n\n this.subscribeStatusUpdate(invoice);\n this.subscribeCheckStatusUpdate();\n this.subscribeWebsocketEvent();\n\n this.checkStatusService.setRequestParams(invoice);\n\n return this.statusDoneSubject.asObservable();\n }\n\n public stopListening(): void {\n this.isListening = false;\n this.websocketStatusService.closeWebSocket();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private subscribeStatusUpdate(invoice: number): void {\n this.statusService.response$\n .pipe(\n filter((statusResponse) => {\n return statusResponse?.status?.invoice === Number(invoice);\n }),\n takeUntil(this.destroy$)\n )\n .subscribe((statusResponse: StatusResponse | null) => {\n if (!statusResponse?.status) {\n return;\n }\n\n const statusSettings = {\n statusState: statusResponse.status.statusState,\n isCancelUser: statusResponse.status.isCancelUser,\n needWebSocket: statusResponse.status.needToCheck,\n backUrlSettings: statusResponse.status.backUrlSettings,\n autoRedirect: statusResponse.status.autoRedirect,\n webSocketUrl: statusResponse.status.webSocketUrl,\n webSocketChannelName: statusResponse.status.webSocketChannelName,\n webSocketClientType: statusResponse.status.webSocketClientType,\n };\n\n this.statusUpdatedSubject.next({\n statusResponse: statusResponse,\n statusSettings: statusSettings,\n });\n\n if (statusSettings.needWebSocket) {\n this.openWebsocket(statusSettings);\n return;\n }\n\n this.stopListening();\n this.statusDoneSubject.next(statusSettings);\n });\n }\n\n private subscribeCheckStatusUpdate(): void {\n this.checkStatusService.response$\n .pipe(takeUntil(this.destroy$))\n .subscribe((checkStatusResponse: CheckStatusResponse | null) => {\n if (!checkStatusResponse?.status) return;\n\n if (checkStatusResponse.status === StatusEnum.done) {\n this.statusService.request();\n this.websocketStatusService.closeWebSocket();\n return;\n }\n\n if (checkStatusResponse.final === false) {\n this.websocketStatusService.startReinsuranceCheckTimeout();\n return;\n }\n });\n }\n\n private subscribeWebsocketEvent(): void {\n this.websocketStatusService.needCheckStatus$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.checkStatusService.request());\n\n this.websocketStatusService.statusChanged$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.statusService.request());\n }\n\n private openWebsocket(statusSettings: StatusSettings): void {\n void this.websocketStatusService.checkStatusWithWebSocket(\n statusSettings.webSocketUrl,\n statusSettings.webSocketChannelName,\n statusSettings.webSocketClientType\n );\n this.websocketOpenedSubject.next(statusSettings);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { firstValueFrom, skip } from 'rxjs';\nimport { StatusRequestService } from './status-request/status-request.service';\nimport { StatusRequestParams } from './status-request/status-request-params.interface';\nimport { ListenStatusService } from './listen-status/listen-status.service';\nimport { Status } from './status.interface';\nimport { NextActionService } from '../actions/next-action.service';\nimport { StatusUpdatedAction } from '../actions/status-updated/status-updated.action.class';\nimport { UrlService } from '../../url/url.service';\nimport { requiredStatusSearchParams } from './status-request/required-status-search-params.const';\nimport { statusSearchParamsMap } from './status-request/status-search-params.map';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusService {\n public constructor(\n private readonly urlService: UrlService,\n private readonly statusRequestService: StatusRequestService,\n private readonly listenStatusService: ListenStatusService,\n private readonly nextActionService: NextActionService\n ) {}\n\n public async getStatus(params: StatusRequestParams): Promise<Status> {\n this.statusRequestService.setRequestParams(params);\n\n this.startWaitingStatusUpdates(params.invoice);\n\n this.statusRequestService.request();\n\n const statusResponse = await firstValueFrom(\n this.statusRequestService.response$\n );\n\n return statusResponse.status;\n }\n\n public async getStatusWithUrlSearchParams(url?: string): Promise<Status> {\n const searchParams = this.getRequestParamsFromUrl(url);\n\n if (!searchParams) {\n throw new Error('No required search params to get status');\n }\n\n return this.getStatus(searchParams);\n }\n\n private getRequestParamsFromUrl(url?: string): StatusRequestParams | null {\n const searchParams = this.urlService.getSearchParams(url ?? '');\n const keys = new Set(Object.keys(searchParams));\n\n if (\n requiredStatusSearchParams.some((requiredKey) => !keys.has(requiredKey))\n ) {\n return null;\n }\n\n const params: { [key: string]: string | number } = {};\n statusSearchParamsMap.forEach((settings, key) => {\n params[settings.key] = settings.converter(searchParams[key]);\n });\n\n return params as unknown as StatusRequestParams;\n }\n\n private startWaitingStatusUpdates(invoice: number): void {\n this.listenStatusService.listen(invoice);\n\n this.listenStatusService.statusUpdated$\n .pipe(skip(1))\n .subscribe(({ statusResponse }) => {\n this.nextActionService.emitFlowUpdates(\n new StatusUpdatedAction(statusResponse)\n );\n });\n }\n}\n","/**\n * default image for purchase item is set on Publisher Account side.\n * for purchase checkout items the image url is converted into base64 string.\n * to determine default image fixed templates are used\n */\nexport const defaultImagePatterns = [\n /^data:image\\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAAAAADmVT4XAAACMUlEQVR4Ae3YgYqdMBSE4fP/,\n /virtual_item_default_image/,\n];\n","import { Price } from './price.interface';\n\nexport function extractMoneyCurrency<T>(\n money: (T & { amount: null | number; currency: string }) | undefined,\n allowZero = true\n): Price {\n return {\n amount: money?.amount ?? (allowZero ? 0 : null),\n currency: money?.currency ?? '',\n };\n}\n\nexport function createPriceOrUndefined(\n amount: number | undefined | null,\n currency: string\n): Price | undefined {\n return amount !== undefined && amount !== null\n ? {\n amount,\n currency,\n }\n : undefined;\n}\n","import { XpsFinance } from '../xps-finance.interface';\nimport { XpsPurchase } from '../xps-purchase.interface';\nimport { CartItem } from './cart-item.interface';\nimport { CartLine } from './cart-line.interface';\nimport { CartSummary } from './cart-summary.interface';\nimport { defaultImagePatterns } from './default-image-patterns.const';\nimport { createPriceOrUndefined, extractMoneyCurrency } from './price.helpers';\nimport { Price } from './price.interface';\n\nexport class FinanceDetails {\n public readonly purchase: XpsPurchase;\n public readonly finance: XpsFinance;\n public readonly cartItems: CartItem[];\n public readonly cartSummary: CartSummary;\n public readonly paymentCountry: string;\n\n private get shouldShowZeroIndirectTaxRate(): boolean {\n return !!(this.finance?.vat?.visible || this.finance?.vat_user?.visible);\n }\n\n private get isSalesTaxes(): boolean {\n return !!(\n this.finance?.sales_tax?.amount || this.finance?.sales_tax_user?.amount\n );\n }\n\n public constructor(parameters: {\n purchase: XpsPurchase;\n finance: XpsFinance;\n }) {\n this.purchase = parameters.purchase;\n this.finance = parameters.finance;\n this.cartItems = this.getFormattedPurchaseForCart();\n this.cartSummary = this.getFormattedPricingForCart();\n this.paymentCountry = this.getPaymentCountry();\n }\n\n private getFormattedPurchaseForCart(): CartItem[] {\n const checkouts: CartItem[] | undefined = this.purchase.checkout_items?.map(\n (item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: item.name,\n price: extractMoneyCurrency(item, false),\n priceBeforeDiscount: createPriceOrUndefined(\n item.amount_before_discount,\n item.currency\n ),\n quantity: item.quantity,\n description: item.description,\n tax: this.getTaxForItem(item.indirect_tax_rate),\n isBonus: item.is_bonus,\n };\n }\n );\n\n const virtualCurrencies: CartItem[] | undefined =\n this.purchase.virtual_currency?.map((item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: `${item.quantity} ${item.name}`,\n price: extractMoneyCurrency(item),\n description: item.description,\n isBonus: item.is_bonus,\n };\n });\n\n const virtualItems: CartItem[] | undefined =\n this.purchase.virtual_items?.map((item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: item.name,\n price: extractMoneyCurrency(item),\n description: item.description,\n quantity: item.quantity,\n isBonus: item.is_bonus,\n };\n });\n\n let checkoutArray: CartItem[] | undefined = undefined;\n if (this.purchase.checkout) {\n checkoutArray = [\n {\n key: 'checkout',\n title: this.purchase.checkout.description,\n price: extractMoneyCurrency(this.purchase.checkout),\n isBonus: this.purchase.checkout.is_bonus ?? false,\n },\n ];\n }\n\n return [\n ...(checkouts ?? []),\n ...(virtualCurrencies ?? []),\n ...(virtualItems ?? []),\n ...(checkoutArray ?? []),\n ];\n }\n\n private getFormattedPricingForCart(): CartSummary {\n // subtotal details fields\n const subtotalDetailsSorting = [\n {\n key: 'discount',\n responseKey: 'discount',\n title: 'Discount',\n },\n {\n key: 'fee',\n responseKey: 'fee',\n title: 'Payment system fee',\n },\n {\n key: 'user-balance',\n responseKey: 'user_balance',\n title: 'Balance',\n },\n ];\n\n return {\n subtotal: {\n title: 'Subtotal',\n money: createPriceOrUndefined(\n this.finance.sub_total.amount,\n this.finance.sub_total.currency\n ),\n },\n subtotalPayment: {\n title: '',\n money: createPriceOrUndefined(\n this.finance.sub_total.payment_amount,\n this.finance.sub_total.payment_currency\n ),\n },\n total: {\n title: 'Total',\n money: extractMoneyCurrency(this.finance.total),\n },\n totalDetails: this.getTaxesForTotalDetails(),\n subtotalDetails: [\n ...subtotalDetailsSorting.map((sorting) => {\n const field = (this.finance as unknown as { [key: string]: unknown })[\n sorting.responseKey\n ] as Price;\n\n if (field) {\n return {\n key: sorting.key,\n title: sorting.title,\n money: {\n amount:\n sorting.key === 'discount' && field.amount\n ? -field.amount\n : field.amount,\n currency: field.currency,\n },\n };\n }\n return sorting;\n }),\n ...this.getTaxesForSubtotalDetails(),\n ],\n };\n }\n\n private getPaymentCountry(): string {\n return this.finance.payment_country.iso;\n }\n\n private getTaxForItem(indirectTaxRate: number | undefined): CartLine | null {\n if (\n indirectTaxRate ||\n (this.shouldShowZeroIndirectTaxRate && indirectTaxRate === 0)\n ) {\n if (this.isSalesTaxes) {\n return {\n key: 'sales-tax',\n content: `Sales tax ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n\n if (this.isIndia()) {\n return {\n key: 'vat-india',\n content: `GST ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n\n if (this.isGhana()) {\n return {\n key: 'vat-ghana',\n content: 'VAT, NHIL, GETFund Levy, and Covid-19 Levy',\n rate: indirectTaxRate,\n };\n }\n\n return {\n key: 'vat',\n content: `VAT ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n return null;\n }\n\n private getTaxesForSubtotalDetails(): CartLine[] {\n const ret = [];\n\n // subtotal. VAT %p\n if (\n this.finance.vat_user &&\n (this.finance?.vat_user?.amount ?? this.finance?.vat_user?.visible)\n ) {\n ret.push({\n key: this.getVatKeyForDetails(),\n title: this.getVatLabelForSubtotalDetails(),\n money: extractMoneyCurrency(this.finance.vat_user),\n });\n }\n\n if (this.finance.sales_tax_user?.amount) {\n ret.push({\n key: 'sales-tax',\n title: 'Sales tax',\n money: extractMoneyCurrency(this.finance.sales_tax_user),\n });\n }\n\n return ret;\n }\n\n private getVatLabelForSubtotalDetails(): string {\n if (this.isIndia()) {\n return `GST ${this.finance.vat_user?.percent ?? ''}%`;\n }\n\n if (this.isGhana()) {\n return `VAT, NHIL, GETFund Levy, and Covid-19 Levy`;\n }\n\n return `VAT ${this.finance.vat_user?.percent ?? ''}%`;\n }\n\n private getTaxesForTotalDetails(): CartLine[] {\n const ret = [];\n\n // for totalDetails. VAT\n if (\n (this.finance?.vat?.amount || this.finance?.vat?.visible) &&\n !this.finance?.vat_user?.amount\n ) {\n ret.push({\n key: this.getVatKeyForDetails(),\n title: this.getVatLabelForTotalDetails(),\n money: extractMoneyCurrency(this.finance.vat),\n });\n }\n\n if (\n this.finance?.sales_tax?.amount &&\n !this.finance?.sales_tax_user?.amount\n ) {\n ret.push({\n key: 'sales-tax',\n title: 'Sales tax included',\n money: extractMoneyCurrency(this.finance.sales_tax),\n });\n }\n\n return ret;\n }\n\n private getVatKeyForDetails(): string {\n if (this.isIndia()) {\n return 'vat-india';\n }\n\n if (this.isGhana()) {\n return 'vat-ghana';\n }\n\n return 'vat';\n }\n\n private getVatLabelForTotalDetails(): string {\n if (this.isIndia()) {\n return `Including ${this.finance.vat.percent}% GST`;\n }\n\n if (this.isGhana()) {\n return 'Including VAT, NHIL, GETFund Levy, and Covid-19 Levy';\n }\n\n return `Including ${this.finance.vat.percent}% VAT`;\n }\n\n private isIndia(): boolean {\n return this.finance?.payment_country.iso === 'IN';\n }\n\n private isGhana(): boolean {\n return this.finance?.payment_country.iso === 'GH';\n }\n\n private isDefaultImage(url: string): boolean {\n return defaultImagePatterns.some((regex) => regex.test(url));\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { FinanceDetails } from './finance-details.class';\n\ntype ResponseParameters = ConstructorParameters<typeof FinanceDetails>;\n\nexport type FinanceDetailsResponseFactory = (\n ...args: ResponseParameters\n) => FinanceDetails;\n\nexport const financeDetailsResponseFactoryToken: InjectionToken<FinanceDetailsResponseFactory> =\n new InjectionToken<FinanceDetailsResponseFactory>('FinanceDetails');\n\nexport const financeDetailsResponseFactoryProvider: ValueProvider = {\n provide: financeDetailsResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new FinanceDetails(...args),\n};\n","import { Inject, Injectable } from '@angular/core';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { XpsSummary } from '../xps-summary.interface';\nimport {\n FinanceDetailsResponseFactory,\n financeDetailsResponseFactoryToken,\n} from './finance-details-response.token';\nimport { FinanceDetails } from './finance-details.class';\n\n@Injectable({ providedIn: 'root' })\nexport class FinanceDetailsService extends EmitDataService<FinanceDetails> {\n public constructor(\n @Inject(financeDetailsResponseFactoryToken)\n private readonly responseFactory: FinanceDetailsResponseFactory\n ) {\n super();\n }\n\n public emit(summary?: XpsSummary): void {\n if (summary) {\n super.emit(this.responseFactory(summary));\n }\n }\n}\n","import { Subject, distinctUntilChanged, takeUntil } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport {\n AbstractControl,\n FormControlStatus,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SubmitResponse } from './submit/response/submit-response.class';\nimport { FormService } from './form/form.service';\nimport { InitializeResponse } from './initialize/initialize-response.class';\nimport { InitializeService } from './initialize/initialize.service';\nimport { Status } from './status/status.interface';\nimport { SubmitService } from './submit/submit.service';\nimport { SyncService } from './sync/sync.service';\nimport { StatusService } from './status/status.service';\nimport { NextActionService } from './actions/next-action.service';\nimport { ControlConfig } from './form/controls/control-config';\nimport { ControlConfigService } from './form/controls/control-config.service';\nimport { FinanceDetails } from './finance-details/finance-details.class';\nimport { FinanceDetailsService } from './finance-details/finance-details.service';\nimport { NextAction } from './actions/next-action.interface';\nimport { XpsSummary } from './xps-summary.interface';\nimport { Field } from './field.interface';\nimport { PaymentConfig } from './payment-config.interface';\nimport { isSubmitResponse } from './submit/response/is-submit-response.function';\nimport { XpsBoolean } from '../xps-boolean.enum';\nimport { StatusRequestParams } from './status/status-request/status-request-params.interface';\nimport { ValidationErrors } from './form/validators/validation-errors.interface';\nimport { ValidationError as ControlValidationError } from './form/validators/validation-error.interface';\nimport { ShowFieldStateAction } from './actions/show-field-state/show-field-state.action.class';\nimport { ShowFieldState } from './show-field-state.interface';\nimport { InputEventName } from './form/input-events.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentService {\n public form: UntypedFormGroup | null = null;\n\n private data: InitializeResponse | SubmitResponse | null = null;\n private financeDetails: FinanceDetails | null = null;\n private fields: Field[] = [];\n private config!: PaymentConfig;\n\n private destroy$ = new Subject<void>();\n private formDestroy$ = new Subject<void>();\n\n public constructor(\n private readonly initializeService: InitializeService,\n private readonly submitService: SubmitService,\n private readonly syncService: SyncService,\n private readonly formService: FormService,\n private readonly statusService: StatusService,\n private readonly financeDetailsService: FinanceDetailsService,\n private readonly nextActionService: NextActionService,\n private readonly controlConfigService: ControlConfigService\n ) {}\n\n public async initialize(config: PaymentConfig): Promise<Field[]> {\n this.destroy$ = new Subject<void>();\n this.formDestroy$ = new Subject<void>();\n\n this.listenFinanceDetails();\n\n this.config = config;\n this.data = await this.initializeService.request(config);\n\n this.fields = this.getFields();\n this.form = this.formService.createForm(this.fields);\n\n this.listenSyncValidationErrors(this.form);\n this.emitFinanceDetails(this.data.paymentForm?.summary);\n this.setupSyncService(this.form, this.fields);\n\n return this.fields.filter(\n (field: Field) => field?.isVisible === XpsBoolean.true\n );\n }\n\n public async submit(): Promise<NextAction | null | void> {\n if (!this.form) {\n throw new Error('form is empty!');\n }\n\n if (!this.form.valid) {\n this.form.markAllAsTouched();\n\n Object.keys(this.form.controls).forEach((controlKey) => {\n const control = this.form?.get(controlKey);\n if (control) {\n const controlObject = this.getControlState(controlKey, control);\n\n this.nextActionService.emitFlowUpdates(\n new ShowFieldStateAction({ ...controlObject, isFocused: true })\n );\n }\n });\n\n return;\n }\n\n const submitResponse = await this.submitService.request(\n this.fields,\n this.form\n );\n\n this.data = submitResponse;\n\n this.emitFinanceDetails(submitResponse.summary);\n\n return this.nextActionService.getNextAction(submitResponse);\n }\n\n public getFields(): Field[] {\n if (this.data instanceof SubmitResponse) {\n return this.data.fields ?? [];\n }\n\n return this.data?.paymentForm?.fields ?? [];\n }\n\n public async validate(field: Field): Promise<ValidationErrors | null> {\n const syncErrors = this.syncService.getSyncValidationErrors(field);\n\n if (syncErrors) {\n return Promise.resolve(syncErrors);\n }\n\n return this.syncService.validate(field);\n }\n\n public runThreeDs(): NextAction {\n throw new Error('Method not implemented.');\n }\n\n public getFinanceDetails(): FinanceDetails | null {\n return this.financeDetails;\n }\n\n public async getStatus(): Promise<Status> {\n if (!isSubmitResponse(this.data)) {\n throw new Error('Should submit form first');\n }\n\n const params: StatusRequestParams = {\n pid: this.config.paymentMethodId,\n invoice: parseInt(this.data.fixInvoice ?? ''),\n signature: this.data.signature ?? '',\n locale:\n this.data.fields.find((field) => field.name === 'locale')?.value ??\n 'en',\n };\n\n return this.statusService.getStatus(params);\n }\n\n public getFieldConfig(field: Field): ControlConfig | null {\n return this.controlConfigService.getConfig(field);\n }\n\n public changeFieldValue(name: string, value: string): void {\n const formControl = this.form?.get(name);\n formControl?.setValue(value);\n }\n\n public changeFieldState(name: string, state: InputEventName): void {\n const formControl = this.form?.get(name);\n\n if (!formControl) {\n return;\n }\n\n const controlObject = this.getControlState(name, formControl);\n\n switch (state) {\n case InputEventName.blur: {\n formControl.markAsTouched();\n\n this.nextActionService.emitFlowUpdates(\n new ShowFieldStateAction({ ...controlObject, isFocused: true })\n );\n return;\n }\n case InputEventName.focus: {\n formControl.markAsUntouched();\n\n this.nextActionService.emitFlowUpdates(\n new ShowFieldStateAction({ ...controlObject, isFocused: false })\n );\n return;\n }\n }\n }\n\n public destroy(): void {\n this.data = null;\n this.financeDetails = null;\n this.form = null;\n this.fields = [];\n this.formDestroy$.next();\n this.destroy$.next();\n }\n\n private emitFinanceDetails(summary?: XpsSummary): void {\n this.financeDetailsService.emit(summary);\n }\n\n private setupSyncService(form: UntypedFormGroup, fields: Field[]): void {\n this.syncService.setup(form, fields);\n this.syncService.data$\n .pipe(takeUntil(this.destroy$))\n .subscribe((response) => this.emitFinanceDetails(response.summary));\n }\n\n private listenFinanceDetails(): void {\n this.financeDetailsService.data$\n .pipe(takeUntil(this.destroy$))\n .subscribe((financeDetails) => (this.financeDetails = financeDetails));\n }\n\n private listenSyncValidationErrors(form: UntypedFormGroup): void {\n Object.keys(form.controls).forEach((key) => {\n const control = form.get(key);\n\n if (control) {\n control.statusChanges\n .pipe(distinctUntilChanged(), takeUntil(this.formDestroy$))\n .subscribe((status) => {\n const controlObject = this.getControlState(key, control, status);\n\n this.nextActionService.emitFlowUpdates(\n new ShowFieldStateAction(controlObject)\n );\n });\n }\n });\n }\n\n private getControlState(\n controlName: string,\n controlObject: AbstractControl,\n status?: FormControlStatus\n ): ShowFieldState {\n const controlError =\n (controlObject.errors?.['rewritableError'] as ControlValidationError) ??\n null;\n\n return {\n fieldName: controlName,\n fieldState: status ?? controlObject.status,\n error: controlError,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../../core/settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RefundPolicyService {\n public readonly defaultVersionId = 2;\n public readonly defaultUrl = 'https://xsolla.com/refund-policy-ps';\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public get url(): string {\n if (!this.settingsService.token) {\n return 'https://xsolla.com/refundpolicy/en-us';\n }\n const language = this.settingsService.user.local ?? 'en';\n const versionId =\n this.settingsService.project.refundPolicySettings?.policy_version_id ??\n this.defaultVersionId;\n const countryIso = this.settingsService.user.country.value ?? '';\n const projectId = this.settingsService.project.id;\n return `${this.defaultUrl}?policy_version_id=${versionId}&language=${language}&country=${countryIso}&project_id=${projectId}`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecureConnectionService {\n public get isWhiteLabel(): boolean {\n return !!this.settingsService.settings?.white_label;\n }\n public get secureConnectionUrl(): string | undefined {\n this.setSecureConnectionUrl();\n return this._secureConnectionUrl;\n }\n\n public readonly secureConnectionApi = 'https://verify.xsolla.com/?url=';\n\n private _secureConnectionUrl?: string;\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n private setSecureConnectionUrl(): void {\n const projectUrl = this.settingsService.project?.projectUrl;\n\n if (projectUrl) {\n this._secureConnectionUrl = `${\n this.secureConnectionApi\n }${encodeURIComponent(projectUrl)}`;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DisclaimerService {\n public readonly disclaimer = 'disclaimer';\n}\n","import { Injectable } from '@angular/core';\nimport { LegalComponentConfig } from './legal.component.config';\nimport { SettingsService } from '../settings/settings.service';\nimport { RefundPolicyService } from './refund-policy.service';\nimport { SecureConnectionService } from './secure-connection.service';\nimport { DisclaimerService } from './disclaimer.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LegalService {\n public readonly sctlPolicyUrl = 'https://xsolla.com/sctl';\n\n private get isJapanUser(): boolean {\n return this.settingsService.user?.local === 'ja';\n }\n\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly refundPolicyService: RefundPolicyService,\n private readonly secureConnectionService: SecureConnectionService,\n private readonly disclaimerService: DisclaimerService\n ) {}\n\n public getLegalComponentConfig(): LegalComponentConfig {\n return {\n isJapanUser: this.isJapanUser,\n refundPolicyUrl: this.refundPolicyService.url,\n sctlPolicyUrl: this.sctlPolicyUrl,\n secureConnection: {\n secureConnectionUrl: this.secureConnectionService.secureConnectionUrl,\n isWhiteLabel: this.secureConnectionService.isWhiteLabel,\n },\n disclaimer: this.disclaimerService.disclaimer,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InitConfiguration } from './core/settings/configuration.interface';\nimport { SettingsService } from './core/settings/settings.service';\nimport { CountryService } from './core/country/country.service';\nimport { PaymentMethodsService } from './core/payment-methods/payment-methods.service';\nimport { PaymentMethod } from './core/payment-methods/payment-method.interface';\nimport { SavedMethodsService } from './core/saved-methods/saved-methods.service';\nimport { SavedMethod } from './core/saved-methods/saved-method.interface';\nimport { UserBalanceResponse } from './core/user-balance/user-balance-response.class';\nimport { UserBalanceService } from './core/user-balance/user-balance.service';\nimport { PaymentConfig } from './core/payment/payment-config.interface';\nimport { PaymentService } from './core/payment/payment.service';\nimport { Payment } from './core/payment/payment.interface';\nimport { Field } from './core/payment/field.interface';\nimport { DeviceFingerPrintService } from './core/device-finger-print/device-finger-print.service';\nimport { LegalService } from './core/legal/legal.service';\nimport { LegalComponentConfig } from './core/legal/legal.component.config';\nimport { NextActionService } from './core/payment/actions/next-action.service';\nimport { FinanceDetailsService } from './core/payment/finance-details/finance-details.service';\nimport { masksFunctionsMap } from './core/payment/form/masks-functions.map';\nimport { PaymentConfigService } from './core/payment/config/config.service';\nimport { Status } from './core/payment/status/status.interface';\nimport { StatusService } from './core/payment/status/status.service';\nimport { InputEventName } from './core/payment/form/input-events.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CoreLibraryService {\n public paymentMethods = {\n getList: async (): Promise<PaymentMethod[]> =>\n this.paymentMethodsService.getList(),\n\n getQuickMethods: async (): Promise<PaymentMethod[]> =>\n this.paymentMethodsService.getQuickMethods(),\n getSavedMethods: async (): Promise<SavedMethod[]> =>\n this.savedMethodsService.getList(),\n getUserBalance: async (): Promise<UserBalanceResponse> =>\n this.userBalanceService.getUserBalance(),\n };\n\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly paymentMethodsService: PaymentMethodsService,\n private readonly savedMethodsService: SavedMethodsService,\n private readonly userBalanceService: UserBalanceService,\n private readonly paymentConfigService: PaymentConfigService,\n private readonly paymentService: PaymentService,\n private readonly deviceFingerPrintService: DeviceFingerPrintService,\n private readonly financeDetailsService: FinanceDetailsService,\n private readonly legalService: LegalService,\n private readonly statusService: StatusService,\n private readonly nextActionService: NextActionService\n ) {}\n\n public async init(configuration: InitConfiguration): Promise<void> {\n await this.settingsService.init(configuration);\n await this.deviceFingerPrintService.init();\n }\n\n public async getStatus(url?: string): Promise<Status> {\n return this.statusService.getStatusWithUrlSearchParams(url);\n }\n\n public setCountry(country: string): void {\n this.countryService.setCountry(country);\n }\n\n public createPayment(config: PaymentConfig): Payment {\n const enrichedConfig = this.paymentConfigService.enrich(config);\n\n return {\n initialize: async () => this.paymentService.initialize(enrichedConfig),\n submit: async () => this.paymentService.submit(),\n getFields: () => this.paymentService.getFields(),\n validate: async (field: Field) => this.paymentService.validate(field),\n getFinanceDetails: () => this.paymentService.getFinanceDetails(),\n runThreeDs: () => this.paymentService.runThreeDs(),\n getStatus: async () => this.paymentService.getStatus(),\n flowUpdates$: this.nextActionService.flowUpdates$,\n financeDetailsUpdates$: this.financeDetailsService.data$,\n form: {\n getControlConfig: (field: Field) =>\n this.paymentService.getFieldConfig(field),\n changeFieldValue: (name: string, value: string) =>\n this.paymentService.changeFieldValue(name, value),\n changeFieldState: (name: string, state: InputEventName) => {\n this.paymentService.changeFieldState(name, state);\n },\n },\n };\n }\n\n public getLegalComponentConfig(): LegalComponentConfig {\n return this.legalService.getLegalComponentConfig();\n }\n\n public getFieldMask(field: Field): undefined | (() => string) {\n const sanitizedName = field.name.replace(/^fix_/i, '');\n return masksFunctionsMap[sanitizedName];\n }\n}\n","import { HttpErrorResponse, HttpRequest } from '@angular/common/http';\nimport { AppError } from './app-error.class';\nimport { HttpErrorData } from '../http-interceptor/http-error-data.interface';\nimport { HttpErrorResponseData } from '../http-interceptor/http-error-response-data.interface';\n\nexport class HttpError extends AppError {\n private readonly RESTRICTED_KEYS_REGEXP = new RegExp(\n '.*(card_number|number|cvv|cvn|month|year|cardholdername|client_data|dfp|password).*',\n 'i'\n );\n private readonly httpErrorData!: HttpErrorData;\n\n public constructor(error: HttpErrorResponse, req: HttpRequest<unknown>) {\n super(error.message);\n\n this.httpErrorData = {\n request: {\n url: req.url,\n method: req.method,\n headers: req.headers,\n },\n response: {\n status: error.status,\n headers: error.headers,\n },\n };\n\n if (req.body) {\n this.httpErrorData.request.data = this.cleanPersonalData(\n req.body as { [key: string]: unknown }\n );\n }\n\n if (error.statusText) {\n const errorData = error.error as HttpErrorResponseData;\n\n this.httpErrorData.response.data = {\n statusText: error.statusText,\n errors: errorData?.errors ?? [],\n };\n }\n }\n\n public getHttpErrorData(): HttpErrorData {\n return this.httpErrorData;\n }\n\n private cleanPersonalData(data: { [key: string]: unknown }): {\n [key: string]: unknown;\n } {\n return Object.entries(data).reduce((acc, [key, val]) => {\n return {\n ...acc,\n [key]: this.RESTRICTED_KEYS_REGEXP.test(key) ? '***' : val,\n };\n }, {});\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\n\nimport { catchError } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { HttpError } from '../errors/http-error.class';\n@Injectable()\nexport class HttpExceptionsInterceptor implements HttpInterceptor {\n public constructor(public router: Router) {}\n\n public intercept(\n req: HttpRequest<unknown>,\n next: HttpHandler\n ): Observable<HttpEvent<unknown>> {\n return next.handle(req).pipe(\n catchError((error: HttpErrorResponse) => {\n return throwError(() => new HttpError(error, req));\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ControlConfigService } from './controls/control-config.service';\nimport { convertersMap, convertersMapToken } from './converters/converters-map';\nimport { EmailConverter } from './converters/email.converter';\nimport { ZipConverter } from './converters/zip.converter';\nimport { FormService } from './form.service';\n\n@NgModule({\n imports: [ReactiveFormsModule],\n providers: [\n FormService,\n ControlConfigService,\n ZipConverter,\n EmailConverter,\n { provide: convertersMapToken, useValue: convertersMap },\n ],\n})\nexport class FormModule {}\n","import { NgModule, ValueProvider } from '@angular/core';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { HttpExceptionsInterceptor } from './core/exceptions-handling/http-interceptor/http-exceptions.interceptor';\nimport { windowToken } from './core/window.token';\nimport { paymentMethodsResponseFactoryProvider } from './core/payment-methods/payment-methods-response.token';\nimport { savedMethodsResponseFactoryProvider } from './core/saved-methods/saved-methods-response.token';\nimport { userBalanceResponseFactoryProvider } from './core/user-balance/user-balance-response.token';\nimport { initializeResponseFactoryProvider } from './core/payment/initialize/initialize-response.token';\nimport { submitRequestFactoryProvider } from './core/payment/submit/request/submit-request.token';\nimport { submitResponseFactoryProvider } from './core/payment/submit/response/submit-response.token';\nimport {\n flowUpdateNextActions,\n nextActions,\n nextActionsToken,\n} from './core/payment/actions/next-actions';\nimport { syncRequestFactoryProvider } from './core/payment/sync/sync-request.token';\nimport { syncResponseFactoryProvider } from './core/payment/sync/sync-response.token';\nimport { FormModule } from './core/payment/form/form.module';\nimport { statusRequestFactoryProvider } from './core/payment/status/status-request/request/status-request.token';\nimport { statusResponseFactoryProvider } from './core/payment/status/status-request/response/status-response.token';\nimport { checkStatusRequestFactoryProvider } from './core/payment/status/check-status/request/check-status-request.token';\nimport { checkStatusResponseFactoryProvider } from './core/payment/status/check-status/response/check-status-response.token';\nimport { financeDetailsResponseFactoryProvider } from './core/payment/finance-details/finance-details-response.token';\n\n@NgModule({\n imports: [HttpClientModule, FormModule],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: HttpExceptionsInterceptor,\n multi: true,\n },\n { provide: windowToken, useValue: window },\n paymentMethodsResponseFactoryProvider,\n savedMethodsResponseFactoryProvider,\n userBalanceResponseFactoryProvider,\n initializeResponseFactoryProvider,\n submitRequestFactoryProvider,\n submitResponseFactoryProvider,\n syncRequestFactoryProvider,\n syncResponseFactoryProvider,\n statusRequestFactoryProvider,\n statusResponseFactoryProvider,\n checkStatusRequestFactoryProvider,\n checkStatusResponseFactoryProvider,\n financeDetailsResponseFactoryProvider,\n {\n provide: nextActionsToken,\n useValue: nextActions,\n },\n ...(nextActions as ValueProvider[]),\n ...(flowUpdateNextActions as ValueProvider[]),\n ],\n})\nexport class CoreLibraryModule {}\n","/*\n * Public API Surface of core-library\n */\n\nexport * from './lib/core-library.service';\nexport * from './lib/core-library.module';\nexport * from './lib/core/legal/legal.component.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SecureApiClient","i1.SettingsService","i2.CountryService","i3.SecureApiClient","i2.SecureApiClient","i1.UrlService","i2.SettingsService","i3.CountryService","i4.NextActionService","i2.DeviceFingerPrintService","i2.NextActionService","i3.SettingsService","i1.SyncService","i1.ControlConfigService","map","i2","i1.ElkLoggerService","i1.NchanWebSocketService","i2.CentrifugoWebSocketService","i1.WebSocketFactory","filter","i1.StatusRequestService","i2.CheckStatusService","i3.WebsocketStatusService","i2.StatusRequestService","i3.ListenStatusService","i1.InitializeService","i2.SubmitService","i3.SyncService","i4.FormService","i5.StatusService","i6.FinanceDetailsService","i7.NextActionService","i8.ControlConfigService","i2.RefundPolicyService","i3.SecureConnectionService","i4.DisclaimerService","i3.PaymentMethodsService","i4.SavedMethodsService","i5.UserBalanceService","i6.PaymentConfigService","i7.PaymentService","i8.DeviceFingerPrintService","i9.FinanceDetailsService","i10.LegalService","i11.StatusService","i12.NextActionService","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xsolla-payment-client-core.mjs","sources":["../../../packages/payment-client-core/src/lib/core/payment/form/masks-functions.map.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/app-error.class.ts","../../../packages/payment-client-core/src/lib/core/settings/empty-utils-response.error.ts","../../../packages/payment-client-core/src/lib/core/window.token.ts","../../../packages/payment-client-core/src/lib/core/http/secure-api/api-url.const.ts","../../../packages/payment-client-core/src/lib/core/http/secure-api/secure-api.service.ts","../../../packages/payment-client-core/src/lib/core/settings/settings.service.ts","../../../packages/payment-client-core/src/lib/core/country/country.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/response-error.class.ts","../../../packages/payment-client-core/src/lib/core/boolean-number.enum.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods.service.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods-response.class.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods-response.token.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods.service.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance-response.class.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance-response.token.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance.service.ts","../../../packages/payment-client-core/src/lib/core/url/url.service.ts","../../../packages/payment-client-core/src/lib/core/payment/config/config.service.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-comand.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/field-names.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/submit-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/is-submit-response.function.ts","../../../packages/payment-client-core/src/lib/core/payment/form/input-event.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/initialize-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/initialize-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-errors/show-errors.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-fields/show-fields.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-fields/show-fields.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/check-status/check-status.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/check-status/check-status.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/status-updated/status-updated.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/status-updated/status-updated.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/redirect.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/redirect.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-errors/show-errors.action.token.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/next-actions.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/next-action.service.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/initialize.service.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-api-part-request.abstract.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/token-error.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/request/submit-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/request/submit-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/submit-response.token.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/terminal-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/default-terminal-error.class.ts","../../../packages/payment-client-core/src/lib/core/device-finger-print/device-finger-print.service.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/submit.service.ts","../../../packages/payment-client-core/src/lib/core/payment/emit-data.service.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-request.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/sync-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/sync-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/sync-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/sync-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/sync.service.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/control-config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/text-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/convert.function.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/email-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/required-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/converter.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/email.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/restricted-value.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/zip.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/converters-map.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/control-config.service.ts","../../../packages/payment-client-core/src/lib/core/payment/form/form.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-search-param.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/required-status-search-params.const.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-search-params.map.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-api-part.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/request/status-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/request/status-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-groups.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/response/status-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/response/status-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-request.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/request/check-status-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/request/check-status-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/response/check-status-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/response/check-status-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/check-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/websocket-status/websocket-status.enum.ts","../../../packages/payment-client-core/src/lib/core/web-socket/web-socket-client-type.enum.ts","../../../packages/payment-client-core/src/lib/core/web-socket/nchan-web-socket.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/elk-error-types.enum.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/tagged-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/ws-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/elk/elk-logger.service.ts","../../../packages/payment-client-core/src/lib/core/web-socket/centrifugo-web-socket.service.ts","../../../packages/payment-client-core/src/lib/core/web-socket/web-socket.factory.ts","../../../packages/payment-client-core/src/lib/core/payment/status/websocket-status/websocket-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/listen-status/listen-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/default-image-patterns.const.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/price.helpers.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/finance-details.class.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/finance-details-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/finance-details.service.ts","../../../packages/payment-client-core/src/lib/core/payment/payment.service.ts","../../../packages/payment-client-core/src/lib/core/legal/refund-policy.service.ts","../../../packages/payment-client-core/src/lib/core/legal/secure-connection.service.ts","../../../packages/payment-client-core/src/lib/core/legal/disclaimer.service.ts","../../../packages/payment-client-core/src/lib/core/legal/legal.service.ts","../../../packages/payment-client-core/src/lib/core-library.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/http-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/http-interceptor/http-exceptions.interceptor.ts","../../../packages/payment-client-core/src/lib/core/payment/form/form.module.ts","../../../packages/payment-client-core/src/lib/core-library.module.ts","../../../packages/payment-client-core/src/public-api.ts","../../../packages/payment-client-core/src/xsolla-payment-client-core.ts"],"sourcesContent":["export const masksFunctionsMap: { [fieldNameOrType: string]: () => string } = {\n zip: () => {\n const zipLength = 5;\n return new Array(zipLength).fill('9').join('');\n },\n};\n","export class AppError extends Error {\n public constructor(message: string) {\n super(message);\n }\n}\n","import { AppError } from '../exceptions-handling/errors/app-error.class';\n\nexport class EmptyUtilsResponseError extends AppError {\n public constructor() {\n super('Utils response is empty or not requested. Check your token.');\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ExtendedWindow } from './extended-window.interface';\n\nexport const windowToken: InjectionToken<ExtendedWindow> = new InjectionToken(\n 'window'\n);\n","export const defaultApiUrl = 'https://secure.xsolla.com/paystation2/api/';\nexport const sandboxApiUrl =\n 'https://sandbox-secure.xsolla.com/paystation2/api/';\n","import { Observable } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { windowToken } from '../../window.token';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { RequestOptions } from './options.interface';\nimport { defaultApiUrl, sandboxApiUrl } from './api-url.const';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecureApiClient {\n private isSandboxMode = false;\n\n public constructor(\n private readonly httpClient: HttpClient,\n @Inject(windowToken)\n private readonly window: ExtendedWindow\n ) {}\n\n public setSandboxMode(isSandboxMode: boolean): void {\n this.isSandboxMode = isSandboxMode;\n }\n\n public get<T>(url: string, options?: RequestOptions): Observable<T> {\n return this.httpClient.get<T>(`${this.baseUrl}${url}`, options);\n }\n\n public post<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.post<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public patch<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.patch<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public put<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.put<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public delete<T>(url: string, options?: RequestOptions): Observable<T> {\n return this.httpClient.delete<T>(`${this.baseUrl}${url}`, options);\n }\n\n public get baseUrl(): string {\n let predefinedBaseUrl: string | null = null;\n\n try {\n predefinedBaseUrl = this.window.localStorage.getItem('devApiUrl');\n } catch (e: unknown) {\n console.warn('localStorage is not available');\n }\n\n if (predefinedBaseUrl) {\n return predefinedBaseUrl;\n }\n\n return this.isSandboxMode ? sandboxApiUrl : defaultApiUrl;\n }\n}\n","import { firstValueFrom } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { HttpParams } from '@angular/common/http';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { DeepReadonly } from '../deep-readonly.type';\nimport { InitConfiguration } from './configuration.interface';\nimport { EmptyUtilsResponseError } from './empty-utils-response.error';\nimport { User } from './user.interface';\nimport { Settings } from './settings.interface';\nimport { Purchase } from './purchase.interface';\nimport { Project } from './project.interface';\nimport { UtilsResponse } from './utils-response.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SettingsService {\n public get project(): DeepReadonly<Project> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.project;\n }\n\n public get purchase(): DeepReadonly<Purchase> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.purchase;\n }\n\n public get settings(): DeepReadonly<Settings> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n if (this.response?.purchase_external_id) {\n return {\n ...this.response.settings,\n purchase_external_id: this.response.purchase_external_id,\n };\n }\n\n return this.response?.settings;\n }\n\n public get user(): DeepReadonly<User> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.user;\n }\n\n public get utilsResponse(): DeepReadonly<UtilsResponse> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response;\n }\n\n public get isEmpty(): boolean {\n return !this.response;\n }\n\n public get token(): string {\n return this._token;\n }\n\n public get hasResponse(): boolean {\n return !!this.response;\n }\n\n public isInitialized = false;\n\n private response!: DeepReadonly<UtilsResponse> | undefined;\n\n private _token = '';\n\n private sandboxMode = false;\n\n public constructor(private readonly secureApi: SecureApiClient) {}\n\n public async init(configuration: InitConfiguration): Promise<void> {\n if (!configuration.token) {\n return Promise.reject('token is missing');\n }\n\n this._token = configuration.token;\n this.sandboxMode = !!configuration.sandbox;\n\n await this.sendRequest(this.token);\n\n this.isInitialized = true;\n }\n\n public isSandboxMode(): boolean {\n return this.sandboxMode;\n }\n\n private async sendRequest(token: string): Promise<void> {\n const params = new HttpParams().set('access_token', token);\n\n this.secureApi.setSandboxMode(this.isSandboxMode());\n\n this.response = await firstValueFrom(\n this.secureApi.get<UtilsResponse>('utils', { params })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CountryService {\n private userDefinedCountry: string | null = null;\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public setCountry(country: string): void {\n this.userDefinedCountry = country;\n }\n\n public getCountry(): string {\n return this.userDefinedCountry ?? this.getTokenCountry();\n }\n\n private getTokenCountry(): string {\n return this.settingsService.user.country.value;\n }\n}\n","import { AppError } from './app-error.class';\n\nexport class ResponseError extends AppError {\n public constructor(message?: string) {\n super('Response failed' + (message ? `: \"${message}\".` : '.'));\n }\n}\n","export enum BooleanNumber {\n false = 0,\n true = 1,\n}\n","import { BooleanNumber } from '../boolean-number.enum';\nimport { PaymentMethodApi } from './payment-method-api.interface';\nimport { PaymentMethod } from './payment-method.interface';\nimport { PaymentMethodsApi } from './payment-methods-api.interface';\n\nexport class PaymentMethodsResponse {\n public readonly top: PaymentMethod[];\n public readonly especial: PaymentMethod[];\n public readonly remained: PaymentMethod[];\n public readonly remainedCount: { total: number; visible: number };\n\n public constructor(paymentMethods: PaymentMethodsApi) {\n this.especial = paymentMethods.especial.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.top = paymentMethods.top.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.remained = paymentMethods.remained.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.remainedCount = {\n total: paymentMethods.remained_count.total,\n visible: paymentMethods.remained_count.visible,\n };\n }\n\n private mapPaymentMethod(method: PaymentMethodApi): PaymentMethod {\n return {\n id: method.id,\n rank: method.rank,\n name: method.name,\n aliases: method.aliases,\n categories: method.cat,\n isVisible: method.is_visible,\n recommended: method.recommended === BooleanNumber.true,\n enabledSaveAccount: method.enabled_save_account,\n iconName: method.switch_icon_name,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { PaymentMethodsResponse } from './payment-methods-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof PaymentMethodsResponse>;\n\nexport type PaymentMethodsResponseFactory = (\n ...args: ResponseParameters\n) => PaymentMethodsResponse;\n\nexport const paymentMethodsResponseFactoryToken: InjectionToken<PaymentMethodsResponseFactory> =\n new InjectionToken<PaymentMethodsResponseFactory>('PaymentMethodsResponse');\n\nexport const paymentMethodsResponseFactoryProvider: ValueProvider = {\n provide: paymentMethodsResponseFactoryToken,\n useValue: (...args: ResponseParameters) =>\n new PaymentMethodsResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { CountryService } from '../country/country.service';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport { PaymentMethod } from './payment-method.interface';\nimport { PaymentMethodsRequestParams } from './payment-methods-request-params.interface';\nimport { PaymentMethodsResponse } from './payment-methods-response.class';\nimport { PaymentMethodsResponseApi } from './payment-methods-response.interface';\nimport {\n PaymentMethodsResponseFactory,\n paymentMethodsResponseFactoryToken,\n} from './payment-methods-response.token';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentMethodsService {\n private readonly apiRoute = 'remained_payment_methods';\n\n private readonly cache = new Map<string, Promise<PaymentMethodsResponse>>();\n\n public constructor(\n @Inject(paymentMethodsResponseFactoryToken)\n private readonly responseFactory: PaymentMethodsResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getList(): Promise<PaymentMethod[]> {\n const response = await this.request();\n return response.remained;\n }\n\n public async getQuickMethods(): Promise<PaymentMethod[]> {\n const response = await this.request();\n return response.especial;\n }\n\n private async request(): Promise<PaymentMethodsResponse> {\n const requestParams: PaymentMethodsRequestParams = {\n access_token: this.settingsService.token,\n country: this.countryService.getCountry(),\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<PaymentMethodsResponseApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n map((response) => this.responseFactory(response.payment_methods))\n )\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n}\n","import { SavedMethodsResponseApi } from './saved-methods-response.interface';\nimport { SavedMethodApi } from './saved-method-api.interface';\nimport { SavedMethod } from './saved-method.interface';\n\nexport class SavedMethodsResponse {\n public readonly list: SavedMethod[];\n\n public constructor(savedMethods: SavedMethodsResponseApi) {\n this.list = savedMethods.list.map((method) => this.mapSavedMethod(method));\n }\n\n private mapSavedMethod(method: SavedMethodApi): SavedMethod {\n return {\n currency: method.currency,\n form: method.form,\n id: method.id,\n isSelected: method.isSelected,\n isBabkaPay: method.is_babka_pay,\n name: method.name,\n pid: method.pid,\n psName: method.psName,\n recurrentType: method.recurrent_type,\n replaced: method.replaced,\n type: method.type,\n cardExpiryDate: method.card_expiry_date,\n iconName: method.switch_icon_name,\n partner: method.partner,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SavedMethodsResponse } from './saved-methods-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof SavedMethodsResponse>;\n\nexport type SavedMethodsResponseFactory = (\n ...args: ResponseParameters\n) => SavedMethodsResponse;\n\nexport const savedMethodsResponseFactoryToken: InjectionToken<SavedMethodsResponseFactory> =\n new InjectionToken<SavedMethodsResponseFactory>('SavedMethodsResponse');\n\nexport const savedMethodsResponseFactoryProvider: ValueProvider = {\n provide: savedMethodsResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new SavedMethodsResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport { SavedMethodsRequestParams } from './saved-methods-request-params.interface';\nimport { SavedMethodsResponseApi } from './saved-methods-response.interface';\nimport {\n SavedMethodsResponseFactory,\n savedMethodsResponseFactoryToken,\n} from './saved-methods-response.token';\nimport { SavedMethodsResponse } from './saved-methods-response.class';\nimport { SavedMethod } from './saved-method.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SavedMethodsService {\n private readonly apiRoute = 'savedmethods';\n\n private readonly cache = new Map<string, Promise<SavedMethodsResponse>>();\n\n public constructor(\n @Inject(savedMethodsResponseFactoryToken)\n private readonly responseFactory: SavedMethodsResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getList(): Promise<SavedMethod[]> {\n const response = await this.request();\n return response.list;\n }\n\n private async request(): Promise<SavedMethodsResponse> {\n const requestParams: SavedMethodsRequestParams = {\n access_token: this.settingsService.token,\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<SavedMethodsResponseApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(map((response) => this.responseFactory(response)))\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n}\n","import { UserBalanceApi } from './user-balance-api.interface';\n\nexport class UserBalanceResponse {\n public readonly isEnoughUserBalance: boolean;\n public readonly isEnoughUserRecurrentBalance: boolean;\n\n public constructor(userBalance: UserBalanceApi) {\n this.isEnoughUserBalance = userBalance.is_enough_user_balance ?? false;\n this.isEnoughUserRecurrentBalance =\n userBalance.is_enough_user_recurrent_balance ?? false;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { UserBalanceResponse } from './user-balance-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof UserBalanceResponse>;\n\nexport type UserBalanceResponseFactory = (\n ...args: ResponseParameters\n) => UserBalanceResponse;\n\nexport const userBalanceResponseFactoryToken: InjectionToken<UserBalanceResponseFactory> =\n new InjectionToken<UserBalanceResponseFactory>('UserBalanceResponse');\n\nexport const userBalanceResponseFactoryProvider: ValueProvider = {\n provide: userBalanceResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new UserBalanceResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport {\n UserBalanceResponseFactory,\n userBalanceResponseFactoryToken,\n} from './user-balance-response.token';\nimport { UserBalanceResponse } from './user-balance-response.class';\nimport { UserBalanceRequestParams } from './user-balance-request-params.interface';\nimport { UserBalanceApi } from './user-balance-api.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserBalanceService {\n private readonly apiRoute = 'balance/sufficiency';\n\n private readonly cache = new Map<string, Promise<UserBalanceResponse>>();\n\n public constructor(\n @Inject(userBalanceResponseFactoryToken)\n private readonly responseFactory: UserBalanceResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getUserBalance(): Promise<UserBalanceResponse> {\n return this.request();\n }\n\n private async request(): Promise<UserBalanceResponse> {\n const requestParams: UserBalanceRequestParams = {\n access_token: this.settingsService.token,\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<UserBalanceApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(map((response) => this.responseFactory(response)))\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SearchParams } from './search-params.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UrlService {\n public addSearchParams(url: string, params: SearchParams = {}): string {\n if (!url) {\n return '';\n }\n\n const urlObject = new URL(url);\n for (const [key, value] of Object.entries(params)) {\n urlObject.searchParams.set(key, value);\n }\n\n return urlObject.toString();\n }\n\n public getSearchParams(url: string): SearchParams {\n if (!url) {\n return {};\n }\n\n const urlObject = new URL(url);\n const searchParams: SearchParams = {};\n\n for (const [key, value] of urlObject.searchParams) {\n searchParams[key] = value;\n }\n\n return searchParams;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../../settings/settings.service';\nimport { UrlService } from '../../url/url.service';\nimport { PaymentConfig } from '../payment-config.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentConfigService {\n public constructor(\n private readonly urlService: UrlService,\n private readonly settingsService: SettingsService\n ) {}\n\n public enrich(config: PaymentConfig): PaymentConfig {\n if (!config.returnUrl) {\n throw new Error('URL is not provided in payment config');\n }\n\n return {\n ...config,\n returnUrl: this.enrichReturnUrl(config.returnUrl),\n };\n }\n\n private enrichReturnUrl(returnUrl: string): string {\n return this.urlService.addSearchParams(returnUrl, {\n token: this.settingsService.token,\n });\n }\n}\n","export enum XpsCommand {\n form = 'form',\n check = 'check',\n status = 'status',\n checkout = 'checkout',\n account = 'account',\n create = 'create',\n}\n","export enum FieldNames {\n address1 = 'address1',\n address2 = 'address2',\n address = 'address',\n allowRecurrentSubscription = 'allowRecurrentSubscription',\n allowSubscription = 'allowSubscription',\n apt = 'apt',\n availableCardTypes = 'available_card_types',\n bank = 'bank',\n birthDate = 'birth_date',\n cardMonth = 'card_month',\n cardYear = 'card_year',\n cardNumber = 'card_number',\n cardholdername = 'cardholdername',\n city = 'city',\n couponCode = 'couponCode',\n cpfName = 'cpf_name',\n cpfNumber = 'cpf_number',\n cvv = 'cvv',\n description = 'description',\n email = 'email',\n psEmail = 'psEmail',\n euCheck = 'eu_check',\n extraCvv = 'extra_cvv',\n extraCardNumber = 'extra_card_number',\n extraCardType = 'extra_card_type',\n fName = 'f_name',\n installments = 'installments',\n lName = 'l_name',\n needInstallments = 'needInstallments',\n personId = 'person_id',\n personIdAr = 'person_id_ar',\n personIdCo = 'person_id_co',\n phone = 'phone',\n purchaseDescription = 'purchaseDescription',\n recurrentType = 'recurrent_type',\n rockstarTaxes = 'rockstar_taxes',\n state = 'state',\n street = 'street',\n streetNumber = 'street_number',\n take2Taxes = 'take2_taxes',\n termsAndConditions = 'termsAndConditions',\n termsAndConditionsAtariPp = 'termsAndConditionsAtariPP',\n termsAndConditionsAtariTc = 'termsAndConditionsAtariTC',\n termsAndConditionsHtcEula = 'termsAndConditionsHtcEula',\n termsAndConditionsRobloxEula = 'termsAndConditionsRobloxEula',\n termsAndConditionsRolandEula = 'termsAndConditionsRolandEula',\n termsAndConditionsDeusLoVultEula = 'termsAndConditionsDeusLoVultEula',\n termsAndConditionsOnzenga = 'termsAndConditionsOnzenga',\n xsollaTipsAmount = 'xsollaTipsAmount',\n zip = 'zip',\n allowSave = 'allowSave',\n koreaLimitsInstruction = 'korea_limits_instruction',\n tokenApplePay = 'token_applepay',\n fixInvoice = 'fix_invoice',\n fixPid = 'fix_pid',\n signature = 'signature',\n qr = 'qr',\n sum = 'sum',\n out = 'out',\n tinkoffDisclaimer = 'ps.tinkoff.disclaimer',\n}\n","import { XpsResponse } from '../../xps-response.interface';\nimport { Field } from '../../field.interface';\nimport { Invoice } from '../../invoice.interface';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { FieldNames } from '../../field-names.enum';\n\nexport class SubmitResponse {\n public readonly parameters: XpsResponse;\n public readonly fields: Field[];\n public onlineBanking?: {\n url: string;\n };\n public readonly data?: unknown;\n public isNeedRedirect: boolean;\n\n public buyData: XpsResponse['buyData'];\n\n public signature?: string;\n public fixInvoice?: string;\n public hasFatalErrors?: boolean;\n public userSession?: Invoice;\n public pid: XpsResponse['pid'];\n public errors: XpsResponse['errors'];\n public summary: XpsResponse['summary'];\n public title: string;\n public currentCommand: XpsCommand | null;\n public messages: XpsResponse['messages'];\n\n public constructor(\n parameters: XpsResponse,\n public readonly responseNumber: number = 0\n ) {\n /* Todo split into properties */\n this.parameters = parameters;\n this.fields = Object.keys(parameters.form).map(\n (key: string): Field => parameters.form[key]\n );\n\n if (parameters.onlineBanking) {\n this.onlineBanking = {\n url: parameters.onlineBanking.value,\n };\n }\n\n this.isNeedRedirect =\n parameters.currentCommand === XpsCommand.account ||\n (parameters.currentCommand === XpsCommand.checkout &&\n Boolean(parameters.checkout));\n\n this.buyData = parameters.buyData;\n\n this.fixInvoice = this.fields.find(\n (field: Field) => field.name === FieldNames.fixInvoice\n )?.value;\n\n this.signature = this.fields.find(\n (field: Field) => field.name === FieldNames.signature\n )?.value;\n\n this.hasFatalErrors = parameters.textAll?.fatal;\n\n this.userSession = parameters.userSession;\n this.pid = parameters.pid;\n this.errors = parameters.errors;\n this.summary = parameters.summary;\n this.title = parameters.title;\n this.currentCommand = parameters.currentCommand;\n this.messages = parameters.messages;\n }\n}\n","import { SubmitResponse } from './submit-response.class';\n\nexport const isSubmitResponse = (value: unknown): value is SubmitResponse => {\n return value instanceof SubmitResponse;\n};\n","export enum InputEventName {\n blur = 'blur',\n focus = 'focus',\n}\n","import { Field } from '../field.interface';\nimport { PaymentForm } from '../payment-form.interface';\nimport { XpsResponse, XpsStatus } from '../xps-response.interface';\n\nexport class InitializeResponse {\n public readonly paymentForm: PaymentForm | null = null;\n\n public constructor(response: XpsResponse) {\n this.paymentForm = this.extractPaymentForm(response);\n }\n\n private extractPaymentForm(response: XpsResponse): PaymentForm | null {\n if (!response) {\n return null;\n }\n\n return {\n totalAmount: response.buyData.sum,\n currency: response.buyData.currency,\n fields: Object.keys(response.form).map(\n (key: string): Field => (response as XpsResponse).form[key]\n ),\n taxDisclaimer: response.taxDisclaimer,\n number: response.number,\n barcode: response.barcode,\n instruction: response.instruction,\n offers: response.offers,\n error: response.error,\n errors: response.errors,\n restrictions: response.restrictions,\n info: response.info,\n buyData: response.buyData,\n pid: response.pid,\n messages: response.messages ?? [],\n title: response.title,\n summary: response.summary,\n skipForm: response.skipForm,\n isSavedMethodPayment: !!response.form?.saved_method_id,\n couponCode: response.form?.couponCode?.value || '',\n publicId: response.public_id,\n skipCheckout: response.skipCheckout,\n koreaNotification: response.form.korea_limits_instruction,\n isCheckout: response.isCheckout,\n categories: response.categories,\n hasFatalErrors: response.textAll?.fatal,\n userSession: response.userSession,\n statusText: (response.status as XpsStatus)?.statusData?.stateText ?? null,\n country: response.country ? response.country.iso : null,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { InitializeResponse } from './initialize-response.class';\n\nexport type ResponseParameters = ConstructorParameters<\n typeof InitializeResponse\n>;\n\nexport type InitializeResponseFactory = (\n ...args: ResponseParameters\n) => InitializeResponse;\n\nexport const initializeResponseFactoryToken: InjectionToken<InitializeResponseFactory> =\n new InjectionToken<InitializeResponseFactory>('InitializeResponse');\n\nexport const initializeResponseFactoryProvider: ValueProvider = {\n provide: initializeResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new InitializeResponse(...args),\n};\n","import { XpsError } from '../../xps-error.interface';\nimport { Action } from '../action.interface';\nimport {\n ShowErrorsActionData,\n ShowErrorsActionType,\n} from './show-errors.action.type';\n\nexport class ShowErrorsAction implements Action {\n public type: ShowErrorsActionType = 'show_errors';\n public data!: ShowErrorsActionData;\n\n public constructor(errors: XpsError[]) {\n this.data = {\n errors,\n };\n }\n}\n","import { Action } from '../action.interface';\nimport {\n ShowFieldsActionData,\n ShowFieldsActionType,\n} from './show-fields.action.type';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsBoolean } from '../../../xps-boolean.enum';\n\nexport class ShowFieldsAction implements Action {\n public type: ShowFieldsActionType = 'show_fields';\n public data: ShowFieldsActionData = {\n fields: [],\n errors: [],\n messages: [],\n order: {},\n };\n\n public constructor(submitResponse: SubmitResponse) {\n this.data.fields = submitResponse.fields.filter(\n (field) => field?.isVisible === XpsBoolean.true\n );\n this.data.errors = submitResponse.errors;\n this.data.messages = submitResponse.messages;\n this.data.order = submitResponse.summary;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ShowFieldsAction } from './show-fields.action.class';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsCommand } from '../../xps-comand.enum';\n\ntype RequestParameters = ConstructorParameters<typeof ShowFieldsAction>;\n\nexport const showFieldsActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('ShowFieldsAction');\n\nexport const showFieldsActionFactoryProvider: ValueProvider = {\n provide: showFieldsActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new ShowFieldsAction(...args),\n isSuitable: (response: SubmitResponse): boolean => {\n return (\n response.currentCommand === XpsCommand.check ||\n response.currentCommand === XpsCommand.form\n );\n },\n },\n};\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { Action } from '../action.interface';\nimport {\n CheckStatusActionData,\n CheckStatusActionType,\n} from './check-status.action.type';\nimport { XpsStatus } from '../../xps-response.interface';\n\nexport class CheckStatusAction implements Action {\n public type: CheckStatusActionType = 'check_status';\n public data!: CheckStatusActionData;\n\n public constructor(submitResponse: SubmitResponse) {\n const status = submitResponse.parameters.status as XpsStatus;\n\n this.data = {\n invoice: status?.invoice,\n signature: submitResponse.parameters.form.signature?.value,\n locale: submitResponse.parameters.form.locale?.value,\n testPs: submitResponse.parameters.form.testPs?.value,\n testXsolla: submitResponse.parameters.form.testXsolla?.value,\n testProject: submitResponse.parameters.form.testProject?.value,\n userReturnStatus: submitResponse.parameters.form.userReturnStatus?.value,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { CheckStatusAction } from './check-status.action.class';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsCommand } from '../../xps-comand.enum';\n\ntype RequestParameters = ConstructorParameters<typeof CheckStatusAction>;\n\nexport const checkStatusActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('CheckStatusAction');\n\nexport const checkStatusActionFactoryProvider: ValueProvider = {\n provide: checkStatusActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new CheckStatusAction(...args),\n isSuitable: (response: SubmitResponse): boolean => {\n return response.currentCommand === XpsCommand.status;\n },\n },\n};\n","import { Action } from '../action.interface';\nimport {\n StatusUpdatedActionData,\n StatusUpdatedActionType,\n} from './status-updated.action.type';\nimport { StatusResponse } from '../../status/status-request/response/status-response.class';\n\nexport class StatusUpdatedAction implements Action {\n public type: StatusUpdatedActionType = 'status_updated';\n public data!: StatusUpdatedActionData;\n\n public constructor(statusResponse: StatusResponse) {\n this.data = {\n statusState: statusResponse.status.statusState,\n invoice: statusResponse.status.invoice,\n isSuccess: statusResponse.status.isSuccess,\n isCanceled: statusResponse.status.isCanceled,\n group: statusResponse.status.group,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { StatusUpdatedAction } from './status-updated.action.class';\n\ntype RequestParameters = ConstructorParameters<typeof StatusUpdatedAction>;\n\nexport const statusUpdatedActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('StatusUpdatedAction');\n\nexport const statusUpdatedActionFactoryProvider: ValueProvider = {\n provide: statusUpdatedActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new StatusUpdatedAction(...args),\n isSuitable: () => false,\n },\n};\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { Action } from '../action.interface';\nimport { RedirectActionData, RedirectActionType } from './redirect.action.type';\n\nexport class RedirectAction implements Action {\n public type: RedirectActionType = 'redirect';\n public data!: RedirectActionData;\n\n public constructor(submitResponse: SubmitResponse) {\n this.data = {\n fields: submitResponse.fields,\n errors: submitResponse.errors,\n messages: submitResponse.messages,\n order: submitResponse.summary,\n invoiceId: submitResponse.fixInvoice,\n redirect: this.getRedirect(submitResponse),\n };\n }\n\n private getRedirect(\n submitResponse: SubmitResponse\n ): RedirectActionData['redirect'] {\n return {\n redirectUrl: submitResponse.parameters.checkout.action,\n data: submitResponse.parameters.checkout.data,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { RedirectAction } from './redirect.action.class';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsCommand } from '../../xps-comand.enum';\n\ntype RequestParameters = ConstructorParameters<typeof RedirectAction>;\n\nexport const redirectActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('RedirectAction');\n\nexport const redirectActionFactoryProvider: ValueProvider = {\n provide: redirectActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new RedirectAction(...args),\n isSuitable: (response: SubmitResponse): boolean => {\n return (\n response.currentCommand === XpsCommand.account ||\n (response.currentCommand === XpsCommand.checkout &&\n Boolean(response.parameters.checkout))\n );\n },\n },\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { ShowErrorsAction } from './show-errors.action.class';\nimport { ActionFactoryValue } from '../action-factory-value.interface';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\n\ntype RequestParameters = ConstructorParameters<typeof ShowErrorsAction>;\n\nexport const showErrorsActionFactoryToken: InjectionToken<ActionFactoryValue> =\n new InjectionToken<ActionFactoryValue>('ShowErrorsAction');\n\nexport const showErrorsActionFactoryProvider: ValueProvider = {\n provide: showErrorsActionFactoryToken,\n useValue: {\n factory: (...args: RequestParameters) => new ShowErrorsAction(...args),\n isSuitable: (response: SubmitResponse): boolean => {\n return Boolean(response.errors?.length);\n },\n },\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { showFieldsActionFactoryProvider } from './show-fields/show-fields.action.token';\nimport { checkStatusActionFactoryProvider } from './check-status/check-status.action.token';\nimport { statusUpdatedActionFactoryProvider } from './status-updated/status-updated.action.token';\nimport { Action } from './action.interface';\nimport { redirectActionFactoryProvider } from './redirect/redirect.action.token';\nimport { showErrorsActionFactoryProvider } from './show-errors/show-errors.action.token';\n\nexport type NextActionTokens = ValueProvider[];\n\nexport const nextActionsToken = new InjectionToken<Action>('Action');\n\nexport const nextActions: NextActionTokens = [\n showFieldsActionFactoryProvider,\n checkStatusActionFactoryProvider,\n redirectActionFactoryProvider,\n];\n\nexport const flowUpdateNextActions: NextActionTokens = [\n statusUpdatedActionFactoryProvider,\n showErrorsActionFactoryProvider,\n];\n","import { Inject, Injectable, Injector, ValueProvider } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { NextAction } from './next-action.interface';\nimport { SubmitResponse } from '../submit/response/submit-response.class';\nimport { nextActionsToken, NextActionTokens } from './next-actions';\nimport { Action } from './action.interface';\nimport { ActionFactoryValue } from './action-factory-value.interface';\nimport { ShowErrorsAction } from './show-errors/show-errors.action.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NextActionService {\n private readonly flowUpdatesSubject = new Subject<NextAction>();\n\n private readonly nextActionsList: ActionFactoryValue[] = [];\n\n public get flowUpdates$(): Observable<NextAction> {\n return this.flowUpdatesSubject.asObservable();\n }\n\n public constructor(\n @Inject(nextActionsToken)\n private readonly nextActionTokens: NextActionTokens,\n private readonly injector: Injector\n ) {\n this.fillNextActionsList();\n }\n\n public getNextAction(submitResponse: SubmitResponse): NextAction | null {\n if (submitResponse.errors?.length) {\n this.emitFlowUpdates(new ShowErrorsAction(submitResponse.errors));\n }\n\n if (!submitResponse.currentCommand) {\n return null;\n }\n\n const nextActionFactory = this.findNextAction(submitResponse);\n\n if (nextActionFactory) {\n return nextActionFactory(submitResponse) as NextAction;\n }\n\n throw new Error('Next action is undefined.');\n }\n\n public emitFlowUpdates(action: NextAction): void {\n this.flowUpdatesSubject.next(action);\n }\n\n private fillNextActionsList(): void {\n this.nextActionTokens.forEach((nextAction: ValueProvider) => {\n const item = this.injector.get<ActionFactoryValue>(nextAction.provide);\n this.nextActionsList.push(item);\n });\n }\n\n private findNextAction(\n submitResponse: SubmitResponse\n ): ((...args: unknown[]) => Action) | undefined {\n const actionType = this.nextActionsList.find(\n (nextAction: ActionFactoryValue) => {\n return nextAction.isSuitable(submitResponse);\n }\n );\n\n if (!actionType) {\n return;\n }\n return actionType.factory;\n }\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map, tap } from 'rxjs';\nimport { CountryService } from '../../country/country.service';\nimport { ResponseError } from '../../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../../http/secure-api/secure-api.service';\nimport { SettingsService } from '../../settings/settings.service';\nimport { InitializeRequestParams } from './initialize-request-params.interface';\nimport { PaymentConfig } from '../payment-config.interface';\nimport { XpsResponse } from '../xps-response.interface';\nimport {\n initializeResponseFactoryToken,\n InitializeResponseFactory,\n} from './initialize-response.token';\nimport { InitializeResponse } from './initialize-response.class';\nimport { NextActionService } from '../actions/next-action.service';\nimport { ShowErrorsAction } from '../actions/show-errors/show-errors.action.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InitializeService {\n private readonly apiRoute = 'directpayment';\n // TODO PAYMENTS-15743: replace with new refer id for headless core\n private readonly ps4ReferId = '22';\n\n public constructor(\n @Inject(initializeResponseFactoryToken)\n protected readonly responseFactory: InitializeResponseFactory,\n private readonly secureApi: SecureApiClient,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly nextActionService: NextActionService\n ) {}\n\n public async request(config: PaymentConfig): Promise<InitializeResponse> {\n const requestParams: InitializeRequestParams = {\n access_token: this.settingsService.token,\n pid: String(config.paymentMethodId),\n refer: this.ps4ReferId,\n country: this.countryService.getCountry(),\n returnUrl: config.returnUrl,\n };\n\n return lastValueFrom(\n this.secureApi\n .post<XpsResponse>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n map((response: XpsResponse) => this.responseFactory(response)),\n tap((response: InitializeResponse) => {\n if (response.paymentForm?.errors?.length) {\n this.nextActionService.emitFlowUpdates(\n new ShowErrorsAction(response.paymentForm.errors)\n );\n }\n })\n )\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n }\n}\n","export abstract class XpsApiPartRequest {\n [fieldName: `xps_${string}`]: unknown;\n\n protected addXpsParameters(parameters: { [key: string]: unknown }): void {\n for (const key in parameters) {\n this[`xps_${key}`] = parameters[key];\n }\n }\n}\n","import { AppError } from './app-error.class';\n\nexport class TokenError extends AppError {\n public constructor() {\n super('XPS API needs token.');\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { AbstractControl, UntypedFormGroup } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { XpsApiPartRequest } from '../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../exceptions-handling/errors/token-error.class';\n\nexport class SubmitRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_dfp_hash?: string;\n\n public constructor(parameters: {\n token: string | null;\n fields: Field[];\n form: UntypedFormGroup;\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n dfpHash: string | null;\n }) {\n super();\n\n const { token, fields, form, dfpHash } = parameters;\n\n if (token === null) {\n throw new TokenError();\n }\n\n this.access_token = token;\n\n if (dfpHash) {\n this.xps_dfp_hash = dfpHash;\n }\n\n this.addXpsParameters(this.getFieldsValues(fields, form));\n }\n\n private getFieldsValues(\n fields: Field[],\n form: UntypedFormGroup\n ): { [key: string]: unknown } {\n return fields.reduce(\n (xpsParams: { [key: string]: string }, field: Field) => {\n const formControl: AbstractControl | null = form.get(field.name);\n\n xpsParams[field.name] = formControl ? formControl.value : field?.value;\n\n return xpsParams;\n },\n {}\n );\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SubmitRequest } from './submit-request.class';\n\nexport type SubmitRequestParameters = ConstructorParameters<\n typeof SubmitRequest\n>;\n\nexport type SubmitRequestFactory = (\n ...args: SubmitRequestParameters\n) => SubmitRequest;\n\nexport const submitRequestFactoryToken: InjectionToken<SubmitRequestFactory> =\n new InjectionToken<SubmitRequestFactory>('SubmitRequest');\n\nexport const submitRequestFactoryProvider: ValueProvider = {\n provide: submitRequestFactoryToken,\n useValue: (...args: SubmitRequestParameters) => new SubmitRequest(...args),\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SubmitResponse } from './submit-response.class';\n\nexport type SubmitResponseParameters = ConstructorParameters<\n typeof SubmitResponse\n>;\n\nexport type SubmitResponseFactory = (\n ...args: SubmitResponseParameters\n) => SubmitResponse;\n\nexport const submitResponseFactoryToken: InjectionToken<SubmitResponseFactory> =\n new InjectionToken<SubmitResponseFactory>('SubmitResponse');\n\nexport const submitResponseFactoryProvider: ValueProvider = {\n provide: submitResponseFactoryToken,\n useValue: (...args: SubmitResponseParameters) => new SubmitResponse(...args),\n};\n","import { AppError } from './app-error.class';\n\nexport class TerminalError extends AppError {\n public code!: string;\n\n public constructor(message: string, code: string) {\n super(message);\n\n this.code = code;\n }\n}\n","import { TerminalError } from './terminal-error.class';\n\nexport class DefaultTerminalError extends TerminalError {\n public constructor() {\n const message = `It's not you, it's us, but we can help. Please contact our customer support.`;\n super(message, '1000-0002');\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { FingerprintJs } from './fingerprint-js.interface';\nimport type XsollaAntifraudFingerprint from '@xsolla/antifraud-fingerprint';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport { windowToken } from '../window.token';\nimport { ExtendedWindow } from '../extended-window.interface';\n\nimport { Hash } from './hash.type';\nimport { TerminalError } from '../exceptions-handling/errors/terminal-error.class';\nimport { DefaultTerminalError } from '../exceptions-handling/errors/default-terminal-error.class';\nimport {\n Agent,\n GetResult,\n sources,\n SourcesToComponents,\n} from '@fingerprintjs/fingerprintjs';\nimport { DeviceFingerPrintComponents } from './device-finger-print-components.interface';\nimport { lastValueFrom } from 'rxjs';\nimport { HttpHeaders } from '@angular/common/http';\nimport { HttpError } from '../exceptions-handling/errors/http-error.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DeviceFingerPrintService {\n private hash!: string;\n private readonly apiRoute = 'dfp';\n private fingerprintJs!: FingerprintJs;\n private antifraudFingerprintLibrary!: typeof XsollaAntifraudFingerprint;\n\n private readonly fingerprintApiUrl = 'https://afs.xsolla.com/dfp/api/v1/';\n\n public constructor(\n private readonly secureApi: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(windowToken)\n private readonly window: ExtendedWindow\n ) {}\n\n public async init(): Promise<void> {\n if (!this.settingsService.isInitialized) {\n return;\n }\n this.fingerprintJs = await this.loadFingerprintJs();\n this.hash = await this.buildHash();\n this.antifraudFingerprintLibrary =\n await this.loadAntifraudFingerprintLibrary();\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n public async getHash(): Promise<string> {\n return this.hash;\n }\n\n private async loadFingerprintJs(): Promise<FingerprintJs> {\n const { default: library, murmurX64Hash128: getHash } = await import(\n '@fingerprintjs/fingerprintjs'\n );\n\n return { library, getHash };\n }\n\n private async loadAntifraudFingerprintLibrary(): Promise<\n typeof XsollaAntifraudFingerprint\n > {\n const library: { default: unknown } = await import(\n '@xsolla/antifraud-fingerprint'\n );\n\n return library.default as typeof XsollaAntifraudFingerprint;\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n private async makeAntifraudFingerprint(): Promise<XsollaAntifraudFingerprint | null> {\n if (!this.settingsService.token) {\n return null;\n }\n\n const antifraudFingerprint: typeof XsollaAntifraudFingerprint =\n this.antifraudFingerprintLibrary;\n\n try {\n return new antifraudFingerprint({\n api: {\n url: this.fingerprintApiUrl,\n token: this.settingsService.token,\n timeout: 3000,\n },\n retry: {\n num: 1,\n timeout: 500,\n },\n });\n } catch (error: unknown) {\n return null;\n }\n }\n\n /**\n *Загружаем библиотеку, генерируем данные,\n *хешируем с помощью BASE64 и отправляем на бэкенд,\n *в ответ получаем dfp_hash.\n **/\n private async buildHash(): Promise<string> {\n const fingerPrintData = await this.generate();\n const hash: Hash = await this.send(fingerPrintData).catch(() => {\n return null;\n });\n\n return JSON.stringify(hash);\n }\n\n /**\n *Новая версия библиотеки содержит не все компоненты, некоторые приходится имплементировать самостоятельно\n **/\n private getHasLiedResolution(): boolean {\n const { screen } = this.window;\n return (\n screen.width < screen.availWidth || screen.height < screen.availHeight\n );\n }\n\n /**\n *Бэкенд заточен под конкретные поля, которые необходимо смапить.\n **/\n private getComponents(\n components: SourcesToComponents<typeof sources>\n ): DeviceFingerPrintComponents {\n return {\n user_agent: navigator.userAgent,\n language: components.languages.value?.shift()?.shift() ?? '',\n color_depth: components.colorDepth.value,\n device_memory: components.deviceMemory.value,\n hardware_concurrency: components.hardwareConcurrency.value,\n resolution: components.screenResolution.value,\n available_resolution: components.screenResolution.value,\n timezone_offset: new Date().getTimezoneOffset(),\n session_storage: components.sessionStorage.value ? 1 : 0,\n local_storage: components.localStorage.value ? 1 : 0,\n indexed_db: components.indexedDB.value ? 1 : 0,\n open_database: components.openDatabase.value ? 1 : 0,\n navigator_platform: components.platform.value,\n regular_plugins:\n components.plugins.value?.map((plugin) => plugin.name) ?? [],\n canvas: components.canvas.value?.text,\n webgl: components.canvas.value?.text,\n webgl_vendor: components.vendor.value,\n has_lied_resolution: this.getHasLiedResolution(),\n touch_support: Object.values(components.touchSupport.value ?? {}),\n js_fonts: components.fonts.value,\n };\n }\n\n /**\n * Получаем данные dfp с помощью FingerprintJS, мапим необходимые поля, добавляем хэш\n **/\n private async generate(): Promise<DeviceFingerPrintComponents> {\n const { library, getHash } = this.fingerprintJs;\n const fingerprint: Agent = await library.load();\n const commonFingerPrintData: GetResult = await fingerprint.get();\n\n const fingerPrintData: DeviceFingerPrintComponents = this.getComponents(\n commonFingerPrintData.components\n );\n fingerPrintData.hash = getHash(JSON.stringify(fingerPrintData));\n return fingerPrintData;\n }\n\n /**\n * Отправка dfp на сервер, в ответ получаем dfp_hash\n **/\n private async send(\n fingerPrintData: DeviceFingerPrintComponents\n ): Promise<{ '200': string } | null> {\n const token = this.settingsService.token;\n\n if (token === null) {\n throw new DefaultTerminalError();\n }\n\n const requestBody: { access_token: string; 'dfp[200]': string } = {\n access_token: token,\n 'dfp[200]': '',\n };\n\n requestBody['dfp[200]'] = btoa(\n encodeURIComponent(JSON.stringify(fingerPrintData))\n );\n return lastValueFrom(\n this.secureApi.post<{ dfp_hash: { '200': string }; user_id?: string }>(\n this.apiRoute,\n new URLSearchParams(\n requestBody as unknown as { [key: string]: string }\n ),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then((response: { dfp_hash: { '200': string }; user_id?: string }) => {\n return response.dfp_hash;\n })\n .then(async (hash: { '200': string }) => {\n const fingerprint: XsollaAntifraudFingerprint | null =\n await this.makeAntifraudFingerprint();\n\n if (!fingerprint) {\n return null;\n }\n\n await fingerprint\n ?.dispatch(hash['200'])\n .catch((err) => console.log(err));\n\n const afsHash = await fingerprint.hash();\n\n return { '301': afsHash, ...hash };\n })\n .catch((error: HttpError) => {\n const response = error.getHttpErrorData().response;\n\n throw new TerminalError(\n response.data?.errors[0]?.message ?? '',\n response.data?.errors[0]?.support_code ?? ''\n );\n });\n }\n}\n","import { Field } from '../field.interface';\nimport { Inject, Injectable } from '@angular/core';\nimport {\n SubmitRequestFactory,\n submitRequestFactoryToken,\n} from './request/submit-request.token';\nimport {\n SubmitResponseFactory,\n submitResponseFactoryToken,\n} from './response/submit-response.token';\nimport { SettingsService } from '../../settings/settings.service';\nimport { SubmitResponse } from './response/submit-response.class';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { DeviceFingerPrintService } from '../../device-finger-print/device-finger-print.service';\nimport { lastValueFrom } from 'rxjs';\nimport { HttpHeaders } from '@angular/common/http';\nimport { ResponseError } from '../../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../../http/secure-api/secure-api.service';\nimport { XpsResponse } from '../xps-response.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class SubmitService {\n private readonly directPaymentApiRoute = 'directpayment';\n public constructor(\n @Inject(submitRequestFactoryToken)\n private readonly requestFactory: SubmitRequestFactory,\n @Inject(submitResponseFactoryToken)\n private readonly responseFactory: SubmitResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly deviceFingerPrintService: DeviceFingerPrintService,\n\n private readonly secureApi: SecureApiClient\n ) {}\n\n // NB: Never add 'async' statement for this method!\n // 'Async' statement wraps current promise into another.\n // In this way two promises become unequal, that can broke XPS API requests logic.\n\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n public request(\n fields: Field[],\n form: UntypedFormGroup\n ): Promise<SubmitResponse> {\n const responsePromise = this.deviceFingerPrintService\n .getHash()\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n .then((dfpHash: Awaited<string | null>) => {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n fields,\n form,\n dfpHash,\n });\n\n return lastValueFrom(\n this.secureApi.post<XpsResponse>(\n this.directPaymentApiRoute,\n new URLSearchParams({ ...requestParams } as unknown as {\n [key: string]: string;\n }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then((response: XpsResponse) => this.responseFactory(response))\n .catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n });\n return responsePromise;\n }\n}\n","import { Observable, Subject } from 'rxjs';\n\nexport abstract class EmitDataService<Data> {\n public data$: Observable<Data>;\n\n private readonly dataSubject = new Subject<Data>();\n\n public constructor() {\n this.data$ = this.dataSubject.asObservable();\n }\n\n public emit(data: Data): void {\n this.dataSubject.next(data);\n }\n}\n","export abstract class XpsRequest {\n [fieldName: `xps_${string}`]: unknown;\n\n protected addXpsParameters(parameters: { [key: string]: unknown }): void {\n for (const key in parameters) {\n this[`xps_${key}`] = parameters[key];\n }\n }\n}\n","import { UntypedFormGroup } from '@angular/forms';\nimport { Field } from '../field.interface';\nimport { XpsRequest } from '../xps-request.abstract';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class SyncRequest extends XpsRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'calculate';\n\n public constructor(parameters: {\n token: string;\n changedField: Field;\n fields: Field[];\n form: UntypedFormGroup;\n }) {\n super();\n\n this.access_token = parameters.token;\n\n const fieldsValues = this.getFieldsValues(\n parameters.changedField,\n parameters.fields,\n parameters.form\n );\n\n this.addXpsParameters({\n ...fieldsValues,\n change_element: parameters.changedField.name,\n });\n }\n\n private getFieldsValues(\n changedField: Field,\n fields: Field[],\n form: UntypedFormGroup\n ): { [key: string]: unknown } {\n const fieldsMap = this.getFieldsMap(fields);\n return changedField?.javascript?.change.params.reduce(\n (xpsParams: { [key: string]: string }, fieldName: string) => {\n const formControl = form.get(fieldName);\n const field: Field | undefined = fieldsMap.get(fieldName);\n\n if (formControl || field) {\n xpsParams[fieldName] = formControl?.value ?? field?.value;\n }\n\n return xpsParams;\n },\n {}\n );\n }\n\n private getFieldsMap(fields: Field[]): Map<string, Field> {\n const map = new Map<string, Field>();\n fields.forEach((field) => map.set(field.name, field));\n return map;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SyncRequest } from './sync-request.class';\n\nexport type SyncRequestParameters = ConstructorParameters<typeof SyncRequest>;\n\nexport type SyncRequestFactory = (\n ...args: SyncRequestParameters\n) => SyncRequest;\n\nexport const syncRequestFactoryToken: InjectionToken<SyncRequestFactory> =\n new InjectionToken<SyncRequestFactory>('SyncRequest');\n\nexport const syncRequestFactoryProvider: ValueProvider = {\n provide: syncRequestFactoryToken,\n useValue: (...args: SyncRequestParameters) => new SyncRequest(...args),\n};\n","import { ValidationErrors } from '@angular/forms';\nimport { Field } from '../field.interface';\nimport { XpsResponse } from '../xps-response.interface';\n\nexport class SyncResponse {\n public readonly error: ValidationErrors | null = null;\n public readonly fields: Field[];\n public readonly parameters: XpsResponse;\n\n public constructor(changedField: Field, response: XpsResponse) {\n const fieldError = response?.errors?.find(\n (error) => error.element_name === changedField.name\n );\n\n if (fieldError) {\n this.error = {\n asyncError: {\n code: fieldError.code,\n message: fieldError.message,\n },\n };\n }\n\n this.fields = Object.keys(response.form).map(\n (key: string): Field => response.form[key]\n );\n\n this.parameters = response;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SyncResponse } from './sync-response.class';\n\nexport type SyncResponseParameters = ConstructorParameters<typeof SyncResponse>;\n\nexport type SyncResponseFactory = (\n ...args: SyncResponseParameters\n) => SyncResponse;\n\nexport const syncResponseFactoryToken: InjectionToken<SyncResponseFactory> =\n new InjectionToken<SyncResponseFactory>('SyncResponse');\n\nexport const syncResponseFactoryProvider: ValueProvider = {\n provide: syncResponseFactoryToken,\n useValue: (...args: SyncResponseParameters) => new SyncResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { UntypedFormGroup, ValidationErrors } from '@angular/forms';\nimport { lastValueFrom } from 'rxjs';\nimport { SecureApiClient } from '../../http/secure-api/secure-api.service';\nimport { SettingsService } from '../../settings/settings.service';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { Field } from '../field.interface';\nimport { XpsResponse } from '../xps-response.interface';\nimport { FieldSyncState } from './field-sync-state.interface';\nimport {\n SyncRequestFactory,\n syncRequestFactoryToken,\n} from './sync-request.token';\nimport { SyncResponse } from './sync-response.class';\nimport {\n SyncResponseFactory,\n syncResponseFactoryToken,\n} from './sync-response.token';\nimport { NextActionService } from '../actions/next-action.service';\nimport { ShowErrorsAction } from '../actions/show-errors/show-errors.action.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SyncService extends EmitDataService<XpsResponse> {\n private readonly apiRoute = 'directpayment';\n\n private prevFieldSyncStates: { [fieldName: string]: FieldSyncState } = {};\n private form: UntypedFormGroup = new UntypedFormGroup({});\n private fields: Field[] = [];\n\n public constructor(\n @Inject(syncRequestFactoryToken)\n private readonly requestFactory: SyncRequestFactory,\n @Inject(syncResponseFactoryToken)\n private readonly responseFactory: SyncResponseFactory,\n private readonly secureApi: SecureApiClient,\n private readonly nextActionService: NextActionService,\n private readonly settingsService: SettingsService\n ) {\n super();\n }\n\n public setup(form: UntypedFormGroup, fields: Field[]): void {\n this.reset();\n\n this.form = form;\n this.fields = fields;\n }\n\n public reset(): void {\n this.prevFieldSyncStates = {};\n this.form = new UntypedFormGroup({});\n this.fields = [];\n }\n\n public async validate(field: Field): Promise<ValidationErrors | null> {\n if (!this.isReadyField(field)) {\n return Promise.resolve(null);\n }\n\n const control = this.form.get(field.name);\n const value = control?.value;\n const prevFieldState = this.getPrevFieldSyncState(field);\n\n const isInitialValue = value === field.value && !prevFieldState;\n\n if (isInitialValue) {\n return Promise.resolve(null);\n }\n\n if (prevFieldState && value === prevFieldState.value) {\n return Promise.resolve(prevFieldState.result).then((response) => {\n return response?.error ?? null;\n });\n }\n\n const requestPromise = this.request(field);\n this.setPrevFieldSyncState(field, value, requestPromise);\n\n return requestPromise.then((response: SyncResponse) => {\n return response.error ?? null;\n });\n }\n\n public getSyncValidationErrors(field: Field): ValidationErrors | null {\n const control = this.form.get(field.name);\n return control?.errors ?? null;\n }\n\n protected async request(field: Field): Promise<SyncResponse> {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n changedField: field,\n fields: this.fields,\n form: this.form,\n });\n\n return lastValueFrom(\n this.secureApi.post<XpsResponse>(\n this.apiRoute,\n new URLSearchParams(\n requestParams as unknown as { [key: string]: string }\n ),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n ).then((response: XpsResponse) => {\n if (response.errors?.length) {\n this.nextActionService.emitFlowUpdates(\n new ShowErrorsAction(response.errors)\n );\n }\n\n this.emit(response);\n return this.responseFactory(field, response);\n });\n }\n\n private isReadyField(field: Field): boolean {\n const isSyncEnabled = !!field.javascript?.change;\n const isExistsInForm = !!this.form?.get(field.name);\n\n return isSyncEnabled && isExistsInForm;\n }\n\n private getPrevFieldSyncState(field: Field): FieldSyncState {\n return this.prevFieldSyncStates[field.name];\n }\n\n private setPrevFieldSyncState(\n field: Field,\n value: unknown,\n result: Promise<SyncResponse>\n ): void {\n this.prevFieldSyncStates[field.name] = { value, result };\n }\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { ControlType } from './control-type.type';\n\nexport class ControlConfig {\n [option: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n public controlType!: ControlType | string;\n public name!: string;\n public title?: string | null | SafeHtml;\n public shouldHideUserInput?: boolean | null = false;\n}\n","import { ControlConfig } from './control-config';\n\nexport class TextControlConfig extends ControlConfig {\n public controlType = 'text';\n public dataType?: string;\n public maxLength?: number;\n public placeholder?: string;\n public autocomplete?: string;\n public icon?: string;\n public description?: string;\n public inputMode?: string;\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { ValidatorFn as ConvertedValidatorFn } from './validator-fn.type';\nimport { ValidationErrors as ConvertedValidationErrors } from './validation-errors.interface';\nimport { ValidationError as ConvertedValidationError } from './validation-error.interface';\n\nexport function convert(\n validator: ValidatorFn,\n message: string\n): ConvertedValidatorFn {\n return (control: AbstractControl): ConvertedValidationErrors | null => {\n const errors: ValidationErrors | null = validator(control);\n\n if (!errors) {\n return errors;\n }\n\n const firstErrorKey: string = Object.keys(errors)[0];\n const firstError: ConvertedValidationError = errors[firstErrorKey];\n const error =\n typeof firstError === 'object' && firstError !== null ? firstError : {};\n error.message = message;\n\n errors[firstErrorKey] = error;\n\n return errors as ConvertedValidationErrors;\n };\n}\n","import { Validators } from '@angular/forms';\nimport { convert } from './convert.function';\nimport { ValidatorFn } from './validator-fn.type';\n\nconst emailRegexp =\n /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i; // eslint-disable-line\n\nexport function convertedEmailValidator(): ValidatorFn {\n return convert(Validators.pattern(emailRegexp), 'Enter a valid email');\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\nimport { convert } from './convert.function';\n\nexport function convertedRequiredValidator(): ValidatorFn {\n return convert(Validators.required, 'Required');\n}\n","import { UntypedFormControl, Validators } from '@angular/forms';\nimport { XpsBoolean } from '../../../xps-boolean.enum';\nimport { Field } from '../../field.interface';\nimport { SyncService } from '../../sync/sync.service';\nimport { CommonControlConfig } from '../common-control-config.interface';\nimport { ControlConfig } from '../controls/control-config';\nimport { FormState } from '../form-state.interface';\nimport { convert } from '../validators/convert.function';\nimport { convertedRequiredValidator } from '../validators/required-validator';\nimport { ValidatorFn } from '../validators/validator-fn.type';\nimport { AsyncValidatorFn } from '../validators/async-validator-fn.type';\n\nexport abstract class Converter {\n protected constructor(protected syncService: SyncService) {}\n\n public convertToConfig(field: Field, formState?: FormState): ControlConfig {\n const config = this.createControlConfig(field, formState);\n\n if (formState?.disabled) {\n config.disabled = true;\n }\n\n return config;\n }\n\n public convertToFormControl(field: Field): UntypedFormControl {\n return new UntypedFormControl(\n this.getValue(field),\n this.getValidators(field),\n this.getAsyncValidators(field)\n );\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n\n if (field.isMandatory === XpsBoolean.true) {\n validators.push(convertedRequiredValidator());\n }\n\n if (field.regex) {\n const match = /^\\/(.*)\\/([gim]*)$/.exec(field.regex);\n\n if (match) {\n const pattern = new RegExp(match[1], match[2]);\n const errorMessage = field.validation_error_msg\n ? field.validation_error_msg\n : 'Enter valid data';\n validators.push(convert(Validators.pattern(pattern), errorMessage));\n }\n }\n\n return validators;\n }\n\n public getAsyncValidators(\n field: Field\n ): AsyncValidatorFn | AsyncValidatorFn[] | null {\n return async () => this.syncService.validate(field);\n }\n\n public createDefaultControlConfig<T extends { [key: string]: unknown }>(\n controlConfigClass: new () => T,\n field: Field\n ): T {\n const config = new controlConfigClass();\n\n this.copyCommonOptions(config, field);\n\n return config;\n }\n\n public getValue(field: Field): string {\n return field.value;\n }\n\n protected abstract createControlConfig(\n field: Field,\n formState?: FormState\n ): ControlConfig;\n\n protected getDataType(): string {\n return 'text';\n }\n\n protected getAutocomplete(): string {\n return 'off';\n }\n\n protected shouldHideUserInput(): boolean {\n return false;\n }\n\n private getCommonControlConfig(field: Field): CommonControlConfig {\n return {\n name: field.name,\n title: field.title,\n labelHint: field.label_hint,\n dataType: this.getDataType(),\n readonly: field.isReadonly === XpsBoolean.true,\n placeholder: field.example,\n autocomplete: this.getAutocomplete(),\n };\n }\n\n private copyCommonOptions<Target extends { [key: string]: unknown }>(\n target: Target,\n field: Field\n ): void {\n const commonControlConfig = this.getCommonControlConfig(field);\n\n Object.keys(commonControlConfig).forEach((sourceKey: string) => {\n if (!(sourceKey in target)) {\n (target as { [key: string]: unknown })[sourceKey] = (\n commonControlConfig as unknown as { [key: string]: unknown }\n )[sourceKey];\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Field } from '../../field.interface';\nimport { SyncService } from '../../sync/sync.service';\nimport { TextControlConfig } from '../controls/text-control.config';\nimport { convertedEmailValidator } from '../validators/email-validator';\nimport { ValidatorFn } from '../validators/validator-fn.type';\nimport { Converter } from './converter.abstract';\n\n@Injectable()\nexport class EmailConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super.getValidators(field).concat([convertedEmailValidator()]);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.autocomplete = 'email';\n config.icon = 'mail';\n\n return config;\n }\n\n protected getDataType(): string {\n return 'email';\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationErrors } from './validation-errors.interface';\nimport { ValidatorFn } from './validator-fn.type';\n\nexport const restrictedValueValidator = (\n restrictedValue: unknown\n): ValidatorFn => {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n return value !== restrictedValue ? null : { valueAllowed: false };\n };\n};\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { CountryService } from '../../../country/country.service';\nimport { Field } from '../../field.interface';\nimport { SyncService } from '../../sync/sync.service';\nimport { TextControlConfig } from '../controls/text-control.config';\nimport { convert } from '../validators/convert.function';\nimport { restrictedValueValidator } from '../validators/restricted-value.validator';\nimport { Converter } from './converter.abstract';\nimport { masksFunctionsMap } from '../masks-functions.map';\nimport { MaskConfig } from '../mask-config.interface';\n\n@Injectable()\nexport class ZipConverter extends Converter {\n private readonly minLength = 3;\n private readonly maxLength = 10;\n private readonly usCountryLength = 5;\n\n public constructor(\n syncService: SyncService,\n private readonly countryService: CountryService\n ) {\n super(syncService);\n }\n\n private get isUsCountry(): boolean {\n return this.countryService.getCountry() === 'US';\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n const minLength = this.isUsCountry ? this.usCountryLength : this.minLength;\n const maxLength = this.isUsCountry ? this.usCountryLength : this.maxLength;\n const validators: ValidatorFn[] = super\n .getValidators(field)\n .concat([\n convert(\n Validators.minLength(minLength),\n `Enter at least ${minLength} characters`\n ),\n\n convert(\n Validators.maxLength(maxLength),\n `Enter no more than ${maxLength} characters`\n ),\n ]);\n\n if (this.isUsCountry) {\n validators.push(\n convert(restrictedValueValidator('00000'), 'Enter a valid ZIP code')\n );\n }\n\n return validators;\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n config.icon = 'location';\n\n if (this.isUsCountry) {\n config.maskConfig = {\n guide: false,\n unmaskModelValue: true,\n showMask: true,\n } as MaskConfig;\n config.inputMode = 'numeric';\n\n if (masksFunctionsMap['zip']) {\n (config.maskConfig as MaskConfig).mask = masksFunctionsMap['zip'];\n }\n } else {\n config.maxLength = this.maxLength;\n }\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'postal-code';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ConvertersMap } from './converters-map.interface';\nimport { EmailConverter } from './email.converter';\nimport { ZipConverter } from './zip.converter';\n\nexport const convertersMapToken = new InjectionToken<ConvertersMap>(\n 'ConvertersTokensMap'\n);\n\nexport const convertersMap: ConvertersMap = {\n zip: ZipConverter,\n email: EmailConverter,\n};\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { Converter } from '../converters/converter.abstract';\nimport { convertersMapToken } from '../converters/converters-map';\nimport { ConvertersMap } from '../converters/converters-map.interface';\nimport { ControlConfig } from './control-config';\n\n@Injectable()\nexport class ControlConfigService {\n public constructor(\n @Inject(convertersMapToken)\n private readonly convertersMap: ConvertersMap,\n private readonly injector: Injector\n ) {}\n\n public getFormControl(field: Field): UntypedFormControl | null {\n const converter = this.getConverter(field);\n\n if (!converter) {\n return null;\n }\n\n return converter.convertToFormControl(field);\n }\n\n public getConfig(field: Field): ControlConfig | null {\n const converter = this.getConverter(field);\n\n if (!converter) {\n return null;\n }\n\n return converter.convertToConfig(field);\n }\n\n public getConverter(field: Field | null): Converter | null {\n if (!field) {\n return null;\n }\n\n const sanitizedName = field.name.replace(/^fix_/i, '');\n let converter = this.convertersMap[sanitizedName];\n\n if (!converter) {\n converter = this.convertersMap[field.type];\n }\n\n if (!converter) {\n return null;\n }\n\n return this.injector.get<Converter>(converter);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { XpsBoolean } from '../../xps-boolean.enum';\nimport { Field } from '../field.interface';\nimport { ControlConfigService } from './controls/control-config.service';\n\n@Injectable()\nexport class FormService {\n public constructor(\n protected readonly controlConfigService: ControlConfigService\n ) {}\n\n public createForm(fields: Field[]): UntypedFormGroup {\n const controls: { [name: string]: UntypedFormControl } =\n this.getVisibleFields(fields).reduce(\n (result: { [key: string]: UntypedFormControl }, field: Field) => {\n const formControl: UntypedFormControl | null =\n this.controlConfigService.getFormControl(field);\n\n if (formControl) {\n result[field.name] = formControl;\n }\n\n return result;\n },\n {}\n );\n\n return new UntypedFormGroup(controls);\n }\n\n private getVisibleFields(fields: Field[]): Field[] {\n return fields.filter(({ isVisible }) => isVisible === XpsBoolean.true);\n }\n}\n","export enum StatusSearchParam {\n token = 'token',\n pid = 'fix_pid',\n invoice = 'fix_invoice',\n signature = 'signature',\n locale = 'locale',\n testProject = 'fix_testProject',\n testPs = 'fix_testPs',\n testXsolla = 'fix_testXsolla',\n userReturnStatus = 'fix_userReturnStatus',\n}\n","import { StatusSearchParam } from './status-search-param.enum';\n\nexport const requiredStatusSearchParams = [\n StatusSearchParam.token,\n StatusSearchParam.locale,\n StatusSearchParam.signature,\n StatusSearchParam.pid,\n StatusSearchParam.invoice,\n];\n","import { StatusRequestParams } from './status-request-params.interface';\nimport { StatusSearchParam } from './status-search-param.enum';\n\ntype SearchParamConverter = (value: string) => string | number;\n\ninterface StatusSearchParamSettings {\n key: keyof StatusRequestParams;\n converter: SearchParamConverter;\n}\n\nconst stringConverter: SearchParamConverter = (value: string): string => value;\nconst numberConverter: SearchParamConverter = (value: string): number => {\n const numberValue = Number(value);\n return isNaN(numberValue) ? 0 : numberValue;\n};\n\nexport const statusSearchParamsMap = new Map<\n StatusSearchParam,\n StatusSearchParamSettings\n>([\n [\n StatusSearchParam.token,\n {\n key: 'token',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.signature,\n {\n key: 'signature',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.locale,\n {\n key: 'locale',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.userReturnStatus,\n {\n key: 'userReturnStatus',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.pid,\n {\n key: 'pid',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.invoice,\n {\n key: 'invoice',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testProject,\n {\n key: 'testProject',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testPs,\n {\n key: 'testPs',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testXsolla,\n {\n key: 'testXsolla',\n converter: numberConverter,\n },\n ],\n]);\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport abstract class XpsApiPart<Response> {\n public get response$(): Observable<Response> {\n return this.response\n .asObservable()\n .pipe(\n filter<Response | null, Response>(\n (response: Response | null): response is Response => response !== null\n )\n );\n }\n\n private readonly response: BehaviorSubject<Response | null> =\n new BehaviorSubject<Response | null>(null);\n\n public emitResponse(response: Response | null): void {\n this.response.next(response);\n }\n\n public get currentValue(): Response | null {\n return this.response.getValue();\n }\n\n protected abstract request(\n ...args: any[] // eslint-disable-line @typescript-eslint/no-explicit-any\n ): void | Promise<Response | void> | Promise<Response> | Observable<Response>;\n}\n","import { XpsApiPartRequest } from '../../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\nimport { StatusRequestParams } from '../status-request-params.interface';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class StatusRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'status';\n public readonly xps_fix_invoice: number;\n public readonly xps_fix_pid: number;\n public readonly xps_signature: string;\n public readonly xps_locale: string;\n public readonly xps_fix_testProject: number | undefined;\n public readonly xps_fix_testPs: number | undefined;\n public readonly xps_fix_testXsolla: number | undefined;\n public readonly xps_fix_userReturnStatus: string | undefined;\n\n public constructor(parameters: StatusRequestParams) {\n super();\n\n if (!parameters.token) {\n throw new TokenError();\n }\n\n this.access_token = parameters.token;\n this.xps_fix_invoice = parameters.invoice;\n this.xps_fix_pid = parameters.pid;\n this.xps_signature = parameters.signature;\n this.xps_fix_testProject = parameters.testProject;\n this.xps_fix_testPs = parameters.testPs;\n this.xps_fix_testXsolla = parameters.testXsolla;\n this.xps_fix_userReturnStatus = parameters.userReturnStatus;\n this.xps_locale = parameters.locale;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusRequest } from './status-request.class';\n\nexport type StatusRequestParameters = ConstructorParameters<\n typeof StatusRequest\n>;\n\nexport type StatusRequestFactory = (\n ...args: StatusRequestParameters\n) => StatusRequest;\n\nexport const statusRequestFactoryToken: InjectionToken<StatusRequestFactory> =\n new InjectionToken<StatusRequestFactory>('StatusRequest');\n\nexport const statusRequestFactoryProvider: ValueProvider = {\n provide: statusRequestFactoryToken,\n useValue: (...args: StatusRequestParameters) => new StatusRequest(...args),\n};\n","export enum StatusGroups {\n troubled = 'troubled',\n done = 'done',\n invoice = 'invoice',\n}\n","export enum StatusEnum {\n created = 'created',\n awaiting = 'awaiting',\n processing = 'processing',\n authorized = 'authorized',\n held = 'held',\n done = 'done',\n error = 'error',\n canceled = 'canceled',\n}\n","import { Status } from '../../status.interface';\nimport { XpsResponse, XpsStatus } from '../../../xps-response.interface';\nimport { TerminalError } from '../../../../exceptions-handling/errors/terminal-error.class';\nimport { StatusGroups } from '../../status-groups';\nimport { StatusEnum } from '../../status.enum';\n\nexport class StatusResponse {\n public readonly status!: Status;\n private readonly error?: { code: string; message: string };\n public constructor(parameters: {\n status: XpsStatus | null;\n errors: XpsResponse['errors'];\n form?: XpsResponse['form'];\n }) {\n if (parameters.errors?.[0]) {\n this.error = {\n code: parameters.errors[0].code.toString(),\n message: parameters.errors[0].message,\n };\n }\n\n if (!parameters.status) {\n throw new TerminalError(\n this.error?.message ?? '',\n this.error?.code.toString() ?? ''\n );\n }\n\n this.status = {\n statusState: parameters.status.statusData.stateText,\n email: parameters.status.statusData.email,\n webSocketUrl: parameters.status.statusData.webSocketChannelUrl,\n webSocketChannelName: parameters.status.statusData.webSocketChannelName,\n webSocketClientType: parameters.status.statusData.webSocketClientType,\n financeInfo: parameters.status.text.info,\n discount: parameters.status.text.info.discount\n ? Math.abs(\n Number.parseFloat(parameters.status.text.info.discount?.value ?? '')\n )\n : null,\n isCancelUser: parameters.status.isCancelUser,\n postMessageStatus: parameters.status.isCancelUser\n ? StatusGroups.troubled\n : parameters.status.group,\n virtualCurrencyAmount: parameters.status.statusData.out,\n backUrlSettings: {\n backUrl: parameters.status.text.backurl,\n backUrlAction: parameters.status.text.backurl_action,\n backUrlCaption: parameters.status.text.backurl_caption,\n returnRegion: parameters.status.return_region,\n },\n additionalBackButton: this.getAdditionalBackButton(parameters.status),\n group: parameters.status.group,\n needToCheck: parameters.status.needToCheck,\n autoRedirect: parameters.status.autoredirect,\n statusMessage: parameters.status.text.state,\n userId: parameters.status.statusData.v1,\n invoice: parameters.status.statusData.invoice,\n pid: parameters.status.statusData.pid,\n projectAmount: this.getProjectAmount(parameters.status),\n titleClass: parameters.status.title_class,\n paymentCountryIso: parameters.status.statusData.payment_country_iso,\n order: parameters.status.text.order,\n };\n\n if (parameters.form) {\n this.status.userReturnStatus = this.getUserReturnStatus(parameters.form);\n }\n\n if (\n this.status.statusState === StatusEnum.done ||\n this.status.statusState === StatusEnum.authorized\n ) {\n this.status.isSuccess = true;\n }\n\n if (\n this.status.statusState === StatusEnum.canceled ||\n this.status.isCancelUser\n ) {\n this.status.isCanceled = true;\n }\n }\n\n private getUserReturnStatus(form: XpsResponse['form']): string | undefined {\n const value = form['fix_userReturnStatus']?.value;\n if (value === 'undefined') return undefined;\n\n return value;\n }\n\n private getProjectAmount(status: XpsStatus): Status['projectAmount'] {\n if (!status.statusData.projectAmount) {\n return;\n }\n\n const [amount, currency] = status.statusData.projectAmount.split(' ');\n return {\n amount,\n currency,\n };\n }\n\n private getAdditionalBackButton(\n status: XpsStatus\n ): Status['additionalBackButton'] {\n if (!status.text.is_additional_back_url_enabled) {\n return {\n link: '',\n action: '',\n label: '',\n region: '',\n isEnabled: false,\n };\n }\n\n return {\n link: status.text.additional_back_url_link ?? '',\n action: status.text.additional_back_url_action ?? '',\n label: status.text.additional_back_url_label ?? '',\n region: status.additional_button_return_region ?? '',\n isEnabled: status.text.is_additional_back_url_enabled,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusResponse } from './status-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof StatusResponse>;\n\nexport type StatusResponseFactory = (\n ...args: ResponseParameters\n) => StatusResponse;\n\nexport const statusResponseFactoryToken: InjectionToken<StatusResponseFactory> =\n new InjectionToken<StatusResponseFactory>('StatusResponse');\n\nexport const statusResponseFactoryProvider: ValueProvider = {\n provide: statusResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new StatusResponse(...args),\n};\n","import { lastValueFrom } from 'rxjs';\nimport { Injectable, Inject } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { XpsResponse, XpsStatus } from '../../xps-response.interface';\nimport { SettingsService } from '../../../settings/settings.service';\nimport { TerminalError } from '../../../exceptions-handling/errors/terminal-error.class';\nimport { SecureApiClient } from '../../../http/secure-api/secure-api.service';\nimport { XpsApiPart } from '../../xps-api-part.abstract';\nimport {\n StatusRequestFactory,\n statusRequestFactoryToken,\n} from './request/status-request.token';\nimport {\n StatusResponseFactory,\n statusResponseFactoryToken,\n} from './response/status-response.token';\nimport { StatusRequestParams } from './status-request-params.interface';\nimport { StatusResponse } from './response/status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusRequestService extends XpsApiPart<StatusResponse> {\n private readonly apiRoute = 'directpayment';\n private requestParams!: StatusRequestParams;\n public constructor(\n private readonly secureApiClient: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(statusRequestFactoryToken)\n private readonly requestFactory: StatusRequestFactory,\n @Inject(statusResponseFactoryToken)\n private readonly responseFactory: StatusResponseFactory\n ) {\n super();\n }\n\n public setRequestParams(params: StatusRequestParams): void {\n this.requestParams = {\n locale: params.locale,\n testProject: params.testProject,\n testPs: params.testPs,\n testXsolla: params.testXsolla,\n userReturnStatus: params.userReturnStatus,\n invoice: params.invoice,\n pid: params.pid,\n signature: params.signature,\n };\n }\n\n public request(): void {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n ...this.requestParams,\n });\n\n lastValueFrom(\n this.secureApiClient.post<XpsResponse>(\n this.apiRoute,\n new URLSearchParams(\n requestParams as unknown as { [key: string]: string }\n ),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then((response: XpsResponse) => {\n const statusResponse = this.responseFactory({\n status: response.status as XpsStatus | null,\n errors: response.errors,\n form: response.form,\n });\n\n this.emitResponse(statusResponse);\n })\n .catch((e: TerminalError) => {\n throw new TerminalError(e.message, e.code);\n });\n }\n}\n","import { XpsApiPartRequest } from '../../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class CheckStatusRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'status';\n public readonly invoice: number;\n public readonly section = 'getstatus';\n\n public constructor(token: string | null, invoice: number) {\n super();\n\n if (token === null) {\n throw new TokenError();\n }\n\n this.access_token = token;\n this.invoice = invoice;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { CheckStatusRequest } from './check-status-request.class';\n\nexport type CheckStatusRequestParameters = ConstructorParameters<\n typeof CheckStatusRequest\n>;\n\nexport type CheckStatusRequestFactory = (\n ...args: CheckStatusRequestParameters\n) => CheckStatusRequest;\n\nexport const checkStatusRequestFactoryToken: InjectionToken<CheckStatusRequestFactory> =\n new InjectionToken<CheckStatusRequestFactory>('CheckStatusRequest');\n\nexport const checkStatusRequestFactoryProvider: ValueProvider = {\n provide: checkStatusRequestFactoryToken,\n useValue: (...args: CheckStatusRequestParameters) =>\n new CheckStatusRequest(...args),\n};\n","import { Properties } from '../../../../properties.type';\nimport { StatusEnum } from '../../status.enum';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class CheckStatusResponse {\n public readonly status?: StatusEnum;\n public readonly final?: boolean;\n public readonly isPaymentAccountAttached?: boolean;\n public constructor(parameters: Properties<CheckStatusResponse>) {\n this.status = parameters.status;\n this.final = parameters.final;\n this.isPaymentAccountAttached = parameters.isPaymentAccountAttached;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { CheckStatusResponse } from './check-status-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof CheckStatusResponse>;\n\nexport type CheckStatusResponseFactory = (\n ...args: ResponseParameters\n) => CheckStatusResponse;\n\nexport const checkStatusResponseFactoryToken: InjectionToken<CheckStatusResponseFactory> =\n new InjectionToken<CheckStatusResponseFactory>('CheckStatusResponse');\n\nexport const checkStatusResponseFactoryProvider: ValueProvider = {\n provide: checkStatusResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new CheckStatusResponse(...args),\n};\n","import { lastValueFrom } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SecureApiClient } from '../../../http/secure-api/secure-api.service';\nimport { SettingsService } from '../../../settings/settings.service';\nimport { XpsResponse } from '../../xps-response.interface';\nimport { StatusEnum } from '../status.enum';\nimport { ResponseError } from '../../../exceptions-handling/errors/response-error.class';\nimport {\n CheckStatusRequestFactory,\n checkStatusRequestFactoryToken,\n} from './request/check-status-request.token';\nimport {\n CheckStatusResponseFactory,\n checkStatusResponseFactoryToken,\n} from './response/check-status-response.token';\nimport { XpsApiPart } from '../../xps-api-part.abstract';\nimport { CheckStatusResponse } from './response/check-status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CheckStatusService extends XpsApiPart<CheckStatusResponse> {\n private readonly apiRoute = 'directpayment';\n private invoice!: number;\n\n public constructor(\n private readonly secureApiClient: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(checkStatusRequestFactoryToken)\n private readonly requestFactory: CheckStatusRequestFactory,\n @Inject(checkStatusResponseFactoryToken)\n private readonly responseFactory: CheckStatusResponseFactory\n ) {\n super();\n }\n\n public setRequestParams(invoice: number): void {\n this.invoice = invoice;\n }\n\n public request(): void {\n const requestParams = this.requestFactory(\n this.settingsService.token,\n this.invoice\n );\n\n lastValueFrom(\n this.secureApiClient.post<XpsResponse>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams } as unknown as {\n [key: string]: string;\n }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then((response: XpsResponse) => {\n const checkStatusResponse = this.responseFactory({\n status: response.status as StatusEnum,\n final: response.final,\n isPaymentAccountAttached: response.is_payment_account_attached,\n });\n\n this.emitResponse(checkStatusResponse);\n })\n .catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n }\n}\n","export enum WebSocketStatus {\n statusChanged = 'status_changed',\n troubledStatus = 'troubled_status',\n}\n","export enum WebSocketClientType {\n nchan = 'nchan',\n centrifugo = 'centrifugo',\n}\n","import { Observable, Subject, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NchanWebSocketService implements WebSocketClient {\n public static readonly reconnectionTimeoutIncrementFactor = 2;\n\n public url!: string;\n\n public type = WebSocketClientType.nchan;\n\n private static readonly timeoutsMs = {\n reconnection: 1500,\n reconnectionMaxDeviation: 1500,\n };\n\n private openPromise: Promise<unknown> | undefined;\n\n private reconnectionTimeoutMs!: number;\n private reconnectionTimerId: ReturnType<typeof setTimeout> | null = null;\n\n private readonly openConnectionTimerId: number | undefined;\n\n private connection!: WebSocket;\n\n private readonly incomingMessages$: Subject<MessageEvent> =\n new Subject<MessageEvent>();\n private readonly successfulReconnectionEventsProxy$: Subject<void> =\n new Subject<void>();\n\n public async open(): Promise<unknown> {\n if (this.openPromise && !this.isClosed()) {\n return this.openPromise;\n }\n\n this.openPromise = this.createConnection()\n .catch(async () => {\n return this.waitWhileNotReconnect();\n })\n .then(() => {\n this.connection.onclose = async () => this.open();\n });\n\n return this.openPromise;\n }\n\n public close(): void {\n this.clearReconnectionTimer();\n\n if (this.isClosed()) {\n return;\n }\n\n this.connection.onclose = null;\n this.connection.close();\n }\n\n public get messages$(): Observable<string> {\n return this.incomingMessages$\n .asObservable()\n .pipe(map((event: MessageEvent<string>) => event.data));\n }\n\n public subscribeOnSuccessfulReconnection(next?: () => void): Subscription {\n return this.successfulReconnectionEventsProxy$\n .asObservable()\n .subscribe(next);\n }\n\n private isClosed(): boolean {\n if (!this.connection) {\n return true;\n }\n\n return [this.connection.CLOSED, this.connection.CLOSING].includes(\n this.connection.readyState\n );\n }\n\n private clearReconnectionTimer(): void {\n if (this.reconnectionTimerId) {\n clearTimeout(this.reconnectionTimerId);\n this.reconnectionTimerId = null;\n }\n }\n\n private setFirstReconnectionTimeout(): void {\n const min =\n NchanWebSocketService.timeoutsMs.reconnection -\n NchanWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n const max =\n NchanWebSocketService.timeoutsMs.reconnection +\n NchanWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n this.reconnectionTimeoutMs =\n Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n private incrementReconnectionTimeout(): void {\n this.reconnectionTimeoutMs =\n this.reconnectionTimeoutMs *\n NchanWebSocketService.reconnectionTimeoutIncrementFactor;\n }\n\n private async createConnection(): Promise<unknown> {\n this.connection = new WebSocket(this.url);\n this.connection.onmessage = this.incomingMessages$.next.bind(\n this.incomingMessages$\n );\n\n return new Promise<void>((resolve, reject) => {\n this.connection.onopen = () => {\n clearTimeout(this.openConnectionTimerId);\n resolve();\n };\n\n this.connection.onclose = () => {\n reject();\n };\n });\n }\n\n private async reconnect(): Promise<boolean> {\n this.clearReconnectionTimer();\n\n return new Promise((resolve) => {\n this.reconnectionTimerId = setTimeout(() => {\n this.createConnection()\n .then(() => resolve(true))\n .catch(() => resolve(false));\n this.incrementReconnectionTimeout();\n }, this.reconnectionTimeoutMs);\n });\n }\n\n private async waitWhileNotReconnect(): Promise<void> {\n this.clearReconnectionTimer();\n this.setFirstReconnectionTimeout();\n\n let isConnected = false;\n\n while (!isConnected) {\n isConnected = await this.reconnect();\n }\n\n this.successfulReconnectionEventsProxy$.next();\n }\n}\n","export enum ErrorTags {\n APP = 'appError',\n HTTP = 'httpError',\n JS = 'jsError',\n WS = 'webSocket',\n ENCRYPT = 'encrypt',\n APPLEPAY = 'applepay',\n HEADLESS_UI = 'headlessUi',\n GOOGLEPAY = 'googlepay',\n PAYTM = 'paytm',\n}\n","import { ErrorTags } from './elk-error-types.enum';\nimport { AdditionalInfo } from '../elk/additional-info.interface';\n\nexport class TaggedError extends Error {\n public childTag!: ErrorTags;\n public trace!: string;\n public tags: ErrorTags[] = [];\n public additionalInfo!: AdditionalInfo;\n\n private readonly parentTag: ErrorTags = ErrorTags.HEADLESS_UI;\n\n public constructor(message: string, tags?: ErrorTags[]) {\n super(message);\n\n this.tags = this.childTag\n ? [this.parentTag, this.childTag]\n : [this.parentTag];\n\n if (tags) {\n const newTags = tags.filter(\n (t, i, arr) => !this.tags.includes(t) && arr.indexOf(t) == i\n );\n this.tags = [...this.tags, ...newTags];\n }\n }\n}\n","import { ErrorTags } from './elk-error-types.enum';\n\nimport { TaggedError } from './tagged-error.class';\n\nexport class WsError extends TaggedError {\n public constructor(message: string, channelName: string, tags?: ErrorTags[]) {\n tags = tags ? [...tags, ErrorTags.WS] : [ErrorTags.WS];\n\n const messageWithChannel = `${message}. ChannelName - ${channelName}`;\n\n super(messageWithChannel, tags);\n }\n}\n","import type StackTrace from 'stacktrace-js';\nimport { firstValueFrom } from 'rxjs';\nimport {\n ErrorHandler,\n Inject,\n Injectable,\n isDevMode,\n NgZone,\n} from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { windowToken } from '../../window.token';\nimport { SettingsService } from '../../settings/settings.service';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { TaggedError } from '../errors/tagged-error.class';\nimport { ErrorTags } from '../errors/elk-error-types.enum';\nimport { AdditionalInfo } from './additional-info.interface';\nimport { ErrorWithoutMetaFields } from './error-without-meta-fields.interface';\nimport { LogMessage } from './log-message.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ElkLoggerService implements ErrorHandler {\n private readonly stackTrace: Promise<typeof StackTrace>;\n private readonly vendors: RegExp = new RegExp(\n 'node_modules\\\\/(@angular|zone).*.js$'\n );\n\n public constructor(\n @Inject(windowToken) private readonly window: ExtendedWindow,\n private readonly settingsService: SettingsService,\n private readonly http: HttpClient,\n private readonly ngZone: NgZone\n ) {\n this.stackTrace = this.loadStackTrace();\n }\n\n public handleError(error: Error): void {\n this.ngZone.runOutsideAngular(() => {\n if (isDevMode()) {\n console.error(error);\n return;\n }\n\n this.parseError(error).catch(console.log);\n });\n }\n\n public log(\n message: string,\n tags: ErrorTags[],\n extra?: { [key: string]: unknown }\n ): void {\n const logTags = [ErrorTags.HEADLESS_UI, ...tags];\n\n if (isDevMode()) {\n console.log(message, tags);\n return;\n }\n\n const logMessage: LogMessage = {\n additionalInfo: this.getAdditionalInfo(),\n extra,\n message,\n };\n\n this.sendLog(logMessage, logTags);\n }\n\n private async parseError(error: Error): Promise<TaggedError> {\n const errorObj =\n error instanceof TaggedError\n ? error\n : new TaggedError(error.message || error.toString());\n\n errorObj.trace = await this.getErrorTrace(errorObj);\n errorObj.additionalInfo = this.getAdditionalInfo();\n\n const { tags } = errorObj;\n\n const cleanError = this.removeErrorMetaFields(errorObj);\n\n this.sendLog(cleanError, tags);\n return errorObj;\n }\n\n private async loadStackTrace(): Promise<typeof StackTrace> {\n const library = await import('stacktrace-js');\n return library.default;\n }\n\n private async getErrorTrace(error: Error): Promise<string> {\n const stackTrace = await this.stackTrace;\n\n const stackFramesArr = await stackTrace.fromError(error);\n\n const filteredFramesArr = stackFramesArr.filter(\n ({ fileName }) => fileName && !this.vendors.test(fileName)\n );\n\n return filteredFramesArr\n .map((stackFrame) => stackFrame.toString())\n .join('\\n');\n }\n\n private getAdditionalInfo(): AdditionalInfo {\n const extractUrlHost = (url: string): string =>\n url.replace(/^https?:\\/\\/([^/?#]+).*$/i, '$1');\n\n return {\n location: {\n url: this.window.location.href,\n },\n project: {\n id: this.settingsService.project.id,\n },\n referrer: {\n url: this.window.document.referrer,\n },\n viewport: {\n width: this.window.document.documentElement.clientWidth,\n height: this.window.document.documentElement.clientHeight,\n },\n cdn_address: this.settingsService.settings.cdnUrl\n ? extractUrlHost(this.settingsService.settings.cdnUrl)\n : 'none',\n country: this.settingsService.user.country.value,\n local: this.settingsService.user.country.localized_name,\n };\n }\n\n private removeErrorMetaFields(error: TaggedError): ErrorWithoutMetaFields {\n const metaPropList = [\n 'parentTag',\n 'childTag',\n 'RESTRICTED_KEYS_REGEXP',\n 'tags',\n ];\n\n Object.keys(error).forEach((key) => {\n if (metaPropList.includes(key)) delete error[key as keyof TaggedError];\n });\n\n // implementing own 'message' property from prototype\n return { ...error, message: error.message };\n }\n\n private sendLog(\n message: ErrorWithoutMetaFields | LogMessage,\n tags: ErrorTags[]\n ): void {\n const url = `https://logs-01.xsolla.com/tag/${tags.join(',')}`;\n\n firstValueFrom(\n this.http.post(url, message, {\n headers: new HttpHeaders().set('Content-Type', 'text/plain'),\n responseType: 'text',\n })\n ).catch((err) => console.error('Elk Logger: request error', err));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport type {\n Centrifuge,\n DisconnectedContext,\n PublicationContext,\n Subscription as CentrifugeSubscription,\n} from 'centrifuge';\nimport { StreamPosition, SubscriptionOptions } from 'centrifuge/build/types';\nimport { ElkLoggerService } from '../exceptions-handling/elk/elk-logger.service';\nimport { WsError } from '../exceptions-handling/errors/ws-error.class';\nimport { ErrorTags } from '../exceptions-handling/errors/elk-error-types.enum';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CentrifugoWebSocketService implements WebSocketClient {\n public static readonly reconnectionTimeoutIncrementFactor = 2;\n\n public type = WebSocketClientType.centrifugo;\n\n private static readonly timeoutsMs = {\n reconnection: 1000,\n reconnectionMaxDeviation: 1000,\n };\n\n private reconnectionTimeoutMs!: number;\n private reconnectionTimerId: ReturnType<typeof setTimeout> | null = null;\n\n private readonly openConnectionTimerId: number | undefined;\n\n private connection!: Centrifuge;\n private subscription!: CentrifugeSubscription;\n private subscriptionPosition?: StreamPosition;\n private isConnectionOpen = false;\n private isConnecting = false;\n private url!: string;\n private channel!: string;\n private prevSubscribedChannel?: string;\n\n private readonly incomingMessages$: Subject<PublicationContext> =\n new Subject<PublicationContext>();\n\n private readonly successfulReconnectionEventsProxy$: Subject<void> =\n new Subject<void>();\n\n public constructor(private readonly elkLoggerService: ElkLoggerService) {}\n\n public async open(url: string, channel: string): Promise<void> {\n if (url === this.url && channel === this.channel) {\n return;\n }\n\n try {\n this.url = url;\n this.channel = channel;\n await this.createConnection(url, channel);\n } catch (error: unknown) {\n // @ts-expect-error error is unknown\n const message = (error?.message || error) as string;\n const unknownError = new WsError(\n `unknown websocket error: ${message}`,\n channel\n );\n\n this.elkLoggerService.handleError(unknownError);\n }\n }\n\n public close(): void {\n this.clearReconnectionTimer();\n\n if (!this.isConnectionOpen) {\n return;\n }\n\n this.connection.disconnect();\n }\n\n public get messages$(): Observable<string> {\n return (\n this.incomingMessages$\n .asObservable()\n // event don't respect type from argument, it's weird\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n .pipe(map((event) => event.data))\n );\n }\n\n public subscribeOnSuccessfulReconnection(next?: () => void): Subscription {\n return this.successfulReconnectionEventsProxy$\n .asObservable()\n .subscribe(next);\n }\n\n private clearReconnectionTimer(): void {\n if (this.reconnectionTimerId) {\n clearTimeout(this.reconnectionTimerId);\n this.reconnectionTimerId = null;\n }\n }\n\n private setFirstReconnectionTimeout(): void {\n const min =\n CentrifugoWebSocketService.timeoutsMs.reconnection -\n CentrifugoWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n const max =\n CentrifugoWebSocketService.timeoutsMs.reconnection +\n CentrifugoWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n this.reconnectionTimeoutMs =\n Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n private incrementReconnectionTimeout(): void {\n this.reconnectionTimeoutMs =\n this.reconnectionTimeoutMs *\n CentrifugoWebSocketService.reconnectionTimeoutIncrementFactor;\n }\n\n private async getCentrifugoClient(): Promise<typeof Centrifuge> {\n return import('centrifuge').then((module) => module.Centrifuge);\n }\n\n private async createConnection(\n url?: string,\n channel?: string\n ): Promise<void> {\n if (this.isConnectionOpen || this.isConnecting) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const CentrifugeClient = await this.getCentrifugoClient();\n\n const websocketUrl = url ?? this.url;\n const websocketChannel = channel ?? this.channel;\n\n this.connection = new CentrifugeClient(websocketUrl, {\n debug: true,\n maxReconnectDelay: 1500,\n maxServerPingDelay: 1000,\n });\n\n return new Promise<void>((resolve, reject) => {\n this.connection\n .on('connecting', () => {\n this.isConnecting = true;\n })\n .on('connected', () => {\n this.onConnect();\n resolve();\n })\n .on('disconnected', (ctx) => {\n this.onDisconnect(ctx, websocketChannel);\n reject();\n })\n .on('error', (ctx) => {\n const message = `code ${ctx.error.code} - ${ctx.error.message}`;\n\n this.elkLoggerService.log(\n `connection error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n })\n .connect();\n\n this.subscription = this.connection.newSubscription(\n websocketChannel,\n this.getSubscriptionOptions(websocketChannel)\n );\n\n this.subscription\n .on('subscribed', (ctx) => {\n this.subscriptionPosition = ctx.streamPosition;\n this.prevSubscribedChannel = websocketChannel;\n })\n .on('publication', (ctx) => {\n const message = ctx.data as string;\n\n this.elkLoggerService.log(\n `websocket message received: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n\n this.incomingMessages$.next(ctx);\n })\n .on('error', (ctx) => {\n const message = `code ${ctx.error.code} - ${ctx.error.message}`;\n\n this.elkLoggerService.log(\n `subscription error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n })\n .subscribe();\n });\n }\n\n private onConnect(): void {\n clearTimeout(this.openConnectionTimerId);\n this.isConnecting = false;\n this.isConnectionOpen = true;\n }\n\n private onDisconnect(\n ctx: DisconnectedContext,\n websocketChannel: string\n ): void {\n this.isConnecting = false;\n this.isConnectionOpen = false;\n\n /* If connection error, cause any connection error isn't 0 */\n if (ctx.code !== 0) {\n const message = `code ${ctx.code} - ${ctx.reason}`;\n\n this.elkLoggerService.log(\n `disconnected error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n\n (async () => {\n await this.waitWhileNotReconnect();\n })();\n }\n }\n\n private async reconnect(): Promise<boolean> {\n this.clearReconnectionTimer();\n\n return new Promise((resolve) => {\n this.reconnectionTimerId = setTimeout(() => {\n this.createConnection()\n .then(() => resolve(true))\n .catch(() => resolve(false));\n this.incrementReconnectionTimeout();\n }, this.reconnectionTimeoutMs);\n });\n }\n\n private async waitWhileNotReconnect(): Promise<void> {\n this.clearReconnectionTimer();\n this.setFirstReconnectionTimeout();\n\n let isConnected = false;\n\n const beforeTimer = performance.now();\n\n while (!isConnected) {\n isConnected = await this.reconnect();\n }\n\n const afterTimer = performance.now();\n\n const timerDuration = afterTimer - beforeTimer;\n\n this.elkLoggerService.log(\n `fallback to reconnection timer: duration ${timerDuration}ms`,\n [ErrorTags.WS],\n {\n channel: this.channel,\n }\n );\n\n this.successfulReconnectionEventsProxy$.next();\n }\n\n private getSubscriptionOptions(\n websocketChannel: string\n ): Partial<SubscriptionOptions> {\n const options: Partial<SubscriptionOptions> = {\n recoverable: true,\n };\n\n if (\n websocketChannel === this.prevSubscribedChannel &&\n this.subscriptionPosition\n ) {\n options.since = this.subscriptionPosition;\n }\n\n return options;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NchanWebSocketService } from './nchan-web-socket.service';\nimport { CentrifugoWebSocketService } from './centrifugo-web-socket.service';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n// @todo: remove this factory and switch to centrifugo client after centrifugo issues resolved\n@Injectable({\n providedIn: 'root',\n})\nexport class WebSocketFactory {\n public constructor(\n private readonly nchanWebSocket: NchanWebSocketService,\n private readonly centrifugoWebSocket: CentrifugoWebSocketService\n ) {}\n\n public createWebSocketClient(\n url: string,\n clientType: WebSocketClientType\n ): WebSocketClient {\n if (clientType === WebSocketClientType.centrifugo) {\n return this.centrifugoWebSocket;\n }\n\n this.nchanWebSocket.url = url;\n\n return this.nchanWebSocket;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { WebSocketFactory } from '../../../web-socket/web-socket.factory';\nimport { WebSocketClient } from '../../../web-socket/web-socket.interface';\nimport { WebSocketClientType } from '../../../web-socket/web-socket-client-type.enum';\nimport { WebSocketStatus } from './websocket-status.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WebsocketStatusService {\n private webSocketSubscription: Subscription | undefined;\n private webSocketReconnectionSubscription: Subscription | undefined;\n private readonly reinsuranceCheckStatus: {\n timeoutId: ReturnType<typeof setTimeout> | null;\n readonly timeoutMs: number;\n } = {\n timeoutId: null,\n timeoutMs: 180000,\n };\n\n private readonly needCheckStatusSubject = new Subject<void>();\n private readonly statusChangedSubject = new Subject<void>();\n\n private webSocketClient: WebSocketClient | null = null;\n\n public get needCheckStatus$(): Observable<void> {\n return this.needCheckStatusSubject.asObservable();\n }\n public get statusChanged$(): Observable<void> {\n return this.statusChangedSubject.asObservable();\n }\n\n public constructor(private readonly webSocketFactory: WebSocketFactory) {}\n\n public async checkStatusWithWebSocket(\n webSocketUrl: string,\n webSocketChannelName: string,\n webSocketClientType: WebSocketClientType\n ): Promise<void> {\n this.webSocketClient = this.webSocketFactory.createWebSocketClient(\n webSocketUrl,\n webSocketClientType\n );\n\n await this.webSocketClient.open(webSocketUrl, webSocketChannelName);\n\n this.webSocketSubscription?.unsubscribe();\n this.webSocketSubscription = this.webSocketClient.messages$.subscribe(\n (message) => this.statusProcessing(message)\n );\n\n this.webSocketReconnectionSubscription =\n this.webSocketClient.subscribeOnSuccessfulReconnection(() => {\n this.needCheckStatusSubject.next();\n });\n this.needCheckStatusSubject.next();\n this.startReinsuranceCheckTimeout();\n }\n\n public closeWebSocket(): void {\n this.removeSubscription();\n this.webSocketClient?.close();\n this.clearReinsuranceCheckTimeout();\n }\n\n public startReinsuranceCheckTimeout(): void {\n this.clearReinsuranceCheckTimeout();\n this.reinsuranceCheckStatus.timeoutId = setTimeout(() => {\n this.needCheckStatusSubject.next();\n }, this.reinsuranceCheckStatus.timeoutMs);\n }\n\n private clearReinsuranceCheckTimeout(): void {\n if (this.reinsuranceCheckStatus.timeoutId) {\n clearTimeout(this.reinsuranceCheckStatus.timeoutId);\n this.reinsuranceCheckStatus.timeoutId = null;\n }\n }\n\n private statusProcessing(message: string): void {\n if (message === WebSocketStatus.statusChanged) {\n this.statusChangedSubject.next();\n this.closeWebSocket();\n this.clearReinsuranceCheckTimeout();\n }\n if (message === WebSocketStatus.troubledStatus) {\n this.clearReinsuranceCheckTimeout();\n this.closeWebSocket();\n }\n }\n\n private removeSubscription(): void {\n this.webSocketSubscription?.unsubscribe();\n this.webSocketReconnectionSubscription?.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { filter, Observable, Subject, takeUntil } from 'rxjs';\nimport { StatusRequestService } from '../status-request/status-request.service';\nimport { CheckStatusService } from '../check-status/check-status.service';\nimport { WebsocketStatusService } from '../websocket-status/websocket-status.service';\nimport { StatusSettings } from '../status-settings.interface';\nimport { StatusEnum } from '../status.enum';\nimport { StatusUpdated } from '../status-updated.interface';\nimport { StatusResponse } from '../status-request/response/status-response.class';\nimport { CheckStatusResponse } from '../check-status/response/check-status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ListenStatusService {\n public isListening = false;\n\n private readonly websocketOpenedSubject = new Subject<StatusSettings>();\n private readonly statusUpdatedSubject = new Subject<StatusUpdated>();\n private readonly statusDoneSubject = new Subject<StatusSettings>();\n private destroy$ = new Subject<void>();\n\n public get websocketOpened$(): Observable<StatusSettings> {\n return this.websocketOpenedSubject.asObservable();\n }\n\n public get statusUpdated$(): Observable<StatusUpdated> {\n return this.statusUpdatedSubject.asObservable();\n }\n\n public constructor(\n private readonly statusService: StatusRequestService,\n private readonly checkStatusService: CheckStatusService,\n private readonly websocketStatusService: WebsocketStatusService\n ) {}\n\n public listen(invoice: number): Observable<StatusSettings> {\n if (this.isListening) {\n this.stopListening();\n }\n\n this.destroy$ = new Subject<void>();\n this.isListening = true;\n\n this.subscribeStatusUpdate(invoice);\n this.subscribeCheckStatusUpdate();\n this.subscribeWebsocketEvent();\n\n this.checkStatusService.setRequestParams(invoice);\n\n return this.statusDoneSubject.asObservable();\n }\n\n public stopListening(): void {\n this.isListening = false;\n this.websocketStatusService.closeWebSocket();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private subscribeStatusUpdate(invoice: number): void {\n this.statusService.response$\n .pipe(\n filter((statusResponse) => {\n return statusResponse?.status?.invoice === Number(invoice);\n }),\n takeUntil(this.destroy$)\n )\n .subscribe((statusResponse: StatusResponse | null) => {\n if (!statusResponse?.status) {\n return;\n }\n\n const statusSettings = {\n statusState: statusResponse.status.statusState,\n isCancelUser: statusResponse.status.isCancelUser,\n needWebSocket: statusResponse.status.needToCheck,\n backUrlSettings: statusResponse.status.backUrlSettings,\n autoRedirect: statusResponse.status.autoRedirect,\n webSocketUrl: statusResponse.status.webSocketUrl,\n webSocketChannelName: statusResponse.status.webSocketChannelName,\n webSocketClientType: statusResponse.status.webSocketClientType,\n };\n\n this.statusUpdatedSubject.next({\n statusResponse: statusResponse,\n statusSettings: statusSettings,\n });\n\n if (statusSettings.needWebSocket) {\n this.openWebsocket(statusSettings);\n return;\n }\n\n this.stopListening();\n this.statusDoneSubject.next(statusSettings);\n });\n }\n\n private subscribeCheckStatusUpdate(): void {\n this.checkStatusService.response$\n .pipe(takeUntil(this.destroy$))\n .subscribe((checkStatusResponse: CheckStatusResponse | null) => {\n if (!checkStatusResponse?.status) return;\n\n if (checkStatusResponse.status === StatusEnum.done) {\n this.statusService.request();\n this.websocketStatusService.closeWebSocket();\n return;\n }\n\n if (checkStatusResponse.final === false) {\n this.websocketStatusService.startReinsuranceCheckTimeout();\n return;\n }\n });\n }\n\n private subscribeWebsocketEvent(): void {\n this.websocketStatusService.needCheckStatus$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.checkStatusService.request());\n\n this.websocketStatusService.statusChanged$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.statusService.request());\n }\n\n private openWebsocket(statusSettings: StatusSettings): void {\n void this.websocketStatusService.checkStatusWithWebSocket(\n statusSettings.webSocketUrl,\n statusSettings.webSocketChannelName,\n statusSettings.webSocketClientType\n );\n this.websocketOpenedSubject.next(statusSettings);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { firstValueFrom, skip } from 'rxjs';\nimport { StatusRequestService } from './status-request/status-request.service';\nimport { StatusRequestParams } from './status-request/status-request-params.interface';\nimport { ListenStatusService } from './listen-status/listen-status.service';\nimport { Status } from './status.interface';\nimport { NextActionService } from '../actions/next-action.service';\nimport { StatusUpdatedAction } from '../actions/status-updated/status-updated.action.class';\nimport { UrlService } from '../../url/url.service';\nimport { requiredStatusSearchParams } from './status-request/required-status-search-params.const';\nimport { statusSearchParamsMap } from './status-request/status-search-params.map';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusService {\n public constructor(\n private readonly urlService: UrlService,\n private readonly statusRequestService: StatusRequestService,\n private readonly listenStatusService: ListenStatusService,\n private readonly nextActionService: NextActionService\n ) {}\n\n public async getStatus(params: StatusRequestParams): Promise<Status> {\n this.statusRequestService.setRequestParams(params);\n\n this.startWaitingStatusUpdates(params.invoice);\n\n this.statusRequestService.request();\n\n const statusResponse = await firstValueFrom(\n this.statusRequestService.response$\n );\n\n return statusResponse.status;\n }\n\n public async getStatusWithUrlSearchParams(url?: string): Promise<Status> {\n const searchParams = this.getRequestParamsFromUrl(url);\n\n if (!searchParams) {\n throw new Error('No required search params to get status');\n }\n\n return this.getStatus(searchParams);\n }\n\n private getRequestParamsFromUrl(url?: string): StatusRequestParams | null {\n const searchParams = this.urlService.getSearchParams(url ?? '');\n const keys = new Set(Object.keys(searchParams));\n\n if (\n requiredStatusSearchParams.some((requiredKey) => !keys.has(requiredKey))\n ) {\n return null;\n }\n\n const params: { [key: string]: string | number } = {};\n statusSearchParamsMap.forEach((settings, key) => {\n params[settings.key] = settings.converter(searchParams[key]);\n });\n\n return params as unknown as StatusRequestParams;\n }\n\n private startWaitingStatusUpdates(invoice: number): void {\n this.listenStatusService.listen(invoice);\n\n this.listenStatusService.statusUpdated$\n .pipe(skip(1))\n .subscribe(({ statusResponse }) => {\n this.nextActionService.emitFlowUpdates(\n new StatusUpdatedAction(statusResponse)\n );\n });\n }\n}\n","/**\n * default image for purchase item is set on Publisher Account side.\n * for purchase checkout items the image url is converted into base64 string.\n * to determine default image fixed templates are used\n */\nexport const defaultImagePatterns = [\n /^data:image\\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAAAAADmVT4XAAACMUlEQVR4Ae3YgYqdMBSE4fP/,\n /virtual_item_default_image/,\n];\n","import { Price } from './price.interface';\n\nexport function extractMoneyCurrency<T>(\n money: (T & { amount: null | number; currency: string }) | undefined,\n allowZero = true\n): Price {\n return {\n amount: money?.amount ?? (allowZero ? 0 : null),\n currency: money?.currency ?? '',\n };\n}\n\nexport function createPriceOrUndefined(\n amount: number | undefined | null,\n currency: string\n): Price | undefined {\n return amount !== undefined && amount !== null\n ? {\n amount,\n currency,\n }\n : undefined;\n}\n","import { XpsFinance } from '../xps-finance.interface';\nimport { XpsPurchase } from '../xps-purchase.interface';\nimport { CartItem } from './cart-item.interface';\nimport { CartLine } from './cart-line.interface';\nimport { CartSummary } from './cart-summary.interface';\nimport { defaultImagePatterns } from './default-image-patterns.const';\nimport { createPriceOrUndefined, extractMoneyCurrency } from './price.helpers';\nimport { Price } from './price.interface';\n\nexport class FinanceDetails {\n public readonly purchase: XpsPurchase;\n public readonly finance: XpsFinance;\n public readonly cartItems: CartItem[];\n public readonly cartSummary: CartSummary;\n public readonly paymentCountry: string;\n\n private get shouldShowZeroIndirectTaxRate(): boolean {\n return !!(this.finance?.vat?.visible || this.finance?.vat_user?.visible);\n }\n\n private get isSalesTaxes(): boolean {\n return !!(\n this.finance?.sales_tax?.amount || this.finance?.sales_tax_user?.amount\n );\n }\n\n public constructor(parameters: {\n purchase: XpsPurchase;\n finance: XpsFinance;\n }) {\n this.purchase = parameters.purchase;\n this.finance = parameters.finance;\n this.cartItems = this.getFormattedPurchaseForCart();\n this.cartSummary = this.getFormattedPricingForCart();\n this.paymentCountry = this.getPaymentCountry();\n }\n\n private getFormattedPurchaseForCart(): CartItem[] {\n const checkouts: CartItem[] | undefined = this.purchase.checkout_items?.map(\n (item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: item.name,\n price: extractMoneyCurrency(item, false),\n priceBeforeDiscount: createPriceOrUndefined(\n item.amount_before_discount,\n item.currency\n ),\n quantity: item.quantity,\n description: item.description,\n tax: this.getTaxForItem(item.indirect_tax_rate),\n isBonus: item.is_bonus,\n };\n }\n );\n\n const virtualCurrencies: CartItem[] | undefined =\n this.purchase.virtual_currency?.map((item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: `${item.quantity} ${item.name}`,\n price: extractMoneyCurrency(item),\n description: item.description,\n isBonus: item.is_bonus,\n };\n });\n\n const virtualItems: CartItem[] | undefined =\n this.purchase.virtual_items?.map((item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: item.name,\n price: extractMoneyCurrency(item),\n description: item.description,\n quantity: item.quantity,\n isBonus: item.is_bonus,\n };\n });\n\n let checkoutArray: CartItem[] | undefined = undefined;\n if (this.purchase.checkout) {\n checkoutArray = [\n {\n key: 'checkout',\n title: this.purchase.checkout.description,\n price: extractMoneyCurrency(this.purchase.checkout),\n isBonus: this.purchase.checkout.is_bonus ?? false,\n },\n ];\n }\n\n return [\n ...(checkouts ?? []),\n ...(virtualCurrencies ?? []),\n ...(virtualItems ?? []),\n ...(checkoutArray ?? []),\n ];\n }\n\n private getFormattedPricingForCart(): CartSummary {\n // subtotal details fields\n const subtotalDetailsSorting = [\n {\n key: 'discount',\n responseKey: 'discount',\n title: 'Discount',\n },\n {\n key: 'fee',\n responseKey: 'fee',\n title: 'Payment system fee',\n },\n {\n key: 'user-balance',\n responseKey: 'user_balance',\n title: 'Balance',\n },\n ];\n\n return {\n subtotal: {\n title: 'Subtotal',\n money: createPriceOrUndefined(\n this.finance.sub_total.amount,\n this.finance.sub_total.currency\n ),\n },\n subtotalPayment: {\n title: '',\n money: createPriceOrUndefined(\n this.finance.sub_total.payment_amount,\n this.finance.sub_total.payment_currency\n ),\n },\n total: {\n title: 'Total',\n money: extractMoneyCurrency(this.finance.total),\n },\n totalDetails: this.getTaxesForTotalDetails(),\n subtotalDetails: [\n ...subtotalDetailsSorting.map((sorting) => {\n const field = (this.finance as unknown as { [key: string]: unknown })[\n sorting.responseKey\n ] as Price;\n\n if (field) {\n return {\n key: sorting.key,\n title: sorting.title,\n money: {\n amount:\n sorting.key === 'discount' && field.amount\n ? -field.amount\n : field.amount,\n currency: field.currency,\n },\n };\n }\n return sorting;\n }),\n ...this.getTaxesForSubtotalDetails(),\n ],\n };\n }\n\n private getPaymentCountry(): string {\n return this.finance.payment_country.iso;\n }\n\n private getTaxForItem(indirectTaxRate: number | undefined): CartLine | null {\n if (\n indirectTaxRate ||\n (this.shouldShowZeroIndirectTaxRate && indirectTaxRate === 0)\n ) {\n if (this.isSalesTaxes) {\n return {\n key: 'sales-tax',\n content: `Sales tax ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n\n if (this.isIndia()) {\n return {\n key: 'vat-india',\n content: `GST ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n\n if (this.isGhana()) {\n return {\n key: 'vat-ghana',\n content: 'VAT, NHIL, GETFund Levy, and Covid-19 Levy',\n rate: indirectTaxRate,\n };\n }\n\n return {\n key: 'vat',\n content: `VAT ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n return null;\n }\n\n private getTaxesForSubtotalDetails(): CartLine[] {\n const ret = [];\n\n // subtotal. VAT %p\n if (\n this.finance.vat_user &&\n (this.finance?.vat_user?.amount ?? this.finance?.vat_user?.visible)\n ) {\n ret.push({\n key: this.getVatKeyForDetails(),\n title: this.getVatLabelForSubtotalDetails(),\n money: extractMoneyCurrency(this.finance.vat_user),\n });\n }\n\n if (this.finance.sales_tax_user?.amount) {\n ret.push({\n key: 'sales-tax',\n title: 'Sales tax',\n money: extractMoneyCurrency(this.finance.sales_tax_user),\n });\n }\n\n return ret;\n }\n\n private getVatLabelForSubtotalDetails(): string {\n if (this.isIndia()) {\n return `GST ${this.finance.vat_user?.percent ?? ''}%`;\n }\n\n if (this.isGhana()) {\n return `VAT, NHIL, GETFund Levy, and Covid-19 Levy`;\n }\n\n return `VAT ${this.finance.vat_user?.percent ?? ''}%`;\n }\n\n private getTaxesForTotalDetails(): CartLine[] {\n const ret = [];\n\n // for totalDetails. VAT\n if (\n (this.finance?.vat?.amount || this.finance?.vat?.visible) &&\n !this.finance?.vat_user?.amount\n ) {\n ret.push({\n key: this.getVatKeyForDetails(),\n title: this.getVatLabelForTotalDetails(),\n money: extractMoneyCurrency(this.finance.vat),\n });\n }\n\n if (\n this.finance?.sales_tax?.amount &&\n !this.finance?.sales_tax_user?.amount\n ) {\n ret.push({\n key: 'sales-tax',\n title: 'Sales tax included',\n money: extractMoneyCurrency(this.finance.sales_tax),\n });\n }\n\n return ret;\n }\n\n private getVatKeyForDetails(): string {\n if (this.isIndia()) {\n return 'vat-india';\n }\n\n if (this.isGhana()) {\n return 'vat-ghana';\n }\n\n return 'vat';\n }\n\n private getVatLabelForTotalDetails(): string {\n if (this.isIndia()) {\n return `Including ${this.finance.vat.percent}% GST`;\n }\n\n if (this.isGhana()) {\n return 'Including VAT, NHIL, GETFund Levy, and Covid-19 Levy';\n }\n\n return `Including ${this.finance.vat.percent}% VAT`;\n }\n\n private isIndia(): boolean {\n return this.finance?.payment_country.iso === 'IN';\n }\n\n private isGhana(): boolean {\n return this.finance?.payment_country.iso === 'GH';\n }\n\n private isDefaultImage(url: string): boolean {\n return defaultImagePatterns.some((regex) => regex.test(url));\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { FinanceDetails } from './finance-details.class';\n\ntype ResponseParameters = ConstructorParameters<typeof FinanceDetails>;\n\nexport type FinanceDetailsResponseFactory = (\n ...args: ResponseParameters\n) => FinanceDetails;\n\nexport const financeDetailsResponseFactoryToken: InjectionToken<FinanceDetailsResponseFactory> =\n new InjectionToken<FinanceDetailsResponseFactory>('FinanceDetails');\n\nexport const financeDetailsResponseFactoryProvider: ValueProvider = {\n provide: financeDetailsResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new FinanceDetails(...args),\n};\n","import { Inject, Injectable } from '@angular/core';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { XpsSummary } from '../xps-summary.interface';\nimport {\n FinanceDetailsResponseFactory,\n financeDetailsResponseFactoryToken,\n} from './finance-details-response.token';\nimport { FinanceDetails } from './finance-details.class';\n\n@Injectable({ providedIn: 'root' })\nexport class FinanceDetailsService extends EmitDataService<FinanceDetails> {\n public constructor(\n @Inject(financeDetailsResponseFactoryToken)\n private readonly responseFactory: FinanceDetailsResponseFactory\n ) {\n super();\n }\n\n public emit(summary?: XpsSummary): void {\n if (summary) {\n super.emit(this.responseFactory(summary));\n }\n }\n}\n","import { BehaviorSubject, Observable, Subject, filter, takeUntil } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { SubmitResponse } from './submit/response/submit-response.class';\nimport { FormService } from './form/form.service';\nimport { InitializeResponse } from './initialize/initialize-response.class';\nimport { InitializeService } from './initialize/initialize.service';\nimport { Status } from './status/status.interface';\nimport { SubmitService } from './submit/submit.service';\nimport { SyncService } from './sync/sync.service';\nimport { StatusService } from './status/status.service';\nimport { NextActionService } from './actions/next-action.service';\nimport { ControlConfig } from './form/controls/control-config';\nimport { ControlConfigService } from './form/controls/control-config.service';\nimport { FinanceDetails } from './finance-details/finance-details.class';\nimport { FinanceDetailsService } from './finance-details/finance-details.service';\nimport { NextAction } from './actions/next-action.interface';\nimport { XpsSummary } from './xps-summary.interface';\nimport { Field } from './field.interface';\nimport { PaymentConfig } from './payment-config.interface';\nimport { isSubmitResponse } from './submit/response/is-submit-response.function';\nimport { XpsBoolean } from '../xps-boolean.enum';\nimport { StatusRequestParams } from './status/status-request/status-request-params.interface';\nimport { ValidationErrors } from './form/validators/validation-errors.interface';\nimport { InputEventName } from './form/input-event.enum';\nimport { FormFieldsStatus } from './form/form-fields-status.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentService {\n public form: UntypedFormGroup | null = null;\n public get formFieldsStatus$(): Observable<FormFieldsStatus> {\n return this.formFieldsStatusSubject.asObservable().pipe(filter(Boolean));\n }\n\n private data: InitializeResponse | SubmitResponse | null = null;\n private financeDetails: FinanceDetails | null = null;\n private focusFieldName: string | null = null;\n private fields: Field[] = [];\n private config!: PaymentConfig;\n\n private destroy$ = new Subject<void>();\n private formDestroy$ = new Subject<void>();\n private readonly formFieldsStatusSubject =\n new BehaviorSubject<FormFieldsStatus | null>(null);\n\n public constructor(\n private readonly initializeService: InitializeService,\n private readonly submitService: SubmitService,\n private readonly syncService: SyncService,\n private readonly formService: FormService,\n private readonly statusService: StatusService,\n private readonly financeDetailsService: FinanceDetailsService,\n private readonly nextActionService: NextActionService,\n private readonly controlConfigService: ControlConfigService\n ) {}\n\n public async initialize(config: PaymentConfig): Promise<Field[]> {\n this.destroy$ = new Subject<void>();\n this.formDestroy$ = new Subject<void>();\n\n this.listenFinanceDetails();\n\n this.config = config;\n this.data = await this.initializeService.request(config);\n\n this.fields = this.getFields();\n this.form = this.formService.createForm(this.fields);\n\n this.setupSyncService(this.form, this.fields);\n this.listenFormStatusChanges(this.form);\n\n this.emitFinanceDetails(this.data.paymentForm?.summary);\n this.emitFormFieldsStatus(this.form);\n\n return this.fields.filter(\n (field: Field) => field?.isVisible === XpsBoolean.true\n );\n }\n\n public async submit(): Promise<NextAction | null | void> {\n if (!this.form) {\n throw new Error('form is empty!');\n }\n\n if (!this.form.valid) {\n this.form.markAllAsTouched();\n this.emitFormFieldsStatus(this.form);\n return;\n }\n\n const submitResponse = await this.submitService.request(\n this.fields,\n this.form\n );\n\n this.data = submitResponse;\n\n this.emitFinanceDetails(submitResponse.summary);\n\n return this.nextActionService.getNextAction(submitResponse);\n }\n\n public getFields(): Field[] {\n if (this.data instanceof SubmitResponse) {\n return this.data.fields ?? [];\n }\n\n return this.data?.paymentForm?.fields ?? [];\n }\n\n public async validate(field: Field): Promise<ValidationErrors | null> {\n const syncErrors = this.syncService.getSyncValidationErrors(field);\n\n if (syncErrors) {\n return Promise.resolve(syncErrors);\n }\n\n return this.syncService.validate(field);\n }\n\n public runThreeDs(): NextAction {\n throw new Error('Method not implemented.');\n }\n\n public getFinanceDetails(): FinanceDetails | null {\n return this.financeDetails;\n }\n\n public async getStatus(): Promise<Status> {\n if (!isSubmitResponse(this.data)) {\n throw new Error('Should submit form first');\n }\n\n const params: StatusRequestParams = {\n pid: this.config.paymentMethodId,\n invoice: parseInt(this.data.fixInvoice ?? ''),\n signature: this.data.signature ?? '',\n locale:\n this.data.fields.find((field) => field.name === 'locale')?.value ??\n 'en',\n };\n\n return this.statusService.getStatus(params);\n }\n\n public getFieldConfig(field: Field): ControlConfig | null {\n return this.controlConfigService.getConfig(field);\n }\n\n public changeFieldValue(name: string, value: string): void {\n const formControl = this.form?.get(name);\n formControl?.setValue(value);\n }\n\n public changeFieldState(name: string, state: InputEventName): void {\n const formControl = this.form?.get(name);\n\n if (!this.form || !formControl) {\n return;\n }\n\n switch (state) {\n case InputEventName.blur: {\n formControl.markAsTouched();\n this.focusFieldName = null;\n break;\n }\n case InputEventName.focus: {\n formControl.markAsUntouched();\n this.focusFieldName = name;\n break;\n }\n }\n\n this.emitFormFieldsStatus(this.form);\n }\n\n public destroy(): void {\n this.data = null;\n this.financeDetails = null;\n this.form = null;\n this.fields = [];\n this.formDestroy$.next();\n this.destroy$.next();\n }\n\n private emitFinanceDetails(summary?: XpsSummary): void {\n this.financeDetailsService.emit(summary);\n }\n\n private emitFormFieldsStatus(form: UntypedFormGroup): void {\n const formFieldsStatus: FormFieldsStatus = {};\n\n Object.keys(form.controls).forEach((name) => {\n const control = form.controls[name];\n formFieldsStatus[name] = {\n name: name,\n validationStatus: control.status,\n errors: control.errors,\n isFocused: this.focusFieldName === name,\n };\n });\n\n this.formFieldsStatusSubject.next(formFieldsStatus);\n }\n\n private setupSyncService(form: UntypedFormGroup, fields: Field[]): void {\n this.syncService.setup(form, fields);\n this.syncService.data$\n .pipe(takeUntil(this.destroy$))\n .subscribe((response) => this.emitFinanceDetails(response.summary));\n }\n\n private listenFinanceDetails(): void {\n this.financeDetailsService.data$\n .pipe(takeUntil(this.destroy$))\n .subscribe((financeDetails) => (this.financeDetails = financeDetails));\n }\n\n private listenFormStatusChanges(form: UntypedFormGroup): void {\n form.statusChanges\n .pipe(takeUntil(this.formDestroy$))\n .subscribe(() => this.emitFormFieldsStatus(form));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../../core/settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RefundPolicyService {\n public readonly defaultVersionId = 2;\n public readonly defaultUrl = 'https://xsolla.com/refund-policy-ps';\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public get url(): string {\n if (!this.settingsService.token) {\n return 'https://xsolla.com/refundpolicy/en-us';\n }\n const language = this.settingsService.user.local ?? 'en';\n const versionId =\n this.settingsService.project.refundPolicySettings?.policy_version_id ??\n this.defaultVersionId;\n const countryIso = this.settingsService.user.country.value ?? '';\n const projectId = this.settingsService.project.id;\n return `${this.defaultUrl}?policy_version_id=${versionId}&language=${language}&country=${countryIso}&project_id=${projectId}`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecureConnectionService {\n public get isWhiteLabel(): boolean {\n return !!this.settingsService.settings?.white_label;\n }\n public get secureConnectionUrl(): string | undefined {\n this.setSecureConnectionUrl();\n return this._secureConnectionUrl;\n }\n\n public readonly secureConnectionApi = 'https://verify.xsolla.com/?url=';\n\n private _secureConnectionUrl?: string;\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n private setSecureConnectionUrl(): void {\n const projectUrl = this.settingsService.project?.projectUrl;\n\n if (projectUrl) {\n this._secureConnectionUrl = `${\n this.secureConnectionApi\n }${encodeURIComponent(projectUrl)}`;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DisclaimerService {\n public readonly disclaimer = 'disclaimer';\n}\n","import { Injectable } from '@angular/core';\nimport { LegalComponentConfig } from './legal.component.config';\nimport { SettingsService } from '../settings/settings.service';\nimport { RefundPolicyService } from './refund-policy.service';\nimport { SecureConnectionService } from './secure-connection.service';\nimport { DisclaimerService } from './disclaimer.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LegalService {\n public readonly sctlPolicyUrl = 'https://xsolla.com/sctl';\n\n private get isJapanUser(): boolean {\n return this.settingsService.user?.local === 'ja';\n }\n\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly refundPolicyService: RefundPolicyService,\n private readonly secureConnectionService: SecureConnectionService,\n private readonly disclaimerService: DisclaimerService\n ) {}\n\n public getLegalComponentConfig(): LegalComponentConfig {\n return {\n isJapanUser: this.isJapanUser,\n refundPolicyUrl: this.refundPolicyService.url,\n sctlPolicyUrl: this.sctlPolicyUrl,\n secureConnection: {\n secureConnectionUrl: this.secureConnectionService.secureConnectionUrl,\n isWhiteLabel: this.secureConnectionService.isWhiteLabel,\n },\n disclaimer: this.disclaimerService.disclaimer,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InitConfiguration } from './core/settings/configuration.interface';\nimport { SettingsService } from './core/settings/settings.service';\nimport { CountryService } from './core/country/country.service';\nimport { PaymentMethodsService } from './core/payment-methods/payment-methods.service';\nimport { PaymentMethod } from './core/payment-methods/payment-method.interface';\nimport { SavedMethodsService } from './core/saved-methods/saved-methods.service';\nimport { SavedMethod } from './core/saved-methods/saved-method.interface';\nimport { UserBalanceResponse } from './core/user-balance/user-balance-response.class';\nimport { UserBalanceService } from './core/user-balance/user-balance.service';\nimport { PaymentConfig } from './core/payment/payment-config.interface';\nimport { PaymentService } from './core/payment/payment.service';\nimport { Payment } from './core/payment/payment.interface';\nimport { Field } from './core/payment/field.interface';\nimport { DeviceFingerPrintService } from './core/device-finger-print/device-finger-print.service';\nimport { LegalService } from './core/legal/legal.service';\nimport { LegalComponentConfig } from './core/legal/legal.component.config';\nimport { NextActionService } from './core/payment/actions/next-action.service';\nimport { FinanceDetailsService } from './core/payment/finance-details/finance-details.service';\nimport { masksFunctionsMap } from './core/payment/form/masks-functions.map';\nimport { PaymentConfigService } from './core/payment/config/config.service';\nimport { Status } from './core/payment/status/status.interface';\nimport { StatusService } from './core/payment/status/status.service';\nimport { InputEventName } from './core/payment/form/input-event.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CoreLibraryService {\n public paymentMethods = {\n getList: async (): Promise<PaymentMethod[]> =>\n this.paymentMethodsService.getList(),\n\n getQuickMethods: async (): Promise<PaymentMethod[]> =>\n this.paymentMethodsService.getQuickMethods(),\n getSavedMethods: async (): Promise<SavedMethod[]> =>\n this.savedMethodsService.getList(),\n getUserBalance: async (): Promise<UserBalanceResponse> =>\n this.userBalanceService.getUserBalance(),\n };\n\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly paymentMethodsService: PaymentMethodsService,\n private readonly savedMethodsService: SavedMethodsService,\n private readonly userBalanceService: UserBalanceService,\n private readonly paymentConfigService: PaymentConfigService,\n private readonly paymentService: PaymentService,\n private readonly deviceFingerPrintService: DeviceFingerPrintService,\n private readonly financeDetailsService: FinanceDetailsService,\n private readonly legalService: LegalService,\n private readonly statusService: StatusService,\n private readonly nextActionService: NextActionService\n ) {}\n\n public async init(configuration: InitConfiguration): Promise<void> {\n await this.settingsService.init(configuration);\n await this.deviceFingerPrintService.init();\n }\n\n public async getStatus(url?: string): Promise<Status> {\n return this.statusService.getStatusWithUrlSearchParams(url);\n }\n\n public setCountry(country: string): void {\n this.countryService.setCountry(country);\n }\n\n public createPayment(config: PaymentConfig): Payment {\n const enrichedConfig = this.paymentConfigService.enrich(config);\n\n return {\n initialize: async () => this.paymentService.initialize(enrichedConfig),\n submit: async () => this.paymentService.submit(),\n getFields: () => this.paymentService.getFields(),\n validate: async (field: Field) => this.paymentService.validate(field),\n getFinanceDetails: () => this.paymentService.getFinanceDetails(),\n runThreeDs: () => this.paymentService.runThreeDs(),\n getStatus: async () => this.paymentService.getStatus(),\n flowUpdates$: this.nextActionService.flowUpdates$,\n financeDetailsUpdates$: this.financeDetailsService.data$,\n form: {\n fieldsStatus$: this.paymentService.formFieldsStatus$,\n getControlConfig: (field: Field) =>\n this.paymentService.getFieldConfig(field),\n changeFieldValue: (name: string, value: string) =>\n this.paymentService.changeFieldValue(name, value),\n changeFieldState: (name: string, state: InputEventName) =>\n this.paymentService.changeFieldState(name, state),\n },\n };\n }\n\n public getLegalComponentConfig(): LegalComponentConfig {\n return this.legalService.getLegalComponentConfig();\n }\n\n public getFieldMask(field: Field): undefined | (() => string) {\n const sanitizedName = field.name.replace(/^fix_/i, '');\n return masksFunctionsMap[sanitizedName];\n }\n}\n","import { HttpErrorResponse, HttpRequest } from '@angular/common/http';\nimport { AppError } from './app-error.class';\nimport { HttpErrorData } from '../http-interceptor/http-error-data.interface';\nimport { HttpErrorResponseData } from '../http-interceptor/http-error-response-data.interface';\n\nexport class HttpError extends AppError {\n private readonly RESTRICTED_KEYS_REGEXP = new RegExp(\n '.*(card_number|number|cvv|cvn|month|year|cardholdername|client_data|dfp|password).*',\n 'i'\n );\n private readonly httpErrorData!: HttpErrorData;\n\n public constructor(error: HttpErrorResponse, req: HttpRequest<unknown>) {\n super(error.message);\n\n this.httpErrorData = {\n request: {\n url: req.url,\n method: req.method,\n headers: req.headers,\n },\n response: {\n status: error.status,\n headers: error.headers,\n },\n };\n\n if (req.body) {\n this.httpErrorData.request.data = this.cleanPersonalData(\n req.body as { [key: string]: unknown }\n );\n }\n\n if (error.statusText) {\n const errorData = error.error as HttpErrorResponseData;\n\n this.httpErrorData.response.data = {\n statusText: error.statusText,\n errors: errorData?.errors ?? [],\n };\n }\n }\n\n public getHttpErrorData(): HttpErrorData {\n return this.httpErrorData;\n }\n\n private cleanPersonalData(data: { [key: string]: unknown }): {\n [key: string]: unknown;\n } {\n return Object.entries(data).reduce((acc, [key, val]) => {\n return {\n ...acc,\n [key]: this.RESTRICTED_KEYS_REGEXP.test(key) ? '***' : val,\n };\n }, {});\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\n\nimport { catchError } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { HttpError } from '../errors/http-error.class';\n@Injectable()\nexport class HttpExceptionsInterceptor implements HttpInterceptor {\n public constructor(public router: Router) {}\n\n public intercept(\n req: HttpRequest<unknown>,\n next: HttpHandler\n ): Observable<HttpEvent<unknown>> {\n return next.handle(req).pipe(\n catchError((error: HttpErrorResponse) => {\n return throwError(() => new HttpError(error, req));\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ControlConfigService } from './controls/control-config.service';\nimport { convertersMap, convertersMapToken } from './converters/converters-map';\nimport { EmailConverter } from './converters/email.converter';\nimport { ZipConverter } from './converters/zip.converter';\nimport { FormService } from './form.service';\n\n@NgModule({\n imports: [ReactiveFormsModule],\n providers: [\n FormService,\n ControlConfigService,\n ZipConverter,\n EmailConverter,\n { provide: convertersMapToken, useValue: convertersMap },\n ],\n})\nexport class FormModule {}\n","import { NgModule, ValueProvider } from '@angular/core';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { HttpExceptionsInterceptor } from './core/exceptions-handling/http-interceptor/http-exceptions.interceptor';\nimport { windowToken } from './core/window.token';\nimport { paymentMethodsResponseFactoryProvider } from './core/payment-methods/payment-methods-response.token';\nimport { savedMethodsResponseFactoryProvider } from './core/saved-methods/saved-methods-response.token';\nimport { userBalanceResponseFactoryProvider } from './core/user-balance/user-balance-response.token';\nimport { initializeResponseFactoryProvider } from './core/payment/initialize/initialize-response.token';\nimport { submitRequestFactoryProvider } from './core/payment/submit/request/submit-request.token';\nimport { submitResponseFactoryProvider } from './core/payment/submit/response/submit-response.token';\nimport {\n flowUpdateNextActions,\n nextActions,\n nextActionsToken,\n} from './core/payment/actions/next-actions';\nimport { syncRequestFactoryProvider } from './core/payment/sync/sync-request.token';\nimport { syncResponseFactoryProvider } from './core/payment/sync/sync-response.token';\nimport { FormModule } from './core/payment/form/form.module';\nimport { statusRequestFactoryProvider } from './core/payment/status/status-request/request/status-request.token';\nimport { statusResponseFactoryProvider } from './core/payment/status/status-request/response/status-response.token';\nimport { checkStatusRequestFactoryProvider } from './core/payment/status/check-status/request/check-status-request.token';\nimport { checkStatusResponseFactoryProvider } from './core/payment/status/check-status/response/check-status-response.token';\nimport { financeDetailsResponseFactoryProvider } from './core/payment/finance-details/finance-details-response.token';\n\n@NgModule({\n imports: [HttpClientModule, FormModule],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: HttpExceptionsInterceptor,\n multi: true,\n },\n { provide: windowToken, useValue: window },\n paymentMethodsResponseFactoryProvider,\n savedMethodsResponseFactoryProvider,\n userBalanceResponseFactoryProvider,\n initializeResponseFactoryProvider,\n submitRequestFactoryProvider,\n submitResponseFactoryProvider,\n syncRequestFactoryProvider,\n syncResponseFactoryProvider,\n statusRequestFactoryProvider,\n statusResponseFactoryProvider,\n checkStatusRequestFactoryProvider,\n checkStatusResponseFactoryProvider,\n financeDetailsResponseFactoryProvider,\n {\n provide: nextActionsToken,\n useValue: nextActions,\n },\n ...(nextActions as ValueProvider[]),\n ...(flowUpdateNextActions as ValueProvider[]),\n ],\n})\nexport class CoreLibraryModule {}\n","/*\n * Public API Surface of core-library\n */\n\nexport * from './lib/core-library.service';\nexport * from './lib/core-library.module';\nexport * from './lib/core/legal/legal.component.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SecureApiClient","i1.SettingsService","i2.CountryService","i3.SecureApiClient","i2.SecureApiClient","i1.UrlService","i2.SettingsService","i3.CountryService","i4.NextActionService","i2.DeviceFingerPrintService","i2.NextActionService","i3.SettingsService","i1.SyncService","i1.ControlConfigService","map","i2","i1.ElkLoggerService","i1.NchanWebSocketService","i2.CentrifugoWebSocketService","i1.WebSocketFactory","filter","i1.StatusRequestService","i2.CheckStatusService","i3.WebsocketStatusService","i2.StatusRequestService","i3.ListenStatusService","i1.InitializeService","i2.SubmitService","i3.SyncService","i4.FormService","i5.StatusService","i6.FinanceDetailsService","i7.NextActionService","i8.ControlConfigService","i2.RefundPolicyService","i3.SecureConnectionService","i4.DisclaimerService","i3.PaymentMethodsService","i4.SavedMethodsService","i5.UserBalanceService","i6.PaymentConfigService","i7.PaymentService","i8.DeviceFingerPrintService","i9.FinanceDetailsService","i10.LegalService","i11.StatusService","i12.NextActionService","i1"],"mappings":"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"}
|