dbl-utils
Version:
Utilities for dbl, adba and others projects
1 lines • 26.5 kB
Source Map (JSON)
{"version":3,"names":["cov_2j4c3pkhr1","actualCoverage","exports","trackingTexts","s","getTexts","moment_1","__importDefault","require","object_mutation_1","config","lang","dictionary","default","formatDate","formatTime","formatDateTime","formatNumber","formatNumberCompact","formatCurrency","currency","style","tasks","isTrackingText","trackingTextSet","Set","setTracking","b","f","Array","from","addDictionary","deepMerge","addFormatDate","formats","addFormatTime","addFormatDateTime","addFormatNumber","addFormatNumberCompact","addFormatCurrency","Object","values","forEach","format","addTasks","entries","key","task","removeTask","setLang","newLang","locale","getLang","selectFromDefault","text","context","dictDefault","t","add","dict1","objContext","formatGeneric","formatObject"],"sources":["/home/diablo/dev/dbl-utils/src/i18n.ts"],"sourcesContent":["import moment from \"moment\";\r\n\r\nimport { deepMerge } from \"./object-mutation\";\r\n\r\n/**\r\n * Configuration object for text translation.\r\n * @interface Config\r\n * @property {string} lang - The current language.\r\n * @property {Object} dictionary - The dictionary of translations.\r\n * @property {Object} formatDate - The date formats.\r\n * @property {Object} formatTime - The time formats.\r\n * @property {Object} formatDateTime - The date-time formats.\r\n * @property {Object} formatNumber - The number formats.\r\n * @property {Object} formatNumberCompact - The compact number formats.\r\n * @property {Object} formatCurrency - The currency formats.\r\n * @property {Object} tasks - The tasks to perform if language changes.\r\n */\r\ninterface Config {\r\n lang: string;\r\n dictionary: Record<string, any>;\r\n formatDate: Record<string, any>;\r\n formatTime: Record<string, any>;\r\n formatDateTime: Record<string, any>;\r\n formatNumber: Record<string, any>;\r\n formatNumberCompact: Record<string, any>;\r\n formatCurrency: Record<string, any>;\r\n tasks: Record<string, (lang: string) => void>;\r\n}\r\n\r\nconst config: Config = {\r\n lang: '_default',\r\n dictionary: { default: {} },\r\n formatDate: { default: 'MM/DD/YYYY' },\r\n formatTime: { default: 'HH:mm:ss' },\r\n formatDateTime: { default: 'MM/DD/YYYY HH:mm:ss' },\r\n formatNumber: { default: {} },\r\n formatNumberCompact: { default: '0.00a' },\r\n formatCurrency: { default: { currency: 'USD', style: 'currency' } },\r\n tasks: {}\r\n};\r\n\r\nlet isTrackingText = false;\nlet trackingTextSet = new Set<string>();\n\n/**\n * Enable or disable text tracking.\n * When enabled every translation key requested will be stored.\n *\n * @param setTracking - Whether tracking should be enabled\n */\nexport function trackingTexts(setTracking: boolean = true): void {\n isTrackingText = setTracking;\n}\n\n/**\n * Retrieve the list of tracked texts.\n *\n * @returns Array of unique translation keys requested\n */\nexport function getTexts(): string[] {\n return Array.from(trackingTextSet);\n}\n\r\n/**\r\n * Adds a dictionary to the configuration object.\r\n * @param {Object} dictionary - The dictionary to add.\r\n * @returns {boolean} True if added correctly, false otherwise.\r\n */\r\nexport const addDictionary = (dictionary: object): boolean => {\r\n if (typeof dictionary !== 'object') return false;\r\n deepMerge(config.dictionary, dictionary);\r\n return true;\r\n}\r\n\r\n/**\r\n * Adds date formats to the configuration object.\r\n * @param {Object} formats - The date formats to add.\r\n * @returns {boolean} True if added correctly, false otherwise.\r\n */\r\nexport const addFormatDate = (formats: object): boolean => {\r\n if (typeof formats !== 'object') return false;\r\n deepMerge(config.formatDate, formats);\r\n return true;\r\n}\r\n\r\n/**\r\n * Adds time formats to the configuration object.\r\n * @param {Object} formats - The time formats to add.\r\n * @returns {boolean} True if added correctly, false otherwise.\r\n */\r\nexport const addFormatTime = (formats: object): boolean => {\r\n if (typeof formats !== 'object') return false;\r\n deepMerge(config.formatTime, formats);\r\n return true;\r\n}\r\n\r\n/**\r\n * Adds date-time formats to the configuration object.\r\n * @param {Object} formats - The date-time formats to add.\r\n * @returns {boolean} True if added correctly, false otherwise.\r\n */\r\nexport const addFormatDateTime = (formats: object): boolean => {\r\n if (typeof formats !== 'object') return false;\r\n deepMerge(config.formatDateTime, formats);\r\n return true;\r\n}\r\n\r\n/**\r\n * Adds number formats to the configuration object.\r\n * @param {Object} formats - The number formats to add.\r\n * @returns {boolean} True if added correctly, false otherwise.\r\n */\r\nexport const addFormatNumber = (formats: object): boolean => {\r\n if (typeof formats !== 'object') return false;\r\n deepMerge(config.formatNumber, formats);\r\n return true;\r\n}\r\n\r\n/**\r\n * Adds compact number formats to the configuration object.\r\n * @param {Object} formats - The compact number formats to add.\r\n * @returns {boolean} True if added correctly, false otherwise.\r\n */\r\nexport const addFormatNumberCompact = (formats: object): boolean => {\r\n if (typeof formats !== 'object') return false;\r\n deepMerge(config.formatNumberCompact, formats);\r\n return true;\r\n}\r\n\r\n/**\r\n * Adds currency formats to the configuration object.\r\n * @param {Object} formats - The currency formats to add.\r\n * @returns {boolean} True if added correctly, false otherwise.\r\n */\r\nexport const addFormatCurrency = (formats: object): boolean => {\r\n if (typeof formats !== 'object') return false;\r\n Object.values(formats).forEach(format => (format.style = 'currency'));\r\n deepMerge(config.formatCurrency, formats);\r\n return true;\r\n}\r\n\r\n/**\r\n * Adds tasks to be executed on language change.\r\n * @param {Object} tasks - The tasks to add.\r\n * @returns {boolean} True if added correctly, false otherwise.\r\n */\r\nexport const addTasks = (tasks: Record<string, (lang: string) => void>): boolean => {\r\n Object.entries(tasks).forEach(([key, task]) => {\r\n if (typeof task === 'function') config.tasks[key] = task;\r\n });\r\n return true;\r\n}\r\n\r\n/**\r\n * Removes a specific task.\r\n * @param {string} key - The key of the task to remove.\r\n * @returns {boolean} True if removed, false otherwise.\r\n */\r\nexport const removeTask = (key: string): boolean => {\r\n if (!config.tasks[key]) return false;\r\n delete config.tasks[key];\r\n return true;\r\n}\r\n\r\n/**\r\n * Sets the current language.\r\n * @param {string} newLang - The new language to set.\r\n * @returns {boolean} True if set correctly, false otherwise.\r\n */\r\nexport const setLang = (newLang: string): boolean => {\r\n if (!newLang || config.lang === newLang) return false;\r\n moment.locale(newLang);\r\n config.lang = newLang;\r\n Object.values(config.tasks).forEach(task => task(newLang));\r\n return true;\r\n}\r\n\r\n/**\r\n * Gets the current language.\r\n * @returns {string} The current language.\r\n */\r\nexport const getLang = (): string => {\r\n return config.lang;\r\n}\r\n\r\n/**\r\n * Selects a text from the default dictionary.\r\n * @param {string} text - The text to select.\r\n * @param {string} [context] - The context of the text.\r\n * @returns {string} The selected text from the default dictionary.\r\n */\r\nconst selectFromDefault = (text: string, context?: string): string => {\r\n const dictDefault = config.dictionary.default;\r\n if (context && typeof dictDefault[context] === 'object' && dictDefault[context][text])\r\n return dictDefault[context][text];\r\n return dictDefault[text] || text;\r\n}\r\n\r\n/**\r\n * Function to translate texts.\r\n * @param {string} text - The text to translate.\r\n * @param {string} [context] - The context of the text.\r\n * @returns {string} The translated text.\r\n */\r\nconst t = (text: string, context?: string): string => {\r\n if (isTrackingText) {\r\n trackingTextSet.add(text);\r\n }\r\n\r\n if (config.lang === '_default') return selectFromDefault(text, context);\r\n const dict1 = config.dictionary[config.lang];\r\n if (typeof dict1 !== 'object') return selectFromDefault(text, context);\r\n const objContext = context && dict1[context];\r\n if (typeof objContext === 'object' && objContext[text]) return objContext[text];\r\n return dict1[text] || selectFromDefault(text);\r\n}\r\n\r\n/**\r\n * Formats a value according to the current language and context.\r\n * @param {Record<string, any>} formatObject - The configuration object to use.\r\n * @param {string} [context] - The context of the value.\r\n * @returns {string} The formatted value.\r\n */\r\nfunction formatGeneric(formatObject: Record<string, any>, context?: string): string {\r\n if (context && formatObject[context]) {\r\n return formatObject[context];\r\n } else if (config.lang !== '_default' && formatObject[config.lang]) {\r\n return context && formatObject[config.lang][context]\r\n ? formatObject[config.lang][context]\r\n : formatObject[config.lang].default || formatObject[config.lang];\r\n }\r\n return context && formatObject.default[context]\r\n ? formatObject.default[context]\r\n : formatObject.default;\r\n}\r\n\r\n/**\r\n * Formats a date according to the current language and context.\r\n * @param {string} [context] - The context of the date.\r\n * @returns {string} The formatted date.\r\n */\r\nexport const formatDate = (context?: string): string => {\r\n return formatGeneric(config.formatDate, context);\r\n}\r\n\r\n/**\r\n * Formats a time according to the current language and context.\r\n * @param {string} [context] - The context of the time.\r\n * @returns {string} The formatted time.\r\n */\r\nexport const formatTime = (context?: string): string => {\r\n return formatGeneric(config.formatTime, context);\r\n}\r\n\r\n/**\r\n * Formats a date-time according to the current language and context.\r\n * @param {string} [context] - The context of the date-time.\r\n * @returns {string} The formatted date-time.\r\n */\r\nexport const formatDateTime = (context?: string): string => {\r\n return formatGeneric(config.formatDateTime, context);\r\n}\r\n\r\n/**\r\n * Formats a number according to the current language and context.\r\n * @param {string} [context] - The context of the number.\r\n * @returns {string} The formatted number.\r\n */\r\nexport const formatNumber = (context?: string): string => {\r\n return formatGeneric(config.formatNumber, context);\r\n}\r\n\r\n/**\r\n * Formats a compact number according to the current language and context.\r\n * @param {string} [context] - The context of the compact number.\r\n * @returns {string} The formatted compact number.\r\n */\r\nexport const formatNumberCompact = (context?: string): string => {\r\n return formatGeneric(config.formatNumberCompact, context);\r\n}\r\n\r\n/**\r\n * Formats a currency according to the current language and context.\r\n * @param {string} [context] - The context of the currency.\r\n * @returns {string} The formatted currency.\r\n */\r\nexport const formatCurrency = (context?: string): string => {\r\n return formatGeneric(config.formatCurrency, context);\r\n}\r\n\r\nexport default t;\r\n\r\n\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","ignoreList":[]}