@xsolla/payment-client-core 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/esm2020/lib/core/payment/form/controls/card-number/card-number-control.config.mjs +10 -0
  2. package/esm2020/lib/core/payment/form/controls/checkbox/checkbox-control.config.mjs +10 -0
  3. package/esm2020/lib/core/payment/form/controls/coupon/coupon-control.config.mjs +8 -0
  4. package/esm2020/lib/core/payment/form/controls/radio-control/radio-control.config.mjs +9 -0
  5. package/esm2020/lib/core/payment/form/controls/radio-control/radio-option.interface.mjs +2 -0
  6. package/esm2020/lib/core/payment/form/controls/search-select/search-select-control.config.mjs +8 -0
  7. package/esm2020/lib/core/payment/form/controls/search-select/search-select-option.interface.mjs +2 -0
  8. package/esm2020/lib/core/payment/form/controls/search-select/select-option.interface.mjs +2 -0
  9. package/esm2020/lib/core/payment/form/converters/birth-date/birth-date.converter.mjs +38 -0
  10. package/esm2020/lib/core/payment/form/converters/card-month/card-month.converter.mjs +38 -0
  11. package/esm2020/lib/core/payment/form/converters/card-number/card-number.converter.mjs +45 -0
  12. package/esm2020/lib/core/payment/form/converters/card-year/card-year.converter.mjs +38 -0
  13. package/esm2020/lib/core/payment/form/converters/cardholder-name/cardholder-name.converter.mjs +25 -0
  14. package/esm2020/lib/core/payment/form/converters/checkbox/checkbox.converter.mjs +34 -0
  15. package/esm2020/lib/core/payment/form/converters/converter.abstract.mjs +4 -3
  16. package/esm2020/lib/core/payment/form/converters/converters-map.mjs +32 -16
  17. package/esm2020/lib/core/payment/form/converters/coupon/coupon.converter.mjs +25 -0
  18. package/esm2020/lib/core/payment/form/converters/cpf-name/cpf-name-regex.variable.mjs +2 -0
  19. package/esm2020/lib/core/payment/form/converters/cpf-name/cpf-name.converter.mjs +34 -0
  20. package/esm2020/lib/core/payment/form/converters/cpf-number/cpf-number.converter.mjs +31 -0
  21. package/esm2020/lib/core/payment/form/converters/cvv/cvv-form-state.interface.mjs +2 -0
  22. package/esm2020/lib/core/payment/form/converters/cvv/cvv.converter.mjs +72 -0
  23. package/esm2020/lib/core/payment/form/converters/email/email.converter.mjs +29 -0
  24. package/esm2020/lib/core/payment/form/converters/pin/pin.converter.mjs +19 -0
  25. package/esm2020/lib/core/payment/form/converters/pricepoint/pricepoint.converter.mjs +32 -0
  26. package/esm2020/lib/core/payment/form/converters/radio-group/radio-group.converter.mjs +21 -0
  27. package/esm2020/lib/core/payment/form/converters/select/select.converter.mjs +21 -0
  28. package/esm2020/lib/core/payment/form/converters/street-number/street-number.converter.mjs +2 -2
  29. package/esm2020/lib/core/payment/form/converters/text/text.converter.mjs +19 -0
  30. package/esm2020/lib/core/payment/form/converters/zip/zip.converter.mjs +67 -0
  31. package/esm2020/lib/core/payment/form/field-form-states.interface.mjs +2 -0
  32. package/esm2020/lib/core/payment/form/form.module.mjs +48 -19
  33. package/esm2020/lib/core/payment/form/form.service.mjs +19 -1
  34. package/esm2020/lib/core/payment/form/validators/birth-date/birth-date.validator.mjs +37 -0
  35. package/esm2020/lib/core/payment/form/validators/card-month/card-month.validator.mjs +37 -0
  36. package/esm2020/lib/core/payment/form/validators/card-year/card-year.validator.mjs +34 -0
  37. package/esm2020/lib/core/payment/form/validators/coupon/coupon-validator.mjs +6 -0
  38. package/esm2020/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.mjs +32 -0
  39. package/esm2020/lib/core/payment/form/validators/email/email-validator.mjs +7 -0
  40. package/esm2020/lib/core/payment/form/validators/required/required.validator.mjs +6 -0
  41. package/esm2020/lib/core/payment/form/validators/restricted-value/restricted-value.validator.mjs +6 -0
  42. package/esm2020/lib/core/payment/form/validators/validators.module.mjs +2 -2
  43. package/esm2020/lib/core/payment/payment.interface.mjs +1 -1
  44. package/esm2020/lib/core/payment/payment.service.mjs +6 -1
  45. package/esm2020/lib/core-library.service.mjs +2 -1
  46. package/fesm2015/xsolla-payment-client-core.mjs +357 -24
  47. package/fesm2015/xsolla-payment-client-core.mjs.map +1 -1
  48. package/fesm2020/xsolla-payment-client-core.mjs +357 -24
  49. package/fesm2020/xsolla-payment-client-core.mjs.map +1 -1
  50. package/lib/core/payment/form/controls/{card-number-control.config.d.ts → card-number/card-number-control.config.d.ts} +2 -2
  51. package/lib/core/payment/form/controls/checkbox/checkbox-control.config.d.ts +6 -0
  52. package/lib/core/payment/form/controls/coupon/coupon-control.config.d.ts +8 -0
  53. package/lib/core/payment/form/controls/radio-control/radio-control.config.d.ts +6 -0
  54. package/lib/core/payment/form/controls/radio-control/radio-option.interface.d.ts +5 -0
  55. package/lib/core/payment/form/controls/search-select/search-select-control.config.d.ts +11 -0
  56. package/lib/core/payment/form/controls/search-select/search-select-option.interface.d.ts +19 -0
  57. package/lib/core/payment/form/controls/search-select/select-option.interface.d.ts +13 -0
  58. package/lib/core/payment/form/converters/{birth-date.converter.d.ts → birth-date/birth-date.converter.d.ts} +4 -4
  59. package/lib/core/payment/form/converters/card-month/card-month.converter.d.ts +16 -0
  60. package/lib/core/payment/form/converters/{card-number.converter.d.ts → card-number/card-number.converter.d.ts} +6 -6
  61. package/lib/core/payment/form/converters/card-year/card-year.converter.d.ts +16 -0
  62. package/lib/core/payment/form/converters/{cardholder-name.converter.d.ts → cardholder-name/cardholder-name.converter.d.ts} +4 -4
  63. package/lib/core/payment/form/converters/checkbox/checkbox.converter.d.ts +16 -0
  64. package/lib/core/payment/form/converters/converter.abstract.d.ts +1 -1
  65. package/lib/core/payment/form/converters/coupon/coupon.converter.d.ts +13 -0
  66. package/lib/core/payment/form/converters/{cpf-name.converter.d.ts → cpf-name/cpf-name.converter.d.ts} +4 -4
  67. package/lib/core/payment/form/converters/{cpf-number.converter.d.ts → cpf-number/cpf-number.converter.d.ts} +4 -4
  68. package/lib/core/payment/form/converters/cvv/cvv-form-state.interface.d.ts +3 -0
  69. package/lib/core/payment/form/converters/{cvv.converter.d.ts → cvv/cvv.converter.d.ts} +8 -7
  70. package/lib/core/payment/form/converters/{email.converter.d.ts → email/email.converter.d.ts} +5 -5
  71. package/lib/core/payment/form/converters/pin/pin.converter.d.ts +11 -0
  72. package/lib/core/payment/form/converters/pricepoint/pricepoint.converter.d.ts +14 -0
  73. package/lib/core/payment/form/converters/radio-group/radio-group.converter.d.ts +11 -0
  74. package/lib/core/payment/form/converters/select/select.converter.d.ts +11 -0
  75. package/lib/core/payment/form/converters/{text.converter.d.ts → text/text.converter.d.ts} +4 -4
  76. package/lib/core/payment/form/converters/{zip.converter.d.ts → zip/zip.converter.d.ts} +5 -5
  77. package/lib/core/payment/form/field-form-states.interface.d.ts +4 -0
  78. package/lib/core/payment/form/form.service.d.ts +4 -0
  79. package/lib/core/payment/form/validators/card-month/card-month.validator.d.ts +5 -0
  80. package/lib/core/payment/form/validators/card-year/card-year.validator.d.ts +5 -0
  81. package/lib/core/payment/form/validators/coupon/coupon-validator.d.ts +2 -0
  82. package/lib/core/payment/form/validators/{credit-card-min-length.validator.d.ts → credit-card-length/credit-card-min-length.validator.d.ts} +1 -1
  83. package/lib/core/payment/form/validators/{email-validator.d.ts → email/email-validator.d.ts} +1 -1
  84. package/lib/core/payment/form/validators/{restricted-value.validator.d.ts → restricted-value/restricted-value.validator.d.ts} +1 -1
  85. package/lib/core/payment/payment.interface.d.ts +2 -0
  86. package/lib/core/payment/payment.service.d.ts +2 -0
  87. package/package.json +1 -1
  88. package/xsolla-payment-client-core-0.1.6.tgz +0 -0
  89. package/esm2020/lib/core/payment/form/controls/card-number-control.config.mjs +0 -10
  90. package/esm2020/lib/core/payment/form/converters/birth-date.converter.mjs +0 -38
  91. package/esm2020/lib/core/payment/form/converters/card-expiration.converter.mjs +0 -36
  92. package/esm2020/lib/core/payment/form/converters/card-number.converter.mjs +0 -45
  93. package/esm2020/lib/core/payment/form/converters/cardholder-name.converter.mjs +0 -25
  94. package/esm2020/lib/core/payment/form/converters/cpf-name-regex.variable.mjs +0 -2
  95. package/esm2020/lib/core/payment/form/converters/cpf-name.converter.mjs +0 -34
  96. package/esm2020/lib/core/payment/form/converters/cpf-number.converter.mjs +0 -31
  97. package/esm2020/lib/core/payment/form/converters/cvv.converter.mjs +0 -50
  98. package/esm2020/lib/core/payment/form/converters/email.converter.mjs +0 -29
  99. package/esm2020/lib/core/payment/form/converters/text.converter.mjs +0 -19
  100. package/esm2020/lib/core/payment/form/converters/zip.converter.mjs +0 -67
  101. package/esm2020/lib/core/payment/form/validators/birth-date.validator.mjs +0 -37
  102. package/esm2020/lib/core/payment/form/validators/credit-card-min-length.validator.mjs +0 -32
  103. package/esm2020/lib/core/payment/form/validators/email-validator.mjs +0 -7
  104. package/esm2020/lib/core/payment/form/validators/required-validator.mjs +0 -6
  105. package/esm2020/lib/core/payment/form/validators/restricted-value.validator.mjs +0 -6
  106. package/lib/core/payment/form/converters/card-expiration.converter.d.ts +0 -16
  107. package/xsolla-payment-client-core-0.1.5.tgz +0 -0
  108. /package/lib/core/payment/form/converters/{cpf-name-regex.variable.d.ts → cpf-name/cpf-name-regex.variable.d.ts} +0 -0
  109. /package/lib/core/payment/form/validators/{birth-date.validator.d.ts → birth-date/birth-date.validator.d.ts} +0 -0
  110. /package/lib/core/payment/form/validators/{required-validator.d.ts → required/required.validator.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { SafeHtml } from '@angular/platform-browser';
2
- import { ControlConfig } from './control-config';
3
- import { CreditCardTypes } from '../../../credit-card/credit-card-types.enum';
2
+ import { ControlConfig } from '../control-config';
3
+ import { CreditCardTypes } from '../../../../credit-card/credit-card-types.enum';
4
4
  export declare class CardNumberConfig extends ControlConfig {
5
5
  controlType: string;
6
6
  placeholder?: string | SafeHtml | null;
@@ -0,0 +1,6 @@
1
+ import { ControlConfig } from '../control-config';
2
+ export declare class CheckboxControlConfig extends ControlConfig {
3
+ controlType: string;
4
+ checkedValue: any;
5
+ uncheckedValue: any;
6
+ }
@@ -0,0 +1,8 @@
1
+ import { SafeHtml } from '@angular/platform-browser';
2
+ import { ControlConfig } from '../control-config';
3
+ export declare class CouponControlConfig extends ControlConfig {
4
+ controlType: string;
5
+ dataType?: string;
6
+ placeholder?: string | SafeHtml | null;
7
+ autocomplete?: string;
8
+ }
@@ -0,0 +1,6 @@
1
+ import { RadioOption } from './radio-option.interface';
2
+ import { ControlConfig } from '../control-config';
3
+ export declare class RadioControlConfig extends ControlConfig {
4
+ controlType: string;
5
+ options: RadioOption[];
6
+ }
@@ -0,0 +1,5 @@
1
+ export interface RadioOption {
2
+ value: string;
3
+ label: string;
4
+ disabled?: boolean;
5
+ }
@@ -0,0 +1,11 @@
1
+ import { ControlConfig } from '../control-config';
2
+ import { SafeHtml } from '@angular/platform-browser';
3
+ import { SearchSelectOption } from './search-select-option.interface';
4
+ import { SelectOption } from './select-option.interface';
5
+ export declare class SearchSelectControlConfig extends ControlConfig {
6
+ controlType: string;
7
+ name: string;
8
+ title?: string | SafeHtml;
9
+ options?: SelectOption[] | SearchSelectOption[];
10
+ hasSearch?: boolean;
11
+ }
@@ -0,0 +1,19 @@
1
+ export interface SearchSelectOption {
2
+ value: {
3
+ [key: string]: string;
4
+ };
5
+ label: string;
6
+ imgUrl?: string;
7
+ disabled?: boolean;
8
+ icon?: string;
9
+ iconType?: 'default' | 'flag';
10
+ }
11
+ export interface SearchSelectGroup {
12
+ name: string;
13
+ options: SearchSelectOption[];
14
+ }
15
+ export interface Match {
16
+ option: SearchSelectOption;
17
+ priority: number;
18
+ }
19
+ export type CurrentOptionTransformer = (option: SearchSelectOption | null) => string | undefined;
@@ -0,0 +1,13 @@
1
+ export interface SelectOption {
2
+ value: string;
3
+ label: string;
4
+ description?: string;
5
+ sum?: string;
6
+ out?: string;
7
+ bonusOut?: string;
8
+ type?: string;
9
+ projectAmount?: string;
10
+ packetKey?: string;
11
+ key?: string;
12
+ imgUrl?: string;
13
+ }
@@ -1,8 +1,8 @@
1
1
  import { ValidatorFn } from '@angular/forms';
2
- import { Field } from '../../field.interface';
3
- import { SyncService } from '../../sync/sync.service';
4
- import { TextControlConfig } from '../controls/text-control.config';
5
- import { Converter } from './converter.abstract';
2
+ import { Field } from '../../../field.interface';
3
+ import { SyncService } from '../../../sync/sync.service';
4
+ import { TextControlConfig } from '../../controls/text-control.config';
5
+ import { Converter } from '../converter.abstract';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class BirthDateConverter extends Converter {
8
8
  constructor(syncService: SyncService);
@@ -0,0 +1,16 @@
1
+ import { Converter } from '../converter.abstract';
2
+ import { SyncService } from '../../../sync/sync.service';
3
+ import { ValidatorFn } from '@angular/forms';
4
+ import { Field } from '../../../field.interface';
5
+ import { FormState } from '../../form-state.interface';
6
+ import { TextControlConfig } from '../../controls/text-control.config';
7
+ import * as i0 from "@angular/core";
8
+ export declare class CardMonthConverter extends Converter {
9
+ constructor(syncService: SyncService);
10
+ getValidators(field: Field, formState: FormState): ValidatorFn[];
11
+ protected createControlConfig(field: Field, formState: FormState): TextControlConfig;
12
+ protected getAutocomplete(): string;
13
+ protected getDataType(): string;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<CardMonthConverter, never>;
15
+ static ɵprov: i0.ɵɵInjectableDeclaration<CardMonthConverter>;
16
+ }
@@ -1,10 +1,10 @@
1
- import { Converter } from './converter.abstract';
2
- import { SyncService } from '../../sync/sync.service';
3
- import { CreditCardMinLengthValidator } from '../validators/credit-card-min-length.validator';
4
- import { Field } from '../../field.interface';
1
+ import { Converter } from '../converter.abstract';
2
+ import { SyncService } from '../../../sync/sync.service';
3
+ import { CreditCardMinLengthValidator } from '../../validators/credit-card-length/credit-card-min-length.validator';
4
+ import { Field } from '../../../field.interface';
5
5
  import { ValidatorFn } from '@angular/forms';
6
- import { FormState } from '../form-state.interface';
7
- import { CardNumberConfig } from '../controls/card-number-control.config';
6
+ import { FormState } from '../../form-state.interface';
7
+ import { CardNumberConfig } from '../../controls/card-number/card-number-control.config';
8
8
  import * as i0 from "@angular/core";
9
9
  export declare class CardNumberConverter extends Converter {
10
10
  private readonly maxLengthValidator;
@@ -0,0 +1,16 @@
1
+ import { Converter } from '../converter.abstract';
2
+ import { SyncService } from '../../../sync/sync.service';
3
+ import { ValidatorFn } from '@angular/forms';
4
+ import { Field } from '../../../field.interface';
5
+ import { FormState } from '../../form-state.interface';
6
+ import { TextControlConfig } from '../../controls/text-control.config';
7
+ import * as i0 from "@angular/core";
8
+ export declare class CardYearConverter extends Converter {
9
+ constructor(syncService: SyncService);
10
+ getValidators(field: Field): ValidatorFn[];
11
+ protected createControlConfig(field: Field, formState: FormState): TextControlConfig;
12
+ protected getAutocomplete(): string;
13
+ protected getDataType(): string;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<CardYearConverter, never>;
15
+ static ɵprov: i0.ɵɵInjectableDeclaration<CardYearConverter>;
16
+ }
@@ -1,7 +1,7 @@
1
- import { Field } from '../../field.interface';
2
- import { SyncService } from '../../sync/sync.service';
3
- import { TextControlConfig } from '../controls/text-control.config';
4
- import { Converter } from './converter.abstract';
1
+ import { Field } from '../../../field.interface';
2
+ import { SyncService } from '../../../sync/sync.service';
3
+ import { TextControlConfig } from '../../controls/text-control.config';
4
+ import { Converter } from '../converter.abstract';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class CardholderNameConverter extends Converter {
7
7
  constructor(syncService: SyncService);
@@ -0,0 +1,16 @@
1
+ import { Converter } from '../converter.abstract';
2
+ import { XpsBoolean } from '../../../../xps-boolean.enum';
3
+ import { SyncService } from '../../../sync/sync.service';
4
+ import { Field } from '../../../field.interface';
5
+ import { ValidatorFn } from '../../validators/validator-fn.type';
6
+ import { CheckboxControlConfig } from '../../controls/checkbox/checkbox-control.config';
7
+ import * as i0 from "@angular/core";
8
+ export declare class CheckboxConverter extends Converter {
9
+ protected readonly checkedValue = XpsBoolean.true;
10
+ protected readonly uncheckedValue = XpsBoolean.false;
11
+ constructor(syncService: SyncService);
12
+ getValidators(field: Field): ValidatorFn[];
13
+ protected createControlConfig(field: Field): CheckboxControlConfig;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxConverter, never>;
15
+ static ɵprov: i0.ɵɵInjectableDeclaration<CheckboxConverter>;
16
+ }
@@ -10,7 +10,7 @@ export declare abstract class Converter {
10
10
  protected constructor(syncService: SyncService);
11
11
  convertToConfig(field: Field, formState?: FormState): ControlConfig;
12
12
  convertToFormControl(field: Field): UntypedFormControl;
13
- getValidators(field: Field): ValidatorFn[];
13
+ getValidators(field: Field, formState?: FormState): ValidatorFn[];
14
14
  getAsyncValidators(field: Field): AsyncValidatorFn | AsyncValidatorFn[] | null;
15
15
  createDefaultControlConfig<T extends {
16
16
  [key: string]: unknown;
@@ -0,0 +1,13 @@
1
+ import { ValidatorFn } from '@angular/forms';
2
+ import { Converter } from '../converter.abstract';
3
+ import { SyncService } from '../../../sync/sync.service';
4
+ import { Field } from '../../../field.interface';
5
+ import { CouponControlConfig } from '../../controls/coupon/coupon-control.config';
6
+ import * as i0 from "@angular/core";
7
+ export declare class CouponConverter extends Converter {
8
+ constructor(syncService: SyncService);
9
+ getValidators(): ValidatorFn[];
10
+ protected createControlConfig(field: Field): CouponControlConfig;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<CouponConverter, never>;
12
+ static ɵprov: i0.ɵɵInjectableDeclaration<CouponConverter>;
13
+ }
@@ -1,8 +1,8 @@
1
1
  import { ValidatorFn } from '@angular/forms';
2
- import { Field } from '../../field.interface';
3
- import { SyncService } from '../../sync/sync.service';
4
- import { TextControlConfig } from '../controls/text-control.config';
5
- import { Converter } from './converter.abstract';
2
+ import { Field } from '../../../field.interface';
3
+ import { SyncService } from '../../../sync/sync.service';
4
+ import { TextControlConfig } from '../../controls/text-control.config';
5
+ import { Converter } from '../converter.abstract';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class CpfNameConverter extends Converter {
8
8
  constructor(syncService: SyncService);
@@ -1,7 +1,7 @@
1
- import { Field } from '../../field.interface';
2
- import { SyncService } from '../../sync/sync.service';
3
- import { TextControlConfig } from '../controls/text-control.config';
4
- import { Converter } from './converter.abstract';
1
+ import { Field } from '../../../field.interface';
2
+ import { SyncService } from '../../../sync/sync.service';
3
+ import { TextControlConfig } from '../../controls/text-control.config';
4
+ import { Converter } from '../converter.abstract';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class CpfNumberConverter extends Converter {
7
7
  constructor(syncService: SyncService);
@@ -0,0 +1,3 @@
1
+ export interface CvvFormState {
2
+ activeCardType?: unknown;
3
+ }
@@ -1,14 +1,15 @@
1
- import { Converter } from './converter.abstract';
2
- import { SyncService } from '../../sync/sync.service';
1
+ import { Converter } from '../converter.abstract';
2
+ import { SyncService } from '../../../sync/sync.service';
3
3
  import { ValidatorFn } from '@angular/forms';
4
- import { Field } from '../../field.interface';
5
- import { FormState } from '../form-state.interface';
6
- import { TextControlConfig } from '../controls/text-control.config';
4
+ import { Field } from '../../../field.interface';
5
+ import { FormState } from '../../form-state.interface';
6
+ import { TextControlConfig } from '../../controls/text-control.config';
7
+ import { CvvFormState } from './cvv-form-state.interface';
7
8
  import * as i0 from "@angular/core";
8
9
  export declare class CvvConverter extends Converter {
9
- private readonly maxFieldLength;
10
+ private maxFieldLength;
10
11
  constructor(syncService: SyncService);
11
- getValidators(): ValidatorFn[];
12
+ getValidators(field: Field, formState?: CvvFormState): ValidatorFn[];
12
13
  protected createControlConfig(field: Field, formState: FormState): TextControlConfig;
13
14
  protected getAutocomplete(): string;
14
15
  protected getDataType(): string;
@@ -1,8 +1,8 @@
1
- import { Field } from '../../field.interface';
2
- import { SyncService } from '../../sync/sync.service';
3
- import { TextControlConfig } from '../controls/text-control.config';
4
- import { ValidatorFn } from '../validators/validator-fn.type';
5
- import { Converter } from './converter.abstract';
1
+ import { Field } from '../../../field.interface';
2
+ import { SyncService } from '../../../sync/sync.service';
3
+ import { TextControlConfig } from '../../controls/text-control.config';
4
+ import { ValidatorFn } from '../../validators/validator-fn.type';
5
+ import { Converter } from '../converter.abstract';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class EmailConverter extends Converter {
8
8
  constructor(syncService: SyncService);
@@ -0,0 +1,11 @@
1
+ import { Converter } from '../converter.abstract';
2
+ import { SyncService } from '../../../sync/sync.service';
3
+ import { Field } from '../../../field.interface';
4
+ import { TextControlConfig } from '../../controls/text-control.config';
5
+ import * as i0 from "@angular/core";
6
+ export declare class PinConverter extends Converter {
7
+ constructor(syncService: SyncService);
8
+ protected createControlConfig(field: Field): TextControlConfig;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<PinConverter, never>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<PinConverter>;
11
+ }
@@ -0,0 +1,14 @@
1
+ import { ValidatorFn } from '@angular/forms';
2
+ import { Converter } from '../converter.abstract';
3
+ import { SyncService } from '../../../sync/sync.service';
4
+ import { Field } from '../../../field.interface';
5
+ import { TextControlConfig } from '../../controls/text-control.config';
6
+ import * as i0 from "@angular/core";
7
+ export declare class PricepointConverter extends Converter {
8
+ private readonly maxFieldLength;
9
+ constructor(syncService: SyncService);
10
+ getValidators(field: Field): ValidatorFn[];
11
+ protected createControlConfig(field: Field): TextControlConfig;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<PricepointConverter, never>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<PricepointConverter>;
14
+ }
@@ -0,0 +1,11 @@
1
+ import { Converter } from '../converter.abstract';
2
+ import { SyncService } from '../../../sync/sync.service';
3
+ import { Field } from '../../../field.interface';
4
+ import { RadioControlConfig } from '../../controls/radio-control/radio-control.config';
5
+ import * as i0 from "@angular/core";
6
+ export declare class RadioGroupConverter extends Converter {
7
+ constructor(syncService: SyncService);
8
+ protected createControlConfig(field: Field): RadioControlConfig;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<RadioGroupConverter, never>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<RadioGroupConverter>;
11
+ }
@@ -0,0 +1,11 @@
1
+ import { Converter } from '../converter.abstract';
2
+ import { SyncService } from '../../../sync/sync.service';
3
+ import { SearchSelectControlConfig } from '../../controls/search-select/search-select-control.config';
4
+ import { Field } from '../../../field.interface';
5
+ import * as i0 from "@angular/core";
6
+ export declare class SelectConverter extends Converter {
7
+ constructor(syncService: SyncService);
8
+ protected createControlConfig(field: Field): SearchSelectControlConfig;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<SelectConverter, never>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<SelectConverter>;
11
+ }
@@ -1,7 +1,7 @@
1
- import { Field } from '../../field.interface';
2
- import { SyncService } from '../../sync/sync.service';
3
- import { TextControlConfig } from '../controls/text-control.config';
4
- import { Converter } from './converter.abstract';
1
+ import { Field } from '../../../field.interface';
2
+ import { SyncService } from '../../../sync/sync.service';
3
+ import { TextControlConfig } from '../../controls/text-control.config';
4
+ import { Converter } from '../converter.abstract';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class TextConverter extends Converter {
7
7
  constructor(syncService: SyncService);
@@ -1,9 +1,9 @@
1
1
  import { ValidatorFn } from '@angular/forms';
2
- import { CountryService } from '../../../country/country.service';
3
- import { Field } from '../../field.interface';
4
- import { SyncService } from '../../sync/sync.service';
5
- import { TextControlConfig } from '../controls/text-control.config';
6
- import { Converter } from './converter.abstract';
2
+ import { CountryService } from '../../../../country/country.service';
3
+ import { Field } from '../../../field.interface';
4
+ import { SyncService } from '../../../sync/sync.service';
5
+ import { TextControlConfig } from '../../controls/text-control.config';
6
+ import { Converter } from '../converter.abstract';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class ZipConverter extends Converter {
9
9
  private readonly countryService;
@@ -0,0 +1,4 @@
1
+ import { FormState } from './form-state.interface';
2
+ export interface FieldFormStates {
3
+ [fieldName: string]: FormState;
4
+ }
@@ -1,11 +1,15 @@
1
1
  import { UntypedFormGroup } from '@angular/forms';
2
2
  import { Field } from '../field.interface';
3
3
  import { ControlConfigService } from './controls/control-config.service';
4
+ import { FieldFormStates } from './field-form-states.interface';
5
+ import { FormState } from './form-state.interface';
4
6
  import * as i0 from "@angular/core";
5
7
  export declare class FormService {
6
8
  protected readonly controlConfigService: ControlConfigService;
9
+ fieldFormStates: FieldFormStates;
7
10
  constructor(controlConfigService: ControlConfigService);
8
11
  createForm(fields: Field[]): UntypedFormGroup;
12
+ updateFieldFormState(form: UntypedFormGroup, fields: Field[], fieldName: string, formState: FormState): void;
9
13
  private getVisibleFields;
10
14
  static ɵfac: i0.ɵɵFactoryDeclaration<FormService, never>;
11
15
  static ɵprov: i0.ɵɵInjectableDeclaration<FormService>;
@@ -0,0 +1,5 @@
1
+ import { FormState } from '../../form-state.interface';
2
+ import { ValidatorFn } from '../validator-fn.type';
3
+ export declare const maxMonths = 12;
4
+ export declare const getMinMonth: (parsedYear: string) => number;
5
+ export declare function cardMonthValidator(formState?: FormState): ValidatorFn;
@@ -0,0 +1,5 @@
1
+ import { AbstractControl } from '@angular/forms';
2
+ import { ValidationErrors } from '../validation-errors.interface';
3
+ export declare const getLastCharactersInYear: (str?: string) => string;
4
+ export declare const maxYearsCount = 50;
5
+ export declare function cardYearValidator(control: AbstractControl): ValidationErrors | null;
@@ -0,0 +1,2 @@
1
+ import { ValidatorFn } from '../validator-fn.type';
2
+ export declare function couponValidator(message?: string): ValidatorFn;
@@ -1,5 +1,5 @@
1
1
  import { ValidationErrors } from '@angular/forms';
2
- import { CreditCardService } from '../../../credit-card/credit-card.service';
2
+ import { CreditCardService } from '../../../../credit-card/credit-card.service';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class CreditCardMinLengthValidator {
5
5
  private readonly creditService;
@@ -1,2 +1,2 @@
1
- import { ValidatorFn } from './validator-fn.type';
1
+ import { ValidatorFn } from '../validator-fn.type';
2
2
  export declare function convertedEmailValidator(): ValidatorFn;
@@ -1,2 +1,2 @@
1
- import { ValidatorFn } from './validator-fn.type';
1
+ import { ValidatorFn } from '../validator-fn.type';
2
2
  export declare const restrictedValueValidator: (restrictedValue: unknown) => ValidatorFn;
@@ -7,6 +7,7 @@ import { ControlConfig } from './form/controls/control-config';
7
7
  import { FinanceDetails } from './finance-details/finance-details.class';
8
8
  import { InputEventName } from './form/input-event.enum';
9
9
  import { FormFieldsStatus } from './form/form-fields-status.interface';
10
+ import { FormState } from './form/form-state.interface';
10
11
  export interface Payment {
11
12
  initialize(): Promise<Field[]>;
12
13
  submit(): Promise<NextAction | null | void>;
@@ -20,6 +21,7 @@ export interface Payment {
20
21
  changeFieldValue(name: string, value: string): void;
21
22
  getControlConfig(field: Field): ControlConfig | null;
22
23
  changeFieldState(name: string, state: InputEventName): void;
24
+ updateFieldFormState(fieldName: string, formState: FormState): void;
23
25
  };
24
26
  flowUpdates$: Observable<NextAction>;
25
27
  financeDetailsUpdates$: Observable<FinanceDetails>;
@@ -19,6 +19,7 @@ import { InputEventName } from './form/input-event.enum';
19
19
  import { FormFieldsStatus } from './form/form-fields-status.interface';
20
20
  import { ThreeDsService } from './three-ds/three-ds.service';
21
21
  import { CreditCardStateService } from './credit-card-state/credit-card-state.service';
22
+ import { FormState } from './form/form-state.interface';
22
23
  import * as i0 from "@angular/core";
23
24
  export declare class PaymentService {
24
25
  private readonly initializeService;
@@ -48,6 +49,7 @@ export declare class PaymentService {
48
49
  validate(field: Field): Promise<ValidationErrors | null>;
49
50
  runThreeDs(): void;
50
51
  getFinanceDetails(): FinanceDetails | null;
52
+ updateFieldFormState(fieldName: string, formState: FormState): void;
51
53
  getStatus(): Promise<Status>;
52
54
  getFieldConfig(field: Field): ControlConfig | null;
53
55
  changeFieldValue(name: string, value: string): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xsolla/payment-client-core",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^15.2.0",
6
6
  "@angular/core": "^15.2.0",
@@ -1,10 +0,0 @@
1
- import { ControlConfig } from './control-config';
2
- export class CardNumberConfig extends ControlConfig {
3
- constructor() {
4
- super(...arguments);
5
- this.controlType = 'card-number';
6
- this.availableCardTypes = [];
7
- this.customError = '';
8
- }
9
- }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1udW1iZXItY29udHJvbC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9wYXltZW50L2Zvcm0vY29udHJvbHMvY2FyZC1udW1iZXItY29udHJvbC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxhQUFhO0lBQW5EOztRQUNTLGdCQUFXLEdBQUcsYUFBYSxDQUFDO1FBRzVCLHVCQUFrQixHQUFzQixFQUFFLENBQUM7UUFFM0MsZ0JBQVcsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IENvbnRyb2xDb25maWcgfSBmcm9tICcuL2NvbnRyb2wtY29uZmlnJztcbmltcG9ydCB7IENyZWRpdENhcmRUeXBlcyB9IGZyb20gJy4uLy4uLy4uL2NyZWRpdC1jYXJkL2NyZWRpdC1jYXJkLXR5cGVzLmVudW0nO1xuXG5leHBvcnQgY2xhc3MgQ2FyZE51bWJlckNvbmZpZyBleHRlbmRzIENvbnRyb2xDb25maWcge1xuICBwdWJsaWMgY29udHJvbFR5cGUgPSAnY2FyZC1udW1iZXInO1xuICBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmcgfCBTYWZlSHRtbCB8IG51bGw7XG4gIHB1YmxpYyBpY29uPzogc3RyaW5nO1xuICBwdWJsaWMgYXZhaWxhYmxlQ2FyZFR5cGVzOiBDcmVkaXRDYXJkVHlwZXNbXSA9IFtdO1xuICBwdWJsaWMgYWN0aXZlQ2FyZFR5cGU/OiBDcmVkaXRDYXJkVHlwZXM7XG4gIHB1YmxpYyBjdXN0b21FcnJvciA9ICcnO1xufVxuIl19
@@ -1,38 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Validators } from '@angular/forms';
3
- import { TextControlConfig } from '../controls/text-control.config';
4
- import { convert } from '../validators/convert.function';
5
- import { Converter } from './converter.abstract';
6
- import { birthdateValidator } from '../validators/birth-date.validator';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../../sync/sync.service";
9
- export class BirthDateConverter extends Converter {
10
- constructor(syncService) {
11
- super(syncService);
12
- }
13
- getValidators(field) {
14
- return super
15
- .getValidators(field)
16
- .concat([
17
- convert(Validators.pattern(/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/), `Enter a valid birth date`),
18
- birthdateValidator,
19
- ]);
20
- }
21
- createControlConfig(field) {
22
- const config = this.createDefaultControlConfig(TextControlConfig, field);
23
- config.maskConfig = {
24
- mask: '99/99/9999',
25
- unmaskModelValue: false,
26
- guide: false,
27
- };
28
- config.placeholder = `DD/MM/YYYY`;
29
- config.inputMode = 'numeric';
30
- return config;
31
- }
32
- }
33
- BirthDateConverter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BirthDateConverter, deps: [{ token: i1.SyncService }], target: i0.ɵɵFactoryTarget.Injectable });
34
- BirthDateConverter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BirthDateConverter });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BirthDateConverter, decorators: [{
36
- type: Injectable
37
- }], ctorParameters: function () { return [{ type: i1.SyncService }]; } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlydGgtZGF0ZS5jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9wYXltZW50L2Zvcm0vY29udmVydGVycy9iaXJ0aC1kYXRlLmNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFHeEUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFNBQVM7SUFDL0MsWUFBbUIsV0FBd0I7UUFDekMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBWTtRQUMvQixPQUFPLEtBQUs7YUFDVCxhQUFhLENBQUMsS0FBSyxDQUFDO2FBQ3BCLE1BQU0sQ0FBQztZQUNOLE9BQU8sQ0FDTCxVQUFVLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLEVBQ3hELDBCQUEwQixDQUMzQjtZQUNELGtCQUFrQjtTQUNuQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsbUJBQW1CLENBQUMsS0FBWTtRQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekUsTUFBTSxDQUFDLFVBQVUsR0FBRztZQUNsQixJQUFJLEVBQUUsWUFBWTtZQUNsQixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQztRQUVGLE1BQU0sQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDO1FBRWxDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTdCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OytHQS9CVSxrQkFBa0I7bUhBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4uLy4uL2ZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTeW5jU2VydmljZSB9IGZyb20gJy4uLy4uL3N5bmMvc3luYy5zZXJ2aWNlJztcbmltcG9ydCB7IFRleHRDb250cm9sQ29uZmlnIH0gZnJvbSAnLi4vY29udHJvbHMvdGV4dC1jb250cm9sLmNvbmZpZyc7XG5pbXBvcnQgeyBjb252ZXJ0IH0gZnJvbSAnLi4vdmFsaWRhdG9ycy9jb252ZXJ0LmZ1bmN0aW9uJztcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gJy4vY29udmVydGVyLmFic3RyYWN0JztcbmltcG9ydCB7IGJpcnRoZGF0ZVZhbGlkYXRvciB9IGZyb20gJy4uL3ZhbGlkYXRvcnMvYmlydGgtZGF0ZS52YWxpZGF0b3InO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQmlydGhEYXRlQ29udmVydGVyIGV4dGVuZHMgQ29udmVydGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHN5bmNTZXJ2aWNlOiBTeW5jU2VydmljZSkge1xuICAgIHN1cGVyKHN5bmNTZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWxpZGF0b3JzKGZpZWxkOiBGaWVsZCk6IFZhbGlkYXRvckZuW10ge1xuICAgIHJldHVybiBzdXBlclxuICAgICAgLmdldFZhbGlkYXRvcnMoZmllbGQpXG4gICAgICAuY29uY2F0KFtcbiAgICAgICAgY29udmVydChcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XXsxLDJ9XFwvWzAtOV17MSwyfVxcL1swLTldezR9JC8pLFxuICAgICAgICAgIGBFbnRlciBhIHZhbGlkIGJpcnRoIGRhdGVgXG4gICAgICAgICksXG4gICAgICAgIGJpcnRoZGF0ZVZhbGlkYXRvcixcbiAgICAgIF0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUNvbnRyb2xDb25maWcoZmllbGQ6IEZpZWxkKTogVGV4dENvbnRyb2xDb25maWcge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY3JlYXRlRGVmYXVsdENvbnRyb2xDb25maWcoVGV4dENvbnRyb2xDb25maWcsIGZpZWxkKTtcblxuICAgIGNvbmZpZy5tYXNrQ29uZmlnID0ge1xuICAgICAgbWFzazogJzk5Lzk5Lzk5OTknLFxuICAgICAgdW5tYXNrTW9kZWxWYWx1ZTogZmFsc2UsXG4gICAgICBndWlkZTogZmFsc2UsXG4gICAgfTtcblxuICAgIGNvbmZpZy5wbGFjZWhvbGRlciA9IGBERC9NTS9ZWVlZYDtcblxuICAgIGNvbmZpZy5pbnB1dE1vZGUgPSAnbnVtZXJpYyc7XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG59XG4iXX0=
@@ -1,36 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Converter } from './converter.abstract';
3
- import { TextControlConfig } from '../controls/text-control.config';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../../sync/sync.service";
6
- export class CardExpirationConverter extends Converter {
7
- constructor(syncService) {
8
- super(syncService);
9
- }
10
- getValidators() {
11
- return [];
12
- }
13
- createControlConfig(field, formState) {
14
- const config = this.createDefaultControlConfig(TextControlConfig, field);
15
- config.maskConfig = {
16
- mask: '99',
17
- guide: false,
18
- };
19
- config.inputMode = 'numeric';
20
- config.title = 'date';
21
- config.disabled = formState?.disabled ?? false;
22
- return config;
23
- }
24
- getAutocomplete() {
25
- return 'cc-exp';
26
- }
27
- getDataType() {
28
- return 'text';
29
- }
30
- }
31
- CardExpirationConverter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CardExpirationConverter, deps: [{ token: i1.SyncService }], target: i0.ɵɵFactoryTarget.Injectable });
32
- CardExpirationConverter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CardExpirationConverter });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CardExpirationConverter, decorators: [{
34
- type: Injectable
35
- }], ctorParameters: function () { return [{ type: i1.SyncService }]; } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1leHBpcmF0aW9uLmNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3BheW1lbnQvZm9ybS9jb252ZXJ0ZXJzL2NhcmQtZXhwaXJhdGlvbi5jb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFLakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQUdwRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsU0FBUztJQUNwRCxZQUFtQixXQUF3QjtRQUN6QyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVNLGFBQWE7UUFDbEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRVMsbUJBQW1CLENBQzNCLEtBQVksRUFDWixTQUFvQjtRQUVwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekUsTUFBTSxDQUFDLFVBQVUsR0FBRztZQUNsQixJQUFJLEVBQUUsSUFBSTtZQUNWLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQztRQUNGLE1BQU0sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBRXRCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFFL0MsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVTLGVBQWU7UUFDdkIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVTLFdBQVc7UUFDbkIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7b0hBakNVLHVCQUF1Qjt3SEFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tICcuL2NvbnZlcnRlci5hYnN0cmFjdCc7XG5pbXBvcnQgeyBTeW5jU2VydmljZSB9IGZyb20gJy4uLy4uL3N5bmMvc3luYy5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi9maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi4vZm9ybS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGV4dENvbnRyb2xDb25maWcgfSBmcm9tICcuLi9jb250cm9scy90ZXh0LWNvbnRyb2wuY29uZmlnJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhcmRFeHBpcmF0aW9uQ29udmVydGVyIGV4dGVuZHMgQ29udmVydGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHN5bmNTZXJ2aWNlOiBTeW5jU2VydmljZSkge1xuICAgIHN1cGVyKHN5bmNTZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVDb250cm9sQ29uZmlnKFxuICAgIGZpZWxkOiBGaWVsZCxcbiAgICBmb3JtU3RhdGU6IEZvcm1TdGF0ZVxuICApOiBUZXh0Q29udHJvbENvbmZpZyB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jcmVhdGVEZWZhdWx0Q29udHJvbENvbmZpZyhUZXh0Q29udHJvbENvbmZpZywgZmllbGQpO1xuXG4gICAgY29uZmlnLm1hc2tDb25maWcgPSB7XG4gICAgICBtYXNrOiAnOTknLFxuICAgICAgZ3VpZGU6IGZhbHNlLFxuICAgIH07XG4gICAgY29uZmlnLmlucHV0TW9kZSA9ICdudW1lcmljJztcbiAgICBjb25maWcudGl0bGUgPSAnZGF0ZSc7XG5cbiAgICBjb25maWcuZGlzYWJsZWQgPSBmb3JtU3RhdGU/LmRpc2FibGVkID8/IGZhbHNlO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRBdXRvY29tcGxldGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NjLWV4cCc7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGF0YVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3RleHQnO1xuICB9XG59XG4iXX0=