adnbn 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/locale.ts","../../src/locale/providers/AbstractLocale.ts","../../src/locale/utils.ts","../../src/storage/providers/AbstractStorage.ts","../../src/storage/providers/Storage.ts","../../src/cli/plugins/dotenv/utils.ts","../../src/main/env.ts","../../src/locale/providers/NativeLocale.ts","../../src/locale/providers/CustomLocale.ts","../../src/locale/providers/DynamicLocale.ts"],"names":["Language","LocaleDir","browser","storage"],"mappings":"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","file":"index.js","sourcesContent":["export enum Language {\n Arabic = \"ar\",\n Amharic = \"am\",\n Bulgarian = \"bg\",\n Bengali = \"bn\",\n Catalan = \"ca\",\n Czech = \"cs\",\n Danish = \"da\",\n German = \"de\",\n Greek = \"el\",\n English = \"en\",\n EnglishAustralia = \"en_AU\",\n EnglishGreatBritain = \"en_GB\",\n EnglishUSA = \"en_US\",\n Spanish = \"es\",\n SpanishLatinAmericaAndCaribbean = \"es_419\",\n Estonian = \"et\",\n Persian = \"fa\",\n Finnish = \"fi\",\n Filipino = \"fil\",\n French = \"fr\",\n Gujarati = \"gu\",\n Hebrew = \"he\",\n Hindi = \"hi\",\n Croatian = \"hr\",\n Hungarian = \"hu\",\n Indonesian = \"id\",\n Italian = \"it\",\n Japanese = \"ja\",\n Kannada = \"kn\",\n Korean = \"ko\",\n Lithuanian = \"lt\",\n Latvian = \"lv\",\n Malayalam = \"ml\",\n Marathi = \"mr\",\n Malay = \"ms\",\n Dutch = \"nl\",\n Norwegian = \"no\",\n Polish = \"pl\",\n PortugueseBrazil = \"pt_BR\",\n PortuguesePortugal = \"pt_PT\",\n Romanian = \"ro\",\n Russian = \"ru\",\n Slovak = \"sk\",\n Slovenian = \"sl\",\n Serbian = \"sr\",\n Swedish = \"sv\",\n Swahili = \"sw\",\n Tamil = \"ta\",\n Telugu = \"te\",\n Thai = \"th\",\n Turkish = \"tr\",\n Ukrainian = \"uk\",\n Vietnamese = \"vi\",\n ChineseChina = \"zh_CN\",\n ChineseTaiwan = \"zh_TW\",\n}\n\nexport enum LocaleDir {\n RightToLeft = \"rtl\",\n LeftToRight = \"ltr\",\n}\n\nexport const RtlLanguages: ReadonlySet<Language> = new Set([Language.Arabic, Language.Persian, Language.Hebrew]);\n\nexport const LocaleNestedKeysSeparator = \".\";\n\nexport const LocaleKeysSeparator = \"_\";\n\nexport const LocaleValuesSeparator = \"|\";\n\nexport const LocaleCustomKeyForLanguage = \"locale\";\n\nexport const LocaleKeyMarker = \"@\";\n\nexport const LanguageCodes: ReadonlySet<string> = new Set(Object.values(Language));\n\nexport const LocaleFileExtensions: ReadonlySet<string> = new Set([\"yaml\", \"yml\", \"json\"]);\n\nexport type LocaleValue = string | number | string[] | number[];\n\nexport type LocaleData = {\n [key: string]: LocaleValue | LocaleData;\n};\n\nexport type LocaleItems = Map<string, string>;\n\nexport type LocaleKeys = ReadonlySet<string>;\n\nexport type LocaleMessages = {\n [key: string]: {\n message: string;\n };\n};\n\nexport interface LocaleBuilder {\n lang(): Language;\n\n merge(data: LocaleData): this;\n\n build(): LocaleMessages;\n\n get(): LocaleItems;\n\n keys(): LocaleKeys;\n\n structure(): LocaleStructure;\n\n isValid(): boolean;\n\n validate(): this;\n}\n\nexport interface LocaleValidator {\n isValid(locale: LocaleBuilder): boolean;\n\n validate(locale: LocaleBuilder): this;\n}\n\nexport interface LocaleFutures {\n plural: boolean;\n substitutions: readonly string[];\n}\n\nexport interface LocaleStructure {\n [key: string]: LocaleFutures;\n}\n\nexport type LocaleNonPluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: false} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocalePluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: true} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocaleSubstitutionsFor<T extends LocaleStructure, K extends keyof T> = T[K] extends {\n substitutions: readonly (infer U)[];\n}\n ? Partial<Record<U & string, string | number>>\n : never;\n\nexport interface LocaleProvider<S extends LocaleStructure> {\n lang(): Language;\n\n languages(): Set<Language>;\n\n keys(): ReadonlySet<keyof S>;\n\n // non-plural keys\n trans<K extends LocaleNonPluralKeys<S>>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n\n // plural keys\n choice<K extends LocalePluralKeys<S>>(key: K, count: number, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n}\n\nexport interface LocaleDynamicProvider<S extends LocaleStructure> extends LocaleProvider<S> {\n change(lang: Language): Promise<Language>;\n}\n","import {\n Language,\n LocaleNonPluralKeys,\n LocalePluralKeys,\n LocaleProvider,\n LocaleStructure,\n LocaleSubstitutionsFor,\n LocaleValuesSeparator,\n} from \"@typing/locale\";\n\nexport default abstract class<S extends LocaleStructure> implements LocaleProvider<S> {\n public abstract lang(): Language;\n\n public abstract keys(): Set<keyof S>;\n\n public abstract languages(): Set<Language>;\n\n protected abstract value(key: keyof S & string): string | undefined;\n\n public trans<K extends LocaleNonPluralKeys<S>>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string {\n return this.get(key, substitutions);\n }\n\n public choice<K extends LocalePluralKeys<S>>(\n key: K,\n count: number,\n substitutions?: LocaleSubstitutionsFor<S, K>\n ): string {\n const parts = this.get(key, substitutions).split(LocaleValuesSeparator);\n const idx = this.getPluralIndex(count);\n return parts[idx] ?? parts[0] ?? (key as string);\n }\n\n public get<K extends keyof S & string>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string {\n const template = this.value(key);\n\n if (template === undefined) {\n console.warn(`Locale key \"${key}\" not found in \"${this.lang()}\" language.`);\n return key as string;\n }\n\n if (substitutions) {\n return template.replace(/{{(.*?)}}/g, (_, placeholder: string) => {\n if (placeholder in substitutions) {\n return substitutions[placeholder]!.toString();\n }\n console.warn(\n `Locale substitution \"${placeholder}\" not found for key \"${key}\" in \"${this.lang()}\" language.`\n );\n return placeholder;\n });\n }\n\n return template;\n }\n\n private getPluralIndex(count: number): number {\n switch (this.lang()) {\n case Language.Indonesian:\n case Language.Japanese:\n case Language.Kannada:\n case Language.Korean:\n case Language.Malay:\n case Language.Thai:\n case Language.Turkish:\n case Language.Vietnamese:\n return 0;\n\n case Language.Bengali:\n case Language.Bulgarian:\n case Language.Catalan:\n case Language.Danish:\n case Language.German:\n case Language.Greek:\n case Language.English:\n case Language.EnglishAustralia:\n case Language.EnglishGreatBritain:\n case Language.EnglishUSA:\n case Language.Spanish:\n case Language.SpanishLatinAmericaAndCaribbean:\n case Language.Estonian:\n case Language.Persian:\n case Language.Finnish:\n case Language.Gujarati:\n case Language.Hebrew:\n case Language.Hungarian:\n case Language.Italian:\n case Language.Malayalam:\n case Language.Marathi:\n case Language.Dutch:\n case Language.Norwegian:\n case Language.Swedish:\n case Language.Swahili:\n case Language.Tamil:\n case Language.Telugu:\n case Language.ChineseChina:\n case Language.ChineseTaiwan:\n case Language.PortugueseBrazil:\n case Language.PortuguesePortugal:\n return count == 1 ? 0 : 1;\n\n case Language.Amharic:\n case Language.Filipino:\n case Language.French:\n case Language.Hindi:\n return count == 0 || count == 1 ? 0 : 1;\n\n case Language.Croatian:\n case Language.Russian:\n case Language.Serbian:\n case Language.Ukrainian:\n return count % 10 == 1 && count % 100 != 11\n ? 0\n : count % 10 >= 2 && count % 10 <= 4 && (count % 100 < 10 || count % 100 >= 20)\n ? 1\n : 2;\n\n case Language.Czech:\n case Language.Slovak:\n return count == 1 ? 0 : count >= 2 && count <= 4 ? 1 : 2;\n\n case Language.Lithuanian:\n return count % 10 == 1 && count % 100 != 11\n ? 0\n : count % 10 >= 2 && (count % 100 < 10 || count % 100 >= 20)\n ? 1\n : 2;\n\n case Language.Slovenian:\n return count % 100 == 1 ? 0 : count % 100 == 2 ? 1 : count % 100 == 3 || count % 100 == 4 ? 2 : 3;\n\n case Language.Latvian:\n return count == 0 ? 0 : count % 10 == 1 && count % 100 != 11 ? 1 : 2;\n\n case Language.Polish:\n return count == 1\n ? 0\n : count % 10 >= 2 && count % 10 <= 4 && (count % 100 < 12 || count % 100 > 14)\n ? 1\n : 2;\n\n case Language.Romanian:\n return count == 1 ? 0 : count == 0 || (count % 100 > 0 && count % 100 < 20) ? 1 : 2;\n\n case Language.Arabic:\n return count == 0\n ? 0\n : count == 1\n ? 1\n : count == 2\n ? 2\n : count % 100 >= 3 && count % 100 <= 10\n ? 3\n : count % 100 >= 11 && count % 100 <= 99\n ? 4\n : 5;\n\n default:\n return 0;\n }\n }\n}\n","import {\n Language,\n LocaleDir,\n LocaleKeyMarker,\n LocaleKeysSeparator,\n LocaleMessages,\n LocaleNestedKeysSeparator,\n RtlLanguages,\n} from \"@typing/locale\";\n\nexport const getLocaleFilename = (lang: Language): string => {\n return `_locales/${lang}/messages.json`;\n};\n\nexport const convertLocaleKey = (key: string): string => {\n return key.replaceAll(LocaleNestedKeysSeparator, LocaleKeysSeparator);\n};\n\nexport const convertLocaleMessageKey = (key: string): string => {\n return `__MSG_${convertLocaleKey(key)}__`;\n};\n\nexport const extractLocaleKey = (key?: string): string | undefined => {\n if (isLocaleKey(key)) {\n return key.substring(1);\n }\n};\n\nexport const isLocaleKey = (key?: string): key is string => {\n return key?.startsWith(LocaleKeyMarker) ?? false;\n};\n\nexport const modifyLocaleMessageKey = (key?: string): string | undefined => {\n if (typeof key !== \"string\") {\n return undefined;\n }\n\n const localeKey = extractLocaleKey(key);\n\n if (localeKey) {\n return convertLocaleMessageKey(localeKey);\n }\n\n return key;\n};\n\nexport const isLocaleRtl = (lang: Language): boolean => {\n return RtlLanguages.has(lang);\n};\n\nexport const getLocaleDir = (lang: Language): LocaleDir => {\n return isLocaleRtl(lang) ? LocaleDir.RightToLeft : LocaleDir.LeftToRight;\n};\n\nexport const flattenLocaleMessages = (messages: LocaleMessages): Record<string, string> => {\n return Object.fromEntries(Object.entries(messages).map(([key, value]) => [key, value.message]));\n};\n","import {browser, throwRuntimeError} from \"@adnbn/browser\";\n\nimport {StorageProvider, StorageState, StorageWatchOptions} from \"@typing/storage\";\n\nconst storage = () => browser().storage as typeof chrome.storage;\n\ntype AreaName = chrome.storage.AreaName;\ntype StorageArea = chrome.storage.StorageArea;\ntype StorageChange = chrome.storage.StorageChange;\ntype onChangedListener = Parameters<typeof chrome.storage.onChanged.addListener>[0];\n\nexport interface StorageOptions {\n area?: AreaName;\n namespace?: string;\n}\n\nexport default abstract class AbstractStorage<T extends StorageState> implements StorageProvider<T> {\n private storage: StorageArea;\n private readonly area: AreaName;\n protected readonly namespace?: string;\n protected separator: string = \":\";\n\n public abstract clear(): Promise<void>;\n\n protected abstract getFullKey(key: keyof T): string;\n\n protected abstract getNamespaceOfKey(key: string): string | undefined;\n\n protected abstract handleChange<P extends T>(\n key: string,\n changes: StorageChange,\n options: StorageWatchOptions<P>\n ): void;\n\n protected constructor({area, namespace}: StorageOptions = {}) {\n this.area = area ?? \"local\";\n this.storage = storage()[this.area];\n this.namespace = namespace?.trim() ? namespace?.trim() : undefined;\n }\n\n public async set<K extends keyof T>(key: K, value: T[K]): Promise<void> {\n return new Promise((resolve, reject) => {\n this.storage.set({[this.getFullKey(key)]: value}, () => {\n try {\n throwRuntimeError();\n resolve();\n } catch (e) {\n reject(e);\n }\n });\n });\n }\n\n public async get<K extends keyof T>(key: K): Promise<T[K] | undefined> {\n const fullKey = this.getFullKey(key);\n return new Promise((resolve, reject) => {\n this.storage.get(fullKey, result => {\n try {\n throwRuntimeError();\n resolve(result[fullKey]);\n } catch (e) {\n reject(e);\n }\n });\n });\n }\n\n public async getAll<P extends T>(): Promise<P> {\n return new Promise((resolve, reject) => {\n this.storage.get(null, result => {\n try {\n throwRuntimeError();\n\n const formattedResult = {} as P;\n\n for (const [key, value] of Object.entries(result)) {\n if (this.isKeyValid(key)) {\n formattedResult[this.getOriginalKey(key)] = value;\n }\n }\n\n resolve(formattedResult);\n } catch (e) {\n reject(e);\n }\n });\n });\n }\n\n public async remove<K extends keyof T>(keys: K | K[]): Promise<void> {\n return new Promise((resolve, reject) => {\n const fullKeys = Array.isArray(keys) ? keys.map(key => this.getFullKey(key)) : this.getFullKey(keys);\n\n this.storage.remove(fullKeys, () => {\n try {\n throwRuntimeError();\n resolve();\n } catch (e) {\n reject(e);\n }\n });\n });\n }\n\n public watch<P extends T>(options: StorageWatchOptions<P>): () => void {\n const listener: onChangedListener = (changes: Record<string, StorageChange>, area: AreaName) => {\n if (area !== this.area) return;\n\n Object.entries(changes).forEach(async ([key, change]) => {\n if (this.isKeyValid(key)) {\n this.handleChange(key, change, options);\n }\n });\n };\n\n storage().onChanged.addListener(listener);\n\n return () => storage().onChanged.removeListener(listener);\n }\n\n protected isKeyValid(key: string): boolean {\n return this.getNamespaceOfKey(key) === this.namespace;\n }\n\n protected async triggerChange<P extends T>(key: string, changes: StorageChange, options: StorageWatchOptions<P>) {\n const {newValue, oldValue} = changes;\n const originalKey = this.getOriginalKey(key);\n\n if (typeof options === \"function\") {\n options(newValue, oldValue);\n } else if (options[originalKey]) {\n options[originalKey]?.(newValue, oldValue);\n }\n }\n\n protected getOriginalKey(key: string): keyof T {\n const fullKeyParts = key.split(this.separator);\n return fullKeyParts.length > 1 ? fullKeyParts[fullKeyParts.length - 1] : key;\n }\n}\n","import {StorageState, StorageWatchOptions} from \"@typing/storage\";\n\nimport AbstractStorage, {StorageOptions} from \"./AbstractStorage\";\n\ntype StorageChange = chrome.storage.StorageChange;\n\nexport default class Storage<T extends StorageState> extends AbstractStorage<T> {\n static Sync<T extends StorageState>(namespace?: string): Storage<T> {\n return new Storage<T>({area: \"sync\", namespace});\n }\n\n static Local<T extends StorageState>(namespace?: string): Storage<T> {\n return new Storage<T>({area: \"local\", namespace});\n }\n\n static Session<T extends StorageState>(namespace?: string): Storage<T> {\n return new Storage<T>({area: \"session\", namespace});\n }\n\n static Managed<T extends StorageState>(namespace?: string): Storage<T> {\n return new Storage<T>({area: \"managed\", namespace});\n }\n\n constructor(options: StorageOptions = {}) {\n super(options);\n }\n\n public async clear(): Promise<void> {\n const allValues = await this.getAll();\n\n await this.remove(Object.keys(allValues));\n }\n\n protected isKeyValid(key: string): boolean {\n if (!super.isKeyValid(key)) return false;\n\n const parts = key.split(this.separator);\n\n return parts.length === 1 || (parts.length === 2 && parts[0] === this.namespace);\n }\n\n protected async handleChange<P extends T>(key: string, changes: StorageChange, options: StorageWatchOptions<P>) {\n await this.triggerChange(key, changes, options);\n }\n\n protected getFullKey(key: keyof T): string {\n return this.namespace ? `${this.namespace}${this.separator}${key.toString()}` : key.toString();\n }\n\n protected getNamespaceOfKey(key: string): string | undefined {\n const fullKeyParts = key.split(this.separator);\n return fullKeyParts.length === 2 ? fullKeyParts[0] : undefined;\n }\n}\n","import {createHash} from \"crypto\";\n\nexport const generateCryptoKey = (password: string): string => {\n return createHash(\"sha256\").update(password).digest(\"base64\");\n};\n\nexport const encryptData = <T = any>(data: T, key: string): string => {\n const jsonString = JSON.stringify(data);\n const dataBytes = Array.from(jsonString, c => c.charCodeAt(0));\n const keyBytes = Array.from(key, c => c.charCodeAt(0));\n\n const encryptedBytes = dataBytes.map((byte, i) => byte ^ keyBytes[i % keyBytes.length]);\n const encryptedString = String.fromCharCode(...encryptedBytes);\n\n return btoa(encryptedString);\n};\n\nexport const decryptData = <T = any>(encrypted: string, key?: string): T => {\n const encryptedString = atob(encrypted);\n const encryptedBytes = Array.from(encryptedString, c => c.charCodeAt(0));\n let keyBytes: any[];\n try {\n //@ts-expect-error: __ADNBN_ENV_CRYPTO_KEY__ is a virtual variable generated by the bundler `src/cli/plugins/dotenv/index.ts`\n keyBytes = Array.from(key || __ADNBN_ENV_CRYPTO_KEY__, c => c.charCodeAt(0));\n } catch (err) {\n throw new Error('You need to specify the \"key\" argument for the decryptData function.');\n }\n\n const decryptedBytes = encryptedBytes.map((byte, i) => byte ^ keyBytes[i % keyBytes.length]);\n const decryptedString = String.fromCharCode(...decryptedBytes);\n\n return JSON.parse(decryptedString);\n};\n","import {Browser} from \"@typing/browser\";\nimport {ManifestVersion} from \"@typing/manifest\";\nimport {decryptData} from \"@cli/plugins/dotenv/utils\";\n\nexport const getEnv: {\n <T extends string>(key: string): T | undefined;\n <T extends string, D>(key: string, defaults: D): T | D;\n} = (() => {\n let envCache: object;\n\n return (key: string, defaults?: string) => {\n let env: object;\n\n if (typeof process.env === \"object\") {\n env = process.env;\n } else {\n envCache ??= decryptData(process.env);\n env = envCache;\n }\n\n return (env[key] ?? defaults) as any;\n };\n})();\n\nexport const getApp = (): string => {\n const app = getEnv(\"APP\");\n\n if (app === undefined) {\n throw new Error(\"App is not defined\");\n }\n\n return app;\n};\n\nexport const getBrowser = (): Browser => {\n const browser = getEnv<Browser>(\"BROWSER\");\n\n if (browser === undefined) {\n throw new Error(\"Browser is not defined\");\n }\n\n return browser;\n};\n\nexport const isBrowser = (browser: Browser): browser is Browser => {\n return getBrowser() === browser;\n};\n\nexport const getManifestVersion = (): ManifestVersion => {\n const manifestVersion = getEnv(\"MANIFEST_VERSION\", \"3\");\n\n return parseInt(manifestVersion) as ManifestVersion;\n};\n","import {getI18nMessage, getI18nUILanguage} from \"@adnbn/browser\";\n\nimport AbstractLocale from \"./AbstractLocale\";\n\nimport {convertLocaleKey} from \"@locale/utils\";\n\nimport {isBrowser} from \"@main/env\";\n\nimport {Language, LanguageCodes, LocaleCustomKeyForLanguage, LocaleProvider, LocaleStructure} from \"@typing/locale\";\nimport {Browser} from \"@typing/browser\";\n\nexport interface LocaleNativeStructure extends LocaleStructure {}\n\nexport default class NativeLocale extends AbstractLocale<LocaleNativeStructure> {\n private static instance?: LocaleProvider<LocaleNativeStructure>;\n\n public static getInstance<S extends LocaleStructure = LocaleNativeStructure>(): LocaleProvider<S> {\n return (NativeLocale.instance ??= new NativeLocale());\n }\n\n public lang(): Language {\n let lang: Language | undefined;\n\n /**\n * The Opera browser does not support RTL languages,\n * and for Opera you need to directly indicate what kind of language it is.\n * interface language is always different\n */\n if (isBrowser(Browser.Opera)) {\n lang = getI18nMessage(LocaleCustomKeyForLanguage) as Language;\n\n if (LanguageCodes.has(lang)) {\n return lang;\n }\n }\n\n lang = getI18nUILanguage() as Language;\n\n if (!lang) {\n throw new Error(\"Locale Native: Unable to get UI language\");\n }\n\n return lang;\n }\n\n public keys(): Set<keyof LocaleNativeStructure> {\n try {\n // @ts-expect-error: __ADNBN_LOCALE_KEYS__ is a virtual variable generated by the bundler `src/cli/plugins/locale/index.ts`\n return new Set<string>(__ADNBN_LOCALE_KEYS__);\n } catch (e) {\n console.error(\"Locale Native: Unable to get keys\", e);\n\n return new Set<string>();\n }\n }\n\n public languages(): Set<Language> {\n try {\n // @ts-expect-error: __ADNBN_DEFINED_LOCALES__ is a virtual variable generated by the bundler `src/cli/plugins/locale/index.ts`\n return new Set<Language>(__ADNBN_DEFINED_LOCALES__);\n } catch (e) {\n console.error(\"Locale Native: Unable to get defined locales\", e);\n\n return new Set<Language>();\n }\n }\n\n protected value(key: Extract<keyof LocaleNativeStructure, string>): string | undefined {\n const value = getI18nMessage(convertLocaleKey(key));\n\n if (!value || value.length === 0) {\n return undefined;\n }\n\n return value;\n }\n}\n","import {convertLocaleKey} from \"../utils\";\n\nimport AbstractLocale from \"./AbstractLocale\";\n\nimport {Language, LocaleStructure} from \"@typing/locale\";\n\nexport type CustomLocaleData = Record<string, string>;\n\nexport default class<T extends LocaleStructure = LocaleStructure> extends AbstractLocale<T> {\n constructor(\n protected language: Language = Language.English,\n protected data: CustomLocaleData = {}\n ) {\n super();\n }\n\n public setLang(lang: Language): this {\n this.language = lang;\n\n return this;\n }\n\n public setData(data: CustomLocaleData): this {\n this.data = data;\n\n return this;\n }\n\n public lang(): Language {\n return this.language;\n }\n\n public keys(): Set<string> {\n return new Set(Object.keys(this.data));\n }\n\n public languages(): Set<Language> {\n return new Set([this.lang()]);\n }\n\n protected value(key: string): string | undefined {\n const value = this.data[convertLocaleKey(key)];\n\n if (!value || value.length === 0) {\n return undefined;\n }\n\n return value;\n }\n}\n","import {flattenLocaleMessages, getLocaleFilename} from \"../utils\";\n\nimport {Storage} from \"../../storage\";\n\nimport NativeLocale, {LocaleNativeStructure} from \"./NativeLocale\";\nimport CustomLocale, {CustomLocaleData} from \"./CustomLocale\";\n\nimport {Language, LanguageCodes, LocaleDynamicProvider, LocaleMessages} from \"@typing/locale\";\n\nexport default class<T extends LocaleNativeStructure> extends NativeLocale implements LocaleDynamicProvider<T> {\n protected cache = new Map<Language, CustomLocaleData>();\n\n protected locale?: CustomLocale<T>;\n\n protected storage?: Storage<Record<string, Language>>;\n protected storageKey?: string;\n\n protected unsubscribe?: () => void;\n\n constructor(storage: string | false = \"lang\") {\n super();\n\n if (storage) {\n this.storageKey = storage;\n this.storage = Storage.Sync();\n }\n }\n\n public async change(lang: Language): Promise<Language> {\n if (lang === this.lang()) {\n return lang;\n }\n\n const messages = await this.fetch(lang);\n\n (this.locale ??= new CustomLocale()).setLang(lang).setData(messages);\n\n if (this.storage && this.storageKey) {\n await this.storage.set(this.storageKey, lang);\n }\n\n return lang;\n }\n\n public async sync(): Promise<Language> {\n if (!this.storage || !this.storageKey) {\n throw new Error(\"Language is not saving in storage\");\n }\n\n const lang = await this.storage.get(this.storageKey);\n\n if (!lang) {\n return this.lang();\n }\n\n if (!LanguageCodes.has(lang)) {\n console.warn(`Incorrect language code in storage - \"${lang}\"`);\n\n return this.lang();\n }\n\n return this.change(lang);\n }\n\n public watch(handler?: (lang: Language) => void): () => void {\n if (!this.storage || !this.storageKey) {\n throw new Error(\"Language is not saved in storage\");\n }\n\n if (this.unsubscribe) {\n throw new Error(\"Already subscribed to language changes in storage\");\n }\n\n this.unsubscribe = this.storage.watch({\n [this.storageKey]: newValue => {\n if (newValue) {\n this.change(newValue)\n .then(() => handler && handler(newValue))\n .catch(err => console.error(\"Error while changing language:\", err));\n }\n },\n });\n\n return this.unwatch.bind(this);\n }\n\n public unwatch(): void {\n this.unsubscribe?.();\n this.unsubscribe = undefined;\n }\n\n public lang(): Language {\n return this.locale?.lang() || super.lang();\n }\n\n protected value(key: Extract<keyof LocaleNativeStructure, string>): string | undefined {\n return this.locale?.get(key) || super.value(key);\n }\n\n protected async fetch(lang: Language): Promise<CustomLocaleData> {\n let messages = this.cache.get(lang);\n\n if (!messages) {\n const response: LocaleMessages = await (await fetch(getLocaleFilename(lang))).json();\n\n if (!response || typeof response !== \"object\") {\n throw new Error(`Invalid or empty locale data for \"${lang}\"`);\n }\n\n messages = flattenLocaleMessages(response);\n\n this.cache.set(lang, messages);\n }\n\n return messages;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/types/locale.ts","../../src/locale/providers/AbstractLocale.ts","../../src/locale/utils.ts","../../src/storage/providers/AbstractStorage.ts","../../src/storage/providers/Storage.ts","../../src/cli/plugins/dotenv/utils.ts","../../src/main/env.ts","../../src/locale/providers/NativeLocale.ts","../../src/locale/providers/CustomLocale.ts","../../src/locale/providers/DynamicLocale.ts","../../src/locale/helpers.ts"],"names":["Language","LocaleDir","_","browser","storage"],"mappings":"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","file":"index.js","sourcesContent":["export enum Language {\n Arabic = \"ar\",\n Amharic = \"am\",\n Bulgarian = \"bg\",\n Bengali = \"bn\",\n Catalan = \"ca\",\n Czech = \"cs\",\n Danish = \"da\",\n German = \"de\",\n Greek = \"el\",\n English = \"en\",\n EnglishAustralia = \"en_AU\",\n EnglishGreatBritain = \"en_GB\",\n EnglishUSA = \"en_US\",\n Spanish = \"es\",\n SpanishLatinAmericaAndCaribbean = \"es_419\",\n Estonian = \"et\",\n Persian = \"fa\",\n Finnish = \"fi\",\n Filipino = \"fil\",\n French = \"fr\",\n Gujarati = \"gu\",\n Hebrew = \"he\",\n Hindi = \"hi\",\n Croatian = \"hr\",\n Hungarian = \"hu\",\n Indonesian = \"id\",\n Italian = \"it\",\n Japanese = \"ja\",\n Kannada = \"kn\",\n Korean = \"ko\",\n Lithuanian = \"lt\",\n Latvian = \"lv\",\n Malayalam = \"ml\",\n Marathi = \"mr\",\n Malay = \"ms\",\n Dutch = \"nl\",\n Norwegian = \"no\",\n Polish = \"pl\",\n PortugueseBrazil = \"pt_BR\",\n PortuguesePortugal = \"pt_PT\",\n Romanian = \"ro\",\n Russian = \"ru\",\n Slovak = \"sk\",\n Slovenian = \"sl\",\n Serbian = \"sr\",\n Swedish = \"sv\",\n Swahili = \"sw\",\n Tamil = \"ta\",\n Telugu = \"te\",\n Thai = \"th\",\n Turkish = \"tr\",\n Ukrainian = \"uk\",\n Vietnamese = \"vi\",\n ChineseChina = \"zh_CN\",\n ChineseTaiwan = \"zh_TW\",\n}\n\nexport enum LocaleDir {\n RightToLeft = \"rtl\",\n LeftToRight = \"ltr\",\n}\n\nexport const RtlLanguages: ReadonlySet<Language> = new Set([Language.Arabic, Language.Persian, Language.Hebrew]);\n\nexport const LocaleNestedKeysSeparator = \".\";\n\nexport const LocaleKeysSeparator = \"_\";\n\nexport const LocaleValuesSeparator = \"|\";\n\nexport const LocaleCustomKeyForLanguage = \"locale\";\n\nexport const LocaleKeyMarker = \"@\";\n\nexport const LanguageCodes: ReadonlySet<string> = new Set(Object.values(Language));\n\nexport const LocaleFileExtensions: ReadonlySet<string> = new Set([\"yaml\", \"yml\", \"json\"]);\n\nexport type LocaleValue = string | number | string[] | number[];\n\nexport type LocaleData = {\n [key: string]: LocaleValue | LocaleData;\n};\n\nexport type LocaleItems = Map<string, string>;\n\nexport type LocaleKeys = ReadonlySet<string>;\n\nexport type LocaleMessages = {\n [key: string]: {\n message: string;\n };\n};\n\nexport interface LocaleBuilder {\n lang(): Language;\n\n merge(data: LocaleData): this;\n\n build(): LocaleMessages;\n\n get(): LocaleItems;\n\n keys(): LocaleKeys;\n\n structure(): LocaleStructure;\n\n isValid(): boolean;\n\n validate(): this;\n}\n\nexport interface LocaleValidator {\n isValid(locale: LocaleBuilder): boolean;\n\n validate(locale: LocaleBuilder): this;\n}\n\nexport interface LocaleFutures {\n plural: boolean;\n substitutions: readonly string[];\n}\n\nexport interface LocaleStructure {\n [key: string]: LocaleFutures;\n}\n\nexport type LocaleNonPluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: false} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocalePluralKeys<T extends LocaleStructure> = {\n [K in keyof T]: T[K] extends {plural: true} ? K : never;\n}[keyof T] &\n string;\n\nexport type LocaleSubstitutionsFor<T extends LocaleStructure, K extends keyof T> = T[K] extends {\n substitutions: readonly (infer U)[];\n}\n ? Partial<Record<U & string, string | number>>\n : never;\n\nexport interface LocaleProvider<S extends LocaleStructure> {\n lang(): Language;\n\n languages(): Set<Language>;\n\n keys(): ReadonlySet<keyof S>;\n\n // non-plural keys\n trans<K extends LocaleNonPluralKeys<S>>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n\n // plural keys\n choice<K extends LocalePluralKeys<S>>(key: K, count: number, substitutions?: LocaleSubstitutionsFor<S, K>): string;\n}\n\nexport interface LocaleDynamicProvider<S extends LocaleStructure> extends LocaleProvider<S> {\n change(lang: Language): Promise<Language>;\n}\n","import {\n Language,\n LocaleNonPluralKeys,\n LocalePluralKeys,\n LocaleProvider,\n LocaleStructure,\n LocaleSubstitutionsFor,\n LocaleValuesSeparator,\n} from \"@typing/locale\";\n\nexport default abstract class<S extends LocaleStructure> implements LocaleProvider<S> {\n public abstract lang(): Language;\n\n public abstract keys(): Set<keyof S>;\n\n public abstract languages(): Set<Language>;\n\n protected abstract value(key: keyof S & string): string | undefined;\n\n public trans<K extends LocaleNonPluralKeys<S>>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string {\n return this.get(key, substitutions);\n }\n\n public choice<K extends LocalePluralKeys<S>>(\n key: K,\n count: number,\n substitutions?: LocaleSubstitutionsFor<S, K>\n ): string {\n const parts = this.get(key, substitutions).split(LocaleValuesSeparator);\n const idx = this.getPluralIndex(count);\n return parts[idx] ?? parts[0] ?? (key as string);\n }\n\n public get<K extends keyof S & string>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string {\n const template = this.value(key);\n\n if (template === undefined) {\n console.warn(`Locale key \"${key}\" not found in \"${this.lang()}\" language.`);\n return key as string;\n }\n\n if (substitutions) {\n return template.replace(/{{(.*?)}}/g, (_, placeholder: string) => {\n if (placeholder in substitutions) {\n return substitutions[placeholder]!.toString();\n }\n console.warn(\n `Locale substitution \"${placeholder}\" not found for key \"${key}\" in \"${this.lang()}\" language.`\n );\n return placeholder;\n });\n }\n\n return template;\n }\n\n private getPluralIndex(count: number): number {\n switch (this.lang()) {\n case Language.Indonesian:\n case Language.Japanese:\n case Language.Kannada:\n case Language.Korean:\n case Language.Malay:\n case Language.Thai:\n case Language.Turkish:\n case Language.Vietnamese:\n return 0;\n\n case Language.Bengali:\n case Language.Bulgarian:\n case Language.Catalan:\n case Language.Danish:\n case Language.German:\n case Language.Greek:\n case Language.English:\n case Language.EnglishAustralia:\n case Language.EnglishGreatBritain:\n case Language.EnglishUSA:\n case Language.Spanish:\n case Language.SpanishLatinAmericaAndCaribbean:\n case Language.Estonian:\n case Language.Persian:\n case Language.Finnish:\n case Language.Gujarati:\n case Language.Hebrew:\n case Language.Hungarian:\n case Language.Italian:\n case Language.Malayalam:\n case Language.Marathi:\n case Language.Dutch:\n case Language.Norwegian:\n case Language.Swedish:\n case Language.Swahili:\n case Language.Tamil:\n case Language.Telugu:\n case Language.ChineseChina:\n case Language.ChineseTaiwan:\n case Language.PortugueseBrazil:\n case Language.PortuguesePortugal:\n return count == 1 ? 0 : 1;\n\n case Language.Amharic:\n case Language.Filipino:\n case Language.French:\n case Language.Hindi:\n return count == 0 || count == 1 ? 0 : 1;\n\n case Language.Croatian:\n case Language.Russian:\n case Language.Serbian:\n case Language.Ukrainian:\n return count % 10 == 1 && count % 100 != 11\n ? 0\n : count % 10 >= 2 && count % 10 <= 4 && (count % 100 < 10 || count % 100 >= 20)\n ? 1\n : 2;\n\n case Language.Czech:\n case Language.Slovak:\n return count == 1 ? 0 : count >= 2 && count <= 4 ? 1 : 2;\n\n case Language.Lithuanian:\n return count % 10 == 1 && count % 100 != 11\n ? 0\n : count % 10 >= 2 && (count % 100 < 10 || count % 100 >= 20)\n ? 1\n : 2;\n\n case Language.Slovenian:\n return count % 100 == 1 ? 0 : count % 100 == 2 ? 1 : count % 100 == 3 || count % 100 == 4 ? 2 : 3;\n\n case Language.Latvian:\n return count == 0 ? 0 : count % 10 == 1 && count % 100 != 11 ? 1 : 2;\n\n case Language.Polish:\n return count == 1\n ? 0\n : count % 10 >= 2 && count % 10 <= 4 && (count % 100 < 12 || count % 100 > 14)\n ? 1\n : 2;\n\n case Language.Romanian:\n return count == 1 ? 0 : count == 0 || (count % 100 > 0 && count % 100 < 20) ? 1 : 2;\n\n case Language.Arabic:\n return count == 0\n ? 0\n : count == 1\n ? 1\n : count == 2\n ? 2\n : count % 100 >= 3 && count % 100 <= 10\n ? 3\n : count % 100 >= 11 && count % 100 <= 99\n ? 4\n : 5;\n\n default:\n return 0;\n }\n }\n}\n","import {\n Language,\n LocaleDir,\n LocaleKeyMarker,\n LocaleKeysSeparator,\n LocaleMessages,\n LocaleNestedKeysSeparator,\n RtlLanguages,\n} from \"@typing/locale\";\n\nexport const getLocaleFilename = (lang: Language): string => {\n return `_locales/${lang}/messages.json`;\n};\n\nexport const convertLocaleKey = (key: string): string => {\n return key.replaceAll(LocaleNestedKeysSeparator, LocaleKeysSeparator);\n};\n\nexport const convertLocaleMessageKey = (key: string): string => {\n return `__MSG_${convertLocaleKey(key)}__`;\n};\n\nexport const extractLocaleKey = (key?: string): string | undefined => {\n if (isLocaleKey(key)) {\n return key.substring(1);\n }\n};\n\nexport const isLocaleKey = (key?: string): key is string => {\n return key?.startsWith(LocaleKeyMarker) ?? false;\n};\n\nexport const modifyLocaleMessageKey = (key?: string): string | undefined => {\n if (typeof key !== \"string\") {\n return undefined;\n }\n\n const localeKey = extractLocaleKey(key);\n\n if (localeKey) {\n return convertLocaleMessageKey(localeKey);\n }\n\n return key;\n};\n\nexport const isLocaleRtl = (lang: Language): boolean => {\n return RtlLanguages.has(lang);\n};\n\nexport const getLocaleDir = (lang: Language): LocaleDir => {\n return isLocaleRtl(lang) ? LocaleDir.RightToLeft : LocaleDir.LeftToRight;\n};\n\nexport const flattenLocaleMessages = (messages: LocaleMessages): Record<string, string> => {\n return Object.fromEntries(Object.entries(messages).map(([key, value]) => [key, value.message]));\n};\n","import {browser, throwRuntimeError} from \"@adnbn/browser\";\n\nimport {StorageProvider, StorageState, StorageWatchOptions} from \"@typing/storage\";\n\nconst storage = () => browser().storage as typeof chrome.storage;\n\ntype AreaName = chrome.storage.AreaName;\ntype StorageArea = chrome.storage.StorageArea;\ntype StorageChange = chrome.storage.StorageChange;\ntype onChangedListener = Parameters<typeof chrome.storage.onChanged.addListener>[0];\n\nexport interface StorageOptions {\n area?: AreaName;\n namespace?: string;\n}\n\nexport default abstract class AbstractStorage<T extends StorageState> implements StorageProvider<T> {\n private storage: StorageArea;\n private readonly area: AreaName;\n protected readonly namespace?: string;\n protected separator: string = \":\";\n\n public abstract clear(): Promise<void>;\n\n protected abstract getFullKey(key: keyof T): string;\n\n protected abstract getNamespaceOfKey(key: string): string | undefined;\n\n protected abstract handleChange<P extends T>(\n key: string,\n changes: StorageChange,\n options: StorageWatchOptions<P>\n ): void;\n\n protected constructor({area, namespace}: StorageOptions = {}) {\n this.area = area ?? \"local\";\n this.storage = storage()[this.area];\n this.namespace = namespace?.trim() ? namespace?.trim() : undefined;\n }\n\n public async set<K extends keyof T>(key: K, value: T[K]): Promise<void> {\n return new Promise((resolve, reject) => {\n this.storage.set({[this.getFullKey(key)]: value}, () => {\n try {\n throwRuntimeError();\n resolve();\n } catch (e) {\n reject(e);\n }\n });\n });\n }\n\n public async get<K extends keyof T>(key: K): Promise<T[K] | undefined> {\n const fullKey = this.getFullKey(key);\n return new Promise((resolve, reject) => {\n this.storage.get(fullKey, result => {\n try {\n throwRuntimeError();\n resolve(result[fullKey]);\n } catch (e) {\n reject(e);\n }\n });\n });\n }\n\n public async getAll<P extends T>(): Promise<P> {\n return new Promise((resolve, reject) => {\n this.storage.get(null, result => {\n try {\n throwRuntimeError();\n\n const formattedResult = {} as P;\n\n for (const [key, value] of Object.entries(result)) {\n if (this.isKeyValid(key)) {\n formattedResult[this.getOriginalKey(key)] = value;\n }\n }\n\n resolve(formattedResult);\n } catch (e) {\n reject(e);\n }\n });\n });\n }\n\n public async remove<K extends keyof T>(keys: K | K[]): Promise<void> {\n return new Promise((resolve, reject) => {\n const fullKeys = Array.isArray(keys) ? keys.map(key => this.getFullKey(key)) : this.getFullKey(keys);\n\n this.storage.remove(fullKeys, () => {\n try {\n throwRuntimeError();\n resolve();\n } catch (e) {\n reject(e);\n }\n });\n });\n }\n\n public watch<P extends T>(options: StorageWatchOptions<P>): () => void {\n const listener: onChangedListener = (changes: Record<string, StorageChange>, area: AreaName) => {\n if (area !== this.area) return;\n\n Object.entries(changes).forEach(async ([key, change]) => {\n if (this.isKeyValid(key)) {\n this.handleChange(key, change, options);\n }\n });\n };\n\n storage().onChanged.addListener(listener);\n\n return () => storage().onChanged.removeListener(listener);\n }\n\n protected isKeyValid(key: string): boolean {\n return this.getNamespaceOfKey(key) === this.namespace;\n }\n\n protected async triggerChange<P extends T>(key: string, changes: StorageChange, options: StorageWatchOptions<P>) {\n const {newValue, oldValue} = changes;\n const originalKey = this.getOriginalKey(key);\n\n if (typeof options === \"function\") {\n options(newValue, oldValue);\n } else if (options[originalKey]) {\n options[originalKey]?.(newValue, oldValue);\n }\n }\n\n protected getOriginalKey(key: string): keyof T {\n const fullKeyParts = key.split(this.separator);\n return fullKeyParts.length > 1 ? fullKeyParts[fullKeyParts.length - 1] : key;\n }\n}\n","import {StorageState, StorageWatchOptions} from \"@typing/storage\";\n\nimport AbstractStorage, {StorageOptions} from \"./AbstractStorage\";\n\ntype StorageChange = chrome.storage.StorageChange;\n\nexport default class Storage<T extends StorageState> extends AbstractStorage<T> {\n static Sync<T extends StorageState>(namespace?: string): Storage<T> {\n return new Storage<T>({area: \"sync\", namespace});\n }\n\n static Local<T extends StorageState>(namespace?: string): Storage<T> {\n return new Storage<T>({area: \"local\", namespace});\n }\n\n static Session<T extends StorageState>(namespace?: string): Storage<T> {\n return new Storage<T>({area: \"session\", namespace});\n }\n\n static Managed<T extends StorageState>(namespace?: string): Storage<T> {\n return new Storage<T>({area: \"managed\", namespace});\n }\n\n constructor(options: StorageOptions = {}) {\n super(options);\n }\n\n public async clear(): Promise<void> {\n const allValues = await this.getAll();\n\n await this.remove(Object.keys(allValues));\n }\n\n protected isKeyValid(key: string): boolean {\n if (!super.isKeyValid(key)) return false;\n\n const parts = key.split(this.separator);\n\n return parts.length === 1 || (parts.length === 2 && parts[0] === this.namespace);\n }\n\n protected async handleChange<P extends T>(key: string, changes: StorageChange, options: StorageWatchOptions<P>) {\n await this.triggerChange(key, changes, options);\n }\n\n protected getFullKey(key: keyof T): string {\n return this.namespace ? `${this.namespace}${this.separator}${key.toString()}` : key.toString();\n }\n\n protected getNamespaceOfKey(key: string): string | undefined {\n const fullKeyParts = key.split(this.separator);\n return fullKeyParts.length === 2 ? fullKeyParts[0] : undefined;\n }\n}\n","import {createHash} from \"crypto\";\n\nexport const generateCryptoKey = (password: string): string => {\n return createHash(\"sha256\").update(password).digest(\"base64\");\n};\n\nexport const encryptData = <T = any>(data: T, key: string): string => {\n const jsonString = JSON.stringify(data);\n const dataBytes = Array.from(jsonString, c => c.charCodeAt(0));\n const keyBytes = Array.from(key, c => c.charCodeAt(0));\n\n const encryptedBytes = dataBytes.map((byte, i) => byte ^ keyBytes[i % keyBytes.length]);\n const encryptedString = String.fromCharCode(...encryptedBytes);\n\n return btoa(encryptedString);\n};\n\nexport const decryptData = <T = any>(encrypted: string, key?: string): T => {\n const encryptedString = atob(encrypted);\n const encryptedBytes = Array.from(encryptedString, c => c.charCodeAt(0));\n let keyBytes: any[];\n try {\n //@ts-expect-error: __ADNBN_ENV_CRYPTO_KEY__ is a virtual variable generated by the bundler `src/cli/plugins/dotenv/index.ts`\n keyBytes = Array.from(key || __ADNBN_ENV_CRYPTO_KEY__, c => c.charCodeAt(0));\n } catch (err) {\n throw new Error('You need to specify the \"key\" argument for the decryptData function.');\n }\n\n const decryptedBytes = encryptedBytes.map((byte, i) => byte ^ keyBytes[i % keyBytes.length]);\n const decryptedString = String.fromCharCode(...decryptedBytes);\n\n return JSON.parse(decryptedString);\n};\n","import {Browser} from \"@typing/browser\";\nimport {ManifestVersion} from \"@typing/manifest\";\nimport {decryptData} from \"@cli/plugins/dotenv/utils\";\n\nexport const getEnv: {\n <T extends string>(key: string): T | undefined;\n <T extends string, D>(key: string, defaults: D): T | D;\n} = (() => {\n let envCache: object;\n\n return (key: string, defaults?: string) => {\n let env: object;\n\n if (typeof process.env === \"object\") {\n env = process.env;\n } else {\n envCache ??= decryptData(process.env);\n env = envCache;\n }\n\n return (env[key] ?? defaults) as any;\n };\n})();\n\nexport const getApp = (): string => {\n const app = getEnv(\"APP\");\n\n if (app === undefined) {\n throw new Error(\"App is not defined\");\n }\n\n return app;\n};\n\nexport const getBrowser = (): Browser => {\n const browser = getEnv<Browser>(\"BROWSER\");\n\n if (browser === undefined) {\n throw new Error(\"Browser is not defined\");\n }\n\n return browser;\n};\n\nexport const isBrowser = (browser: Browser): browser is Browser => {\n return getBrowser() === browser;\n};\n\nexport const getManifestVersion = (): ManifestVersion => {\n const manifestVersion = getEnv(\"MANIFEST_VERSION\", \"3\");\n\n return parseInt(manifestVersion) as ManifestVersion;\n};\n","import {getI18nMessage, getI18nUILanguage} from \"@adnbn/browser\";\n\nimport AbstractLocale from \"./AbstractLocale\";\n\nimport {convertLocaleKey} from \"@locale/utils\";\n\nimport {isBrowser} from \"@main/env\";\n\nimport {Language, LanguageCodes, LocaleCustomKeyForLanguage, LocaleProvider, LocaleStructure} from \"@typing/locale\";\nimport {Browser} from \"@typing/browser\";\n\nexport interface LocaleNativeStructure extends LocaleStructure {}\n\nexport default class NativeLocale extends AbstractLocale<LocaleNativeStructure> {\n private static instance?: LocaleProvider<LocaleNativeStructure>;\n\n public static getInstance<S extends LocaleStructure = LocaleNativeStructure>(): LocaleProvider<S> {\n return (NativeLocale.instance ??= new NativeLocale());\n }\n\n public lang(): Language {\n let lang: Language | undefined;\n\n /**\n * The Opera browser does not support RTL languages,\n * and for Opera you need to directly indicate what kind of language it is.\n * interface language is always different\n */\n if (isBrowser(Browser.Opera)) {\n lang = getI18nMessage(LocaleCustomKeyForLanguage) as Language;\n\n if (LanguageCodes.has(lang)) {\n return lang;\n }\n }\n\n lang = getI18nUILanguage() as Language;\n\n if (!lang) {\n throw new Error(\"Locale Native: Unable to get UI language\");\n }\n\n return lang;\n }\n\n public keys(): Set<keyof LocaleNativeStructure> {\n try {\n // @ts-expect-error: __ADNBN_LOCALE_KEYS__ is a virtual variable generated by the bundler `src/cli/plugins/locale/index.ts`\n return new Set<string>(__ADNBN_LOCALE_KEYS__);\n } catch (e) {\n console.error(\"Locale Native: Unable to get keys\", e);\n\n return new Set<string>();\n }\n }\n\n public languages(): Set<Language> {\n try {\n // @ts-expect-error: __ADNBN_DEFINED_LOCALES__ is a virtual variable generated by the bundler `src/cli/plugins/locale/index.ts`\n return new Set<Language>(__ADNBN_DEFINED_LOCALES__);\n } catch (e) {\n console.error(\"Locale Native: Unable to get defined locales\", e);\n\n return new Set<Language>();\n }\n }\n\n protected value(key: Extract<keyof LocaleNativeStructure, string>): string | undefined {\n const value = getI18nMessage(convertLocaleKey(key));\n\n if (!value || value.length === 0) {\n return undefined;\n }\n\n return value;\n }\n}\n","import {convertLocaleKey} from \"../utils\";\n\nimport AbstractLocale from \"./AbstractLocale\";\n\nimport {Language, LocaleStructure} from \"@typing/locale\";\n\nexport type CustomLocaleData = Record<string, string>;\n\nexport default class<T extends LocaleStructure = LocaleStructure> extends AbstractLocale<T> {\n constructor(\n protected language: Language = Language.English,\n protected data: CustomLocaleData = {}\n ) {\n super();\n }\n\n public setLang(lang: Language): this {\n this.language = lang;\n\n return this;\n }\n\n public setData(data: CustomLocaleData): this {\n this.data = data;\n\n return this;\n }\n\n public lang(): Language {\n return this.language;\n }\n\n public keys(): Set<string> {\n return new Set(Object.keys(this.data));\n }\n\n public languages(): Set<Language> {\n return new Set([this.lang()]);\n }\n\n protected value(key: string): string | undefined {\n const value = this.data[convertLocaleKey(key)];\n\n if (!value || value.length === 0) {\n return undefined;\n }\n\n return value;\n }\n}\n","import {flattenLocaleMessages, getLocaleFilename} from \"../utils\";\n\nimport {Storage} from \"../../storage\";\n\nimport NativeLocale, {LocaleNativeStructure} from \"./NativeLocale\";\nimport CustomLocale, {CustomLocaleData} from \"./CustomLocale\";\n\nimport {Language, LanguageCodes, LocaleDynamicProvider, LocaleMessages} from \"@typing/locale\";\n\nexport default class<T extends LocaleNativeStructure> extends NativeLocale implements LocaleDynamicProvider<T> {\n protected cache = new Map<Language, CustomLocaleData>();\n\n protected locale?: CustomLocale<T>;\n\n protected storage?: Storage<Record<string, Language>>;\n protected storageKey?: string;\n\n protected unsubscribe?: () => void;\n\n constructor(storage: string | false = \"lang\") {\n super();\n\n if (storage) {\n this.storageKey = storage;\n this.storage = Storage.Sync();\n }\n }\n\n public async change(lang: Language): Promise<Language> {\n if (lang === this.lang()) {\n return lang;\n }\n\n const messages = await this.fetch(lang);\n\n (this.locale ??= new CustomLocale()).setLang(lang).setData(messages);\n\n if (this.storage && this.storageKey) {\n await this.storage.set(this.storageKey, lang);\n }\n\n return lang;\n }\n\n public async sync(): Promise<Language> {\n if (!this.storage || !this.storageKey) {\n throw new Error(\"Language is not saving in storage\");\n }\n\n const lang = await this.storage.get(this.storageKey);\n\n if (!lang) {\n return this.lang();\n }\n\n if (!LanguageCodes.has(lang)) {\n console.warn(`Incorrect language code in storage - \"${lang}\"`);\n\n return this.lang();\n }\n\n return this.change(lang);\n }\n\n public watch(handler?: (lang: Language) => void): () => void {\n if (!this.storage || !this.storageKey) {\n throw new Error(\"Language is not saved in storage\");\n }\n\n if (this.unsubscribe) {\n throw new Error(\"Already subscribed to language changes in storage\");\n }\n\n this.unsubscribe = this.storage.watch({\n [this.storageKey]: newValue => {\n if (newValue) {\n this.change(newValue)\n .then(() => handler && handler(newValue))\n .catch(err => console.error(\"Error while changing language:\", err));\n }\n },\n });\n\n return this.unwatch.bind(this);\n }\n\n public unwatch(): void {\n this.unsubscribe?.();\n this.unsubscribe = undefined;\n }\n\n public lang(): Language {\n return this.locale?.lang() || super.lang();\n }\n\n protected value(key: Extract<keyof LocaleNativeStructure, string>): string | undefined {\n return this.locale?.get(key) || super.value(key);\n }\n\n protected async fetch(lang: Language): Promise<CustomLocaleData> {\n let messages = this.cache.get(lang);\n\n if (!messages) {\n const response: LocaleMessages = await (await fetch(getLocaleFilename(lang))).json();\n\n if (!response || typeof response !== \"object\") {\n throw new Error(`Invalid or empty locale data for \"${lang}\"`);\n }\n\n messages = flattenLocaleMessages(response);\n\n this.cache.set(lang, messages);\n }\n\n return messages;\n }\n}\n","import {LocaleNativeStructure, NativeLocale} from \"@locale/providers\";\nimport {convertLocaleMessageKey, extractLocaleKey} from \"@locale/utils\";\nimport {LocaleNonPluralKeys, LocalePluralKeys, LocaleSubstitutionsFor} from \"@typing/locale\";\n\n/**\n * Translates a given locale key into the corresponding localized string.\n *\n * @template K - A type representing the non-plural keys of the locale structure.\n * @param {K} key - The locale key to be translated.\n * @param {LocaleSubstitutionsFor<LocaleNativeStructure, K>} [substitutions] - Optional substitutions to be applied\n * within the localized string. These are typically placeholders replaced with dynamic values.\n * @returns {string} - The translated string for the given key, with substitutions applied if provided.\n */\nexport const _ = <K extends LocaleNonPluralKeys<LocaleNativeStructure>>(\n key: K,\n substitutions?: LocaleSubstitutionsFor<LocaleNativeStructure, K>\n): string => {\n return NativeLocale.getInstance().trans(key, substitutions);\n};\n\n/**\n * Translates a given locale key into the corresponding localized string\n * based on a specific count for pluralization.\n *\n * @template K - A type representing the non-plural keys of the locale structure.\n * @param {K} key - The locale key to be translated.\n * @param {number} count - The count used to determine the pluralization form.\n * @param {LocaleSubstitutionsFor<LocaleNativeStructure, K>} [substitutions] - Optional substitutions to be applied\n * within the localized string. These are typically placeholders replaced with dynamic values.\n * @returns {string} - The translated string for the given key, adjusted for pluralization and with substitutions applied if provided.\n */\nexport const _c = <K extends LocalePluralKeys<LocaleNativeStructure>>(\n key: K,\n count: number,\n substitutions?: LocaleSubstitutionsFor<LocaleNativeStructure, K>\n): string => {\n return NativeLocale.getInstance().choice(key, count, substitutions);\n};\n\n/**\n * Converts a locale key into a standardized format and logs a warning if the key is not found\n * in the current language's locale keys.\n *\n * @param {Extract<keyof LocaleNativeStructure, string>} key - The locale key to be converted.\n * This key must be a string and exist within the `LocaleNativeStructure`.\n * @returns {string} - The converted locale message key.\n */\nexport const __ = (key: keyof LocaleNativeStructure & string): string => {\n const locale = NativeLocale.getInstance();\n\n if (!locale.keys().has(key)) {\n console.warn(`Locale key \"${key}\" not found in \"${locale.lang()}\" language.`);\n }\n\n return convertLocaleMessageKey(key);\n};\n\n/**\n * Attempts to extract a locale key from the provided string and translates it\n * into the corresponding localized string. If no locale key can be extracted,\n * the original string is returned.\n *\n * @param {string} input - The input string from which a locale key is to be extracted.\n * @returns {string} - The translated string if a locale key is successfully extracted,\n * or the original string if no locale key is found.\n */\nexport const __t = (input: string): string => {\n const localeKey = extractLocaleKey(input);\n\n if (localeKey) {\n return _(localeKey as LocaleNonPluralKeys<LocaleNativeStructure>);\n }\n\n return input;\n};\n"]}
@@ -1,5 +1,6 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
- import { L as LocaleStructure, b as LocaleNativeStructure, a as Language, f as LocaleDir, j as LocaleNonPluralKeys, i as LocaleSubstitutionsFor, k as LocalePluralKeys } from '../../NativeLocale-lgR6wNj3.mjs';
2
+ import { L as LocaleStructure, a as Language, b as LocaleDir, c as LocaleNonPluralKeys, d as LocaleSubstitutionsFor, e as LocalePluralKeys } from '../../locale-Do4kUmgC.mjs';
3
+ import { L as LocaleNativeStructure } from '../../NativeLocale-BwVCqh2v.mjs';
3
4
 
4
5
  interface LocaleProviderProps {
5
6
  storage?: string | false;
@@ -1,5 +1,6 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
- import { L as LocaleStructure, b as LocaleNativeStructure, a as Language, f as LocaleDir, j as LocaleNonPluralKeys, i as LocaleSubstitutionsFor, k as LocalePluralKeys } from '../../NativeLocale-lgR6wNj3.js';
2
+ import { L as LocaleStructure, a as Language, b as LocaleDir, c as LocaleNonPluralKeys, d as LocaleSubstitutionsFor, e as LocalePluralKeys } from '../../locale-Do4kUmgC.js';
3
+ import { L as LocaleNativeStructure } from '../../NativeLocale-C_gjXClM.js';
3
4
 
4
5
  interface LocaleProviderProps {
5
6
  storage?: string | false;
@@ -92,26 +92,4 @@ interface LocaleDynamicProvider<S extends LocaleStructure> extends LocaleProvide
92
92
  change(lang: Language): Promise<Language>;
93
93
  }
94
94
 
95
- declare abstract class export_default<S extends LocaleStructure> implements LocaleProvider<S> {
96
- abstract lang(): Language;
97
- abstract keys(): Set<keyof S>;
98
- abstract languages(): Set<Language>;
99
- protected abstract value(key: keyof S & string): string | undefined;
100
- trans<K extends LocaleNonPluralKeys<S>>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string;
101
- choice<K extends LocalePluralKeys<S>>(key: K, count: number, substitutions?: LocaleSubstitutionsFor<S, K>): string;
102
- get<K extends keyof S & string>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string;
103
- private getPluralIndex;
104
- }
105
-
106
- interface LocaleNativeStructure extends LocaleStructure {
107
- }
108
- declare class NativeLocale extends export_default<LocaleNativeStructure> {
109
- private static instance?;
110
- static getInstance<S extends LocaleStructure = LocaleNativeStructure>(): LocaleProvider<S>;
111
- lang(): Language;
112
- keys(): Set<keyof LocaleNativeStructure>;
113
- languages(): Set<Language>;
114
- protected value(key: Extract<keyof LocaleNativeStructure, string>): string | undefined;
115
- }
116
-
117
- export { type LocaleStructure as L, NativeLocale as N, Language as a, type LocaleNativeStructure as b, type LocaleDynamicProvider as c, LanguageCodes as d, export_default as e, LocaleDir as f, type LocaleProvider as g, type LocaleKeys as h, type LocaleSubstitutionsFor as i, type LocaleNonPluralKeys as j, type LocalePluralKeys as k };
95
+ export { type LocaleStructure as L, Language as a, LocaleDir as b, type LocaleNonPluralKeys as c, type LocaleSubstitutionsFor as d, type LocalePluralKeys as e, type LocaleProvider as f, type LocaleDynamicProvider as g, LanguageCodes as h, type LocaleKeys as i };
@@ -92,26 +92,4 @@ interface LocaleDynamicProvider<S extends LocaleStructure> extends LocaleProvide
92
92
  change(lang: Language): Promise<Language>;
93
93
  }
94
94
 
95
- declare abstract class export_default<S extends LocaleStructure> implements LocaleProvider<S> {
96
- abstract lang(): Language;
97
- abstract keys(): Set<keyof S>;
98
- abstract languages(): Set<Language>;
99
- protected abstract value(key: keyof S & string): string | undefined;
100
- trans<K extends LocaleNonPluralKeys<S>>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string;
101
- choice<K extends LocalePluralKeys<S>>(key: K, count: number, substitutions?: LocaleSubstitutionsFor<S, K>): string;
102
- get<K extends keyof S & string>(key: K, substitutions?: LocaleSubstitutionsFor<S, K>): string;
103
- private getPluralIndex;
104
- }
105
-
106
- interface LocaleNativeStructure extends LocaleStructure {
107
- }
108
- declare class NativeLocale extends export_default<LocaleNativeStructure> {
109
- private static instance?;
110
- static getInstance<S extends LocaleStructure = LocaleNativeStructure>(): LocaleProvider<S>;
111
- lang(): Language;
112
- keys(): Set<keyof LocaleNativeStructure>;
113
- languages(): Set<Language>;
114
- protected value(key: Extract<keyof LocaleNativeStructure, string>): string | undefined;
115
- }
116
-
117
- export { type LocaleStructure as L, NativeLocale as N, Language as a, type LocaleNativeStructure as b, type LocaleDynamicProvider as c, LanguageCodes as d, export_default as e, LocaleDir as f, type LocaleProvider as g, type LocaleKeys as h, type LocaleSubstitutionsFor as i, type LocaleNonPluralKeys as j, type LocalePluralKeys as k };
95
+ export { type LocaleStructure as L, Language as a, LocaleDir as b, type LocaleNonPluralKeys as c, type LocaleSubstitutionsFor as d, type LocalePluralKeys as e, type LocaleProvider as f, type LocaleDynamicProvider as g, LanguageCodes as h, type LocaleKeys as i };
@@ -78,6 +78,46 @@ var Offscreen_default = class extends BaseTransport_default {
78
78
  }
79
79
  };
80
80
 
81
+ // src/cli/plugins/dotenv/utils.ts
82
+ var decryptData = (encrypted, key) => {
83
+ const encryptedString = atob(encrypted);
84
+ const encryptedBytes = Array.from(encryptedString, (c) => c.charCodeAt(0));
85
+ let keyBytes;
86
+ try {
87
+ keyBytes = Array.from(key || __ADNBN_ENV_CRYPTO_KEY__, (c) => c.charCodeAt(0));
88
+ } catch (err) {
89
+ throw new Error('You need to specify the "key" argument for the decryptData function.');
90
+ }
91
+ const decryptedBytes = encryptedBytes.map((byte, i) => byte ^ keyBytes[i % keyBytes.length]);
92
+ const decryptedString = String.fromCharCode(...decryptedBytes);
93
+ return JSON.parse(decryptedString);
94
+ };
95
+
96
+ // src/main/env.ts
97
+ var getEnv = /* @__PURE__ */ (() => {
98
+ let envCache;
99
+ return (key, defaults) => {
100
+ let env;
101
+ if (typeof process.env === "object") {
102
+ env = process.env;
103
+ } else {
104
+ envCache ?? (envCache = decryptData(process.env));
105
+ env = envCache;
106
+ }
107
+ return env[key] ?? defaults;
108
+ };
109
+ })();
110
+ var getBrowser = () => {
111
+ const browser2 = getEnv("BROWSER");
112
+ if (browser2 === void 0) {
113
+ throw new Error("Browser is not defined");
114
+ }
115
+ return browser2;
116
+ };
117
+ var isBrowser = (browser2) => {
118
+ return getBrowser() === browser2;
119
+ };
120
+
81
121
  // src/types/locale.ts
82
122
  var Language = /* @__PURE__ */ ((Language5) => {
83
123
  Language5["Arabic"] = "ar";
@@ -259,48 +299,6 @@ var extractLocaleKey = (key) => {
259
299
  var isLocaleKey = (key) => {
260
300
  return (key == null ? void 0 : key.startsWith(LocaleKeyMarker)) ?? false;
261
301
  };
262
-
263
- // src/cli/plugins/dotenv/utils.ts
264
- var decryptData = (encrypted, key) => {
265
- const encryptedString = atob(encrypted);
266
- const encryptedBytes = Array.from(encryptedString, (c) => c.charCodeAt(0));
267
- let keyBytes;
268
- try {
269
- keyBytes = Array.from(key || __ADNBN_ENV_CRYPTO_KEY__, (c) => c.charCodeAt(0));
270
- } catch (err) {
271
- throw new Error('You need to specify the "key" argument for the decryptData function.');
272
- }
273
- const decryptedBytes = encryptedBytes.map((byte, i) => byte ^ keyBytes[i % keyBytes.length]);
274
- const decryptedString = String.fromCharCode(...decryptedBytes);
275
- return JSON.parse(decryptedString);
276
- };
277
-
278
- // src/main/env.ts
279
- var getEnv = /* @__PURE__ */ (() => {
280
- let envCache;
281
- return (key, defaults) => {
282
- let env;
283
- if (typeof process.env === "object") {
284
- env = process.env;
285
- } else {
286
- envCache ?? (envCache = decryptData(process.env));
287
- env = envCache;
288
- }
289
- return env[key] ?? defaults;
290
- };
291
- })();
292
- var getBrowser = () => {
293
- const browser2 = getEnv("BROWSER");
294
- if (browser2 === void 0) {
295
- throw new Error("Browser is not defined");
296
- }
297
- return browser2;
298
- };
299
- var isBrowser = (browser2) => {
300
- return getBrowser() === browser2;
301
- };
302
-
303
- // src/locale/providers/NativeLocale.ts
304
302
  var NativeLocale = class _NativeLocale extends AbstractLocale_default {
305
303
  static instance;
306
304
  static getInstance() {
@@ -345,7 +343,7 @@ var NativeLocale = class _NativeLocale extends AbstractLocale_default {
345
343
  }
346
344
  };
347
345
 
348
- // src/main/locale.ts
346
+ // src/locale/helpers.ts
349
347
  var _ = (key, substitutions) => {
350
348
  return NativeLocale.getInstance().trans(key, substitutions);
351
349
  };