@let-value/translate 1.0.22 → 1.0.23

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.
package/dist/index.cjs CHANGED
@@ -222,12 +222,12 @@ var LocaleTranslator = class {
222
222
  this.locale = locale;
223
223
  this.translations = translations ? normalizeTranslations(translations) : void 0;
224
224
  }
225
- resolveMessage(message$1, context$1 = "") {
225
+ resolveMessage = (message$1, context$1 = "") => {
226
226
  const entry = this.translations?.translations?.[context$1]?.[message$1.msgid];
227
227
  const template = selectTemplate(entry?.msgstr?.[0], message$1.msgstr);
228
228
  return applyValues(template, message$1);
229
- }
230
- resolvePluralForm(message$1, context$1 = "") {
229
+ };
230
+ resolvePluralForm = (message$1, context$1 = "") => {
231
231
  const entry = this.translations?.translations?.[context$1]?.[message$1.forms[0].msgid];
232
232
  const index = pluralFunc(this.locale)(message$1.n);
233
233
  const forms = message$1.forms;
@@ -236,34 +236,34 @@ var LocaleTranslator = class {
236
236
  const templateCandidate = translatedForms?.length ? translatedForms[index] ?? translatedForms[translatedForms.length - 1] : void 0;
237
237
  const template = selectTemplate(templateCandidate, selectedForm.msgstr);
238
238
  return applyValues(template, selectedForm, forms[0]);
239
- }
240
- translateValue(message$1) {
239
+ };
240
+ translateValue = (message$1) => {
241
241
  if (isContextPluralMessage(message$1)) return this.resolvePluralForm(message$1.id, message$1.context);
242
242
  if (isContextMessage(message$1)) return this.resolveMessage(message$1.id, message$1.context);
243
243
  if (isPluralMessage(message$1)) return this.resolvePluralForm(message$1);
244
244
  return this.resolveMessage(message$1);
245
- }
246
- translateMessage(args, context$1) {
245
+ };
246
+ translateMessage = (args, context$1) => {
247
247
  const message$1 = message(...args);
248
248
  return this.resolveMessage(message$1, context$1);
249
- }
250
- translatePlural(args, context$1) {
249
+ };
250
+ translatePlural = (args, context$1) => {
251
251
  const message$1 = plural(...args);
252
252
  return this.resolvePluralForm(message$1, context$1);
253
- }
254
- translate(message$1) {
253
+ };
254
+ translate = (message$1) => {
255
255
  return this.translateValue(message$1);
256
- }
256
+ };
257
257
  message = (...args) => this.translateMessage(args);
258
258
  plural = (...args) => this.translatePlural(args);
259
- context(...args) {
259
+ context = (...args) => {
260
260
  const [source] = args;
261
261
  const context$1 = typeof source === "string" ? source : source[0];
262
262
  return {
263
263
  message: (...args$1) => this.translateMessage(args$1, context$1),
264
264
  plural: (...args$1) => this.translatePlural(args$1, context$1)
265
265
  };
266
- }
266
+ };
267
267
  gettext = (...args) => this.message(...args);
268
268
  ngettext = (...args) => this.plural(...args);
269
269
  pgettext = (context$1, ...args) => this.translateMessage(args, context$1);
@@ -284,11 +284,11 @@ var Translator = class {
284
284
  else this.translations[locale] = resolveTranslationModule(value);
285
285
  }
286
286
  }
287
- async loadLocale(locale, loader) {
287
+ loadLocale = async (locale, loader) => {
288
288
  this.loaders[locale] = loader ?? this.loaders[locale];
289
289
  return this.fetchLocale(locale);
290
- }
291
- getLocale(locale) {
290
+ };
291
+ getLocale = (locale) => {
292
292
  const key = locale;
293
293
  const existing = this.translators[key];
294
294
  if (existing) return existing;
@@ -308,8 +308,8 @@ var Translator = class {
308
308
  }
309
309
  this.translators[key] ??= new LocaleTranslator(key);
310
310
  return this.translators[key];
311
- }
312
- fetchLocale(locale) {
311
+ };
312
+ fetchLocale = (locale) => {
313
313
  const key = locale;
314
314
  const pending = this.pending[key];
315
315
  if (pending) return pending;
@@ -325,7 +325,7 @@ var Translator = class {
325
325
  return promise;
326
326
  }
327
327
  return this.getLocale(key);
328
- }
328
+ };
329
329
  };
330
330
 
331
331
  //#endregion
package/dist/index.d.cts CHANGED
@@ -97,22 +97,15 @@ declare class LocaleTranslator {
97
97
  locale: Locale;
98
98
  translations?: GetTextTranslations;
99
99
  constructor(locale: Locale, translations?: GetTextTranslations);
100
- resolveMessage(message: Message, context?: string): string;
101
- resolvePluralForm(message: PluralMessage, context?: string): string;
102
- translateValue(message: AnyTranslationMessage): string;
103
- translateMessage<T extends string>(args: MessageArgs<T>, context?: string): string;
104
- translatePlural(args: PluralArgs, context?: string): string;
105
- translate(message: Message): string;
106
- translate(message: PluralMessage): string;
107
- translate(message: ContextMessage): string;
108
- translate(message: ContextPluralMessage): string;
100
+ resolveMessage: (message: Message, context?: string) => string;
101
+ resolvePluralForm: (message: PluralMessage, context?: string) => string;
102
+ translateValue: (message: AnyTranslationMessage) => string;
103
+ translateMessage: <T extends string>(args: MessageArgs<T>, context?: string) => string;
104
+ translatePlural: (args: PluralArgs, context?: string) => string;
105
+ translate: (message: Message | PluralMessage | ContextMessage | ContextPluralMessage) => string;
109
106
  message: <T extends string>(...args: MessageArgs<T>) => string;
110
107
  plural: (...args: PluralArgs) => string;
111
- context<T extends string>(context: StrictStaticString<T>): {
112
- message: <U extends string>(...args: MessageArgs<U>) => string;
113
- plural: (...args: PluralArgs) => string;
114
- };
115
- context(strings: TemplateStringsArray, ...values: never[]): {
108
+ context: <T extends string>(...args: [StrictStaticString<T>] | [TemplateStringsArray, ...never[]]) => {
116
109
  message: <U extends string>(...args: MessageArgs<U>) => string;
117
110
  plural: (...args: PluralArgs) => string;
118
111
  };
@@ -128,9 +121,9 @@ declare class Translator<T extends TranslationRecord = TranslationRecord> {
128
121
  pending: Partial<Record<Locale, Promise<LocaleTranslator>>>;
129
122
  translators: Partial<Record<Locale, LocaleTranslator>>;
130
123
  constructor(translations: T, parent?: Translator);
131
- loadLocale(locale: Locale, loader?: TranslationLoader): Promise<LocaleTranslator>;
132
- getLocale<L extends SyncLocaleKeys<T>>(locale: L): LocaleTranslator;
133
- fetchLocale<L extends keyof T>(locale: L): LocaleTranslator | Promise<LocaleTranslator>;
124
+ loadLocale: (locale: Locale, loader?: TranslationLoader) => Promise<LocaleTranslator>;
125
+ getLocale: <L extends SyncLocaleKeys<T>>(locale: L) => LocaleTranslator;
126
+ fetchLocale: <L extends keyof T>(locale: L) => LocaleTranslator | Promise<LocaleTranslator>;
134
127
  }
135
128
  //#endregion
136
129
  export { Configuration, ContextBuilder, ContextMessage, ContextMessageFunction, ContextPluralFunction, ContextPluralMessage, IsUnion, Locale, LocaleTranslator, Message, MessageArgs, MessageDescriptor, MessageFunction, MessageInput, PluralArgs, type PluralFormsLocale, PluralFunction, PluralInput, PluralMessage, StrictStaticString, Translator, assert, context, memo, mergeTranslations, message, normalizeMessageId, normalizeTranslations, plural, pluralFunc, substitute };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/locales.ts","../src/config.ts","../src/utils.ts","../src/messages.ts","../src/translator.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/locales.ts","../src/config.ts","../src/utils.ts","../src/messages.ts","../src/translator.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -97,22 +97,15 @@ declare class LocaleTranslator {
97
97
  locale: Locale;
98
98
  translations?: GetTextTranslations;
99
99
  constructor(locale: Locale, translations?: GetTextTranslations);
100
- resolveMessage(message: Message, context?: string): string;
101
- resolvePluralForm(message: PluralMessage, context?: string): string;
102
- translateValue(message: AnyTranslationMessage): string;
103
- translateMessage<T extends string>(args: MessageArgs<T>, context?: string): string;
104
- translatePlural(args: PluralArgs, context?: string): string;
105
- translate(message: Message): string;
106
- translate(message: PluralMessage): string;
107
- translate(message: ContextMessage): string;
108
- translate(message: ContextPluralMessage): string;
100
+ resolveMessage: (message: Message, context?: string) => string;
101
+ resolvePluralForm: (message: PluralMessage, context?: string) => string;
102
+ translateValue: (message: AnyTranslationMessage) => string;
103
+ translateMessage: <T extends string>(args: MessageArgs<T>, context?: string) => string;
104
+ translatePlural: (args: PluralArgs, context?: string) => string;
105
+ translate: (message: Message | PluralMessage | ContextMessage | ContextPluralMessage) => string;
109
106
  message: <T extends string>(...args: MessageArgs<T>) => string;
110
107
  plural: (...args: PluralArgs) => string;
111
- context<T extends string>(context: StrictStaticString<T>): {
112
- message: <U extends string>(...args: MessageArgs<U>) => string;
113
- plural: (...args: PluralArgs) => string;
114
- };
115
- context(strings: TemplateStringsArray, ...values: never[]): {
108
+ context: <T extends string>(...args: [StrictStaticString<T>] | [TemplateStringsArray, ...never[]]) => {
116
109
  message: <U extends string>(...args: MessageArgs<U>) => string;
117
110
  plural: (...args: PluralArgs) => string;
118
111
  };
@@ -128,9 +121,9 @@ declare class Translator<T extends TranslationRecord = TranslationRecord> {
128
121
  pending: Partial<Record<Locale, Promise<LocaleTranslator>>>;
129
122
  translators: Partial<Record<Locale, LocaleTranslator>>;
130
123
  constructor(translations: T, parent?: Translator);
131
- loadLocale(locale: Locale, loader?: TranslationLoader): Promise<LocaleTranslator>;
132
- getLocale<L extends SyncLocaleKeys<T>>(locale: L): LocaleTranslator;
133
- fetchLocale<L extends keyof T>(locale: L): LocaleTranslator | Promise<LocaleTranslator>;
124
+ loadLocale: (locale: Locale, loader?: TranslationLoader) => Promise<LocaleTranslator>;
125
+ getLocale: <L extends SyncLocaleKeys<T>>(locale: L) => LocaleTranslator;
126
+ fetchLocale: <L extends keyof T>(locale: L) => LocaleTranslator | Promise<LocaleTranslator>;
134
127
  }
135
128
  //#endregion
136
129
  export { Configuration, ContextBuilder, ContextMessage, ContextMessageFunction, ContextPluralFunction, ContextPluralMessage, IsUnion, Locale, LocaleTranslator, Message, MessageArgs, MessageDescriptor, MessageFunction, MessageInput, PluralArgs, type PluralFormsLocale, PluralFunction, PluralInput, PluralMessage, StrictStaticString, Translator, assert, context, memo, mergeTranslations, message, normalizeMessageId, normalizeTranslations, plural, pluralFunc, substitute };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/locales.ts","../src/config.ts","../src/utils.ts","../src/messages.ts","../src/translator.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/locales.ts","../src/config.ts","../src/utils.ts","../src/messages.ts","../src/translator.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -198,12 +198,12 @@ var LocaleTranslator = class {
198
198
  this.locale = locale;
199
199
  this.translations = translations ? normalizeTranslations(translations) : void 0;
200
200
  }
201
- resolveMessage(message$1, context$1 = "") {
201
+ resolveMessage = (message$1, context$1 = "") => {
202
202
  const entry = this.translations?.translations?.[context$1]?.[message$1.msgid];
203
203
  const template = selectTemplate(entry?.msgstr?.[0], message$1.msgstr);
204
204
  return applyValues(template, message$1);
205
- }
206
- resolvePluralForm(message$1, context$1 = "") {
205
+ };
206
+ resolvePluralForm = (message$1, context$1 = "") => {
207
207
  const entry = this.translations?.translations?.[context$1]?.[message$1.forms[0].msgid];
208
208
  const index = pluralFunc(this.locale)(message$1.n);
209
209
  const forms = message$1.forms;
@@ -212,34 +212,34 @@ var LocaleTranslator = class {
212
212
  const templateCandidate = translatedForms?.length ? translatedForms[index] ?? translatedForms[translatedForms.length - 1] : void 0;
213
213
  const template = selectTemplate(templateCandidate, selectedForm.msgstr);
214
214
  return applyValues(template, selectedForm, forms[0]);
215
- }
216
- translateValue(message$1) {
215
+ };
216
+ translateValue = (message$1) => {
217
217
  if (isContextPluralMessage(message$1)) return this.resolvePluralForm(message$1.id, message$1.context);
218
218
  if (isContextMessage(message$1)) return this.resolveMessage(message$1.id, message$1.context);
219
219
  if (isPluralMessage(message$1)) return this.resolvePluralForm(message$1);
220
220
  return this.resolveMessage(message$1);
221
- }
222
- translateMessage(args, context$1) {
221
+ };
222
+ translateMessage = (args, context$1) => {
223
223
  const message$1 = message(...args);
224
224
  return this.resolveMessage(message$1, context$1);
225
- }
226
- translatePlural(args, context$1) {
225
+ };
226
+ translatePlural = (args, context$1) => {
227
227
  const message$1 = plural(...args);
228
228
  return this.resolvePluralForm(message$1, context$1);
229
- }
230
- translate(message$1) {
229
+ };
230
+ translate = (message$1) => {
231
231
  return this.translateValue(message$1);
232
- }
232
+ };
233
233
  message = (...args) => this.translateMessage(args);
234
234
  plural = (...args) => this.translatePlural(args);
235
- context(...args) {
235
+ context = (...args) => {
236
236
  const [source] = args;
237
237
  const context$1 = typeof source === "string" ? source : source[0];
238
238
  return {
239
239
  message: (...args$1) => this.translateMessage(args$1, context$1),
240
240
  plural: (...args$1) => this.translatePlural(args$1, context$1)
241
241
  };
242
- }
242
+ };
243
243
  gettext = (...args) => this.message(...args);
244
244
  ngettext = (...args) => this.plural(...args);
245
245
  pgettext = (context$1, ...args) => this.translateMessage(args, context$1);
@@ -260,11 +260,11 @@ var Translator = class {
260
260
  else this.translations[locale] = resolveTranslationModule(value);
261
261
  }
262
262
  }
263
- async loadLocale(locale, loader) {
263
+ loadLocale = async (locale, loader) => {
264
264
  this.loaders[locale] = loader ?? this.loaders[locale];
265
265
  return this.fetchLocale(locale);
266
- }
267
- getLocale(locale) {
266
+ };
267
+ getLocale = (locale) => {
268
268
  const key = locale;
269
269
  const existing = this.translators[key];
270
270
  if (existing) return existing;
@@ -284,8 +284,8 @@ var Translator = class {
284
284
  }
285
285
  this.translators[key] ??= new LocaleTranslator(key);
286
286
  return this.translators[key];
287
- }
288
- fetchLocale(locale) {
287
+ };
288
+ fetchLocale = (locale) => {
289
289
  const key = locale;
290
290
  const pending = this.pending[key];
291
291
  if (pending) return pending;
@@ -301,7 +301,7 @@ var Translator = class {
301
301
  return promise;
302
302
  }
303
303
  return this.getLocale(key);
304
- }
304
+ };
305
305
  };
306
306
 
307
307
  //#endregion
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["message","placeholders: string[]","index","normalized: GetTextTranslations","context","pluralFunc","result: GetTextTranslations","id","message","args","plural","message","context","buildMessage","buildPlural","args"],"sources":["../src/utils.ts","../src/messages.ts","../src/translator.ts"],"sourcesContent":["import type { GetTextTranslationRecord, GetTextTranslations } from \"gettext-parser\";\nimport { getNPlurals, getPluralFunc } from \"plural-forms\";\n\nimport type { Locale } from \"./config.ts\";\n\n// biome-ignore lint/suspicious/noExplicitAny: true\nexport type IsUnion<T, U = T> = (T extends any ? (x: T) => 0 : never) extends (x: U) => 0 ? false : true;\n\nexport type StrictStaticString<T extends string> = string extends T ? never : IsUnion<T> extends true ? never : T;\n\nexport function assert<T>(value: T, message?: string): asserts value is T {\n if (!value) {\n throw new Error(message || \"Assertion failed\");\n }\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: true\nexport function memo<T extends (...args: any[]) => any>(fn: T): T {\n const cache = new Map<string, ReturnType<T>>();\n return ((...args: Parameters<T>): ReturnType<T> => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n // biome-ignore lint/style/noNonNullAssertion: true\n return cache.get(key)!;\n }\n const result = fn(...args);\n cache.set(key, result);\n return result;\n }) as T;\n}\n\nexport function substitute(text: string, values: unknown[] = []): string {\n const placeholders: string[] = [];\n\n return text.replace(/\\$\\{([^}]+)\\}/g, (match, placeholder) => {\n if (/^\\d+$/.test(placeholder)) {\n const index = Number(placeholder);\n return index < values.length ? String(values[index]) : match;\n }\n\n let index = placeholders.indexOf(placeholder);\n if (index === -1) {\n index = placeholders.length;\n placeholders.push(placeholder);\n }\n\n return index < values.length ? String(values[index]) : match;\n });\n}\n\nexport function normalizeMessageId(msgid: string): string {\n const placeholders: string[] = [];\n return msgid.replace(/\\$\\{([^}]+)\\}/g, (match, placeholder) => {\n if (/^\\d+$/.test(placeholder)) {\n return match;\n }\n\n let index = placeholders.indexOf(placeholder);\n if (index === -1) {\n index = placeholders.length;\n placeholders.push(placeholder);\n }\n return `\\${${index}}`;\n });\n}\n\nexport function normalizeTranslations(translations: GetTextTranslations): GetTextTranslations {\n const normalized: GetTextTranslations = {\n ...translations,\n translations: {},\n };\n\n for (const [context, messages] of Object.entries(translations.translations)) {\n normalized.translations[context] = {};\n for (const [msgid, entry] of Object.entries(messages)) {\n const normalizedId = normalizeMessageId(msgid);\n normalized.translations[context][normalizedId] = entry;\n }\n }\n\n return normalized;\n}\n\nconst defaultPluralFunc = (n: number) => (n !== 1 ? 1 : 0);\n\nexport const pluralFunc = memo(function pluralFunc(locale: Locale) {\n try {\n const length = Number(getNPlurals(locale));\n if (length === 1) {\n return () => 0;\n }\n const pluralFunc = getPluralFunc(locale);\n const forms = Array.from({ length }, (_, i) => String(i));\n return (n: number) => {\n const idx = Number(pluralFunc(n, forms));\n if (!Number.isFinite(idx) || idx < 0) return 0;\n if (idx >= length) return length - 1;\n return Math.floor(idx);\n };\n } catch {\n return defaultPluralFunc;\n }\n});\n\nexport function mergeTranslations(\n primary: GetTextTranslations,\n ...others: (GetTextTranslations | undefined)[]\n): GetTextTranslations {\n function mergeRecords(target: GetTextTranslationRecord, source: GetTextTranslationRecord): void {\n for (const ctx in source) {\n if (!target[ctx]) {\n target[ctx] = source[ctx];\n continue;\n }\n\n const targetContext = target[ctx];\n const sourceContext = source[ctx];\n for (const id in sourceContext) {\n if (!targetContext[id]) {\n targetContext[id] = sourceContext[id];\n }\n }\n }\n }\n\n const result: GetTextTranslations = {\n charset: primary.charset,\n headers: { ...primary.headers },\n translations: { ...primary.translations },\n obsolete: primary.obsolete ? { ...primary.obsolete } : undefined,\n };\n\n for (const other of others) {\n if (other?.translations) {\n mergeRecords(result.translations, other.translations);\n }\n\n if (other?.obsolete) {\n if (!result.obsolete) {\n result.obsolete = other.obsolete;\n } else {\n mergeRecords(result.obsolete, other.obsolete);\n }\n }\n }\n\n return result;\n}\n","import { assert, type StrictStaticString } from \"./utils.ts\";\n\nexport interface MessageDescriptor {\n id?: string;\n message?: string;\n}\n\nexport interface Message {\n msgid: string;\n msgstr: string;\n // biome-ignore lint/suspicious/noExplicitAny: true\n values?: any[];\n}\n\nexport interface PluralMessage {\n forms: Message[];\n n: number;\n}\n\nexport interface ContextMessage {\n context: string;\n id: Message;\n}\n\nexport interface ContextPluralMessage {\n context: string;\n id: PluralMessage;\n}\n\nfunction buildFromTemplate(strings: TemplateStringsArray): string {\n let result = \"\";\n for (let i = 0; i < strings.length; i++) {\n result += strings[i];\n if (i < strings.length - 1) result += `\\${${i}}`;\n }\n return result;\n}\n\nexport type MessageArgs<T extends string> =\n | [id: StrictStaticString<T>]\n | [descriptor: MessageDescriptor]\n | [strings: TemplateStringsArray, ...values: unknown[]];\n\nexport type MessageFunction = <T extends string>(...args: MessageArgs<T>) => Message;\n\nexport function message<T extends string>(...args: MessageArgs<T>): Message {\n const [source, ...values] = args as [MessageDescriptor | TemplateStringsArray, ...unknown[]];\n\n if (typeof source === \"string\") {\n return { msgid: source, msgstr: source };\n }\n\n if (typeof source === \"object\" && \"reduce\" in source) {\n const id = buildFromTemplate(source);\n return { msgid: id, msgstr: id, values };\n }\n\n const id = source.id ?? source.message ?? \"\";\n const message = source.message ?? source.id ?? \"\";\n return { msgid: id, msgstr: message };\n}\n\nexport type PluralArgs = [...forms: Message[], n: number];\n\nexport function plural(...args: PluralArgs): PluralMessage {\n assert(args.length > 1, \"At least one plural form and n are required\");\n\n const n = args[args.length - 1] as number;\n assert(typeof n === \"number\", \"The last argument must be a number\");\n\n const forms = args.slice(0, -1) as Message[];\n\n return { forms, n };\n}\n\nexport type PluralFunction = (...args: PluralArgs) => PluralMessage;\nexport type MessageInput<T extends string = string> = [Message] | MessageArgs<T>;\nexport type PluralInput = [PluralMessage] | PluralArgs;\n\nexport type ContextMessageFunction = <T extends string>(...args: MessageArgs<T>) => ContextMessage;\n\nexport type ContextPluralFunction = (...args: PluralArgs) => ContextPluralMessage;\n\nexport interface ContextBuilder {\n message: ContextMessageFunction;\n plural: ContextPluralFunction;\n}\n\nconst baseMessage = message;\nconst basePlural = plural;\n\nexport function context<T extends string>(context: StrictStaticString<T>): ContextBuilder;\nexport function context(strings: TemplateStringsArray, ...values: never[]): ContextBuilder;\nexport function context<T extends string>(\n ...args: [StrictStaticString<T>] | [TemplateStringsArray, ...never[]]\n): ContextBuilder {\n const [source] = args as [StrictStaticString<T> | TemplateStringsArray];\n\n const ctx = typeof source === \"string\" ? source : source[0];\n\n function message<T extends string>(...args: MessageArgs<T>): ContextMessage {\n return { id: baseMessage(...args), context: ctx };\n }\n\n function plural(...forms: PluralArgs): ContextPluralMessage {\n return { id: basePlural(...forms), context: ctx };\n }\n\n return {\n message,\n plural,\n };\n}\n","import type { GetTextTranslations } from \"gettext-parser\";\nimport type { Locale } from \"./config.ts\";\n\nimport {\n message as buildMessage,\n plural as buildPlural,\n type ContextMessage,\n type ContextPluralMessage,\n type Message,\n type MessageArgs,\n type PluralArgs,\n type PluralMessage,\n} from \"./messages.ts\";\nimport { mergeTranslations, normalizeTranslations, pluralFunc, type StrictStaticString, substitute } from \"./utils.ts\";\n\ntype TranslationModule = GetTextTranslations | { default: GetTextTranslations };\ntype TranslationLoader = () => Promise<TranslationModule>;\ntype TranslationEntry = TranslationModule | Promise<TranslationModule> | TranslationLoader;\ntype TranslationRecord = Partial<Record<Locale, TranslationEntry>>;\ntype SyncLocaleKeys<T> = {\n [K in keyof T]: T[K] extends GetTextTranslations ? K : never;\n}[keyof T];\n\nfunction selectValues(message: Message | undefined, fallback?: Message): unknown[] | undefined {\n const values = message?.values;\n if (values?.length) {\n return values;\n }\n return fallback?.values;\n}\n\nfunction selectTemplate(preferred: string | undefined, fallback: string): string {\n return preferred?.length ? preferred : fallback;\n}\n\nfunction applyValues(template: string, message: Message | undefined, fallback?: Message): string {\n const values = selectValues(message, fallback);\n return values?.length ? substitute(template, values) : template;\n}\n\nfunction isPluralMessage(value: unknown): value is PluralMessage {\n return Boolean(value) && typeof value === \"object\" && \"forms\" in (value as PluralMessage);\n}\n\nfunction isContextMessage(value: unknown): value is ContextMessage {\n if (!value || typeof value !== \"object\" || !(\"id\" in value)) {\n return false;\n }\n const candidate = (value as ContextMessage).id;\n return !isPluralMessage(candidate);\n}\n\nfunction isContextPluralMessage(value: unknown): value is ContextPluralMessage {\n if (!value || typeof value !== \"object\" || !(\"id\" in value)) {\n return false;\n }\n const candidate = (value as ContextPluralMessage).id;\n return isPluralMessage(candidate);\n}\n\ntype AnyTranslationMessage = Message | PluralMessage | ContextMessage | ContextPluralMessage;\n\nfunction resolveTranslationModule(module: TranslationModule): GetTextTranslations {\n return \"default\" in module ? module.default : module;\n}\n\nexport class LocaleTranslator {\n locale: Locale;\n translations?: GetTextTranslations;\n\n constructor(locale: Locale, translations?: GetTextTranslations) {\n this.locale = locale;\n this.translations = translations ? normalizeTranslations(translations) : undefined;\n }\n\n resolveMessage(message: Message, context = \"\"): string {\n const entry = this.translations?.translations?.[context]?.[message.msgid];\n const template = selectTemplate(entry?.msgstr?.[0], message.msgstr);\n return applyValues(template, message);\n }\n\n resolvePluralForm(message: PluralMessage, context = \"\"): string {\n const entry = this.translations?.translations?.[context]?.[message.forms[0].msgid];\n const index = pluralFunc(this.locale)(message.n);\n const forms = message.forms;\n const selectedForm = forms[index] ?? forms[forms.length - 1];\n const translatedForms = entry?.msgstr;\n const templateCandidate = translatedForms?.length\n ? (translatedForms[index] ?? translatedForms[translatedForms.length - 1])\n : undefined;\n const template = selectTemplate(templateCandidate, selectedForm.msgstr);\n return applyValues(template, selectedForm, forms[0]);\n }\n\n translateValue(message: AnyTranslationMessage): string {\n if (isContextPluralMessage(message)) {\n return this.resolvePluralForm(message.id, message.context);\n }\n\n if (isContextMessage(message)) {\n return this.resolveMessage(message.id, message.context);\n }\n\n if (isPluralMessage(message)) {\n return this.resolvePluralForm(message);\n }\n\n return this.resolveMessage(message);\n }\n\n translateMessage<T extends string>(args: MessageArgs<T>, context?: string): string {\n const message = buildMessage(...args);\n return this.resolveMessage(message, context);\n }\n\n translatePlural(args: PluralArgs, context?: string): string {\n const message = buildPlural(...args);\n return this.resolvePluralForm(message, context);\n }\n\n translate(message: Message): string;\n translate(message: PluralMessage): string;\n translate(message: ContextMessage): string;\n translate(message: ContextPluralMessage): string;\n translate(message: Message | PluralMessage | ContextMessage | ContextPluralMessage): string {\n return this.translateValue(message);\n }\n\n message = <T extends string>(...args: MessageArgs<T>): string => this.translateMessage(args);\n plural = (...args: PluralArgs): string => this.translatePlural(args);\n\n context<T extends string>(\n context: StrictStaticString<T>,\n ): {\n message: <U extends string>(...args: MessageArgs<U>) => string;\n plural: (...args: PluralArgs) => string;\n };\n context(\n strings: TemplateStringsArray,\n ...values: never[]\n ): {\n message: <U extends string>(...args: MessageArgs<U>) => string;\n plural: (...args: PluralArgs) => string;\n };\n context<T extends string>(...args: [StrictStaticString<T>] | [TemplateStringsArray, ...never[]]) {\n const [source] = args as [StrictStaticString<T> | TemplateStringsArray];\n\n const context = typeof source === \"string\" ? source : source[0];\n\n return {\n message: <U extends string>(...args: MessageArgs<U>): string => this.translateMessage(args, context),\n plural: (...args: PluralArgs): string => this.translatePlural(args, context),\n };\n }\n\n gettext = <T extends string>(...args: MessageArgs<T>): string => this.message(...args);\n ngettext = (...args: PluralArgs): string => this.plural(...args);\n pgettext = <C extends string, T extends string>(context: StrictStaticString<C>, ...args: MessageArgs<T>): string =>\n this.translateMessage(args, context);\n npgettext = <C extends string>(context: StrictStaticString<C>, ...args: PluralArgs): string =>\n this.translatePlural(args, context);\n}\n\nexport class Translator<T extends TranslationRecord = TranslationRecord> {\n parent: Translator | undefined;\n loaders: Partial<Record<Locale, TranslationLoader>> = {};\n translations: Partial<Record<Locale, GetTextTranslations>> = {};\n pending: Partial<Record<Locale, Promise<LocaleTranslator>>> = {};\n translators: Partial<Record<Locale, LocaleTranslator>> = {};\n\n constructor(translations: T, parent?: Translator) {\n this.parent = parent;\n for (const [locale, value] of Object.entries(translations) as [Locale, TranslationEntry][]) {\n if (!value) continue;\n if (typeof value === \"function\") {\n this.loaders[locale] = value;\n } else if (\"then\" in value) {\n this.loaders[locale] = () => value;\n } else {\n this.translations[locale] = resolveTranslationModule(value);\n }\n }\n }\n\n async loadLocale(locale: Locale, loader?: TranslationLoader): Promise<LocaleTranslator> {\n this.loaders[locale] = loader ?? this.loaders[locale];\n\n return this.fetchLocale(locale as never);\n }\n\n getLocale<L extends SyncLocaleKeys<T>>(locale: L): LocaleTranslator {\n const key = locale as Locale;\n const existing = this.translators[key];\n if (existing) {\n return existing;\n }\n\n const base = this.translations[key];\n if (base) {\n const parentTranslations = this.parent?.getLocale(locale as never)?.translations;\n const translations = mergeTranslations(base, parentTranslations);\n delete this.translations[key];\n\n const translator = new LocaleTranslator(key, translations);\n this.translators[key] = translator;\n return translator;\n }\n\n if (this.pending[key] || this.loaders[key]) {\n console.warn(\n `Translator.getLocale(${key}) called before async locale resolved. Returning untranslated fallback.`,\n );\n this.translators[key] ??= new LocaleTranslator(key);\n return this.translators[key];\n }\n\n this.translators[key] ??= new LocaleTranslator(key);\n return this.translators[key];\n }\n\n fetchLocale<L extends keyof T>(locale: L) {\n const key = locale as Locale;\n\n const pending = this.pending[key];\n if (pending) {\n return pending;\n }\n\n const loader = this.loaders[key];\n if (loader) {\n const promise = loader().then((translations) => {\n this.translations[key] ??= resolveTranslationModule(translations);\n delete this.pending[key];\n\n return this.getLocale(key as never);\n });\n this.pending[key] = promise;\n delete this.loaders[key];\n\n return promise;\n }\n\n return this.getLocale(key as never);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["message","placeholders: string[]","index","normalized: GetTextTranslations","context","pluralFunc","result: GetTextTranslations","id","message","args","plural","message","context","buildMessage","buildPlural","args"],"sources":["../src/utils.ts","../src/messages.ts","../src/translator.ts"],"sourcesContent":["import type { GetTextTranslationRecord, GetTextTranslations } from \"gettext-parser\";\nimport { getNPlurals, getPluralFunc } from \"plural-forms\";\n\nimport type { Locale } from \"./config.ts\";\n\n// biome-ignore lint/suspicious/noExplicitAny: true\nexport type IsUnion<T, U = T> = (T extends any ? (x: T) => 0 : never) extends (x: U) => 0 ? false : true;\n\nexport type StrictStaticString<T extends string> = string extends T ? never : IsUnion<T> extends true ? never : T;\n\nexport function assert<T>(value: T, message?: string): asserts value is T {\n if (!value) {\n throw new Error(message || \"Assertion failed\");\n }\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: true\nexport function memo<T extends (...args: any[]) => any>(fn: T): T {\n const cache = new Map<string, ReturnType<T>>();\n return ((...args: Parameters<T>): ReturnType<T> => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n // biome-ignore lint/style/noNonNullAssertion: true\n return cache.get(key)!;\n }\n const result = fn(...args);\n cache.set(key, result);\n return result;\n }) as T;\n}\n\nexport function substitute(text: string, values: unknown[] = []): string {\n const placeholders: string[] = [];\n\n return text.replace(/\\$\\{([^}]+)\\}/g, (match, placeholder) => {\n if (/^\\d+$/.test(placeholder)) {\n const index = Number(placeholder);\n return index < values.length ? String(values[index]) : match;\n }\n\n let index = placeholders.indexOf(placeholder);\n if (index === -1) {\n index = placeholders.length;\n placeholders.push(placeholder);\n }\n\n return index < values.length ? String(values[index]) : match;\n });\n}\n\nexport function normalizeMessageId(msgid: string): string {\n const placeholders: string[] = [];\n return msgid.replace(/\\$\\{([^}]+)\\}/g, (match, placeholder) => {\n if (/^\\d+$/.test(placeholder)) {\n return match;\n }\n\n let index = placeholders.indexOf(placeholder);\n if (index === -1) {\n index = placeholders.length;\n placeholders.push(placeholder);\n }\n return `\\${${index}}`;\n });\n}\n\nexport function normalizeTranslations(translations: GetTextTranslations): GetTextTranslations {\n const normalized: GetTextTranslations = {\n ...translations,\n translations: {},\n };\n\n for (const [context, messages] of Object.entries(translations.translations)) {\n normalized.translations[context] = {};\n for (const [msgid, entry] of Object.entries(messages)) {\n const normalizedId = normalizeMessageId(msgid);\n normalized.translations[context][normalizedId] = entry;\n }\n }\n\n return normalized;\n}\n\nconst defaultPluralFunc = (n: number) => (n !== 1 ? 1 : 0);\n\nexport const pluralFunc = memo(function pluralFunc(locale: Locale) {\n try {\n const length = Number(getNPlurals(locale));\n if (length === 1) {\n return () => 0;\n }\n const pluralFunc = getPluralFunc(locale);\n const forms = Array.from({ length }, (_, i) => String(i));\n return (n: number) => {\n const idx = Number(pluralFunc(n, forms));\n if (!Number.isFinite(idx) || idx < 0) return 0;\n if (idx >= length) return length - 1;\n return Math.floor(idx);\n };\n } catch {\n return defaultPluralFunc;\n }\n});\n\nexport function mergeTranslations(\n primary: GetTextTranslations,\n ...others: (GetTextTranslations | undefined)[]\n): GetTextTranslations {\n function mergeRecords(target: GetTextTranslationRecord, source: GetTextTranslationRecord): void {\n for (const ctx in source) {\n if (!target[ctx]) {\n target[ctx] = source[ctx];\n continue;\n }\n\n const targetContext = target[ctx];\n const sourceContext = source[ctx];\n for (const id in sourceContext) {\n if (!targetContext[id]) {\n targetContext[id] = sourceContext[id];\n }\n }\n }\n }\n\n const result: GetTextTranslations = {\n charset: primary.charset,\n headers: { ...primary.headers },\n translations: { ...primary.translations },\n obsolete: primary.obsolete ? { ...primary.obsolete } : undefined,\n };\n\n for (const other of others) {\n if (other?.translations) {\n mergeRecords(result.translations, other.translations);\n }\n\n if (other?.obsolete) {\n if (!result.obsolete) {\n result.obsolete = other.obsolete;\n } else {\n mergeRecords(result.obsolete, other.obsolete);\n }\n }\n }\n\n return result;\n}\n","import { assert, type StrictStaticString } from \"./utils.ts\";\n\nexport interface MessageDescriptor {\n id?: string;\n message?: string;\n}\n\nexport interface Message {\n msgid: string;\n msgstr: string;\n // biome-ignore lint/suspicious/noExplicitAny: true\n values?: any[];\n}\n\nexport interface PluralMessage {\n forms: Message[];\n n: number;\n}\n\nexport interface ContextMessage {\n context: string;\n id: Message;\n}\n\nexport interface ContextPluralMessage {\n context: string;\n id: PluralMessage;\n}\n\nfunction buildFromTemplate(strings: TemplateStringsArray): string {\n let result = \"\";\n for (let i = 0; i < strings.length; i++) {\n result += strings[i];\n if (i < strings.length - 1) result += `\\${${i}}`;\n }\n return result;\n}\n\nexport type MessageArgs<T extends string> =\n | [id: StrictStaticString<T>]\n | [descriptor: MessageDescriptor]\n | [strings: TemplateStringsArray, ...values: unknown[]];\n\nexport type MessageFunction = <T extends string>(...args: MessageArgs<T>) => Message;\n\nexport function message<T extends string>(...args: MessageArgs<T>): Message {\n const [source, ...values] = args as [MessageDescriptor | TemplateStringsArray, ...unknown[]];\n\n if (typeof source === \"string\") {\n return { msgid: source, msgstr: source };\n }\n\n if (typeof source === \"object\" && \"reduce\" in source) {\n const id = buildFromTemplate(source);\n return { msgid: id, msgstr: id, values };\n }\n\n const id = source.id ?? source.message ?? \"\";\n const message = source.message ?? source.id ?? \"\";\n return { msgid: id, msgstr: message };\n}\n\nexport type PluralArgs = [...forms: Message[], n: number];\n\nexport function plural(...args: PluralArgs): PluralMessage {\n assert(args.length > 1, \"At least one plural form and n are required\");\n\n const n = args[args.length - 1] as number;\n assert(typeof n === \"number\", \"The last argument must be a number\");\n\n const forms = args.slice(0, -1) as Message[];\n\n return { forms, n };\n}\n\nexport type PluralFunction = (...args: PluralArgs) => PluralMessage;\nexport type MessageInput<T extends string = string> = [Message] | MessageArgs<T>;\nexport type PluralInput = [PluralMessage] | PluralArgs;\n\nexport type ContextMessageFunction = <T extends string>(...args: MessageArgs<T>) => ContextMessage;\n\nexport type ContextPluralFunction = (...args: PluralArgs) => ContextPluralMessage;\n\nexport interface ContextBuilder {\n message: ContextMessageFunction;\n plural: ContextPluralFunction;\n}\n\nconst baseMessage = message;\nconst basePlural = plural;\n\nexport function context<T extends string>(context: StrictStaticString<T>): ContextBuilder;\nexport function context(strings: TemplateStringsArray, ...values: never[]): ContextBuilder;\nexport function context<T extends string>(\n ...args: [StrictStaticString<T>] | [TemplateStringsArray, ...never[]]\n): ContextBuilder {\n const [source] = args as [StrictStaticString<T> | TemplateStringsArray];\n\n const ctx = typeof source === \"string\" ? source : source[0];\n\n function message<T extends string>(...args: MessageArgs<T>): ContextMessage {\n return { id: baseMessage(...args), context: ctx };\n }\n\n function plural(...forms: PluralArgs): ContextPluralMessage {\n return { id: basePlural(...forms), context: ctx };\n }\n\n return {\n message,\n plural,\n };\n}\n","import type { GetTextTranslations } from \"gettext-parser\";\nimport type { Locale } from \"./config.ts\";\n\nimport {\n message as buildMessage,\n plural as buildPlural,\n type ContextMessage,\n type ContextPluralMessage,\n type Message,\n type MessageArgs,\n type PluralArgs,\n type PluralMessage,\n} from \"./messages.ts\";\nimport { mergeTranslations, normalizeTranslations, pluralFunc, type StrictStaticString, substitute } from \"./utils.ts\";\n\ntype TranslationModule = GetTextTranslations | { default: GetTextTranslations };\ntype TranslationLoader = () => Promise<TranslationModule>;\ntype TranslationEntry = TranslationModule | Promise<TranslationModule> | TranslationLoader;\ntype TranslationRecord = Partial<Record<Locale, TranslationEntry>>;\ntype SyncLocaleKeys<T> = {\n [K in keyof T]: T[K] extends GetTextTranslations ? K : never;\n}[keyof T];\n\nfunction selectValues(message: Message | undefined, fallback?: Message): unknown[] | undefined {\n const values = message?.values;\n if (values?.length) {\n return values;\n }\n return fallback?.values;\n}\n\nfunction selectTemplate(preferred: string | undefined, fallback: string): string {\n return preferred?.length ? preferred : fallback;\n}\n\nfunction applyValues(template: string, message: Message | undefined, fallback?: Message): string {\n const values = selectValues(message, fallback);\n return values?.length ? substitute(template, values) : template;\n}\n\nfunction isPluralMessage(value: unknown): value is PluralMessage {\n return Boolean(value) && typeof value === \"object\" && \"forms\" in (value as PluralMessage);\n}\n\nfunction isContextMessage(value: unknown): value is ContextMessage {\n if (!value || typeof value !== \"object\" || !(\"id\" in value)) {\n return false;\n }\n const candidate = (value as ContextMessage).id;\n return !isPluralMessage(candidate);\n}\n\nfunction isContextPluralMessage(value: unknown): value is ContextPluralMessage {\n if (!value || typeof value !== \"object\" || !(\"id\" in value)) {\n return false;\n }\n const candidate = (value as ContextPluralMessage).id;\n return isPluralMessage(candidate);\n}\n\ntype AnyTranslationMessage = Message | PluralMessage | ContextMessage | ContextPluralMessage;\n\nfunction resolveTranslationModule(module: TranslationModule): GetTextTranslations {\n return \"default\" in module ? module.default : module;\n}\n\nexport class LocaleTranslator {\n locale: Locale;\n translations?: GetTextTranslations;\n\n constructor(locale: Locale, translations?: GetTextTranslations) {\n this.locale = locale;\n this.translations = translations ? normalizeTranslations(translations) : undefined;\n }\n\n resolveMessage = (message: Message, context = \"\"): string => {\n const entry = this.translations?.translations?.[context]?.[message.msgid];\n const template = selectTemplate(entry?.msgstr?.[0], message.msgstr);\n return applyValues(template, message);\n };\n\n resolvePluralForm = (message: PluralMessage, context = \"\"): string => {\n const entry = this.translations?.translations?.[context]?.[message.forms[0].msgid];\n const index = pluralFunc(this.locale)(message.n);\n const forms = message.forms;\n const selectedForm = forms[index] ?? forms[forms.length - 1];\n const translatedForms = entry?.msgstr;\n const templateCandidate = translatedForms?.length\n ? (translatedForms[index] ?? translatedForms[translatedForms.length - 1])\n : undefined;\n const template = selectTemplate(templateCandidate, selectedForm.msgstr);\n return applyValues(template, selectedForm, forms[0]);\n };\n\n translateValue = (message: AnyTranslationMessage): string => {\n if (isContextPluralMessage(message)) {\n return this.resolvePluralForm(message.id, message.context);\n }\n\n if (isContextMessage(message)) {\n return this.resolveMessage(message.id, message.context);\n }\n\n if (isPluralMessage(message)) {\n return this.resolvePluralForm(message);\n }\n\n return this.resolveMessage(message);\n };\n\n translateMessage = <T extends string>(args: MessageArgs<T>, context?: string): string => {\n const message = buildMessage(...args);\n return this.resolveMessage(message, context);\n };\n\n translatePlural = (args: PluralArgs, context?: string): string => {\n const message = buildPlural(...args);\n return this.resolvePluralForm(message, context);\n };\n\n translate = (message: Message | PluralMessage | ContextMessage | ContextPluralMessage): string => {\n return this.translateValue(message);\n };\n\n message = <T extends string>(...args: MessageArgs<T>): string => this.translateMessage(args);\n plural = (...args: PluralArgs): string => this.translatePlural(args);\n\n context = <T extends string>(...args: [StrictStaticString<T>] | [TemplateStringsArray, ...never[]]) => {\n const [source] = args as [StrictStaticString<T> | TemplateStringsArray];\n\n const context = typeof source === \"string\" ? source : source[0];\n\n return {\n message: <U extends string>(...args: MessageArgs<U>): string => this.translateMessage(args, context),\n plural: (...args: PluralArgs): string => this.translatePlural(args, context),\n };\n };\n\n gettext = <T extends string>(...args: MessageArgs<T>): string => this.message(...args);\n ngettext = (...args: PluralArgs): string => this.plural(...args);\n pgettext = <C extends string, T extends string>(context: StrictStaticString<C>, ...args: MessageArgs<T>): string =>\n this.translateMessage(args, context);\n npgettext = <C extends string>(context: StrictStaticString<C>, ...args: PluralArgs): string =>\n this.translatePlural(args, context);\n}\n\nexport class Translator<T extends TranslationRecord = TranslationRecord> {\n parent: Translator | undefined;\n loaders: Partial<Record<Locale, TranslationLoader>> = {};\n translations: Partial<Record<Locale, GetTextTranslations>> = {};\n pending: Partial<Record<Locale, Promise<LocaleTranslator>>> = {};\n translators: Partial<Record<Locale, LocaleTranslator>> = {};\n\n constructor(translations: T, parent?: Translator) {\n this.parent = parent;\n for (const [locale, value] of Object.entries(translations) as [Locale, TranslationEntry][]) {\n if (!value) continue;\n if (typeof value === \"function\") {\n this.loaders[locale] = value;\n } else if (\"then\" in value) {\n this.loaders[locale] = () => value;\n } else {\n this.translations[locale] = resolveTranslationModule(value);\n }\n }\n }\n\n loadLocale = async (locale: Locale, loader?: TranslationLoader): Promise<LocaleTranslator> => {\n this.loaders[locale] = loader ?? this.loaders[locale];\n\n return this.fetchLocale(locale as never);\n };\n\n getLocale = <L extends SyncLocaleKeys<T>>(locale: L): LocaleTranslator => {\n const key = locale as Locale;\n const existing = this.translators[key];\n if (existing) {\n return existing;\n }\n\n const base = this.translations[key];\n if (base) {\n const parentTranslations = this.parent?.getLocale(locale as never)?.translations;\n const translations = mergeTranslations(base, parentTranslations);\n delete this.translations[key];\n\n const translator = new LocaleTranslator(key, translations);\n this.translators[key] = translator;\n return translator;\n }\n\n if (this.pending[key] || this.loaders[key]) {\n console.warn(\n `Translator.getLocale(${key}) called before async locale resolved. Returning untranslated fallback.`,\n );\n this.translators[key] ??= new LocaleTranslator(key);\n return this.translators[key];\n }\n\n this.translators[key] ??= new LocaleTranslator(key);\n return this.translators[key];\n };\n\n fetchLocale = <L extends keyof T>(locale: L) => {\n const key = locale as Locale;\n\n const pending = this.pending[key];\n if (pending) {\n return pending;\n }\n\n const loader = this.loaders[key];\n if (loader) {\n const promise = loader().then((translations) => {\n this.translations[key] ??= resolveTranslationModule(translations);\n delete this.pending[key];\n\n return this.getLocale(key as never);\n });\n this.pending[key] = promise;\n delete this.loaders[key];\n\n return promise;\n }\n\n return this.getLocale(key as never);\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@let-value/translate",
3
- "version": "1.0.22",
3
+ "version": "1.0.23",
4
4
  "type": "module",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",