@xsolla/payment-client-core 0.1.7 → 0.1.8

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 (59) hide show
  1. package/esm2020/lib/core/country/country-iso-code.enum.mjs +6 -0
  2. package/esm2020/lib/core/payment/finance-details/cart-summary.interface.mjs +1 -1
  3. package/esm2020/lib/core/payment/finance-details/finance-details.interface.mjs +2 -0
  4. package/esm2020/lib/core/payment/finance-details/finance-details.service.mjs +25 -12
  5. package/esm2020/lib/core/payment/finance-details/price.helpers.mjs +2 -2
  6. package/esm2020/lib/core/payment/finance-details/status/field-with-amount-and-currency.interface.mjs +2 -0
  7. package/esm2020/lib/core/payment/finance-details/status/fields-with-currency.mjs +16 -0
  8. package/esm2020/lib/core/payment/finance-details/status/finance-info.interface.mjs +2 -0
  9. package/esm2020/lib/core/payment/finance-details/status/status-finance-details-adapter.service.mjs +290 -0
  10. package/esm2020/lib/core/payment/finance-details/summary/default-image-patterns.const.mjs +10 -0
  11. package/esm2020/lib/core/payment/finance-details/summary/sales-tax-details-key.enum.mjs +7 -0
  12. package/esm2020/lib/core/payment/finance-details/summary/summary-finance-details-adapter.service.mjs +264 -0
  13. package/esm2020/lib/core/payment/finance-details/vat-details-key.enum.mjs +14 -0
  14. package/esm2020/lib/core/payment/payment.interface.mjs +1 -1
  15. package/esm2020/lib/core/payment/payment.service.mjs +2 -2
  16. package/esm2020/lib/core/payment/status/status-finance-info.interface.mjs +2 -0
  17. package/esm2020/lib/core/payment/status/status-order.interface.mjs +2 -0
  18. package/esm2020/lib/core/payment/status/status.interface.mjs +1 -1
  19. package/esm2020/lib/core/payment/status/status.service.mjs +10 -6
  20. package/esm2020/lib/core/payment/xps-summary.interface.mjs +1 -1
  21. package/esm2020/lib/core/session/session.service.mjs +57 -0
  22. package/esm2020/lib/core/type-guards/is-null.function.mjs +4 -0
  23. package/esm2020/lib/core/type-guards/is-undefined.function.mjs +4 -0
  24. package/esm2020/lib/core-library.module.mjs +1 -4
  25. package/fesm2015/xsolla-payment-client-core.mjs +726 -304
  26. package/fesm2015/xsolla-payment-client-core.mjs.map +1 -1
  27. package/fesm2020/xsolla-payment-client-core.mjs +706 -293
  28. package/fesm2020/xsolla-payment-client-core.mjs.map +1 -1
  29. package/lib/core/country/country-iso-code.enum.d.ts +4 -0
  30. package/lib/core/payment/finance-details/cart-summary.interface.d.ts +2 -2
  31. package/lib/core/payment/finance-details/finance-details.interface.d.ts +11 -0
  32. package/lib/core/payment/finance-details/finance-details.service.d.ts +12 -5
  33. package/lib/core/payment/finance-details/price.helpers.d.ts +3 -3
  34. package/lib/core/payment/finance-details/status/field-with-amount-and-currency.interface.d.ts +7 -0
  35. package/lib/core/payment/finance-details/status/fields-with-currency.d.ts +1 -0
  36. package/lib/core/payment/finance-details/status/finance-info.interface.d.ts +4 -0
  37. package/lib/core/payment/finance-details/status/status-finance-details-adapter.service.d.ts +31 -0
  38. package/lib/core/payment/finance-details/summary/sales-tax-details-key.enum.d.ts +5 -0
  39. package/lib/core/payment/finance-details/summary/summary-finance-details-adapter.service.d.ts +24 -0
  40. package/lib/core/payment/finance-details/vat-details-key.enum.d.ts +12 -0
  41. package/lib/core/payment/payment.interface.d.ts +1 -1
  42. package/lib/core/payment/payment.service.d.ts +1 -1
  43. package/lib/core/payment/status/status-finance-info.interface.d.ts +4 -0
  44. package/lib/core/payment/status/status-order.interface.d.ts +12 -0
  45. package/lib/core/payment/status/status.interface.d.ts +4 -16
  46. package/lib/core/payment/status/status.service.d.ts +3 -1
  47. package/lib/core/payment/xps-summary.interface.d.ts +1 -1
  48. package/lib/core/session/session.service.d.ts +18 -0
  49. package/lib/core/type-guards/is-null.function.d.ts +1 -0
  50. package/lib/core/type-guards/is-undefined.function.d.ts +1 -0
  51. package/package.json +1 -1
  52. package/xsolla-payment-client-core-0.1.8.tgz +0 -0
  53. package/esm2020/lib/core/payment/finance-details/default-image-patterns.const.mjs +0 -10
  54. package/esm2020/lib/core/payment/finance-details/finance-details-response.token.mjs +0 -8
  55. package/esm2020/lib/core/payment/finance-details/finance-details.class.mjs +0 -237
  56. package/lib/core/payment/finance-details/finance-details-response.token.d.ts +0 -7
  57. package/lib/core/payment/finance-details/finance-details.class.d.ts +0 -29
  58. package/xsolla-payment-client-core-0.1.7.tgz +0 -0
  59. /package/lib/core/payment/finance-details/{default-image-patterns.const.d.ts → summary/default-image-patterns.const.d.ts} +0 -0
@@ -0,0 +1,4 @@
1
+ export declare enum CountryIsoCode {
2
+ India = "IN",
3
+ Ghana = "GH"
4
+ }
@@ -2,8 +2,8 @@ import { CartLine } from './cart-line.interface';
2
2
  export interface CartSummary {
3
3
  transactionDetails?: CartLine[];
4
4
  shipping?: CartLine[];
5
- subtotal?: CartLine;
6
- subtotalPayment?: CartLine;
5
+ subtotal?: CartLine | null;
6
+ subtotalPayment?: CartLine | null;
7
7
  subtotalDetails?: CartLine[];
8
8
  total: CartLine;
9
9
  totalDetails?: CartLine[];
@@ -0,0 +1,11 @@
1
+ import { XpsFinance } from '../xps-finance.interface';
2
+ import { XpsPurchase } from '../xps-purchase.interface';
3
+ import { CartItem } from './cart-item.interface';
4
+ import { CartSummary } from './cart-summary.interface';
5
+ export interface FinanceDetails {
6
+ purchase?: XpsPurchase | null;
7
+ finance?: XpsFinance | null;
8
+ cartItems: CartItem[] | null;
9
+ cartSummary: CartSummary;
10
+ paymentCountry: string;
11
+ }
@@ -1,12 +1,19 @@
1
1
  import { EmitDataService } from '../emit-data.service.abstract';
2
+ import { Status } from '../status/status.interface';
2
3
  import { XpsSummary } from '../xps-summary.interface';
3
- import { FinanceDetailsResponseFactory } from './finance-details-response.token';
4
- import { FinanceDetails } from './finance-details.class';
4
+ import { FinanceDetails } from './finance-details.interface';
5
+ import { StatusFinanceDetailsAdapterService } from './status/status-finance-details-adapter.service';
6
+ import { SummaryFinanceDetailsAdapterService } from './summary/summary-finance-details-adapter.service';
7
+ import { SessionService } from '../../session/session.service';
5
8
  import * as i0 from "@angular/core";
6
9
  export declare class FinanceDetailsService extends EmitDataService<FinanceDetails> {
7
- private readonly responseFactory;
8
- constructor(responseFactory: FinanceDetailsResponseFactory);
9
- emit(summary?: XpsSummary): void;
10
+ private readonly sessionService;
11
+ private readonly summaryFinanceDetailsAdapterService;
12
+ private readonly statusFinanceDetailsAdapterService;
13
+ private readonly purchaseSessionKey;
14
+ constructor(sessionService: SessionService, summaryFinanceDetailsAdapterService: SummaryFinanceDetailsAdapterService, statusFinanceDetailsAdapterService: StatusFinanceDetailsAdapterService);
15
+ emitWithSummary(summary?: XpsSummary): void;
16
+ emitWithStatus(status?: Status): void;
10
17
  static ɵfac: i0.ɵɵFactoryDeclaration<FinanceDetailsService, never>;
11
18
  static ɵprov: i0.ɵɵInjectableDeclaration<FinanceDetailsService>;
12
19
  }
@@ -1,6 +1,6 @@
1
1
  import { Price } from './price.interface';
2
2
  export declare function extractMoneyCurrency<T>(money: (T & {
3
- amount: null | number;
4
- currency: string;
3
+ amount?: null | number;
4
+ currency?: string;
5
5
  }) | undefined, allowZero?: boolean): Price;
6
- export declare function createPriceOrUndefined(amount: number | undefined | null, currency: string): Price | undefined;
6
+ export declare function createPriceOrUndefined(amount: number | undefined | null, currency: string | undefined): Price | undefined;
@@ -0,0 +1,7 @@
1
+ export interface FieldWithAmountAndCurrency {
2
+ key?: string;
3
+ pref?: string;
4
+ value?: string;
5
+ amount?: number | null;
6
+ currency?: string;
7
+ }
@@ -0,0 +1 @@
1
+ export declare const fieldsWithCurrency: Set<string>;
@@ -0,0 +1,4 @@
1
+ import { FieldWithAmountAndCurrency } from './field-with-amount-and-currency.interface';
2
+ export interface FinanceInfoWithAmountAndCurrency {
3
+ [key: string]: FieldWithAmountAndCurrency;
4
+ }
@@ -0,0 +1,31 @@
1
+ import { Status } from '../../status/status.interface';
2
+ import { FinanceDetails } from '../finance-details.interface';
3
+ import { XpsPurchase } from '../../xps-purchase.interface';
4
+ import { SummaryFinanceDetailsAdapterService } from '../summary/summary-finance-details-adapter.service';
5
+ import * as i0 from "@angular/core";
6
+ export declare class StatusFinanceDetailsAdapterService {
7
+ private readonly summarFinanceDetailsAdapterService;
8
+ constructor(summarFinanceDetailsAdapterService: SummaryFinanceDetailsAdapterService);
9
+ getFinanceDetails(status: Status, purchase: XpsPurchase | null): FinanceDetails;
10
+ private fillFinanceInfo;
11
+ private addAmountAndCurrencyToField;
12
+ private getCartItems;
13
+ private convertStatusFinanceToSummaryFinance;
14
+ private getCartSummary;
15
+ private getTotal;
16
+ private getSubtotalPayment;
17
+ private getInitialCurrencySubtotal;
18
+ private getTotalDetails;
19
+ private getSubtotalDetails;
20
+ private getTaxesForSubtotalDetails;
21
+ private getVatNotIncludingKeyDetails;
22
+ private getVatNotIncludingTitleDetails;
23
+ private getVatIncludingKeyDetails;
24
+ private geVatIncludingTitleDetails;
25
+ private isGhana;
26
+ private isIndia;
27
+ private getTransactionDetails;
28
+ private getPercents;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<StatusFinanceDetailsAdapterService, never>;
30
+ static ɵprov: i0.ɵɵInjectableDeclaration<StatusFinanceDetailsAdapterService>;
31
+ }
@@ -0,0 +1,5 @@
1
+ export declare enum SalesTaxDetailsKey {
2
+ salesTax = "sales-tax",
3
+ salesTaxPercent = "sales-tax-percent",
4
+ salesTaxIncluding = "sales-tax-including"
5
+ }
@@ -0,0 +1,24 @@
1
+ import { XpsSummary } from '../../xps-summary.interface';
2
+ import { FinanceDetails } from '../finance-details.interface';
3
+ import * as i0 from "@angular/core";
4
+ export declare class SummaryFinanceDetailsAdapterService {
5
+ getFinanceDetails(summary: XpsSummary): FinanceDetails;
6
+ private shouldShowZeroIndirectTaxRate;
7
+ private isSalesTaxes;
8
+ private getCartItems;
9
+ private getCartSummary;
10
+ private getPaymentCountry;
11
+ private getTaxForItem;
12
+ private getSubtotalDetails;
13
+ private getTaxesForSubtotalDetails;
14
+ private getVatLabelForSubtotalDetails;
15
+ private getTaxesForTotalDetails;
16
+ private getVatNotIncludingKeyForDetails;
17
+ private getVatIncludingKeyForDetails;
18
+ private getVatLabelForTotalDetails;
19
+ private isIndia;
20
+ private isGhana;
21
+ private isDefaultImage;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<SummaryFinanceDetailsAdapterService, never>;
23
+ static ɵprov: i0.ɵɵInjectableDeclaration<SummaryFinanceDetailsAdapterService>;
24
+ }
@@ -0,0 +1,12 @@
1
+ export declare enum VatDetailsKey {
2
+ vat = "vat",
3
+ vatPercent = "vat-percent",
4
+ vatIncluding = "vat-including",
5
+ vatPercentIncluding = "vat-percent-including",
6
+ vatIndia = "vat-india",
7
+ vatIndiaPercent = "vat-india-percent",
8
+ vatIndiaIncluding = "vat-india-including",
9
+ vatIndiaPercentIncluding = "vat-india-percent-including",
10
+ vatGhana = "vat-ghana",
11
+ vatGhanaIncluding = "vat-ghana-including"
12
+ }
@@ -4,7 +4,7 @@ import { NextAction } from './actions/next-action.interface';
4
4
  import { Status } from './status/status.interface';
5
5
  import { Field } from './field.interface';
6
6
  import { ControlConfig } from './form/controls/control-config';
7
- import { FinanceDetails } from './finance-details/finance-details.class';
7
+ import { FinanceDetails } from './finance-details/finance-details.interface';
8
8
  import { InputEventName } from './form/input-event.enum';
9
9
  import { FormFieldsStatus } from './form/form-fields-status.interface';
10
10
  import { FormState } from './form/form-state.interface';
@@ -9,7 +9,7 @@ import { StatusService } from './status/status.service';
9
9
  import { NextActionService } from './actions/next-action.service';
10
10
  import { ControlConfig } from './form/controls/control-config';
11
11
  import { ControlConfigService } from './form/controls/control-config.service';
12
- import { FinanceDetails } from './finance-details/finance-details.class';
12
+ import { FinanceDetails } from './finance-details/finance-details.interface';
13
13
  import { FinanceDetailsService } from './finance-details/finance-details.service';
14
14
  import { NextAction } from './actions/next-action.interface';
15
15
  import { Field } from './field.interface';
@@ -0,0 +1,4 @@
1
+ import { FinanceInfoField } from './finance-info-field.interface';
2
+ export interface StatusFinanceInfo {
3
+ [key: string]: FinanceInfoField;
4
+ }
@@ -0,0 +1,12 @@
1
+ import { LineItem } from './line-item.interface';
2
+ export interface StatusOrder {
3
+ lineitems?: LineItem[];
4
+ shipping?: {
5
+ currency: string;
6
+ amount: number;
7
+ };
8
+ contained_taxes?: {
9
+ sales_tax?: boolean;
10
+ user_vat?: boolean;
11
+ };
12
+ }
@@ -1,5 +1,5 @@
1
- import { FinanceInfoField } from './finance-info-field.interface';
2
- import { LineItem } from './line-item.interface';
1
+ import { StatusFinanceInfo } from './status-finance-info.interface';
2
+ import { StatusOrder } from './status-order.interface';
3
3
  import { StatusEnum } from './status.enum';
4
4
  import { TitleClass } from './title-class.enum';
5
5
  import { WebSocketClientType } from './web-socket-client-type.enum';
@@ -11,9 +11,7 @@ export interface Status {
11
11
  webSocketUrl: string;
12
12
  webSocketChannelName: string;
13
13
  webSocketClientType: WebSocketClientType;
14
- financeInfo: {
15
- [key: string]: FinanceInfoField;
16
- };
14
+ financeInfo: StatusFinanceInfo;
17
15
  isCancelUser: boolean;
18
16
  backUrlSettings: {
19
17
  backUrl: string;
@@ -48,15 +46,5 @@ export interface Status {
48
46
  isSuccess?: boolean;
49
47
  isCanceled?: boolean;
50
48
  paymentCountryIso: string;
51
- order?: {
52
- lineitems?: LineItem[];
53
- shipping?: {
54
- currency: string;
55
- amount: number;
56
- };
57
- contained_taxes?: {
58
- sales_tax?: boolean;
59
- user_vat?: boolean;
60
- };
61
- };
49
+ order?: StatusOrder;
62
50
  }
@@ -4,13 +4,15 @@ import { ListenStatusService } from './listen-status/listen-status.service';
4
4
  import { Status } from './status.interface';
5
5
  import { NextActionService } from '../actions/next-action.service';
6
6
  import { UrlService } from '../../url/url.service';
7
+ import { FinanceDetailsService } from '../finance-details/finance-details.service';
7
8
  import * as i0 from "@angular/core";
8
9
  export declare class StatusService {
9
10
  private readonly urlService;
10
11
  private readonly statusRequestService;
12
+ private readonly financeDetailsService;
11
13
  private readonly listenStatusService;
12
14
  private readonly nextActionService;
13
- constructor(urlService: UrlService, statusRequestService: StatusRequestService, listenStatusService: ListenStatusService, nextActionService: NextActionService);
15
+ constructor(urlService: UrlService, statusRequestService: StatusRequestService, financeDetailsService: FinanceDetailsService, listenStatusService: ListenStatusService, nextActionService: NextActionService);
14
16
  getStatus(params: StatusRequestParams): Promise<Status>;
15
17
  getStatusWithUrlSearchParams(url?: string): Promise<Status>;
16
18
  private getRequestParamsFromUrl;
@@ -2,5 +2,5 @@ import { XpsFinance } from './xps-finance.interface';
2
2
  import { XpsPurchase } from './xps-purchase.interface';
3
3
  export interface XpsSummary {
4
4
  purchase: XpsPurchase;
5
- finance: XpsFinance;
5
+ finance: XpsFinance | null;
6
6
  }
@@ -0,0 +1,18 @@
1
+ import { ExtendedWindow } from '../extended-window.interface';
2
+ import { SettingsService } from '../settings/settings.service';
3
+ import * as i0 from "@angular/core";
4
+ export declare class SessionService {
5
+ private readonly window;
6
+ private readonly settingsService;
7
+ private cache;
8
+ constructor(window: ExtendedWindow, settingsService: SettingsService);
9
+ /**
10
+ * @param {string} key must be uniq entire all app
11
+ * @param {unknown} value can be anything
12
+ */
13
+ set(key: string, value: unknown): void;
14
+ get<T>(key: string): T | null;
15
+ private getStorageKey;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<SessionService, never>;
17
+ static ɵprov: i0.ɵɵInjectableDeclaration<SessionService>;
18
+ }
@@ -0,0 +1 @@
1
+ export declare function isNull(value: unknown): value is null;
@@ -0,0 +1 @@
1
+ export declare function isUndefined(value: unknown): value is undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xsolla/payment-client-core",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^15.2.0",
6
6
  "@angular/core": "^15.2.0",
@@ -1,10 +0,0 @@
1
- /**
2
- * default image for purchase item is set on Publisher Account side.
3
- * for purchase checkout items the image url is converted into base64 string.
4
- * to determine default image fixed templates are used
5
- */
6
- export const defaultImagePatterns = [
7
- /^data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAAAAADmVT4XAAACMUlEQVR4Ae3YgYqdMBSE4fP/,
8
- /virtual_item_default_image/,
9
- ];
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1pbWFnZS1wYXR0ZXJucy5jb25zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3BheW1lbnQvZmluYW5jZS1kZXRhaWxzL2RlZmF1bHQtaW1hZ2UtcGF0dGVybnMuY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLGlHQUFpRztJQUNqRyw0QkFBNEI7Q0FDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZGVmYXVsdCBpbWFnZSBmb3IgcHVyY2hhc2UgaXRlbSBpcyBzZXQgb24gUHVibGlzaGVyIEFjY291bnQgc2lkZS5cbiAqIGZvciBwdXJjaGFzZSBjaGVja291dCBpdGVtcyB0aGUgaW1hZ2UgdXJsIGlzIGNvbnZlcnRlZCBpbnRvIGJhc2U2NCBzdHJpbmcuXG4gKiB0byBkZXRlcm1pbmUgZGVmYXVsdCBpbWFnZSBmaXhlZCB0ZW1wbGF0ZXMgYXJlIHVzZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRJbWFnZVBhdHRlcm5zID0gW1xuICAvXmRhdGE6aW1hZ2VcXC9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FBQUFBRG1WVDRYQUFBQ01VbEVRVlI0QWUzWWdZcWRNQlNFNGZQLyxcbiAgL3ZpcnR1YWxfaXRlbV9kZWZhdWx0X2ltYWdlLyxcbl07XG4iXX0=
@@ -1,8 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { FinanceDetails } from './finance-details.class';
3
- export const financeDetailsResponseFactoryToken = new InjectionToken('FinanceDetails');
4
- export const financeDetailsResponseFactoryProvider = {
5
- provide: financeDetailsResponseFactoryToken,
6
- useValue: (...args) => new FinanceDetails(...args),
7
- };
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jZS1kZXRhaWxzLXJlc3BvbnNlLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvcGF5bWVudC9maW5hbmNlLWRldGFpbHMvZmluYW5jZS1kZXRhaWxzLXJlc3BvbnNlLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQVF6RCxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FDN0MsSUFBSSxjQUFjLENBQWdDLGdCQUFnQixDQUFDLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQWtCO0lBQ2xFLE9BQU8sRUFBRSxrQ0FBa0M7SUFDM0MsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUF3QixFQUFFLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQztDQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFZhbHVlUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbmFuY2VEZXRhaWxzIH0gZnJvbSAnLi9maW5hbmNlLWRldGFpbHMuY2xhc3MnO1xuXG50eXBlIFJlc3BvbnNlUGFyYW1ldGVycyA9IENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgRmluYW5jZURldGFpbHM+O1xuXG5leHBvcnQgdHlwZSBGaW5hbmNlRGV0YWlsc1Jlc3BvbnNlRmFjdG9yeSA9IChcbiAgLi4uYXJnczogUmVzcG9uc2VQYXJhbWV0ZXJzXG4pID0+IEZpbmFuY2VEZXRhaWxzO1xuXG5leHBvcnQgY29uc3QgZmluYW5jZURldGFpbHNSZXNwb25zZUZhY3RvcnlUb2tlbjogSW5qZWN0aW9uVG9rZW48RmluYW5jZURldGFpbHNSZXNwb25zZUZhY3Rvcnk+ID1cbiAgbmV3IEluamVjdGlvblRva2VuPEZpbmFuY2VEZXRhaWxzUmVzcG9uc2VGYWN0b3J5PignRmluYW5jZURldGFpbHMnKTtcblxuZXhwb3J0IGNvbnN0IGZpbmFuY2VEZXRhaWxzUmVzcG9uc2VGYWN0b3J5UHJvdmlkZXI6IFZhbHVlUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IGZpbmFuY2VEZXRhaWxzUmVzcG9uc2VGYWN0b3J5VG9rZW4sXG4gIHVzZVZhbHVlOiAoLi4uYXJnczogUmVzcG9uc2VQYXJhbWV0ZXJzKSA9PiBuZXcgRmluYW5jZURldGFpbHMoLi4uYXJncyksXG59O1xuIl19
@@ -1,237 +0,0 @@
1
- import { defaultImagePatterns } from './default-image-patterns.const';
2
- import { createPriceOrUndefined, extractMoneyCurrency } from './price.helpers';
3
- export class FinanceDetails {
4
- get shouldShowZeroIndirectTaxRate() {
5
- return !!(this.finance?.vat?.visible || this.finance?.vat_user?.visible);
6
- }
7
- get isSalesTaxes() {
8
- return !!(this.finance?.sales_tax?.amount || this.finance?.sales_tax_user?.amount);
9
- }
10
- constructor(parameters) {
11
- this.purchase = parameters.purchase;
12
- this.finance = parameters.finance;
13
- this.cartItems = this.getFormattedPurchaseForCart();
14
- this.cartSummary = this.getFormattedPricingForCart();
15
- this.paymentCountry = this.getPaymentCountry();
16
- }
17
- getFormattedPurchaseForCart() {
18
- const checkouts = this.purchase.checkout_items?.map((item) => {
19
- return {
20
- imgSrc: item.image_url,
21
- hasDefaultImg: this.isDefaultImage(item.image_url),
22
- title: item.name,
23
- price: extractMoneyCurrency(item, false),
24
- priceBeforeDiscount: createPriceOrUndefined(item.amount_before_discount, item.currency),
25
- quantity: item.quantity,
26
- description: item.description,
27
- tax: this.getTaxForItem(item.indirect_tax_rate),
28
- isBonus: item.is_bonus,
29
- };
30
- });
31
- const virtualCurrencies = this.purchase.virtual_currency?.map((item) => {
32
- return {
33
- imgSrc: item.image_url,
34
- hasDefaultImg: this.isDefaultImage(item.image_url),
35
- title: `${item.quantity} ${item.name}`,
36
- price: extractMoneyCurrency(item),
37
- description: item.description,
38
- isBonus: item.is_bonus,
39
- };
40
- });
41
- const virtualItems = this.purchase.virtual_items?.map((item) => {
42
- return {
43
- imgSrc: item.image_url,
44
- hasDefaultImg: this.isDefaultImage(item.image_url),
45
- title: item.name,
46
- price: extractMoneyCurrency(item),
47
- description: item.description,
48
- quantity: item.quantity,
49
- isBonus: item.is_bonus,
50
- };
51
- });
52
- let checkoutArray = undefined;
53
- if (this.purchase.checkout) {
54
- checkoutArray = [
55
- {
56
- key: 'checkout',
57
- title: this.purchase.checkout.description,
58
- price: extractMoneyCurrency(this.purchase.checkout),
59
- isBonus: this.purchase.checkout.is_bonus ?? false,
60
- },
61
- ];
62
- }
63
- return [
64
- ...(checkouts ?? []),
65
- ...(virtualCurrencies ?? []),
66
- ...(virtualItems ?? []),
67
- ...(checkoutArray ?? []),
68
- ];
69
- }
70
- getFormattedPricingForCart() {
71
- // subtotal details fields
72
- const subtotalDetailsSorting = [
73
- {
74
- key: 'discount',
75
- responseKey: 'discount',
76
- title: 'Discount',
77
- },
78
- {
79
- key: 'fee',
80
- responseKey: 'fee',
81
- title: 'Payment system fee',
82
- },
83
- {
84
- key: 'user-balance',
85
- responseKey: 'user_balance',
86
- title: 'Balance',
87
- },
88
- ];
89
- return {
90
- subtotal: {
91
- title: 'Subtotal',
92
- money: createPriceOrUndefined(this.finance.sub_total.amount, this.finance.sub_total.currency),
93
- },
94
- subtotalPayment: {
95
- title: '',
96
- money: createPriceOrUndefined(this.finance.sub_total.payment_amount, this.finance.sub_total.payment_currency),
97
- },
98
- total: {
99
- title: 'Total',
100
- money: extractMoneyCurrency(this.finance.total),
101
- },
102
- totalDetails: this.getTaxesForTotalDetails(),
103
- subtotalDetails: [
104
- ...subtotalDetailsSorting.map((sorting) => {
105
- const field = this.finance[sorting.responseKey];
106
- if (field) {
107
- return {
108
- key: sorting.key,
109
- title: sorting.title,
110
- money: {
111
- amount: sorting.key === 'discount' && field.amount
112
- ? -field.amount
113
- : field.amount,
114
- currency: field.currency,
115
- },
116
- };
117
- }
118
- return sorting;
119
- }),
120
- ...this.getTaxesForSubtotalDetails(),
121
- ],
122
- };
123
- }
124
- getPaymentCountry() {
125
- return this.finance.payment_country.iso;
126
- }
127
- getTaxForItem(indirectTaxRate) {
128
- if (indirectTaxRate ||
129
- (this.shouldShowZeroIndirectTaxRate && indirectTaxRate === 0)) {
130
- if (this.isSalesTaxes) {
131
- return {
132
- key: 'sales-tax',
133
- content: `Sales tax ${indirectTaxRate}%`,
134
- rate: indirectTaxRate,
135
- };
136
- }
137
- if (this.isIndia()) {
138
- return {
139
- key: 'vat-india',
140
- content: `GST ${indirectTaxRate}%`,
141
- rate: indirectTaxRate,
142
- };
143
- }
144
- if (this.isGhana()) {
145
- return {
146
- key: 'vat-ghana',
147
- content: 'VAT, NHIL, GETFund Levy, and Covid-19 Levy',
148
- rate: indirectTaxRate,
149
- };
150
- }
151
- return {
152
- key: 'vat',
153
- content: `VAT ${indirectTaxRate}%`,
154
- rate: indirectTaxRate,
155
- };
156
- }
157
- return null;
158
- }
159
- getTaxesForSubtotalDetails() {
160
- const ret = [];
161
- // subtotal. VAT %p
162
- if (this.finance.vat_user &&
163
- (this.finance?.vat_user?.amount ?? this.finance?.vat_user?.visible)) {
164
- ret.push({
165
- key: this.getVatKeyForDetails(),
166
- title: this.getVatLabelForSubtotalDetails(),
167
- money: extractMoneyCurrency(this.finance.vat_user),
168
- });
169
- }
170
- if (this.finance.sales_tax_user?.amount) {
171
- ret.push({
172
- key: 'sales-tax',
173
- title: 'Sales tax',
174
- money: extractMoneyCurrency(this.finance.sales_tax_user),
175
- });
176
- }
177
- return ret;
178
- }
179
- getVatLabelForSubtotalDetails() {
180
- if (this.isIndia()) {
181
- return `GST ${this.finance.vat_user?.percent ?? ''}%`;
182
- }
183
- if (this.isGhana()) {
184
- return `VAT, NHIL, GETFund Levy, and Covid-19 Levy`;
185
- }
186
- return `VAT ${this.finance.vat_user?.percent ?? ''}%`;
187
- }
188
- getTaxesForTotalDetails() {
189
- const ret = [];
190
- // for totalDetails. VAT
191
- if ((this.finance?.vat?.amount || this.finance?.vat?.visible) &&
192
- !this.finance?.vat_user?.amount) {
193
- ret.push({
194
- key: this.getVatKeyForDetails(),
195
- title: this.getVatLabelForTotalDetails(),
196
- money: extractMoneyCurrency(this.finance.vat),
197
- });
198
- }
199
- if (this.finance?.sales_tax?.amount &&
200
- !this.finance?.sales_tax_user?.amount) {
201
- ret.push({
202
- key: 'sales-tax',
203
- title: 'Sales tax included',
204
- money: extractMoneyCurrency(this.finance.sales_tax),
205
- });
206
- }
207
- return ret;
208
- }
209
- getVatKeyForDetails() {
210
- if (this.isIndia()) {
211
- return 'vat-india';
212
- }
213
- if (this.isGhana()) {
214
- return 'vat-ghana';
215
- }
216
- return 'vat';
217
- }
218
- getVatLabelForTotalDetails() {
219
- if (this.isIndia()) {
220
- return `Including ${this.finance.vat.percent}% GST`;
221
- }
222
- if (this.isGhana()) {
223
- return 'Including VAT, NHIL, GETFund Levy, and Covid-19 Levy';
224
- }
225
- return `Including ${this.finance.vat.percent}% VAT`;
226
- }
227
- isIndia() {
228
- return this.finance?.payment_country.iso === 'IN';
229
- }
230
- isGhana() {
231
- return this.finance?.payment_country.iso === 'GH';
232
- }
233
- isDefaultImage(url) {
234
- return defaultImagePatterns.some((regex) => regex.test(url));
235
- }
236
- }
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jZS1kZXRhaWxzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvcGF5bWVudC9maW5hbmNlLWRldGFpbHMvZmluYW5jZS1kZXRhaWxzLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9FLE1BQU0sT0FBTyxjQUFjO0lBT3pCLElBQVksNkJBQTZCO1FBQ3ZDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxJQUFZLFlBQVk7UUFDdEIsT0FBTyxDQUFDLENBQUMsQ0FDUCxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUN4RSxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQW1CLFVBR2xCO1FBQ0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU8sMkJBQTJC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QUFDO1NBQ3BCO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sMEJBQTBCO1FBQ2hDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xCLE9BQU8sYUFBYSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLE9BQU8sQ0FBQztTQUNyRDtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xCLE9BQU8sc0RBQXNELENBQUM7U0FDL0Q7UUFFRCxPQUFPLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxPQUFPLENBQUM7SUFDdEQsQ0FBQztJQUVPLE9BQU87UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUM7SUFDcEQsQ0FBQztJQUVPLE9BQU87UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUM7SUFDcEQsQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFXO1FBQ2hDLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWHBzRmluYW5jZSB9IGZyb20gJy4uL3hwcy1maW5hbmNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBYcHNQdXJjaGFzZSB9IGZyb20gJy4uL3hwcy1wdXJjaGFzZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2FydEl0ZW0gfSBmcm9tICcuL2NhcnQtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2FydExpbmUgfSBmcm9tICcuL2NhcnQtbGluZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2FydFN1bW1hcnkgfSBmcm9tICcuL2NhcnQtc3VtbWFyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZGVmYXVsdEltYWdlUGF0dGVybnMgfSBmcm9tICcuL2RlZmF1bHQtaW1hZ2UtcGF0dGVybnMuY29uc3QnO1xuaW1wb3J0IHsgY3JlYXRlUHJpY2VPclVuZGVmaW5lZCwgZXh0cmFjdE1vbmV5Q3VycmVuY3kgfSBmcm9tICcuL3ByaWNlLmhlbHBlcnMnO1xuaW1wb3J0IHsgUHJpY2UgfSBmcm9tICcuL3ByaWNlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBGaW5hbmNlRGV0YWlscyB7XG4gIHB1YmxpYyByZWFkb25seSBwdXJjaGFzZTogWHBzUHVyY2hhc2U7XG4gIHB1YmxpYyByZWFkb25seSBmaW5hbmNlOiBYcHNGaW5hbmNlO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FydEl0ZW1zOiBDYXJ0SXRlbVtdO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FydFN1bW1hcnk6IENhcnRTdW1tYXJ5O1xuICBwdWJsaWMgcmVhZG9ubHkgcGF5bWVudENvdW50cnk6IHN0cmluZztcblxuICBwcml2YXRlIGdldCBzaG91bGRTaG93WmVyb0luZGlyZWN0VGF4UmF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5maW5hbmNlPy52YXQ/LnZpc2libGUgfHwgdGhpcy5maW5hbmNlPy52YXRfdXNlcj8udmlzaWJsZSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBpc1NhbGVzVGF4ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKFxuICAgICAgdGhpcy5maW5hbmNlPy5zYWxlc190YXg/LmFtb3VudCB8fCB0aGlzLmZpbmFuY2U/LnNhbGVzX3RheF91c2VyPy5hbW91bnRcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtZXRlcnM6IHtcbiAgICBwdXJjaGFzZTogWHBzUHVyY2hhc2U7XG4gICAgZmluYW5jZTogWHBzRmluYW5jZTtcbiAgfSkge1xuICAgIHRoaXMucHVyY2hhc2UgPSBwYXJhbWV0ZXJzLnB1cmNoYXNlO1xuICAgIHRoaXMuZmluYW5jZSA9IHBhcmFtZXRlcnMuZmluYW5jZTtcbiAgICB0aGlzLmNhcnRJdGVtcyA9IHRoaXMuZ2V0Rm9ybWF0dGVkUHVyY2hhc2VGb3JDYXJ0KCk7XG4gICAgdGhpcy5jYXJ0U3VtbWFyeSA9IHRoaXMuZ2V0Rm9ybWF0dGVkUHJpY2luZ0ZvckNhcnQoKTtcbiAgICB0aGlzLnBheW1lbnRDb3VudHJ5ID0gdGhpcy5nZXRQYXltZW50Q291bnRyeSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGb3JtYXR0ZWRQdXJjaGFzZUZvckNhcnQoKTogQ2FydEl0ZW1bXSB7XG4gICAgY29uc3QgY2hlY2tvdXRzOiBDYXJ0SXRlbVtdIHwgdW5kZWZpbmVkID0gdGhpcy5wdXJjaGFzZS5jaGVja291dF9pdGVtcz8ubWFwKFxuICAgICAgKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbWdTcmM6IGl0ZW0uaW1hZ2VfdXJsLFxuICAgICAgICAgIGhhc0RlZmF1bHRJbWc6IHRoaXMuaXNEZWZhdWx0SW1hZ2UoaXRlbS5pbWFnZV91cmwpLFxuICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXG4gICAgICAgICAgcHJpY2U6IGV4dHJhY3RNb25leUN1cnJlbmN5KGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICBwcmljZUJlZm9yZURpc2NvdW50OiBjcmVhdGVQcmljZU9yVW5kZWZpbmVkKFxuICAgICAgICAgICAgaXRlbS5hbW91bnRfYmVmb3JlX2Rpc2NvdW50LFxuICAgICAgICAgICAgaXRlbS5jdXJyZW5jeVxuICAgICAgICAgICksXG4gICAgICAgICAgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24sXG4gICAgICAgICAgdGF4OiB0aGlzLmdldFRheEZvckl0ZW0oaXRlbS5pbmRpcmVjdF90YXhfcmF0ZSksXG4gICAgICAgICAgaXNCb251czogaXRlbS5pc19ib251cyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgdmlydHVhbEN1cnJlbmNpZXM6IENhcnRJdGVtW10gfCB1bmRlZmluZWQgPVxuICAgICAgdGhpcy5wdXJjaGFzZS52aXJ0dWFsX2N1cnJlbmN5Py5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbWdTcmM6IGl0ZW0uaW1hZ2VfdXJsLFxuICAgICAgICAgIGhhc0RlZmF1bHRJbWc6IHRoaXMuaXNEZWZhdWx0SW1hZ2UoaXRlbS5pbWFnZV91cmwpLFxuICAgICAgICAgIHRpdGxlOiBgJHtpdGVtLnF1YW50aXR5fSAke2l0ZW0ubmFtZX1gLFxuICAgICAgICAgIHByaWNlOiBleHRyYWN0TW9uZXlDdXJyZW5jeShpdGVtKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICBpc0JvbnVzOiBpdGVtLmlzX2JvbnVzLFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICBjb25zdCB2aXJ0dWFsSXRlbXM6IENhcnRJdGVtW10gfCB1bmRlZmluZWQgPVxuICAgICAgdGhpcy5wdXJjaGFzZS52aXJ0dWFsX2l0ZW1zPy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbWdTcmM6IGl0ZW0uaW1hZ2VfdXJsLFxuICAgICAgICAgIGhhc0RlZmF1bHRJbWc6IHRoaXMuaXNEZWZhdWx0SW1hZ2UoaXRlbS5pbWFnZV91cmwpLFxuICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXG4gICAgICAgICAgcHJpY2U6IGV4dHJhY3RNb25leUN1cnJlbmN5KGl0ZW0pLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIHF1YW50aXR5OiBpdGVtLnF1YW50aXR5LFxuICAgICAgICAgIGlzQm9udXM6IGl0ZW0uaXNfYm9udXMsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgIGxldCBjaGVja291dEFycmF5OiBDYXJ0SXRlbVtdIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLnB1cmNoYXNlLmNoZWNrb3V0KSB7XG4gICAgICBjaGVja291dEFycmF5ID0gW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiAnY2hlY2tvdXQnLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLnB1cmNoYXNlLmNoZWNrb3V0LmRlc2NyaXB0aW9uLFxuICAgICAgICAgIHByaWNlOiBleHRyYWN0TW9uZXlDdXJyZW5jeSh0aGlzLnB1cmNoYXNlLmNoZWNrb3V0KSxcbiAgICAgICAgICBpc0JvbnVzOiB0aGlzLnB1cmNoYXNlLmNoZWNrb3V0LmlzX2JvbnVzID8/IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAgLi4uKGNoZWNrb3V0cyA/PyBbXSksXG4gICAgICAuLi4odmlydHVhbEN1cnJlbmNpZXMgPz8gW10pLFxuICAgICAgLi4uKHZpcnR1YWxJdGVtcyA/PyBbXSksXG4gICAgICAuLi4oY2hlY2tvdXRBcnJheSA/PyBbXSksXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rm9ybWF0dGVkUHJpY2luZ0ZvckNhcnQoKTogQ2FydFN1bW1hcnkge1xuICAgIC8vIHN1YnRvdGFsIGRldGFpbHMgZmllbGRzXG4gICAgY29uc3Qgc3VidG90YWxEZXRhaWxzU29ydGluZyA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnZGlzY291bnQnLFxuICAgICAgICByZXNwb25zZUtleTogJ2Rpc2NvdW50JyxcbiAgICAgICAgdGl0bGU6ICdEaXNjb3VudCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdmZWUnLFxuICAgICAgICByZXNwb25zZUtleTogJ2ZlZScsXG4gICAgICAgIHRpdGxlOiAnUGF5bWVudCBzeXN0ZW0gZmVlJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3VzZXItYmFsYW5jZScsXG4gICAgICAgIHJlc3BvbnNlS2V5OiAndXNlcl9iYWxhbmNlJyxcbiAgICAgICAgdGl0bGU6ICdCYWxhbmNlJyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWJ0b3RhbDoge1xuICAgICAgICB0aXRsZTogJ1N1YnRvdGFsJyxcbiAgICAgICAgbW9uZXk6IGNyZWF0ZVByaWNlT3JVbmRlZmluZWQoXG4gICAgICAgICAgdGhpcy5maW5hbmNlLnN1Yl90b3RhbC5hbW91bnQsXG4gICAgICAgICAgdGhpcy5maW5hbmNlLnN1Yl90b3RhbC5jdXJyZW5jeVxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHN1YnRvdGFsUGF5bWVudDoge1xuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIG1vbmV5OiBjcmVhdGVQcmljZU9yVW5kZWZpbmVkKFxuICAgICAgICAgIHRoaXMuZmluYW5jZS5zdWJfdG90YWwucGF5bWVudF9hbW91bnQsXG4gICAgICAgICAgdGhpcy5maW5hbmNlLnN1Yl90b3RhbC5wYXltZW50X2N1cnJlbmN5XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgdG90YWw6IHtcbiAgICAgICAgdGl0bGU6ICdUb3RhbCcsXG4gICAgICAgIG1vbmV5OiBleHRyYWN0TW9uZXlDdXJyZW5jeSh0aGlzLmZpbmFuY2UudG90YWwpLFxuICAgICAgfSxcbiAgICAgIHRvdGFsRGV0YWlsczogdGhpcy5nZXRUYXhlc0ZvclRvdGFsRGV0YWlscygpLFxuICAgICAgc3VidG90YWxEZXRhaWxzOiBbXG4gICAgICAgIC4uLnN1YnRvdGFsRGV0YWlsc1NvcnRpbmcubWFwKChzb3J0aW5nKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmllbGQgPSAodGhpcy5maW5hbmNlIGFzIHVua25vd24gYXMgeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0pW1xuICAgICAgICAgICAgc29ydGluZy5yZXNwb25zZUtleVxuICAgICAgICAgIF0gYXMgUHJpY2U7XG5cbiAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGtleTogc29ydGluZy5rZXksXG4gICAgICAgICAgICAgIHRpdGxlOiBzb3J0aW5nLnRpdGxlLFxuICAgICAgICAgICAgICBtb25leToge1xuICAgICAgICAgICAgICAgIGFtb3VudDpcbiAgICAgICAgICAgICAgICAgIHNvcnRpbmcua2V5ID09PSAnZGlzY291bnQnICYmIGZpZWxkLmFtb3VudFxuICAgICAgICAgICAgICAgICAgICA/IC1maWVsZC5hbW91bnRcbiAgICAgICAgICAgICAgICAgICAgOiBmaWVsZC5hbW91bnQsXG4gICAgICAgICAgICAgICAgY3VycmVuY3k6IGZpZWxkLmN1cnJlbmN5LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHNvcnRpbmc7XG4gICAgICAgIH0pLFxuICAgICAgICAuLi50aGlzLmdldFRheGVzRm9yU3VidG90YWxEZXRhaWxzKCksXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFBheW1lbnRDb3VudHJ5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmluYW5jZS5wYXltZW50X2NvdW50cnkuaXNvO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYXhGb3JJdGVtKGluZGlyZWN0VGF4UmF0ZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogQ2FydExpbmUgfCBudWxsIHtcbiAgICBpZiAoXG4gICAgICBpbmRpcmVjdFRheFJhdGUgfHxcbiAgICAgICh0aGlzLnNob3VsZFNob3daZXJvSW5kaXJlY3RUYXhSYXRlICYmIGluZGlyZWN0VGF4UmF0ZSA9PT0gMClcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLmlzU2FsZXNUYXhlcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtleTogJ3NhbGVzLXRheCcsXG4gICAgICAgICAgY29udGVudDogYFNhbGVzIHRheCAke2luZGlyZWN0VGF4UmF0ZX0lYCxcbiAgICAgICAgICByYXRlOiBpbmRpcmVjdFRheFJhdGUsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzSW5kaWEoKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtleTogJ3ZhdC1pbmRpYScsXG4gICAgICAgICAgY29udGVudDogYEdTVCAke2luZGlyZWN0VGF4UmF0ZX0lYCxcbiAgICAgICAgICByYXRlOiBpbmRpcmVjdFRheFJhdGUsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzR2hhbmEoKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtleTogJ3ZhdC1naGFuYScsXG4gICAgICAgICAgY29udGVudDogJ1ZBVCwgTkhJTCwgR0VURnVuZCBMZXZ5LCBhbmQgQ292aWQtMTkgTGV2eScsXG4gICAgICAgICAgcmF0ZTogaW5kaXJlY3RUYXhSYXRlLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXk6ICd2YXQnLFxuICAgICAgICBjb250ZW50OiBgVkFUICR7aW5kaXJlY3RUYXhSYXRlfSVgLFxuICAgICAgICByYXRlOiBpbmRpcmVjdFRheFJhdGUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGF4ZXNGb3JTdWJ0b3RhbERldGFpbHMoKTogQ2FydExpbmVbXSB7XG4gICAgY29uc3QgcmV0ID0gW107XG5cbiAgICAvLyBzdWJ0b3RhbC4gVkFUICVwXG4gICAgaWYgKFxuICAgICAgdGhpcy5maW5hbmNlLnZhdF91c2VyICYmXG4gICAgICAodGhpcy5maW5hbmNlPy52YXRfdXNlcj8uYW1vdW50ID8/IHRoaXMuZmluYW5jZT8udmF0X3VzZXI/LnZpc2libGUpXG4gICAgKSB7XG4gICAgICByZXQucHVzaCh7XG4gICAgICAgIGtleTogdGhpcy5nZXRWYXRLZXlGb3JEZXRhaWxzKCksXG4gICAgICAgIHRpdGxlOiB0aGlzLmdldFZhdExhYmVsRm9yU3VidG90YWxEZXRhaWxzKCksXG4gICAgICAgIG1vbmV5OiBleHRyYWN0TW9uZXlDdXJyZW5jeSh0aGlzLmZpbmFuY2UudmF0X3VzZXIpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmluYW5jZS5zYWxlc190YXhfdXNlcj8uYW1vdW50KSB7XG4gICAgICByZXQucHVzaCh7XG4gICAgICAgIGtleTogJ3NhbGVzLXRheCcsXG4gICAgICAgIHRpdGxlOiAnU2FsZXMgdGF4JyxcbiAgICAgICAgbW9uZXk6IGV4dHJhY3RNb25leUN1cnJlbmN5KHRoaXMuZmluYW5jZS5zYWxlc190YXhfdXNlciksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYXRMYWJlbEZvclN1YnRvdGFsRGV0YWlscygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmlzSW5kaWEoKSkge1xuICAgICAgcmV0dXJuIGBHU1QgJHt0aGlzLmZpbmFuY2UudmF0X3VzZXI/LnBlcmNlbnQgPz8gJyd9JWA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHaGFuYSgpKSB7XG4gICAgICByZXR1cm4gYFZBVCwgTkhJTCwgR0VURnVuZCBMZXZ5LCBhbmQgQ292aWQtMTkgTGV2eWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBWQVQgJHt0aGlzLmZpbmFuY2UudmF0X3VzZXI/LnBlcmNlbnQgPz8gJyd9JWA7XG4gIH1cblxuICBwcml2YXRlIGdldFRheGVzRm9yVG90YWxEZXRhaWxzKCk6IENhcnRMaW5lW10ge1xuICAgIGNvbnN0IHJldCA9IFtdO1xuXG4gICAgLy8gZm9yIHRvdGFsRGV0YWlscy4gVkFUXG4gICAgaWYgKFxuICAgICAgKHRoaXMuZmluYW5jZT8udmF0Py5hbW91bnQgfHwgdGhpcy5maW5hbmNlPy52YXQ/LnZpc2libGUpICYmXG4gICAgICAhdGhpcy5maW5hbmNlPy52YXRfdXNlcj8uYW1vdW50XG4gICAgKSB7XG4gICAgICByZXQucHVzaCh7XG4gICAgICAgIGtleTogdGhpcy5nZXRWYXRLZXlGb3JEZXRhaWxzKCksXG4gICAgICAgIHRpdGxlOiB0aGlzLmdldFZhdExhYmVsRm9yVG90YWxEZXRhaWxzKCksXG4gICAgICAgIG1vbmV5OiBleHRyYWN0TW9uZXlDdXJyZW5jeSh0aGlzLmZpbmFuY2UudmF0KSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuZmluYW5jZT8uc2FsZXNfdGF4Py5hbW91bnQgJiZcbiAgICAgICF0aGlzLmZpbmFuY2U/LnNhbGVzX3RheF91c2VyPy5hbW91bnRcbiAgICApIHtcbiAgICAgIHJldC5wdXNoKHtcbiAgICAgICAga2V5OiAnc2FsZXMtdGF4JyxcbiAgICAgICAgdGl0bGU6ICdTYWxlcyB0YXggaW5jbHVkZWQnLFxuICAgICAgICBtb25leTogZXh0cmFjdE1vbmV5Q3VycmVuY3kodGhpcy5maW5hbmNlLnNhbGVzX3RheCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYXRLZXlGb3JEZXRhaWxzKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaXNJbmRpYSgpKSB7XG4gICAgICByZXR1cm4gJ3ZhdC1pbmRpYSc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHaGFuYSgpKSB7XG4gICAgICByZXR1cm4gJ3ZhdC1naGFuYSc7XG4gICAgfVxuXG4gICAgcmV0dXJuICd2YXQnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYXRMYWJlbEZvclRvdGFsRGV0YWlscygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmlzSW5kaWEoKSkge1xuICAgICAgcmV0dXJuIGBJbmNsdWRpbmcgJHt0aGlzLmZpbmFuY2UudmF0LnBlcmNlbnR9JSBHU1RgO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzR2hhbmEoKSkge1xuICAgICAgcmV0dXJuICdJbmNsdWRpbmcgVkFULCBOSElMLCBHRVRGdW5kIExldnksIGFuZCBDb3ZpZC0xOSBMZXZ5JztcbiAgICB9XG5cbiAgICByZXR1cm4gYEluY2x1ZGluZyAke3RoaXMuZmluYW5jZS52YXQucGVyY2VudH0lIFZBVGA7XG4gIH1cblxuICBwcml2YXRlIGlzSW5kaWEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmluYW5jZT8ucGF5bWVudF9jb3VudHJ5LmlzbyA9PT0gJ0lOJztcbiAgfVxuXG4gIHByaXZhdGUgaXNHaGFuYSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maW5hbmNlPy5wYXltZW50X2NvdW50cnkuaXNvID09PSAnR0gnO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0RlZmF1bHRJbWFnZSh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkZWZhdWx0SW1hZ2VQYXR0ZXJucy5zb21lKChyZWdleCkgPT4gcmVnZXgudGVzdCh1cmwpKTtcbiAgfVxufVxuIl19
@@ -1,7 +0,0 @@
1
- import { InjectionToken, ValueProvider } from '@angular/core';
2
- import { FinanceDetails } from './finance-details.class';
3
- type ResponseParameters = ConstructorParameters<typeof FinanceDetails>;
4
- export type FinanceDetailsResponseFactory = (...args: ResponseParameters) => FinanceDetails;
5
- export declare const financeDetailsResponseFactoryToken: InjectionToken<FinanceDetailsResponseFactory>;
6
- export declare const financeDetailsResponseFactoryProvider: ValueProvider;
7
- export {};