"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BestFitMatcher = void 0; var BestAvailableLocale_1 = require("./BestAvailableLocale"); var utils_1 = require("./utils"); /** * https://tc39.es/ecma402/#sec-bestfitmatcher * @param availableLocales * @param requestedLocales * @param getDefaultLocale */ function BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) { var result = { locale: '' }; for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) { var locale = requestedLocales_1[_i]; var noExtensionLocale = locale.replace(utils_1.UNICODE_EXTENSION_SEQUENCE_REGEX, ''); var availableLocale = BestAvailableLocale_1.BestAvailableLocale(availableLocales, noExtensionLocale); if (availableLocale) { result.locale = availableLocale; if (locale !== noExtensionLocale) { result.extension = locale.slice(noExtensionLocale.length + 1, locale.length); } return result; } } result.locale = getDefaultLocale(); return result; } exports.BestFitMatcher = BestFitMatcher;