@moneylion/react-native-offer-carousel 1.10.1 → 1.11.0
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/CHANGELOG.md +8 -0
- package/lib/commonjs/capabilities/configuration/src/brands/checkVisualEligibility.js +13 -11
- package/lib/commonjs/capabilities/configuration/src/brands/checkVisualEligibility.js.map +1 -1
- package/lib/commonjs/capabilities/configuration/src/brands/createDerivedBrands.js +8 -19
- package/lib/commonjs/capabilities/configuration/src/brands/createDerivedBrands.js.map +1 -1
- package/lib/commonjs/capabilities/offer-catalog/src/utils/formatUtils.js +36 -21
- package/lib/commonjs/capabilities/offer-catalog/src/utils/formatUtils.js.map +1 -1
- package/lib/commonjs/capabilities/offer-catalog/src/utils/stats/formatters/annualFee.js +7 -30
- package/lib/commonjs/capabilities/offer-catalog/src/utils/stats/formatters/annualFee.js.map +1 -1
- package/lib/commonjs/capabilities/offer-catalog/src/utils/stats/formatters/purchaseApr.js +15 -17
- package/lib/commonjs/capabilities/offer-catalog/src/utils/stats/formatters/purchaseApr.js.map +1 -1
- package/lib/commonjs/capabilities/offer-catalog/src/utils/stats/formatters/recommendedCredit.js +8 -2
- package/lib/commonjs/capabilities/offer-catalog/src/utils/stats/formatters/recommendedCredit.js.map +1 -1
- package/lib/commonjs/capabilities/offer-catalog/src/utils/stats/index.js +40 -38
- package/lib/commonjs/capabilities/offer-catalog/src/utils/stats/index.js.map +1 -1
- package/lib/commonjs/capabilities/offers/pipeline/src/sources/ratetables/withDeviceSignals.js +22 -12
- package/lib/commonjs/capabilities/offers/pipeline/src/sources/ratetables/withDeviceSignals.js.map +1 -1
- package/lib/commonjs/capabilities/ui/elements/src/components/MarkdownText/components.js +120 -116
- package/lib/commonjs/capabilities/ui/elements/src/components/MarkdownText/components.js.map +1 -1
- package/lib/commonjs/capabilities/ui/elements/src/components/MarkdownText/index.js +8 -30
- package/lib/commonjs/capabilities/ui/elements/src/components/MarkdownText/index.js.map +1 -1
- package/lib/commonjs/components/DynamicOffers/Render/Offer.js +51 -49
- package/lib/commonjs/components/DynamicOffers/Render/Offer.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/module/capabilities/configuration/src/brands/checkVisualEligibility.js +13 -11
- package/lib/module/capabilities/configuration/src/brands/checkVisualEligibility.js.map +1 -1
- package/lib/module/capabilities/configuration/src/brands/createDerivedBrands.js +7 -19
- package/lib/module/capabilities/configuration/src/brands/createDerivedBrands.js.map +1 -1
- package/lib/module/capabilities/offer-catalog/src/utils/formatUtils.js +35 -20
- package/lib/module/capabilities/offer-catalog/src/utils/formatUtils.js.map +1 -1
- package/lib/module/capabilities/offer-catalog/src/utils/stats/formatters/annualFee.js +7 -30
- package/lib/module/capabilities/offer-catalog/src/utils/stats/formatters/annualFee.js.map +1 -1
- package/lib/module/capabilities/offer-catalog/src/utils/stats/formatters/purchaseApr.js +15 -17
- package/lib/module/capabilities/offer-catalog/src/utils/stats/formatters/purchaseApr.js.map +1 -1
- package/lib/module/capabilities/offer-catalog/src/utils/stats/formatters/recommendedCredit.js +8 -2
- package/lib/module/capabilities/offer-catalog/src/utils/stats/formatters/recommendedCredit.js.map +1 -1
- package/lib/module/capabilities/offer-catalog/src/utils/stats/index.js +40 -38
- package/lib/module/capabilities/offer-catalog/src/utils/stats/index.js.map +1 -1
- package/lib/module/capabilities/offers/pipeline/src/sources/ratetables/withDeviceSignals.js +22 -11
- package/lib/module/capabilities/offers/pipeline/src/sources/ratetables/withDeviceSignals.js.map +1 -1
- package/lib/module/capabilities/ui/elements/src/components/MarkdownText/components.js +120 -115
- package/lib/module/capabilities/ui/elements/src/components/MarkdownText/components.js.map +1 -1
- package/lib/module/capabilities/ui/elements/src/components/MarkdownText/index.js +9 -31
- package/lib/module/capabilities/ui/elements/src/components/MarkdownText/index.js.map +1 -1
- package/lib/module/components/DynamicOffers/Render/Offer.js +51 -49
- package/lib/module/components/DynamicOffers/Render/Offer.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/typescript/capabilities/configuration/src/brands/checkVisualEligibility.d.ts.map +1 -1
- package/lib/typescript/capabilities/configuration/src/brands/createDerivedBrands.d.ts.map +1 -1
- package/lib/typescript/capabilities/offer-catalog/src/utils/formatUtils.d.ts.map +1 -1
- package/lib/typescript/capabilities/offer-catalog/src/utils/stats/formatters/annualFee.d.ts.map +1 -1
- package/lib/typescript/capabilities/offer-catalog/src/utils/stats/formatters/purchaseApr.d.ts.map +1 -1
- package/lib/typescript/capabilities/offer-catalog/src/utils/stats/formatters/recommendedCredit.d.ts.map +1 -1
- package/lib/typescript/capabilities/offer-catalog/src/utils/stats/index.d.ts.map +1 -1
- package/lib/typescript/capabilities/offers/pipeline/src/sources/ratetables/withDeviceSignals.d.ts +4 -192
- package/lib/typescript/capabilities/offers/pipeline/src/sources/ratetables/withDeviceSignals.d.ts.map +1 -1
- package/lib/typescript/capabilities/ui/elements/src/components/MarkdownText/components.d.ts +12 -3
- package/lib/typescript/capabilities/ui/elements/src/components/MarkdownText/components.d.ts.map +1 -1
- package/lib/typescript/capabilities/ui/elements/src/components/MarkdownText/index.d.ts.map +1 -1
- package/lib/typescript/components/DynamicOffers/Render/Offer.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/package.json +3 -8
- package/src/capabilities/configuration/src/brands/checkVisualEligibility.ts +22 -16
- package/src/capabilities/configuration/src/brands/createDerivedBrands.ts +10 -23
- package/src/capabilities/offer-catalog/src/utils/formatUtils.ts +38 -19
- package/src/capabilities/offer-catalog/src/utils/stats/formatters/annualFee.ts +19 -46
- package/src/capabilities/offer-catalog/src/utils/stats/formatters/purchaseApr.ts +17 -21
- package/src/capabilities/offer-catalog/src/utils/stats/formatters/recommendedCredit.ts +11 -8
- package/src/capabilities/offer-catalog/src/utils/stats/index.ts +40 -109
- package/src/capabilities/offers/pipeline/src/sources/ratetables/withDeviceSignals.ts +26 -17
- package/src/capabilities/ui/elements/src/components/MarkdownText/components.tsx +157 -142
- package/src/capabilities/ui/elements/src/components/MarkdownText/index.tsx +11 -33
- package/src/components/DynamicOffers/Render/Offer.tsx +34 -33
- package/src/version.ts +1 -1
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { isObject, sift } from "radash";
|
|
2
|
-
import { P, match } from "ts-pattern";
|
|
3
2
|
import { enhanceType } from "./types";
|
|
4
3
|
import { checkVisualBrandEligibility } from "./checkVisualEligibility";
|
|
4
|
+
const resolveLicensedBrand = brand => {
|
|
5
|
+
if (enhanceType(brand) === "licensed") return brand;
|
|
6
|
+
const candidate = (brand === null || brand === void 0 ? void 0 : brand.isLicensed) || (brand === null || brand === void 0 ? void 0 : brand.licensedBrand);
|
|
7
|
+
if (isObject(candidate)) return candidate;
|
|
8
|
+
throw new Error("Missing Licensed Brand");
|
|
9
|
+
};
|
|
5
10
|
|
|
6
11
|
/**
|
|
7
12
|
* Extracts and normalizes a brand into -
|
|
@@ -10,24 +15,7 @@ import { checkVisualBrandEligibility } from "./checkVisualEligibility";
|
|
|
10
15
|
* @param brand
|
|
11
16
|
*/
|
|
12
17
|
export const createDerivedBrands = brand => {
|
|
13
|
-
|
|
14
|
-
const licensedBrand = match([enhanceType(brand), (brand === null || brand === void 0 ? void 0 : brand.isLicensed) || (brand === null || brand === void 0 ? void 0 : brand.licensedBrand)])
|
|
15
|
-
// Ensure we get back a brand at the end
|
|
16
|
-
.returnType()
|
|
17
|
-
// If the type is licensed, return this brand
|
|
18
|
-
.with(["licensed", P._], () => brand)
|
|
19
|
-
// If the type is not licensed, but there is a cobrand setup, use that to get the licensed brand
|
|
20
|
-
.with([P.not("licensed"), P.select("licensedBrandObj")], ({
|
|
21
|
-
licensedBrandObj
|
|
22
|
-
}) => {
|
|
23
|
-
if (isObject(licensedBrandObj)) return licensedBrandObj;
|
|
24
|
-
// Throw if no licensed brand is able to be found
|
|
25
|
-
throw new Error("Missing Licensed Brand");
|
|
26
|
-
}).otherwise(() => {
|
|
27
|
-
throw new Error("Missing Licensed Brand");
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
// Determine the set of visual brands which should be displayed on the page
|
|
18
|
+
const licensedBrand = resolveLicensedBrand(brand);
|
|
31
19
|
const brandCanBeShown = checkVisualBrandEligibility(brand) !== "none";
|
|
32
20
|
return Array.from(new Set(sift([licensedBrand, brandCanBeShown && brand])));
|
|
33
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isObject","sift","
|
|
1
|
+
{"version":3,"names":["isObject","sift","enhanceType","checkVisualBrandEligibility","resolveLicensedBrand","brand","candidate","isLicensed","licensedBrand","Error","createDerivedBrands","brandCanBeShown","Array","from","Set"],"sourceRoot":"../../../../../../src","sources":["capabilities/configuration/src/brands/createDerivedBrands.ts"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,IAAI,QAAQ,QAAQ;AAEvC,SAASC,WAAW,QAAQ,SAAS;AACrC,SAASC,2BAA2B,QAAQ,0BAA0B;AAEtE,MAAMC,oBAAoB,GAAIC,KAAY,IAAY;EACrD,IAAIH,WAAW,CAACG,KAAK,CAAC,KAAK,UAAU,EAAE,OAAOA,KAAK;EAEnD,MAAMC,SAAS,GAAG,CAAAD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEE,UAAU,MAAIF,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEG,aAAa;EAC3D,IAAIR,QAAQ,CAACM,SAAS,CAAC,EAAE,OAAOA,SAAS;EAEzC,MAAM,IAAIG,KAAK,CAAC,wBAAwB,CAAC;AAC1C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,mBAAmB,GAAIL,KAAY,IAAK;EACpD,MAAMG,aAAa,GAAGJ,oBAAoB,CAACC,KAAK,CAAC;EAEjD,MAAMM,eAAe,GAAGR,2BAA2B,CAACE,KAAK,CAAC,KAAK,MAAM;EACrE,OAAOO,KAAK,CAACC,IAAI,CAAC,IAAIC,GAAG,CAACb,IAAI,CAAC,CAACO,aAAa,EAAEG,eAAe,IAAIN,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
const formatNumberWithMantissa = (value, mantissa, trimMantissa, thousandSeparated) => {
|
|
2
|
+
let str = value.toFixed(mantissa);
|
|
3
|
+
if (trimMantissa && str.includes(".")) {
|
|
4
|
+
str = str.replace(/0+$/, "").replace(/\.$/, "");
|
|
5
|
+
}
|
|
6
|
+
if (thousandSeparated) {
|
|
7
|
+
const [intPart, decPart] = str.split(".");
|
|
8
|
+
const withCommas = (intPart ?? "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
9
|
+
str = decPart !== undefined ? `${withCommas}.${decPart}` : withCommas;
|
|
10
|
+
}
|
|
11
|
+
return str;
|
|
12
|
+
};
|
|
13
|
+
const COMPACT_UNITS = [{
|
|
14
|
+
threshold: 1e12,
|
|
15
|
+
suffix: "T"
|
|
16
|
+
}, {
|
|
17
|
+
threshold: 1e9,
|
|
18
|
+
suffix: "B"
|
|
19
|
+
}, {
|
|
20
|
+
threshold: 1e6,
|
|
21
|
+
suffix: "M"
|
|
22
|
+
}, {
|
|
23
|
+
threshold: 1e3,
|
|
24
|
+
suffix: "K"
|
|
25
|
+
}];
|
|
2
26
|
|
|
3
27
|
/**
|
|
4
28
|
* Format the amount
|
|
@@ -23,15 +47,12 @@ export const formatAmount = (amount, raw) => {
|
|
|
23
47
|
const isLargeAmount = amount >= 99999900;
|
|
24
48
|
const amountInDollars = isLargeAmount ? Math.ceil(amount / 1000000) * 1000000 / 100 // Round to nearest million if large
|
|
25
49
|
: amount / 100;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
spaceSeparated: false
|
|
33
|
-
});
|
|
34
|
-
return formattedAmount.toUpperCase();
|
|
50
|
+
const mantissa = amountInDollars < 1000 ? 2 : 1;
|
|
51
|
+
const trimMantissa = !(amount < 100 && amount !== 0);
|
|
52
|
+
const unit = COMPACT_UNITS.find(u => amountInDollars >= u.threshold);
|
|
53
|
+
const scaled = unit ? amountInDollars / unit.threshold : amountInDollars;
|
|
54
|
+
const suffix = (unit === null || unit === void 0 ? void 0 : unit.suffix) ?? "";
|
|
55
|
+
return `$${formatNumberWithMantissa(scaled, mantissa, trimMantissa, false)}${suffix}`.toUpperCase();
|
|
35
56
|
};
|
|
36
57
|
|
|
37
58
|
/**
|
|
@@ -48,10 +69,7 @@ export const formatAmount = (amount, raw) => {
|
|
|
48
69
|
*/
|
|
49
70
|
export const formatPercentage = percentage => {
|
|
50
71
|
if (percentage === undefined || percentage === null) return "N/A";
|
|
51
|
-
return `${
|
|
52
|
-
mantissa: 2,
|
|
53
|
-
trimMantissa: true
|
|
54
|
-
})}%`;
|
|
72
|
+
return `${formatNumberWithMantissa(percentage / 100, 2, true, false)}%`;
|
|
55
73
|
};
|
|
56
74
|
|
|
57
75
|
/**
|
|
@@ -99,13 +117,10 @@ const formatAmountUnabbreviated = (amount, raw) => {
|
|
|
99
117
|
const isLargeAmount = amount >= 99999900;
|
|
100
118
|
const amountInDollars = isLargeAmount ? Math.ceil(amount / 1000000) * 1000000 / 100 // Round to nearest million if large
|
|
101
119
|
: amount / 100;
|
|
120
|
+
const mantissa = amountInDollars < 1000 ? 2 : 1;
|
|
121
|
+
const trimMantissa = !(amount < 100 && amount !== 0);
|
|
102
122
|
// Format the amount in dollars
|
|
103
|
-
const formattedAmount =
|
|
104
|
-
mantissa: amountInDollars < 1000 ? 2 : 1,
|
|
105
|
-
trimMantissa: !(amount < 100 && amount !== 0),
|
|
106
|
-
spaceSeparated: false,
|
|
107
|
-
thousandSeparated: true
|
|
108
|
-
});
|
|
123
|
+
const formattedAmount = `$${formatNumberWithMantissa(amountInDollars, mantissa, trimMantissa, true)}`;
|
|
109
124
|
return formattedAmount.toUpperCase();
|
|
110
125
|
};
|
|
111
126
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["formatNumberWithMantissa","value","mantissa","trimMantissa","thousandSeparated","str","toFixed","includes","replace","intPart","decPart","split","withCommas","undefined","COMPACT_UNITS","threshold","suffix","formatAmount","amount","raw","Number","isNaN","isLargeAmount","amountInDollars","Math","ceil","unit","find","u","scaled","toUpperCase","formatPercentage","percentage","formatStringListWithAnd","strings","length","newStrings","lastString","pop","join","formatAmountUnabbreviated","formattedAmount","formatRange","min","max","type","amountFormat","resolvedFormatAmount"],"sourceRoot":"../../../../../../src","sources":["capabilities/offer-catalog/src/utils/formatUtils.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { get } from "radash";
|
|
2
|
-
import { P, match } from "ts-pattern";
|
|
3
2
|
import { formatAmount, formatRange } from "../../formatUtils";
|
|
4
3
|
const determineContent = ({
|
|
5
4
|
minAnnualFeeValue,
|
|
@@ -8,41 +7,19 @@ const determineContent = ({
|
|
|
8
7
|
annualIntroFeeTermValue,
|
|
9
8
|
raw
|
|
10
9
|
}) => {
|
|
11
|
-
|
|
12
|
-
minAnnualFeeValue,
|
|
13
|
-
maxAnnualFeeValue,
|
|
14
|
-
annualIntroFeeValue,
|
|
15
|
-
annualIntroFeeTermValue
|
|
16
|
-
}).with({
|
|
17
|
-
annualIntroFeeValue: P.not(undefined)
|
|
18
|
-
}, ({
|
|
19
|
-
annualIntroFeeValue,
|
|
20
|
-
annualIntroFeeTermValue,
|
|
21
|
-
minAnnualFeeValue,
|
|
22
|
-
maxAnnualFeeValue
|
|
23
|
-
}) => {
|
|
10
|
+
if (annualIntroFeeValue !== undefined) {
|
|
24
11
|
const postIntroFee = formatRange(minAnnualFeeValue, maxAnnualFeeValue, "amount");
|
|
25
12
|
return `${formatAmount(annualIntroFeeValue)} for ${annualIntroFeeTermValue} years, then ${postIntroFee}`;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
maxAnnualFeeValue: P.not(undefined)
|
|
29
|
-
}, ({
|
|
30
|
-
minAnnualFeeValue,
|
|
31
|
-
maxAnnualFeeValue
|
|
32
|
-
}) => {
|
|
13
|
+
}
|
|
14
|
+
if (minAnnualFeeValue !== undefined && maxAnnualFeeValue !== undefined) {
|
|
33
15
|
if (minAnnualFeeValue === maxAnnualFeeValue) {
|
|
34
16
|
return formatAmount(minAnnualFeeValue, raw);
|
|
35
17
|
}
|
|
36
18
|
return formatRange(minAnnualFeeValue, maxAnnualFeeValue, "amount");
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}) => formatAmount(minAnnualFeeValue)).with({
|
|
42
|
-
maxAnnualFeeValue: P.not(undefined)
|
|
43
|
-
}, ({
|
|
44
|
-
maxAnnualFeeValue
|
|
45
|
-
}) => formatAmount(maxAnnualFeeValue)).otherwise(() => "See Terms");
|
|
19
|
+
}
|
|
20
|
+
const fee = minAnnualFeeValue ?? maxAnnualFeeValue;
|
|
21
|
+
if (fee !== undefined) return formatAmount(fee);
|
|
22
|
+
return "See Terms";
|
|
46
23
|
};
|
|
47
24
|
export const annualFee = offer => ({
|
|
48
25
|
label,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["get","
|
|
1
|
+
{"version":3,"names":["get","formatAmount","formatRange","determineContent","minAnnualFeeValue","maxAnnualFeeValue","annualIntroFeeValue","annualIntroFeeTermValue","raw","undefined","postIntroFee","fee","annualFee","offer","label","minAnnualFeeField","maxAnnualFeeField","annualIntroFeeField","annualIntroFeeTermField","content"],"sourceRoot":"../../../../../../../../src","sources":["capabilities/offer-catalog/src/utils/stats/formatters/annualFee.ts"],"mappings":"AAAA,SAASA,GAAG,QAAQ,QAAQ;AAE5B,SAASC,YAAY,EAAEC,WAAW,QAAQ,mBAAmB;AAa7D,MAAMC,gBAAgB,GAAGA,CAAC;EACzBC,iBAAiB;EACjBC,iBAAiB;EACjBC,mBAAmB;EACnBC,uBAAuB;EACvBC;AAOD,CAAC,KAAa;EACb,IAAIF,mBAAmB,KAAKG,SAAS,EAAE;IACtC,MAAMC,YAAY,GAAGR,WAAW,CAC/BE,iBAAiB,EACjBC,iBAAiB,EACjB,QACD,CAAC;IACD,OAAO,GAAGJ,YAAY,CAACK,mBAAmB,CAAC,QAAQC,uBAAuB,gBAAgBG,YAAY,EAAE;EACzG;EACA,IAAIN,iBAAiB,KAAKK,SAAS,IAAIJ,iBAAiB,KAAKI,SAAS,EAAE;IACvE,IAAIL,iBAAiB,KAAKC,iBAAiB,EAAE;MAC5C,OAAOJ,YAAY,CAACG,iBAAiB,EAAEI,GAAG,CAAC;IAC5C;IACA,OAAON,WAAW,CAACE,iBAAiB,EAAEC,iBAAiB,EAAE,QAAQ,CAAC;EACnE;EAEA,MAAMM,GAAG,GAAGP,iBAAiB,IAAIC,iBAAiB;EAClD,IAAIM,GAAG,KAAKF,SAAS,EAAE,OAAOR,YAAY,CAACU,GAAG,CAAC;EAC/C,OAAO,WAAW;AACnB,CAAC;AAED,OAAO,MAAMC,SAAS,GACpBC,KAAgB,IACjB,CAAC;EACAC,KAAK;EACLC,iBAAiB;EACjBC,iBAAiB;EACjBC,mBAAmB;EACnBC,uBAAuB;EACvBV,GAAG,GAAG;AACQ,CAAC,KAAuB;EACtC,MAAMJ,iBAAiB,GAAGJ,GAAG,CAASa,KAAK,EAAEE,iBAAiB,CAAC;EAC/D,MAAMV,iBAAiB,GAAGL,GAAG,CAASa,KAAK,EAAEG,iBAAiB,CAAC;EAC/D,MAAMV,mBAAmB,GAAGN,GAAG,CAASa,KAAK,EAAEI,mBAAmB,CAAC;EACnE,MAAMV,uBAAuB,GAAGP,GAAG,CAASa,KAAK,EAAEK,uBAAuB,CAAC;EAE3E,MAAMC,OAAO,GAAGhB,gBAAgB,CAAC;IAChCC,iBAAiB;IACjBC,iBAAiB;IACjBC,mBAAmB;IACnBC,uBAAuB;IACvBC;EACD,CAAC,CAAC;EAEF,OAAO;IACNM,KAAK;IACLK;EACD,CAAC;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { get } from "radash";
|
|
2
|
-
import { P, match } from "ts-pattern";
|
|
3
2
|
import { formatRange } from "../../formatUtils";
|
|
4
3
|
/**
|
|
5
4
|
* Determine the content of the purchaseApr stat
|
|
@@ -18,21 +17,13 @@ const determineContent = ({
|
|
|
18
17
|
minPurchaseAprValue,
|
|
19
18
|
maxPurchaseAprValue
|
|
20
19
|
}) => {
|
|
21
|
-
|
|
22
|
-
purchaseAprValue
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
purchaseAprValue
|
|
29
|
-
}) => purchaseAprValue).with({
|
|
30
|
-
minPurchaseAprValue: P.not(undefined),
|
|
31
|
-
maxPurchaseAprValue: P.not(undefined)
|
|
32
|
-
}, ({
|
|
33
|
-
minPurchaseAprValue,
|
|
34
|
-
maxPurchaseAprValue
|
|
35
|
-
}) => formatRange(minPurchaseAprValue, maxPurchaseAprValue, "percentage")).otherwise(() => "See Terms");
|
|
20
|
+
if (purchaseAprValue !== undefined) {
|
|
21
|
+
return purchaseAprValue;
|
|
22
|
+
}
|
|
23
|
+
if (minPurchaseAprValue !== undefined && maxPurchaseAprValue !== undefined) {
|
|
24
|
+
return formatRange(minPurchaseAprValue, maxPurchaseAprValue, "percentage");
|
|
25
|
+
}
|
|
26
|
+
return "See Terms";
|
|
36
27
|
};
|
|
37
28
|
|
|
38
29
|
/**
|
|
@@ -42,7 +33,14 @@ const determineContent = ({
|
|
|
42
33
|
* @returns {string}
|
|
43
34
|
*/
|
|
44
35
|
const determineLabel = (aprType, label) => {
|
|
45
|
-
|
|
36
|
+
switch (aprType) {
|
|
37
|
+
case "variable":
|
|
38
|
+
return "Variable APR:";
|
|
39
|
+
case "fixed":
|
|
40
|
+
return "Fixed APR:";
|
|
41
|
+
default:
|
|
42
|
+
return label;
|
|
43
|
+
}
|
|
46
44
|
};
|
|
47
45
|
export const purchaseApr = offer => ({
|
|
48
46
|
label: defaultLabel,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["get","
|
|
1
|
+
{"version":3,"names":["get","formatRange","determineContent","purchaseAprValue","minPurchaseAprValue","maxPurchaseAprValue","undefined","determineLabel","aprType","label","purchaseApr","offer","defaultLabel","purchaseAprTextField","minPurchaseAprField","maxPurchaseAprField","aprTypeField","aprTypeValue","content","replace"],"sourceRoot":"../../../../../../../../src","sources":["capabilities/offer-catalog/src/utils/stats/formatters/purchaseApr.ts"],"mappings":"AAAA,SAASA,GAAG,QAAQ,QAAQ;AAE5B,SAASC,WAAW,QAAQ,mBAAmB;AAY/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAGA,CAAC;EACzBC,gBAAgB;EAChBC,mBAAmB;EACnBC;AAKD,CAAC,KAAa;EACb,IAAIF,gBAAgB,KAAKG,SAAS,EAAE;IACnC,OAAOH,gBAAgB;EACxB;EACA,IAAIC,mBAAmB,KAAKE,SAAS,IAAID,mBAAmB,KAAKC,SAAS,EAAE;IAC3E,OAAOL,WAAW,CAACG,mBAAmB,EAAEC,mBAAmB,EAAE,YAAY,CAAC;EAC3E;EACA,OAAO,WAAW;AACnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAME,cAAc,GAAGA,CAACC,OAAe,EAAEC,KAAa,KAAa;EAClE,QAAQD,OAAO;IACd,KAAK,UAAU;MACd,OAAO,eAAe;IACvB,KAAK,OAAO;MACX,OAAO,YAAY;IACpB;MACC,OAAOC,KAAK;EACd;AACD,CAAC;AAED,OAAO,MAAMC,WAAW,GACtBC,KAAgB,IACjB,CAAC;EACAF,KAAK,EAAEG,YAAY;EACnBC,oBAAoB;EACpBC,mBAAmB;EACnBC,mBAAmB;EACnBC;AACgB,CAAC,KAAuB;EACxC,MAAMb,gBAAgB,GAAGH,GAAG,CAASW,KAAK,EAAEE,oBAAoB,CAAC;EACjE,MAAMT,mBAAmB,GAAGJ,GAAG,CAASW,KAAK,EAAEG,mBAAmB,CAAC;EACnE,MAAMT,mBAAmB,GAAGL,GAAG,CAASW,KAAK,EAAEI,mBAAmB,CAAC;EACnE,MAAME,YAAY,GAAGjB,GAAG,CAASW,KAAK,EAAEK,YAAY,CAAC;EAErD,MAAME,OAAO,GAAGhB,gBAAgB,CAAC;IAChCC,gBAAgB;IAChBC,mBAAmB;IACnBC;EACD,CAAC,CAAC,CAACc,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC;EAE3C,MAAMV,KAAK,GAAGF,cAAc,CAACU,YAAY,EAAEL,YAAY,CAAC;EAExD,OAAO;IACNH,KAAK;IACLS;EACD,CAAC;AACF,CAAC","ignoreList":[]}
|
package/lib/module/capabilities/offer-catalog/src/utils/stats/formatters/recommendedCredit.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { get } from "radash";
|
|
2
|
-
import { P, match } from "ts-pattern";
|
|
3
2
|
import { formatStringListWithAnd } from "../../formatUtils";
|
|
4
3
|
const RECOMMENDED_RATINGS = ["limited", "poor", "fair", "good", "excellent"];
|
|
5
4
|
const orderRecommendedRatings = recommendedCreditValue => {
|
|
@@ -11,7 +10,14 @@ export const recommendedCredit = offer => ({
|
|
|
11
10
|
fieldName
|
|
12
11
|
}) => {
|
|
13
12
|
const recommendedCreditValue = get(offer, fieldName);
|
|
14
|
-
|
|
13
|
+
let content = "See Terms";
|
|
14
|
+
if (Array.isArray(recommendedCreditValue)) {
|
|
15
|
+
if (hasAllRecommendedRatings(recommendedCreditValue)) {
|
|
16
|
+
content = "Any";
|
|
17
|
+
} else {
|
|
18
|
+
content = formatStringListWithAnd(orderRecommendedRatings(recommendedCreditValue));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
15
21
|
return {
|
|
16
22
|
label,
|
|
17
23
|
content,
|
package/lib/module/capabilities/offer-catalog/src/utils/stats/formatters/recommendedCredit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["get","
|
|
1
|
+
{"version":3,"names":["get","formatStringListWithAnd","RECOMMENDED_RATINGS","orderRecommendedRatings","recommendedCreditValue","sort","a","b","indexOf","hasAllRecommendedRatings","every","rating","includes","recommendedCredit","offer","label","fieldName","content","Array","isArray","isHighlighted"],"sourceRoot":"../../../../../../../../src","sources":["capabilities/offer-catalog/src/utils/stats/formatters/recommendedCredit.ts"],"mappings":"AAAA,SAASA,GAAG,QAAQ,QAAQ;AAE5B,SAASC,uBAAuB,QAAQ,mBAAmB;AAS3D,MAAMC,mBAAmB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;AAE5E,MAAMC,uBAAuB,GAAIC,sBAAgC,IAAK;EACrE,OAAOA,sBAAsB,CAACC,IAAI,CACjC,CAACC,CAAC,EAAEC,CAAC,KAAKL,mBAAmB,CAACM,OAAO,CAACF,CAAC,CAAC,GAAGJ,mBAAmB,CAACM,OAAO,CAACD,CAAC,CACzE,CAAC;AACF,CAAC;AAED,MAAME,wBAAwB,GAAIL,sBAAgC,IACjEF,mBAAmB,CAACQ,KAAK,CAAEC,MAAM,IAChCP,sBAAsB,CAACQ,QAAQ,CAACD,MAAM,CACvC,CAAC;AAEF,OAAO,MAAME,iBAAiB,GAC5BC,KAAgB,IACjB,CAAC;EAAEC,KAAK;EAAEC;AAAiC,CAAC,KAAuB;EAClE,MAAMZ,sBAAsB,GAAGJ,GAAG,CAAWc,KAAK,EAAEE,SAAS,CAAC;EAE9D,IAAIC,OAAO,GAAG,WAAW;EAEzB,IAAIC,KAAK,CAACC,OAAO,CAACf,sBAAsB,CAAC,EAAE;IAC1C,IAAIK,wBAAwB,CAACL,sBAAsB,CAAC,EAAE;MACrDa,OAAO,GAAG,KAAK;IAChB,CAAC,MAAM;MACNA,OAAO,GAAGhB,uBAAuB,CAChCE,uBAAuB,CAACC,sBAAsB,CAC/C,CAAC;IACF;EACD;EAEA,OAAO;IACNW,KAAK;IACLE,OAAO;IACPG,aAAa,EAAE;EAChB,CAAC;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,41 +1,43 @@
|
|
|
1
|
-
import { match } from "ts-pattern";
|
|
2
1
|
import { annualFee, creditBureaus, fromBooleanStat, fromCommonStat, fromCurrencyStat, fromFreeTrialStat, fromListStringWithAnd, fromMonthlyOrAnnualCurrencyStat, fromRangeCurrencyByTimeStat, fromRangeCurrencyOrBasisStat, fromRangeCurrencyStat, fromRangeCurrencyUnabbreviatedStat, fromRangeMonthsStat, fromRangePercentStat, purchaseApr, recommendedCredit, rewardsDisplay } from "./formatters";
|
|
3
2
|
import { fromPercentageStat } from "./formatters/percentage";
|
|
4
|
-
export const statsToElementPropsBuilder = (stats, offer) => stats.map(stat =>
|
|
5
|
-
format
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
3
|
+
export const statsToElementPropsBuilder = (stats, offer) => stats.map(stat => {
|
|
4
|
+
switch (stat.format) {
|
|
5
|
+
case "rangeCurrency":
|
|
6
|
+
return fromRangeCurrencyStat(offer)(stat);
|
|
7
|
+
case "rangeCurrencyUnabbreviated":
|
|
8
|
+
return fromRangeCurrencyUnabbreviatedStat(offer)(stat);
|
|
9
|
+
case "BureausStat":
|
|
10
|
+
return creditBureaus(offer)(stat);
|
|
11
|
+
case "rangePercent":
|
|
12
|
+
return fromRangePercentStat(offer)(stat);
|
|
13
|
+
case "rangeCurrencyOrBasis":
|
|
14
|
+
return fromRangeCurrencyOrBasisStat(offer)(stat);
|
|
15
|
+
case "common":
|
|
16
|
+
return fromCommonStat(offer)(stat);
|
|
17
|
+
case "rangeCurrencyByTime":
|
|
18
|
+
return fromRangeCurrencyByTimeStat(offer)(stat);
|
|
19
|
+
case "freeTrial":
|
|
20
|
+
return fromFreeTrialStat(offer)(stat);
|
|
21
|
+
case "monthlyOrAnnualCurrency":
|
|
22
|
+
return fromMonthlyOrAnnualCurrencyStat(offer)(stat);
|
|
23
|
+
case "boolean":
|
|
24
|
+
return fromBooleanStat(offer)(stat);
|
|
25
|
+
case "rangeMonths":
|
|
26
|
+
return fromRangeMonthsStat(offer)(stat);
|
|
27
|
+
case "listStringWithAnd":
|
|
28
|
+
return fromListStringWithAnd(offer)(stat);
|
|
29
|
+
case "currency":
|
|
30
|
+
return fromCurrencyStat(offer)(stat);
|
|
31
|
+
case "percentage":
|
|
32
|
+
return fromPercentageStat(offer)(stat);
|
|
33
|
+
case "recommendedCredit":
|
|
34
|
+
return recommendedCredit(offer)(stat);
|
|
35
|
+
case "rewardsDisplay":
|
|
36
|
+
return rewardsDisplay(offer)(stat);
|
|
37
|
+
case "purchaseApr":
|
|
38
|
+
return purchaseApr(offer)(stat);
|
|
39
|
+
case "annualFee":
|
|
40
|
+
return annualFee(offer)(stat);
|
|
41
|
+
}
|
|
42
|
+
}).filter(stat => stat !== null);
|
|
41
43
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["annualFee","creditBureaus","fromBooleanStat","fromCommonStat","fromCurrencyStat","fromFreeTrialStat","fromListStringWithAnd","fromMonthlyOrAnnualCurrencyStat","fromRangeCurrencyByTimeStat","fromRangeCurrencyOrBasisStat","fromRangeCurrencyStat","fromRangeCurrencyUnabbreviatedStat","fromRangeMonthsStat","fromRangePercentStat","purchaseApr","recommendedCredit","rewardsDisplay","fromPercentageStat","statsToElementPropsBuilder","stats","offer","map","stat","format","filter"],"sourceRoot":"../../../../../../../src","sources":["capabilities/offer-catalog/src/utils/stats/index.ts"],"mappings":"AAAA,SACCA,SAAS,EACTC,aAAa,EACbC,eAAe,EACfC,cAAc,EACdC,gBAAgB,EAChBC,iBAAiB,EACjBC,qBAAqB,EACrBC,+BAA+B,EAC/BC,2BAA2B,EAC3BC,4BAA4B,EAC5BC,qBAAqB,EACrBC,kCAAkC,EAClCC,mBAAmB,EACnBC,oBAAoB,EACpBC,WAAW,EACXC,iBAAiB,EACjBC,cAAc,QACR,cAAc;AAErB,SAASC,kBAAkB,QAAQ,yBAAyB;AAI5D,OAAO,MAAMC,0BAA0B,GAAGA,CACzCC,KAAa,EACbC,KAAgB,KAEhBD,KAAK,CACHE,GAAG,CAAEC,IAAI,IAAuB;EAChC,QAAQA,IAAI,CAACC,MAAM;IAClB,KAAK,eAAe;MACnB,OAAOb,qBAAqB,CAACU,KAAK,CAAC,CAACE,IAAI,CAAC;IAC1C,KAAK,4BAA4B;MAChC,OAAOX,kCAAkC,CAACS,KAAK,CAAC,CAACE,IAAI,CAAC;IACvD,KAAK,aAAa;MACjB,OAAOrB,aAAa,CAACmB,KAAK,CAAC,CAACE,IAAI,CAAC;IAClC,KAAK,cAAc;MAClB,OAAOT,oBAAoB,CAACO,KAAK,CAAC,CAACE,IAAI,CAAC;IACzC,KAAK,sBAAsB;MAC1B,OAAOb,4BAA4B,CAACW,KAAK,CAAC,CAACE,IAAI,CAAC;IACjD,KAAK,QAAQ;MACZ,OAAOnB,cAAc,CAACiB,KAAK,CAAC,CAACE,IAAI,CAAC;IACnC,KAAK,qBAAqB;MACzB,OAAOd,2BAA2B,CAACY,KAAK,CAAC,CAACE,IAAI,CAAC;IAChD,KAAK,WAAW;MACf,OAAOjB,iBAAiB,CAACe,KAAK,CAAC,CAACE,IAAI,CAAC;IACtC,KAAK,yBAAyB;MAC7B,OAAOf,+BAA+B,CAACa,KAAK,CAAC,CAACE,IAAI,CAAC;IACpD,KAAK,SAAS;MACb,OAAOpB,eAAe,CAACkB,KAAK,CAAC,CAACE,IAAI,CAAC;IACpC,KAAK,aAAa;MACjB,OAAOV,mBAAmB,CAACQ,KAAK,CAAC,CAACE,IAAI,CAAC;IACxC,KAAK,mBAAmB;MACvB,OAAOhB,qBAAqB,CAACc,KAAK,CAAC,CAACE,IAAI,CAAC;IAC1C,KAAK,UAAU;MACd,OAAOlB,gBAAgB,CAACgB,KAAK,CAAC,CAACE,IAAI,CAAC;IACrC,KAAK,YAAY;MAChB,OAAOL,kBAAkB,CAACG,KAAK,CAAC,CAACE,IAAI,CAAC;IACvC,KAAK,mBAAmB;MACvB,OAAOP,iBAAiB,CAACK,KAAK,CAAC,CAACE,IAAI,CAAC;IACtC,KAAK,gBAAgB;MACpB,OAAON,cAAc,CAACI,KAAK,CAAC,CAACE,IAAI,CAAC;IACnC,KAAK,aAAa;MACjB,OAAOR,WAAW,CAACM,KAAK,CAAC,CAACE,IAAI,CAAC;IAChC,KAAK,WAAW;MACf,OAAOtB,SAAS,CAACoB,KAAK,CAAC,CAACE,IAAI,CAAC;EAC/B;AACD,CAAC,CAAC,CACDE,MAAM,CAAEF,IAAI,IAAKA,IAAI,KAAK,IAAI,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import defu from "defu";
|
|
2
1
|
import { get, mapValues } from "radash";
|
|
3
2
|
import { createDerivedBrands } from "../../../../../configuration/src/brands/createDerivedBrands";
|
|
4
3
|
const UUID_V4_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
@@ -46,20 +45,32 @@ export function withDeviceSignals(context, payload) {
|
|
|
46
45
|
system,
|
|
47
46
|
cnfEnvironment
|
|
48
47
|
};
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
|
|
49
|
+
// all clientTag values must be arrays of strings
|
|
50
|
+
const toStringArray = value => Array.isArray(value) ? value.map(String) : [String(value)];
|
|
51
|
+
const defaultClientTags = mapValues(clientTags, toStringArray);
|
|
52
|
+
const payloadClientTags = mapValues(payload.clientTags ?? {}, toStringArray);
|
|
53
|
+
const mergedClientTags = {
|
|
54
|
+
...defaultClientTags
|
|
55
|
+
};
|
|
56
|
+
for (const [key, value] of Object.entries(payloadClientTags)) {
|
|
57
|
+
const existing = mergedClientTags[key];
|
|
58
|
+
mergedClientTags[key] = existing ? [...value, ...existing] : value;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* The leads API requires device IDs be in the UUID format. If the string
|
|
63
|
+
* we receive here is not in the expected format, we omit it so the API can
|
|
64
|
+
* reject the request explicitly.
|
|
65
|
+
*/
|
|
66
|
+
return {
|
|
55
67
|
deviceId: isUUIDv4(maybeDeviceId) ? maybeDeviceId : undefined,
|
|
56
68
|
sessionInformation: {
|
|
57
69
|
ipAddress,
|
|
58
70
|
userAgent
|
|
59
71
|
},
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
});
|
|
72
|
+
...payload,
|
|
73
|
+
clientTags: mergedClientTags
|
|
74
|
+
};
|
|
64
75
|
}
|
|
65
76
|
//# sourceMappingURL=withDeviceSignals.js.map
|
package/lib/module/capabilities/offers/pipeline/src/sources/ratetables/withDeviceSignals.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["get","mapValues","createDerivedBrands","UUID_V4_REGEX","isUUIDv4","x","test","removePrefixFromAppName","appName","startsWith","substring","getBrand","context","brand","e","console","log","Error","withDeviceSignals","payload","maybeDeviceId","undefined","ipAddress","os","isMobile","evReferrer","cnfEnvironment","process","licensedBrand","consumerBrand","userAgent","system","app","clientTags","toStringArray","value","Array","isArray","map","String","defaultClientTags","payloadClientTags","mergedClientTags","key","Object","entries","existing","deviceId","sessionInformation"],"sourceRoot":"../../../../../../../../src","sources":["capabilities/offers/pipeline/src/sources/ratetables/withDeviceSignals.ts"],"mappings":"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","ignoreList":[]}
|