{"version":3,"file":"i18n-cache.cjs","names":[],"sources":["../../../../src/providers/i18n-provider/i18n-cache.ts"],"sourcesContent":["interface FormatOptions<Y> {\n  options: Y extends Intl.NumberFormat\n    ? Intl.NumberFormatOptions\n    : Y extends Intl.DateTimeFormat\n      ? Intl.DateTimeFormatOptions\n      : Y extends Intl.RelativeTimeFormat\n        ? Intl.RelativeTimeFormatOptions\n        : Y extends Intl.ListFormat\n          ? Intl.ListFormatOptions\n          : Y extends Intl.PluralRules\n            ? Intl.PluralRulesOptions\n            : Y extends Intl.Collator\n              ? Intl.CollatorOptions\n              : never\n}\n\nexport const i18nCache = <Y extends abstract new (...args: any) => any>(\n  Instance: Y,\n) => {\n  const formatterCache = new Map<string, Y>()\n\n  return function create(\n    locale: string,\n    options?: FormatOptions<InstanceType<Y>>[\"options\"],\n  ): InstanceType<Y> {\n    const key =\n      locale +\n      (options\n        ? Object.entries(options)\n            .sort((a, b) => (a[0] < b[0] ? -1 : 1))\n            .join()\n        : \"\")\n\n    if (formatterCache.has(key))\n      return formatterCache.get(key) as InstanceType<Y>\n\n    // @ts-ignore\n    const formatter = new Instance(locale, options)\n\n    formatterCache.set(key, formatter)\n\n    return formatter as any\n  }\n}\n"],"mappings":";;AAgBA,MAAa,aACX,aACG;CACH,MAAM,iCAAiB,IAAI,KAAgB;AAE3C,QAAO,SAAS,OACd,QACA,SACiB;EACjB,MAAM,MACJ,UACC,UACG,OAAO,QAAQ,QAAQ,CACpB,MAAM,GAAG,MAAO,EAAE,KAAK,EAAE,KAAK,KAAK,EAAG,CACtC,MAAM,GACT;AAEN,MAAI,eAAe,IAAI,IAAI,CACzB,QAAO,eAAe,IAAI,IAAI;EAGhC,MAAM,YAAY,IAAI,SAAS,QAAQ,QAAQ;AAE/C,iBAAe,IAAI,KAAK,UAAU;AAElC,SAAO"}