"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SetNumberFormatUnitOptions = void 0; var GetOption_1 = require("../GetOption"); var IsWellFormedCurrencyCode_1 = require("../IsWellFormedCurrencyCode"); var IsWellFormedUnitIdentifier_1 = require("../IsWellFormedUnitIdentifier"); /** * https://tc39.es/ecma402/#sec-setnumberformatunitoptions */ function SetNumberFormatUnitOptions(nf, options, _a) { if (options === void 0) { options = Object.create(null); } var getInternalSlots = _a.getInternalSlots; var internalSlots = getInternalSlots(nf); var style = (0, GetOption_1.GetOption)(options, 'style', 'string', ['decimal', 'percent', 'currency', 'unit'], 'decimal'); internalSlots.style = style; var currency = (0, GetOption_1.GetOption)(options, 'currency', 'string', undefined, undefined); if (currency !== undefined && !(0, IsWellFormedCurrencyCode_1.IsWellFormedCurrencyCode)(currency)) { throw RangeError('Malformed currency code'); } if (style === 'currency' && currency === undefined) { throw TypeError('currency cannot be undefined'); } var currencyDisplay = (0, GetOption_1.GetOption)(options, 'currencyDisplay', 'string', ['code', 'symbol', 'narrowSymbol', 'name'], 'symbol'); var currencySign = (0, GetOption_1.GetOption)(options, 'currencySign', 'string', ['standard', 'accounting'], 'standard'); var unit = (0, GetOption_1.GetOption)(options, 'unit', 'string', undefined, undefined); if (unit !== undefined && !(0, IsWellFormedUnitIdentifier_1.IsWellFormedUnitIdentifier)(unit)) { throw RangeError('Invalid unit argument for Intl.NumberFormat()'); } if (style === 'unit' && unit === undefined) { throw TypeError('unit cannot be undefined'); } var unitDisplay = (0, GetOption_1.GetOption)(options, 'unitDisplay', 'string', ['short', 'narrow', 'long'], 'short'); if (style === 'currency') { internalSlots.currency = currency.toUpperCase(); internalSlots.currencyDisplay = currencyDisplay; internalSlots.currencySign = currencySign; } if (style === 'unit') { internalSlots.unit = unit; internalSlots.unitDisplay = unitDisplay; } } exports.SetNumberFormatUnitOptions = SetNumberFormatUnitOptions;