From d2a1d12dd6c51ce6125df05d2a345bfa3fe3d77b Mon Sep 17 00:00:00 2001 From: Patrick Hensley Date: Wed, 27 Nov 2024 10:32:03 -0500 Subject: [PATCH] Remove lodash, add capitalizefirst, misc --- package.json | 2 -- src/plugins/formatters.commerce.ts | 5 ++--- src/plugins/util.commerce.ts | 16 +++++----------- src/plugins/util.string.ts | 5 +++++ 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 250f9ec..3e8f03c 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ }, "dependencies": { "@phensley/timezone": "~1.2.17", - "lodash": "^4.17.21", "utf8": "^3.0.0" }, "peerDependencies": { @@ -48,7 +47,6 @@ "@rollup/plugin-json": "^4.0.3", "@rollup/plugin-node-resolve": "^7.1.3", "@types/jest": "^29.5.10", - "@types/lodash": "^4.17.13", "@types/node": "^20.10.0", "@types/utf8": "^3.0.3", "beautify-benchmark": "^0.2.4", diff --git a/src/plugins/formatters.commerce.ts b/src/plugins/formatters.commerce.ts index 7bf9bc6..d333d42 100644 --- a/src/plugins/formatters.commerce.ts +++ b/src/plugins/formatters.commerce.ts @@ -1,4 +1,3 @@ -import capitalize from 'lodash/capitalize'; import { Context } from '../context'; import { ProductType } from './enums'; import { Node } from '../node'; @@ -245,12 +244,12 @@ export class ProductPriceFormatter extends Formatter { // This string needs to match the correct translation template in v6 products-2.0-en-US.json. let localizedStringKey = 'productPrice__' + `${hasMultiplePrices ? 'multiplePrices' : 'singlePrice'}__` + - `${billingPeriodValue === 1 ? '1' : 'n'}${capitalize(billingPeriodUnit)}ly__`; + `${billingPeriodValue === 1 ? '1' : 'n'}${stringutil.capitalizeFirst(billingPeriodUnit)}ly__`; if (durationValue == 0) { localizedStringKey += 'indefinite'; } else { - localizedStringKey += `limited__${durationValue === 1 ? '1' : 'n'}${capitalize(durationUnit)}s`; + localizedStringKey += `limited__${durationValue === 1 ? '1' : 'n'}${stringutil.capitalizeFirst(durationUnit)}s`; } const localizedStringNode = ctx.resolve(['localizedStrings', localizedStringKey]); diff --git a/src/plugins/util.commerce.ts b/src/plugins/util.commerce.ts index 800cacd..1670331 100644 --- a/src/plugins/util.commerce.ts +++ b/src/plugins/util.commerce.ts @@ -44,9 +44,7 @@ export const getAmountFromMoneyNode = (moneyNode?: Node) => { export const getCurrencyFromMoneyNode = (moneyNode: Node): CurrencyType => { const currencyNode = moneyNode.path(['currency']); - const currency = !currencyNode.isMissing() ? - currencyNode.asString().trim() : - DEFAULT_MONEY_NODE.path(['currency']).asString(); + const currency = !currencyNode.isMissing() ? currencyNode.asString().trim() : DEFAULT_MONEY_NODE.path(['currency']).asString(); return currency as CurrencyType; }; @@ -60,7 +58,7 @@ export const getMoneyString = (moneyNode: Node, args: string[], ctx: Context): s if (useCLDRMode(ctx)) { const amount = getAmountFromMoneyNode(moneyNode); const currencyCode = getCurrencyFromMoneyNode(moneyNode); - + return ctx.cldr?.Numbers.formatCurrency(amount, currencyCode, currencyOptions(args)) ?? ''; } else { const legacyAmount = getLegacyPriceFromMoneyNode(moneyNode); @@ -78,15 +76,13 @@ export const getSubscriptionMoneyFromFirstPricingOptions = (pricingOptions: Node const node = pricingOptions.get(0); - return isTruthy(node.path(['onSale'])) - ? node.path(['salePriceMoney']) - : node.path(['priceMoney']); + return isTruthy(node.path(['onSale'])) ? node.path(['salePriceMoney']) : node.path(['priceMoney']); }; export const getPricingOptionsAmongLowestVariant = (item: Node): Node | null => { const productType = getProductType(item); const structuredContent = item.path(['structuredContent']); - + switch (productType) { case ProductType.PHYSICAL: case ProductType.SERVICE: @@ -96,9 +92,7 @@ export const getPricingOptionsAmongLowestVariant = (item: Node): Node | null => } const first = variants.get(0); - const moneyNode = isTruthy(first.path(['onSale'])) - ? first.path(['salePriceMoney']) - : first.path(['priceMoney']); + const moneyNode = isTruthy(first.path(['onSale'])) ? first.path(['salePriceMoney']) : first.path(['priceMoney']); let pricingOptions = first.path(['pricingOptions']); let price = getAmountFromMoneyNode(moneyNode); diff --git a/src/plugins/util.string.ts b/src/plugins/util.string.ts index 8a3b349..8252982 100644 --- a/src/plugins/util.string.ts +++ b/src/plugins/util.string.ts @@ -1,5 +1,10 @@ import { replaceMappedChars } from '../util'; +/** + * Capitalize first letter of a string and lowercase the rest. + */ +export const capitalizeFirst = (str: string) => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase(); + /** * Strip text between '<' and '>' from string. */