UNPKG

arabicfmt

Version:

Arabic-first formatting for numbers, currency, dates and bidirectional text across all 22 Arab League countries — with correct handling of the 2025–2026 Unicode currency-symbol transition (Saudi Riyal U+20C1, UAE Dirham U+20C3, Omani Rial U+20C4).

651 lines (642 loc) 20.2 kB
'use strict'; var chunkTNU35HB7_cjs = require('./chunk-TNU35HB7.cjs'); var chunkQQFKUSZ7_cjs = require('./chunk-QQFKUSZ7.cjs'); var chunkQ4F4Q7IO_cjs = require('./chunk-Q4F4Q7IO.cjs'); // src/currency/data.generated.ts var CLDR_VERSION = "48.2.0"; var DEFAULT_CURRENCY_DIGITS = 2; var CURRENCY_DIGITS = { "ADP": 0, "AFN": 0, "ALL": 0, "BHD": 3, "BIF": 0, "BYR": 0, "CLF": 4, "CLP": 0, "COP": 0, "DJF": 0, "ESP": 0, "GNF": 0, "HUF": 0, "IDR": 0, "IQD": 0, "IRR": 0, "ISK": 0, "ITL": 0, "JOD": 3, "JPY": 0, "KMF": 0, "KPW": 0, "KRW": 0, "KWD": 3, "LAK": 0, "LBP": 0, "LUF": 0, "LYD": 3, "MGA": 0, "MGF": 0, "MMK": 0, "MRO": 0, "OMR": 3, "PKR": 0, "PYG": 0, "RWF": 0, "SLL": 0, "SOS": 0, "STD": 0, "SYP": 0, "TMM": 0, "TND": 3, "TRL": 0, "UGX": 0, "UYI": 0, "UYW": 4, "VND": 0, "VUV": 0, "XAF": 0, "XOF": 0, "XPF": 0, "YER": 0, "ZMK": 0, "ZWD": 0 }; var REGION_CURRENCY = { "AC": "SHP", "AD": "EUR", "AE": "AED", "AF": "AFN", "AG": "XCD", "AI": "XCD", "AL": "ALL", "AM": "AMD", "AO": "AOA", "AR": "ARS", "AS": "USD", "AT": "EUR", "AU": "AUD", "AW": "AWG", "AX": "EUR", "AZ": "AZN", "BA": "BAM", "BB": "BBD", "BD": "BDT", "BE": "EUR", "BF": "XOF", "BG": "EUR", "BH": "BHD", "BI": "BIF", "BJ": "XOF", "BL": "EUR", "BM": "BMD", "BN": "BND", "BO": "BOB", "BQ": "USD", "BR": "BRL", "BS": "BSD", "BT": "BTN", "BV": "NOK", "BW": "BWP", "BY": "BYN", "BZ": "BZD", "CA": "CAD", "CC": "AUD", "CD": "CDF", "CF": "XAF", "CG": "XAF", "CH": "CHF", "CI": "XOF", "CK": "NZD", "CL": "CLP", "CM": "XAF", "CN": "CNH", "CO": "COP", "CR": "CRC", "CU": "CUP", "CV": "CVE", "CW": "XCG", "CX": "AUD", "CY": "EUR", "CZ": "CZK", "DE": "EUR", "DG": "USD", "DJ": "DJF", "DK": "DKK", "DM": "XCD", "DO": "DOP", "DZ": "DZD", "EA": "EUR", "EC": "USD", "EE": "EUR", "EG": "EGP", "EH": "MAD", "ER": "ERN", "ES": "EUR", "ET": "ETB", "EU": "EUR", "FI": "EUR", "FJ": "FJD", "FK": "FKP", "FM": "USD", "FO": "DKK", "FR": "EUR", "GA": "XAF", "GB": "GBP", "GD": "XCD", "GE": "GEL", "GF": "EUR", "GG": "GBP", "GH": "GHS", "GI": "GIP", "GL": "DKK", "GM": "GMD", "GN": "GNF", "GP": "EUR", "GQ": "XAF", "GR": "EUR", "GS": "GBP", "GT": "GTQ", "GU": "USD", "GW": "XOF", "GY": "GYD", "HK": "HKD", "HM": "AUD", "HN": "HNL", "HR": "EUR", "HT": "USD", "HU": "HUF", "IC": "EUR", "ID": "IDR", "IE": "EUR", "IL": "ILS", "IM": "GBP", "IN": "INR", "IO": "USD", "IQ": "IQD", "IR": "IRR", "IS": "ISK", "IT": "EUR", "JE": "GBP", "JM": "JMD", "JO": "JOD", "JP": "JPY", "KE": "KES", "KG": "KGS", "KH": "KHR", "KI": "AUD", "KM": "KMF", "KN": "XCD", "KP": "KPW", "KR": "KRW", "KW": "KWD", "KY": "KYD", "KZ": "KZT", "LA": "LAK", "LB": "LBP", "LC": "XCD", "LI": "CHF", "LK": "LKR", "LR": "LRD", "LS": "LSL", "LT": "EUR", "LU": "EUR", "LV": "EUR", "LY": "LYD", "MA": "MAD", "MC": "EUR", "MD": "MDL", "ME": "EUR", "MF": "EUR", "MG": "MGA", "MH": "USD", "MK": "MKD", "ML": "XOF", "MM": "MMK", "MN": "MNT", "MO": "MOP", "MP": "USD", "MQ": "EUR", "MR": "MRU", "MS": "XCD", "MT": "EUR", "MU": "MUR", "MV": "MVR", "MW": "MWK", "MX": "MXN", "MY": "MYR", "MZ": "MZN", "NA": "NAD", "NC": "XPF", "NE": "XOF", "NF": "AUD", "NG": "NGN", "NI": "NIO", "NL": "EUR", "NO": "NOK", "NP": "NPR", "NR": "AUD", "NU": "NZD", "NZ": "NZD", "OM": "OMR", "PA": "USD", "PE": "PEN", "PF": "XPF", "PG": "PGK", "PH": "PHP", "PK": "PKR", "PL": "PLN", "PM": "EUR", "PN": "NZD", "PR": "USD", "PS": "JOD", "PT": "EUR", "PW": "USD", "PY": "PYG", "QA": "QAR", "RE": "EUR", "RO": "RON", "RS": "RSD", "RU": "RUB", "RW": "RWF", "SA": "SAR", "SB": "SBD", "SC": "SCR", "SD": "SDG", "SE": "SEK", "SG": "SGD", "SH": "SHP", "SI": "EUR", "SJ": "NOK", "SK": "EUR", "SL": "SLE", "SM": "EUR", "SN": "XOF", "SO": "SOS", "SR": "SRD", "SS": "SSP", "ST": "STN", "SV": "USD", "SX": "XCG", "SY": "SYP", "SZ": "SZL", "TA": "GBP", "TC": "USD", "TD": "XAF", "TF": "EUR", "TG": "XOF", "TH": "THB", "TJ": "TJS", "TK": "NZD", "TL": "USD", "TM": "TMT", "TN": "TND", "TO": "TOP", "TR": "TRY", "TT": "TTD", "TV": "AUD", "TW": "TWD", "TZ": "TZS", "UA": "UAH", "UG": "UGX", "UM": "USD", "US": "USD", "UY": "UYU", "UZ": "UZS", "VA": "EUR", "VC": "XCD", "VE": "VES", "VG": "USD", "VI": "USD", "VN": "VND", "VU": "VUV", "WF": "XPF", "WS": "WST", "XK": "EUR", "YE": "YER", "YT": "EUR", "ZA": "ZAR", "ZM": "ZMW", "ZW": "ZWG", "ZZ": "XAD" }; // src/currency/data.ts var PRECISION_OVERRIDES = { IQD: 3 }; function currencyDigits(code) { const c = code.toUpperCase(); return PRECISION_OVERRIDES[c] ?? CURRENCY_DIGITS[c] ?? DEFAULT_CURRENCY_DIGITS; } function currencyForRegion(region) { return REGION_CURRENCY[region.toUpperCase()]; } function currencyForLocale(locale) { const region = chunkQ4F4Q7IO_cjs.regionFromLocale(locale); return region ? currencyForRegion(region) : void 0; } // src/currency/symbols.ts var LEGACY_RIAL_LIGATURE = "\uFDFC"; var SAR_UNICODE = { char: "\u20C1", codepoint: "U+20C1", unicodeVersion: "17.0", released: "2025-09", live: true, // shipped in Unicode 17.0 autoDefault: false // most system fonts still lack the glyph }; var AED_UNICODE = { char: "\u20C3", codepoint: "U+20C3", unicodeVersion: "18.0", released: "2026-09", live: true, // shipped in Unicode 18.0 autoDefault: true // `auto` prefers the dedicated dirham sign (Unicode 18.0) }; var OMR_UNICODE = { char: "\u20C4", codepoint: "U+20C4", unicodeVersion: "18.0", released: "2026-09", live: true, // shipped in Unicode 18.0 autoDefault: true // `auto` prefers the dedicated rial sign (Unicode 18.0) }; var CURRENCY_SYMBOLS = { // Gulf — the transition currencies SAR: { code: "SAR", text: "\u0631.\u0633", unicode: SAR_UNICODE }, AED: { code: "AED", text: "\u062F.\u0625", unicode: AED_UNICODE }, OMR: { code: "OMR", text: "\u0631.\u0639.", unicode: OMR_UNICODE }, // Other dinars (3 decimals) and riyals KWD: { code: "KWD", text: "\u062F.\u0643" }, BHD: { code: "BHD", text: "\u062F.\u0628" }, QAR: { code: "QAR", text: "\u0631.\u0642" }, JOD: { code: "JOD", text: "\u062F.\u0623" }, IQD: { code: "IQD", text: "\u062F.\u0639" }, LYD: { code: "LYD", text: "\u062F.\u0644" }, TND: { code: "TND", text: "\u062F.\u062A" }, YER: { code: "YER", text: "\u0631.\u064A" }, // Pounds / liras EGP: { code: "EGP", text: "\u062C.\u0645" }, SDG: { code: "SDG", text: "\u062C.\u0633" }, LBP: { code: "LBP", text: "\u0644.\u0644" }, SYP: { code: "SYP", text: "\u0644.\u0633" }, // Dirham / dinar (Maghreb) MAD: { code: "MAD", text: "\u062F.\u0645." }, DZD: { code: "DZD", text: "\u062F.\u062C" }, // Others MRU: { code: "MRU", text: "\u0623.\u0645" }, SOS: { code: "SOS", text: "\u0634.\u0635" }, DJF: { code: "DJF", text: "\u0641.\u062C" }, KMF: { code: "KMF", text: "\u0641.\u062C.\u0642" }, ILS: { code: "ILS", text: "\u20AA" } }; function getSymbolData(code) { return CURRENCY_SYMBOLS[code.toUpperCase()]; } // src/currency/format.ts var NBSP = "\xA0"; function resolveCurrencySymbol(code, options = {}) { const mode = options.mode ?? "auto"; const upper = code.toUpperCase(); if (mode === "code") return upper; const data = getSymbolData(upper); if (data) { if (mode === "text") return data.text; if (mode === "new") return data.unicode?.char ?? data.text; if (data.unicode?.autoDefault) return data.unicode.char; return data.text; } return intlSymbol(upper, options.locale ?? chunkQ4F4Q7IO_cjs.DEFAULT_LOCALE) ?? upper; } function formatCurrency(amount, options = {}) { const locale = options.locale ?? chunkQ4F4Q7IO_cjs.DEFAULT_LOCALE; const currency = (options.currency ?? currencyForLocale(locale))?.toUpperCase(); if (!currency) { throw new Error( 'arabicfmt: could not resolve a currency. Pass { currency: "SAR" } or a locale with a region, e.g. "ar-SA".' ); } const numerals = options.numerals ?? "latn"; const digits = options.fractionDigits ?? currencyDigits(currency); const min = options.minimumFractionDigits ?? digits; const max = Math.max(min, options.maximumFractionDigits ?? digits); const accounting = options.accounting ?? false; const absAmount = accounting ? Math.abs(amount) : amount; const fmtOpts = { minimumFractionDigits: min, maximumFractionDigits: max, useGrouping: options.grouping ?? true }; if (!accounting && options.signDisplay) fmtOpts.signDisplay = options.signDisplay; const numberPart = new Intl.NumberFormat( chunkQ4F4Q7IO_cjs.withNumberingSystem(locale, numerals), fmtOpts ).format(absAmount); if (options.showSymbol === false) { return options.isolate ? chunkQQFKUSZ7_cjs.isolate(numberPart) : numberPart; } const symbol = resolveCurrencySymbol(currency, { mode: options.symbolMode ?? "auto", locale }); const placement = resolvePlacement(locale, currency); const spacing = options.symbolSpacing ?? placement.spacing; const position = options.symbolPosition ?? placement.position; let out = position === "before" ? `${symbol}${spacing}${numberPart}` : `${numberPart}${spacing}${symbol}`; if (accounting && amount < 0) out = `(${out})`; return options.isolate ? chunkQQFKUSZ7_cjs.isolate(out) : out; } function getCurrencyInfo(code, locale = chunkQ4F4Q7IO_cjs.DEFAULT_LOCALE) { const upper = code.toUpperCase(); const data = getSymbolData(upper); const info = { code: upper, digits: currencyDigits(upper), symbols: { auto: resolveCurrencySymbol(upper, { mode: "auto", locale }), text: resolveCurrencySymbol(upper, { mode: "text", locale }), code: upper } }; if (data?.unicode) { info.symbols.new = data.unicode.char; info.unicode = { codepoint: data.unicode.codepoint, unicodeVersion: data.unicode.unicodeVersion, released: data.unicode.released, live: data.unicode.live, autoDefault: data.unicode.autoDefault }; } const name = intlDisplayName(upper, locale); if (name) info.displayName = name; return info; } function intlSymbol(code, locale) { try { const parts = new Intl.NumberFormat(locale, { style: "currency", currency: code, currencyDisplay: "narrowSymbol" }).formatToParts(0); const sym = parts.find((p) => p.type === "currency")?.value; return sym && sym !== code ? sym : void 0; } catch { return void 0; } } function intlDisplayName(code, locale) { const DisplayNames = Intl.DisplayNames; if (!DisplayNames) return void 0; try { return new DisplayNames([locale], { type: "currency" }).of(code); } catch { return void 0; } } var placementCache = /* @__PURE__ */ new Map(); function resolvePlacement(locale, currency) { const key = `${locale}|${currency}`; const cached = placementCache.get(key); if (cached) return cached; let placement = { position: locale.toLowerCase().startsWith("ar") ? "after" : "before", spacing: NBSP }; try { const parts = new Intl.NumberFormat(locale, { style: "currency", currency }).formatToParts(1); const curIdx = parts.findIndex((p) => p.type === "currency"); const numIdx = parts.findIndex( (p) => p.type === "integer" || p.type === "decimal" ); if (curIdx !== -1 && numIdx !== -1) { const position = curIdx < numIdx ? "before" : "after"; const adjacent = position === "before" ? parts[curIdx + 1] : parts[curIdx - 1]; const hasGap = adjacent?.type === "literal" && /\s/.test(chunkQQFKUSZ7_cjs.stripBidi(adjacent.value)); placement = { position, spacing: hasGap ? NBSP : "" }; } } catch { } placementCache.set(key, placement); return placement; } // src/countries.ts var ARAB_LEAGUE_COUNTRIES = [ { region: "SA", nameEn: "Saudi Arabia", nameAr: "\u0627\u0644\u0633\u0639\u0648\u062F\u064A\u0629" }, { region: "AE", nameEn: "United Arab Emirates", nameAr: "\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062A" }, { region: "KW", nameEn: "Kuwait", nameAr: "\u0627\u0644\u0643\u0648\u064A\u062A" }, { region: "BH", nameEn: "Bahrain", nameAr: "\u0627\u0644\u0628\u062D\u0631\u064A\u0646" }, { region: "OM", nameEn: "Oman", nameAr: "\u0639\u064F\u0645\u0627\u0646" }, { region: "QA", nameEn: "Qatar", nameAr: "\u0642\u0637\u0631" }, { region: "JO", nameEn: "Jordan", nameAr: "\u0627\u0644\u0623\u0631\u062F\u0646" }, { region: "IQ", nameEn: "Iraq", nameAr: "\u0627\u0644\u0639\u0631\u0627\u0642" }, { region: "LY", nameEn: "Libya", nameAr: "\u0644\u064A\u0628\u064A\u0627" }, { region: "TN", nameEn: "Tunisia", nameAr: "\u062A\u0648\u0646\u0633" }, { region: "EG", nameEn: "Egypt", nameAr: "\u0645\u0635\u0631" }, { region: "LB", nameEn: "Lebanon", nameAr: "\u0644\u0628\u0646\u0627\u0646" }, { region: "SY", nameEn: "Syria", nameAr: "\u0633\u0648\u0631\u064A\u0627" }, { region: "MA", nameEn: "Morocco", nameAr: "\u0627\u0644\u0645\u063A\u0631\u0628" }, { region: "DZ", nameEn: "Algeria", nameAr: "\u0627\u0644\u062C\u0632\u0627\u0626\u0631" }, { region: "SD", nameEn: "Sudan", nameAr: "\u0627\u0644\u0633\u0648\u062F\u0627\u0646" }, { region: "YE", nameEn: "Yemen", nameAr: "\u0627\u0644\u064A\u0645\u0646" }, { region: "PS", nameEn: "Palestine", nameAr: "\u0641\u0644\u0633\u0637\u064A\u0646" }, { region: "MR", nameEn: "Mauritania", nameAr: "\u0645\u0648\u0631\u064A\u062A\u0627\u0646\u064A\u0627" }, { region: "SO", nameEn: "Somalia", nameAr: "\u0627\u0644\u0635\u0648\u0645\u0627\u0644" }, { region: "DJ", nameEn: "Djibouti", nameAr: "\u062C\u064A\u0628\u0648\u062A\u064A" }, { region: "KM", nameEn: "Comoros", nameAr: "\u062C\u0632\u0631 \u0627\u0644\u0642\u0645\u0631" } ]; function countryCurrency(region) { return currencyForRegion(region); } // src/currency/tafqit.ts var RIYAL = { gender: "male", singular: "\u0631\u064A\u0627\u0644", dual: "\u0631\u064A\u0627\u0644\u0627\u0646", plural: "\u0631\u064A\u0627\u0644\u0627\u062A", accusative: "\u0631\u064A\u0627\u0644\u0627\u064B" }; var DINAR = { gender: "male", singular: "\u062F\u064A\u0646\u0627\u0631", dual: "\u062F\u064A\u0646\u0627\u0631\u0627\u0646", plural: "\u062F\u0646\u0627\u0646\u064A\u0631", accusative: "\u062F\u064A\u0646\u0627\u0631\u0627\u064B" }; var DIRHAM = { gender: "male", singular: "\u062F\u0631\u0647\u0645", dual: "\u062F\u0631\u0647\u0645\u0627\u0646", plural: "\u062F\u0631\u0627\u0647\u0645", accusative: "\u062F\u0631\u0647\u0645\u0627\u064B" }; var JUNAYH = { gender: "male", singular: "\u062C\u0646\u064A\u0647", dual: "\u062C\u0646\u064A\u0647\u0627\u0646", plural: "\u062C\u0646\u064A\u0647\u0627\u062A", accusative: "\u062C\u0646\u064A\u0647\u0627\u064B" }; var LIRA = { gender: "female", singular: "\u0644\u064A\u0631\u0629", dual: "\u0644\u064A\u0631\u062A\u0627\u0646", plural: "\u0644\u064A\u0631\u0627\u062A", accusative: "\u0644\u064A\u0631\u0629\u064B" }; var FRANC = { gender: "male", singular: "\u0641\u0631\u0646\u0643", dual: "\u0641\u0631\u0646\u0643\u0627\u0646", plural: "\u0641\u0631\u0646\u0643\u0627\u062A", accusative: "\u0641\u0631\u0646\u0643\u0627\u064B" }; var SHILLING = { gender: "male", singular: "\u0634\u0644\u0646", dual: "\u0634\u0644\u0646\u0627\u0646", plural: "\u0634\u0644\u0646\u0627\u062A", accusative: "\u0634\u0644\u0646\u0627\u064B" }; var OUGUIYA = { gender: "female", singular: "\u0623\u0648\u0642\u064A\u0629", dual: "\u0623\u0648\u0642\u064A\u062A\u0627\u0646", plural: "\u0623\u0648\u0642\u064A\u0627\u062A", accusative: "\u0623\u0648\u0642\u064A\u0629\u064B" }; var FILS = { gender: "male", singular: "\u0641\u0644\u0633", dual: "\u0641\u0644\u0633\u0627\u0646", plural: "\u0641\u0644\u0648\u0633", accusative: "\u0641\u0644\u0633\u0627\u064B" }; var HALALA = { gender: "female", singular: "\u0647\u0644\u0644\u0629", dual: "\u0647\u0644\u0644\u062A\u0627\u0646", plural: "\u0647\u0644\u0644\u0627\u062A", accusative: "\u0647\u0644\u0644\u0629\u064B" }; var QIRSH = { gender: "male", singular: "\u0642\u0631\u0634", dual: "\u0642\u0631\u0634\u0627\u0646", plural: "\u0642\u0631\u0648\u0634", accusative: "\u0642\u0631\u0634\u0627\u064B" }; var SANTEEM = { gender: "male", singular: "\u0633\u0646\u062A\u064A\u0645", dual: "\u0633\u0646\u062A\u064A\u0645\u0627\u0646", plural: "\u0633\u0646\u062A\u064A\u0645\u0627\u062A", accusative: "\u0633\u0646\u062A\u064A\u0645\u0627\u064B" }; var BAISA = { gender: "female", singular: "\u0628\u064A\u0633\u0629", dual: "\u0628\u064A\u0633\u062A\u0627\u0646", plural: "\u0628\u064A\u0633\u0627\u062A", accusative: "\u0628\u064A\u0633\u0629\u064B" }; var MILLIME = { gender: "male", singular: "\u0645\u0644\u064A\u0645", dual: "\u0645\u0644\u064A\u0645\u0627\u0646", plural: "\u0645\u0644\u064A\u0645\u0627\u062A", accusative: "\u0645\u0644\u064A\u0645\u0627\u064B" }; var CENT = { gender: "male", singular: "\u0633\u0646\u062A", dual: "\u0633\u0646\u062A\u0627\u0646", plural: "\u0633\u0646\u062A\u0627\u062A", accusative: "\u0633\u0646\u062A\u0627\u064B" }; var CURRENCY_WORDS = { SAR: { major: RIYAL, minor: HALALA }, QAR: { major: RIYAL, minor: DIRHAM }, YER: { major: RIYAL, minor: FILS }, OMR: { major: RIYAL, minor: BAISA }, AED: { major: DIRHAM, minor: FILS }, MAD: { major: DIRHAM, minor: SANTEEM }, KWD: { major: DINAR, minor: FILS }, BHD: { major: DINAR, minor: FILS }, IQD: { major: DINAR, minor: FILS }, JOD: { major: DINAR, minor: FILS }, LYD: { major: DINAR, minor: DIRHAM }, TND: { major: DINAR, minor: MILLIME }, DZD: { major: DINAR, minor: SANTEEM }, EGP: { major: JUNAYH, minor: QIRSH }, SDG: { major: JUNAYH, minor: QIRSH }, LBP: { major: LIRA, minor: QIRSH }, SYP: { major: LIRA, minor: QIRSH }, SOS: { major: SHILLING, minor: CENT }, DJF: { major: FRANC }, KMF: { major: FRANC }, MRU: { major: OUGUIYA } }; function genericWords(code) { const noun = { gender: "male", singular: code, dual: code, plural: code, accusative: code }; return { major: noun }; } function spellCurrency(amount, options = {}) { if (!Number.isFinite(amount)) return ""; const code = (options.currency ?? currencyForLocale(options.locale ?? chunkQ4F4Q7IO_cjs.DEFAULT_LOCALE) ?? "").toUpperCase(); const words = CURRENCY_WORDS[code] ?? genericWords(code || "\u0648\u062D\u062F\u0629"); const digits = currencyDigits(code); const minorPerMajor = digits > 0 ? 10 ** digits : 1; const negative = amount < 0; const abs = Math.abs(amount); const scaled = Math.round(abs * minorPerMajor); const major = Math.floor(scaled / minorPerMajor); const minor = scaled - major * minorPerMajor; const parts = []; if (major > 0) parts.push(chunkTNU35HB7_cjs.countedNoun(major, words.major)); if (minor > 0 && words.minor) parts.push(chunkTNU35HB7_cjs.countedNoun(minor, words.minor)); let result = parts.length === 0 ? `\u0635\u0641\u0631 ${words.major.singular}` : parts.join(" \u0648"); if (options.suffix === true) result += " \u0641\u0642\u0637 \u0644\u0627 \u063A\u064A\u0631"; else if (typeof options.suffix === "string") result += ` ${options.suffix}`; if (negative) result = `${options.negativePrefix ?? "\u0633\u0627\u0644\u0628"} ${result}`; return result; } exports.ARAB_LEAGUE_COUNTRIES = ARAB_LEAGUE_COUNTRIES; exports.CLDR_VERSION = CLDR_VERSION; exports.CURRENCY_SYMBOLS = CURRENCY_SYMBOLS; exports.CURRENCY_WORDS = CURRENCY_WORDS; exports.LEGACY_RIAL_LIGATURE = LEGACY_RIAL_LIGATURE; exports.PRECISION_OVERRIDES = PRECISION_OVERRIDES; exports.countryCurrency = countryCurrency; exports.currencyDigits = currencyDigits; exports.currencyForLocale = currencyForLocale; exports.currencyForRegion = currencyForRegion; exports.formatCurrency = formatCurrency; exports.getCurrencyInfo = getCurrencyInfo; exports.getSymbolData = getSymbolData; exports.resolveCurrencySymbol = resolveCurrencySymbol; exports.spellCurrency = spellCurrency;