import WaitUtil from './WaitUtil'; export type SuseLanguageCode = | 'ar-ar' | 'cs-cz' | 'de-de' | 'es-es' | 'fr-fr' | 'it-it' | 'hu-hu' | 'ko-kr' | 'ja-jp' | 'nl-nl' | 'pl-pl' | 'pt-br' | 'ru-ru' | 'sv-se' | 'zh-cn' | 'zh-tw'; const SUSE_LANGUAGE_CODES: Record = { 'ar-ar': 'arb', 'cs-cz': 'ces', 'de-de': 'deu', 'es-es': 'spa', 'fr-fr': 'fra', 'it-it': 'ita', 'hu-hu': 'hun', 'ko-kr': 'kor', 'ja-jp': 'jpn', 'nl-nl': 'nld', 'pl-pl': 'pol', 'pt-br': 'por', 'ru-ru': 'rus', 'sv-se': 'swe', 'zh-cn': 'cmn', 'zh-tw': 'cmn', } as const; /** * Hack because franc is ESM only. * TODO: Fix ESM imports * * https://github.com/TypeStrong/ts-node/discussions/1290 -- hack info here * https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c */ let franc: any = null; (async () => { // eslint-disable-next-line no-new-func const dynamicImport = new Function('specifier', 'return import(specifier)'); franc = (await dynamicImport('franc-min')).franc; })(); const lang = async (text: string): Promise => { await WaitUtil.forTrue(() => Boolean(franc)); return franc?.(text) ?? null; }; const LanguageUtil = { SUSE_LANGUAGE_CODES, lang, }; export default LanguageUtil;