{"version":3,"file":"load.mjs","sourceRoot":"","sources":["../../../src/cldr/load.ts"],"names":[],"mappings":"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","sourcesContent":["// required for Globalize/Cldr to properly resolve locales in the browser.\nimport 'cldrjs/dist/cldr/unresolved';\nimport * as Globalize from 'globalize/dist/globalize';\nimport supportedLocales from './locales';\nimport { generateLocales, validateLocale } from '../util/main';\n\nexport interface CldrData {\n\tmain?: LocaleData;\n\tsupplemental?: any;\n}\n\nexport type CldrGroup = 'main' | 'supplemental';\n\nexport interface LocaleData {\n\t[locale: string]: any;\n}\n\n/**\n * A list of all required CLDR packages for an individual locale.\n */\nexport const mainPackages = Object.freeze([\n\t'dates/calendars/gregorian',\n\t'dates/fields',\n\t'dates/timeZoneNames',\n\t'numbers',\n\t'numbers/currencies',\n\t'units'\n]);\n\n/**\n * A list of all required CLDR supplement packages.\n */\nexport const supplementalPackages = Object.freeze([\n\t'currencyData',\n\t'likelySubtags',\n\t'numberingSystems',\n\t'plurals-type-cardinal',\n\t'plurals-type-ordinal',\n\t'timeData',\n\t'weekData'\n]);\n\n/**\n * @private\n * A simple map containing boolean flags indicating whether a particular CLDR package has been loaded.\n */\nconst loadCache = {\n\tmain: Object.create(null),\n\tsupplemental: generateSupplementalCache()\n};\n\n/**\n * @private\n * Generate the locale-specific data cache from a list of keys. Nested objects will be generated from\n * slash-separated strings.\n *\n * @param cache\n * An empty locale cache object.\n *\n * @param keys\n * The list of keys.\n */\nfunction generateLocaleCache(cache: any, keys: ReadonlyArray<string>) {\n\treturn keys.reduce((tree: any, key: string) => {\n\t\tconst parts = key.split('/');\n\n\t\tif (parts.length === 1) {\n\t\t\ttree[key] = false;\n\t\t\treturn tree;\n\t\t}\n\n\t\tparts.reduce((tree: any, key: string, i: number) => {\n\t\t\tif (typeof tree[key] !== 'object') {\n\t\t\t\ttree[key] = i === parts.length - 1 ? false : Object.create(null);\n\t\t\t}\n\t\t\treturn tree[key];\n\t\t}, tree);\n\n\t\treturn tree;\n\t}, cache);\n}\n\n/**\n * @private\n * Generate the supplemental data cache.\n */\nfunction generateSupplementalCache() {\n\treturn supplementalPackages.reduce((map: any, key: string) => {\n\t\tmap[key] = false;\n\t\treturn map;\n\t}, Object.create(null));\n}\n\n/**\n * @private\n * Recursively determine whether a list of packages have been loaded for the specified CLDR group.\n *\n * @param group\n * The CLDR group object (e.g., the supplemental data, or a specific locale group)\n *\n * @param args\n * A list of keys to recursively check from left to right. For example, if [ \"en\", \"numbers\" ],\n * then `group.en.numbers` must exist for the test to pass.\n *\n * @return\n * `true` if the deepest value exists; `false` otherwise.\n */\nfunction isLoadedForGroup(group: any, args: string[]) {\n\treturn args.every((arg: string) => {\n\t\tconst next = group[arg];\n\t\tgroup = next;\n\t\treturn Boolean(next);\n\t});\n}\n\n/**\n * @private\n * Recursively flag as loaded all recognized keys on the provided CLDR data object.\n *\n * @param cache\n * The load cache (either the entire object, or a nested segment of it).\n *\n * @param localeData\n * The CLDR data object being loaded (either the entire object, or a nested segment of it).\n */\nfunction registerLocaleData(cache: any, localeData: any) {\n\tObject.keys(localeData).forEach((key: string) => {\n\t\tif (key in cache) {\n\t\t\tconst value = cache[key];\n\n\t\t\tif (typeof value === 'boolean') {\n\t\t\t\tcache[key] = true;\n\t\t\t} else {\n\t\t\t\tregisterLocaleData(value, localeData[key]);\n\t\t\t}\n\t\t}\n\t});\n}\n\n/**\n * @private\n * Flag all supplied CLDR packages for a specific locale as loaded.\n *\n * @param data\n * The `main` locale data.\n */\nfunction registerMain(data?: LocaleData) {\n\tif (!data) {\n\t\treturn;\n\t}\n\n\tObject.keys(data).forEach((locale: string) => {\n\t\tif (supportedLocales.indexOf(locale) < 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet loadedData = loadCache.main[locale];\n\t\tif (!loadedData) {\n\t\t\tloadedData = loadCache.main[locale] = generateLocaleCache(Object.create(null), mainPackages);\n\t\t}\n\n\t\tregisterLocaleData(loadedData, data[locale]);\n\t});\n}\n\n/**\n * @private\n * Flag all supplied CLDR supplemental packages as loaded.\n *\n * @param data\n * The supplemental data.\n */\nfunction registerSupplemental(data?: any) {\n\tif (!data) {\n\t\treturn;\n\t}\n\n\tconst supplemental = loadCache.supplemental;\n\tObject.keys(data).forEach((key: string) => {\n\t\tif (key in supplemental) {\n\t\t\tsupplemental[key] = true;\n\t\t}\n\t});\n}\n\n/**\n * Determine whether a particular CLDR package has been loaded.\n *\n * Example: to check that `supplemental.likelySubtags` has been loaded, `isLoaded` would be called as\n * `isLoaded('supplemental', 'likelySubtags')`.\n *\n * @param groupName\n * The group to check; either \"main\" or \"supplemental\".\n *\n * @param ...args\n * Any remaining keys in the path to the desired package.\n *\n * @return\n * `true` if the deepest value exists; `false` otherwise.\n */\nexport function isLoaded(groupName: CldrGroup, ...args: string[]) {\n\tlet group: any = loadCache[groupName];\n\n\tif (groupName === 'main' && args.length > 0) {\n\t\tconst locale = args[0];\n\n\t\tif (!validateLocale(locale)) {\n\t\t\treturn false;\n\t\t}\n\n\t\targs = args.slice(1);\n\t\treturn generateLocales(locale).some((locale: string) => {\n\t\t\tconst next = group[locale];\n\t\t\treturn next ? isLoadedForGroup(next, args) : false;\n\t\t});\n\t}\n\n\treturn isLoadedForGroup(group, args);\n}\n\n/**\n * Load the specified CLDR data with the i18n ecosystem.\n *\n * @param data\n * A data object containing `main` and/or `supplemental` objects with CLDR data.\n */\nexport default function loadCldrData(data: CldrData): Promise<void> {\n\tregisterMain(data.main);\n\tregisterSupplemental(data.supplemental);\n\tGlobalize.load(data);\n\treturn Promise.resolve();\n}\n\n/**\n * Clear the load cache, either the entire cache for the specified group. After calling this method,\n * `isLoaded` will return false for keys within the specified group(s).\n *\n * @param group\n * An optional group name. If not provided, then both the \"main\" and \"supplemental\" caches will be cleared.\n */\nexport function reset(group?: CldrGroup) {\n\tif (group !== 'supplemental') {\n\t\tloadCache.main = Object.create(null);\n\t}\n\n\tif (group !== 'main') {\n\t\tloadCache.supplemental = generateSupplementalCache();\n\t}\n}\n"]}