{
  "version": 3,
  "sources": ["../../src/index.ts", "../../src/di/declarations.ts", "../../src/getI18nContainerOption.ts", "../../src/I18nContainer.ts", "../../src/di/CE_DI.ts", "../../src/modules/mergeResourceContent.ts", "../../src/modules/getAsyncLocaleResource.ts", "../../src/modules/getPolyglotOptions.ts", "../../src/modules/getAsyncLocales.ts", "../../src/makeAsyncI18nContainer.ts", "../../src/modules/getSyncLocaleResource.ts", "../../src/modules/getSyncLocales.ts", "../../src/makeSyncI18nContainer.ts"],
  "sourcesContent": ["import './di/declarations'\nexport * from './getI18nContainerOption';\nexport * from './I18nContainer';\nexport * from './makeAsyncI18nContainer';\nexport * from './makeSyncI18nContainer';\nexport * from './di/CE_DI';\nexport * from './interfaces/II18nContainerOptions';\nexport * from './interfaces/II18nParameters';\nexport * from './interfaces/TResourceFileContent';\nexport * from './modules/getAsyncLocaleResource';\nexport * from './modules/getAsyncLocales';\nexport * from './modules/getPolyglotOptions';\nexport * from './modules/getSyncLocaleResource';\nexport * from './modules/getSyncLocales';\nexport * from './modules/mergeResourceContent';\n", "/** @ctix-declaration */\n\nimport type { I18nContainer } from '#/I18nContainer';\nimport type { CE_DI } from '#/di/CE_DI';\nimport '@maeum/tools';\n\ndeclare module '@maeum/tools' {\n  export interface IClassContainer {\n    resolve(name: typeof CE_DI.I18N_CONTROLLER): I18nContainer;\n  }\n}\n", "import type { II18nContainerOptions } from '#/interfaces/II18nContainerOptions';\n\nexport function getI18nContainerOption(\n  nullableOption?: Partial<Omit<II18nContainerOptions, 'polyglot'>> & {\n    polyglot?: Partial<II18nContainerOptions['polyglot']>;\n  },\n) {\n  const localeRoot = nullableOption?.localeRoot;\n\n  if (localeRoot == null) {\n    throw new Error('localeRoot value required');\n  }\n\n  const option: II18nContainerOptions = {\n    localeRoot,\n    defaultLanguage: nullableOption?.defaultLanguage ?? 'en',\n    polyglot: {\n      allowMissing: nullableOption?.polyglot?.allowMissing,\n      onMissingKey: nullableOption?.polyglot?.onMissingKey,\n      warn: nullableOption?.polyglot?.warn,\n      pluralRules: nullableOption?.polyglot?.pluralRules,\n    },\n  };\n\n  return option;\n}\n", "import type { II18nContainerOptions } from '#/interfaces/II18nContainerOptions';\nimport type { II18nParameters } from '#/interfaces/II18nParameters';\nimport acceptLanguage from 'accept-language';\nimport type { IncomingHttpHeaders } from 'http';\nimport type { IncomingHttpHeaders as IncomingHttp2Headers } from 'http2';\nimport { orThrow, settify, toArray } from 'my-easy-fp';\nimport type Polyglot from 'node-polyglot';\nimport type { ReadonlyDeep } from 'type-fest';\n\nexport class I18nContainer {\n  #options: II18nContainerOptions;\n\n  #locales: Map<string, Polyglot>;\n\n  #default: Polyglot;\n\n  constructor(options: II18nContainerOptions, locales: Map<string, Polyglot>) {\n    this.#options = options;\n    this.#locales = locales;\n    this.#default = orThrow(\n      locales.get(options.defaultLanguage),\n      new Error(`no default language resources: ${options.defaultLanguage}`),\n    );\n\n    acceptLanguage.languages(\n      settify([options.defaultLanguage, ...Array.from(this.#locales.keys())]),\n    );\n  }\n\n  public get options(): ReadonlyDeep<II18nContainerOptions> {\n    return this.#options;\n  }\n\n  public get locales(): ReadonlyDeep<Map<string, Polyglot>> {\n    return this.#locales;\n  }\n\n  public getLanguageFromRequestHeader(languages?: string | string[]): string {\n    const language = Array.isArray(languages) ? languages.join(', ') : languages;\n    return acceptLanguage.get(language) ?? this.#options.defaultLanguage;\n  }\n\n  public getLocale(nullableLanguages?: string | string[]): Polyglot {\n    if (nullableLanguages == null) {\n      return this.#default;\n    }\n\n    const languages = toArray(nullableLanguages);\n\n    if (languages.length <= 0) {\n      return this.#default;\n    }\n\n    const [first] = languages;\n    const language = acceptLanguage.get(first) as string;\n    // acceptLanguage.get \uD568\uC218\uAC00 default \uC5B8\uC5B4 \uB610\uB294 \uC0AC\uC6A9 \uAC00\uB2A5\uD55C locale\uC744 \uB3CC\uB824\uC8FC\uAE30 \uB54C\uBB38\uC5D0\n    // map \uAC1D\uCCB4\uC5D0\uC11C undefined\uAC00 \uBC18\uD658\uB420 \uC77C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4\n    //\n    // The acceptLanguage.get function never returns undefined in a map object\n    // because it returns the default language or an available locale\n    const expectPolyglot = this.#locales.get(language) as Polyglot;\n\n    return expectPolyglot;\n  }\n\n  public t(\n    language: string | string[] | undefined,\n    phrase: string,\n    option?: number | Polyglot.InterpolationOptions,\n  ): string {\n    const locale = this.getLocale(language);\n    return locale.t(phrase, option);\n  }\n\n  public pt(phrase: string, option?: number | Polyglot.InterpolationOptions): string;\n  public pt(\n    language: string | { headers: IncomingHttpHeaders | IncomingHttp2Headers },\n    phrase?: string,\n    option?: number | Polyglot.InterpolationOptions,\n  ): string;\n  public pt(\n    language: string | { headers: IncomingHttpHeaders | IncomingHttp2Headers },\n    phrase?: string | number | Polyglot.InterpolationOptions,\n    option?: number | Polyglot.InterpolationOptions,\n  ): string {\n    try {\n      if (typeof language === 'string' && phrase == null && option == null) {\n        return this.t(this.options.defaultLanguage, language);\n      }\n\n      if (\n        typeof language === 'string' &&\n        (typeof phrase === 'number' || typeof phrase === 'object') &&\n        option == null\n      ) {\n        return this.t(this.options.defaultLanguage, language, phrase);\n      }\n\n      if (typeof language === 'string' && typeof phrase === 'string') {\n        return this.t(language, phrase, option);\n      }\n\n      if (typeof language === 'object' && typeof phrase === 'string') {\n        return this.t(\n          this.getLanguageFromRequestHeader(language.headers['accept-language']),\n          phrase,\n          option,\n        );\n      }\n\n      return '';\n    } catch {\n      return '';\n    }\n  }\n\n  public ptu(\n    req: { headers: IncomingHttpHeaders | IncomingHttp2Headers },\n    options: II18nParameters,\n  ): string {\n    try {\n      if (typeof options === 'object' && options != null) {\n        const { phrase, option } = options;\n\n        return this.t(\n          this.getLanguageFromRequestHeader(req.headers['accept-language']),\n          phrase,\n          option,\n        );\n      }\n\n      return '';\n    } catch {\n      return '';\n    }\n  }\n}\n", "/**\n * \uC2EC\uBCFC\uC744 \uC0AC\uC6A9\uD558\uB294 \uAC83\uC774 \uB354 \uC548\uC815\uC801\uC774\uC9C0\uB9CC const-enum\uC5D0 \uC2EC\uBCFC \uC0AC\uC6A9\uD558\uBA74 \uC2EC\uBCFC \uD0C0\uC785\uC73C\uB85C \uC778\uC2DD\uD574\uC11C declaration \uD655\uC7A5\uC5D0\uC11C const-enum\uC758\n * \uBAA8\uB4E0 \uC694\uC18C\uAC00 \uB3D9\uC77C \uD0C0\uC785\uC73C\uB85C \uC778\uC2DD\uB418\uC5B4 \uCD94\uCD9C\uD558\uB294 \uD0C0\uC785\uC774 \uC815\uD655\uD558\uAC8C \uAD6C\uBD84\uC774 \uB418\uC9C0 \uC54A\uB294 \uBB38\uC81C\uAC00 \uC788\uB2E4.\n *\n * Using symbol types is more robust, but when using symbols in const-enums, they are recognized as symbol types.\n * This causes an issue where all elements of the const-enum are recognized as the same type during declaration extension,\n * making it difficult to accurately differentiate the extracted types.\n *\n * For example, declare the tpye as follows,\n *\n * export const CE_DI = {\n *   CURL_CREATOR: Symbol('di-symbol-key-curl-creator'),\n *   MAEUM_LOGGERS: Symbol('di-symbol-key-maeum-loggers'),\n * } as const\n *\n * TypeScript recognizes the types of CE_DI.CURL_CREATOR and MAEUM_LOGGERS as the same symbol type\n * and does not differentiate between them. Therefore, even when the declarations are extended in the code,\n * the CURL_CREATOR type, which was written first, is always extracted.\n *\n * @see https://github.com/microsoft/TypeScript/issues/54100\n *\n * declare module '@maeum/tools' {\n *   interface IClassContainer {\n *     resolve(name: typeof CE_DI.CURL_CREATOR): CurlCreator;\n *     resolve(name: typeof CE_DI.REQUEST_LOGGER): RequestLogger;\n *     resolve(name: typeof CE_DI.WINSTON_LOGGERS): WinstonLoggers;\n *     resolve(name: typeof CE_DI.PINO_LOGGERS): PinoLoggers;\n *     resolve(name: typeof CE_DI.MAEUM_LOGGERS): MaeumLoggers;\n *   }\n * }\n *\n * Therefore, in the current situation, it seems reasonable to use sufficiently long and distinguishable strings, as shown below:\n */\nexport const CE_DI = {\n  I18N_CONTROLLER: 'di-symbol-key-i18n-controller-i18n-controller',\n} as const;\n\nexport type CE_DI = (typeof CE_DI)[keyof typeof CE_DI];\n", "import type { TResourceFileContent } from '#/interfaces/TResourceFileContent';\nimport type { ValueOf } from 'type-fest';\n\nexport function mergeResourceContent(\n  prev: string | TResourceFileContent,\n  next: TResourceFileContent,\n): ValueOf<TResourceFileContent> {\n  const values: ValueOf<TResourceFileContent> =\n    typeof prev === 'string'\n      ? next\n      : {\n          ...next,\n          ...prev,\n        };\n  return values;\n}\n", "import type { TResourceFileContent } from '#/interfaces/TResourceFileContent';\nimport { mergeResourceContent } from '#/modules/mergeResourceContent';\nimport { parse } from 'jsonc-parser';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function getAsyncLocaleResource(localeRoot: string, locale: string) {\n  const namespaces = await fs.promises.readdir(path.join(localeRoot, locale));\n  const resource = await namespaces.reduce(\n    async (prevHandle: Promise<TResourceFileContent>, namespace) => {\n      const handle = async (prevData: TResourceFileContent) => {\n        const key = path.basename(namespace, path.extname(namespace));\n        const buf = await fs.promises.readFile(path.join(localeRoot, locale, namespace));\n        const value = parse(buf.toString()) as TResourceFileContent;\n\n        const prevValue = prevData[key] ?? {};\n        const next = mergeResourceContent(prevValue, value);\n\n        return { ...prevData, [key]: next };\n      };\n\n      return handle(await prevHandle);\n    },\n    Promise.resolve({}),\n  );\n\n  return resource;\n}\n", "import type { II18nContainerOptions } from '#/interfaces/II18nContainerOptions';\nimport type { TResourceFileContent } from '#/interfaces/TResourceFileContent';\nimport type Polyglot from 'node-polyglot';\n\nexport function getPolyglotOptions(\n  resources: TResourceFileContent,\n  option: Pick<II18nContainerOptions, 'polyglot'>,\n): Polyglot.PolyglotOptions {\n  const { interpolation, ...phrases } = resources;\n\n  const interpolationOption: Polyglot.PolyglotOptions['interpolation'] =\n    typeof interpolation === 'string'\n      ? undefined\n      : {\n          suffix: typeof interpolation?.suffix === 'string' ? interpolation?.suffix : undefined,\n          prefix: typeof interpolation?.prefix === 'string' ? interpolation?.prefix : undefined,\n        };\n\n  return { interpolation: option.polyglot?.interpolation ?? interpolationOption, phrases };\n}\n", "import type { II18nContainerOptions } from '#/interfaces/II18nContainerOptions';\nimport { getAsyncLocaleResource } from '#/modules/getAsyncLocaleResource';\nimport { getPolyglotOptions } from '#/modules/getPolyglotOptions';\nimport Polyglot from 'node-polyglot';\n\nexport async function getAsyncLocales(\n  languages: string[],\n  option: Pick<II18nContainerOptions, 'localeRoot' | 'polyglot'>,\n) {\n  const locales = await languages.reduce(\n    async (prevHandle: Promise<Map<string, Polyglot>>, locale) => {\n      const handle = async (aggregation: Map<string, Polyglot>) => {\n        const resources = await getAsyncLocaleResource(option.localeRoot, locale);\n        const polyglotOption = getPolyglotOptions(resources, option);\n        const polyglot = new Polyglot({ ...polyglotOption, locale });\n\n        aggregation.set(locale, polyglot);\n\n        return aggregation;\n      };\n\n      return handle(await prevHandle);\n    },\n    Promise.resolve(new Map<string, Polyglot>()),\n  );\n\n  return locales;\n}\n", "import { CE_DI } from '#/di/CE_DI';\nimport { getI18nContainerOption } from '#/getI18nContainerOption';\nimport { I18nContainer } from '#/I18nContainer';\nimport { getAsyncLocales } from '#/modules/getAsyncLocales';\nimport type { IClassContainer } from '@maeum/tools';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function makeAsyncI18nContainer(\n  container: IClassContainer,\n  nullableOption?: Parameters<typeof getI18nContainerOption>[0],\n): Promise<I18nContainer> {\n  const option = getI18nContainerOption(nullableOption);\n  const languages = await fs.promises.readdir(option.localeRoot);\n\n  if (!languages.includes(option.defaultLanguage)) {\n    throw new Error(\n      `default language need: ${path.join(option.localeRoot, option.defaultLanguage)}`,\n    );\n  }\n\n  const locales = await getAsyncLocales(languages, option);\n  const i18n = new I18nContainer(option, locales);\n\n  container.register(CE_DI.I18N_CONTROLLER, i18n);\n\n  return i18n;\n}\n", "import type { TResourceFileContent } from '#/interfaces/TResourceFileContent';\nimport { mergeResourceContent } from '#/modules/mergeResourceContent';\nimport { parse } from 'jsonc-parser';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport function getSyncLocaleResource(localeDirPath: string, locale: string) {\n  const namespaces = fs.readdirSync(path.join(localeDirPath, locale));\n  const resource = namespaces.reduce((aggregation: TResourceFileContent, namespace) => {\n    const key = path.basename(namespace, path.extname(namespace));\n    const buf = fs.readFileSync(path.join(localeDirPath, locale, namespace));\n    const value = parse(buf.toString()) as TResourceFileContent;\n\n    const prevValue = aggregation[key] ?? {};\n    const next = mergeResourceContent(prevValue, value);\n\n    return { ...aggregation, [key]: next };\n  }, {});\n\n  return resource;\n}\n", "import type { II18nContainerOptions } from '#/interfaces/II18nContainerOptions';\nimport { getPolyglotOptions } from '#/modules/getPolyglotOptions';\nimport { getSyncLocaleResource } from '#/modules/getSyncLocaleResource';\nimport Polyglot from 'node-polyglot';\n\nexport function getSyncLocales(\n  languages: string[],\n  option: Pick<II18nContainerOptions, 'localeRoot' | 'polyglot'>,\n) {\n  const locales = languages.reduce((aggregation: Map<string, Polyglot>, locale) => {\n    const resources = getSyncLocaleResource(option.localeRoot, locale);\n    const polyglotOption = getPolyglotOptions(resources, option);\n    const polyglot = new Polyglot({ ...polyglotOption, locale });\n\n    aggregation.set(locale, polyglot);\n\n    return aggregation;\n  }, new Map<string, Polyglot>());\n\n  return locales;\n}\n", "import { CE_DI } from '#/di/CE_DI';\nimport { getI18nContainerOption } from '#/getI18nContainerOption';\nimport { I18nContainer } from '#/I18nContainer';\nimport { getSyncLocales } from '#/modules/getSyncLocales';\nimport type { IClassContainer } from '@maeum/tools';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport function makeSyncI18nContainer(\n  container: IClassContainer,\n  nullableOption?: Parameters<typeof getI18nContainerOption>[0],\n): I18nContainer {\n  const option = getI18nContainerOption(nullableOption);\n  const languages = fs.readdirSync(option.localeRoot);\n\n  if (!languages.includes(option.defaultLanguage)) {\n    throw new Error(\n      `default language need: ${path.join(option.localeRoot, option.defaultLanguage)}`,\n    );\n  }\n\n  const locales = getSyncLocales(languages, option);\n  const i18n = new I18nContainer(option, locales);\n\n  container.register(CE_DI.I18N_CONTROLLER, i18n);\n\n  return i18n;\n}\n"],
  "mappings": "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",
  "names": ["acceptLanguage", "fs", "path", "Polyglot", "import_node_fs", "import_node_path", "fs", "path", "import_jsonc_parser", "import_node_fs", "import_node_path", "fs", "path", "import_node_polyglot", "Polyglot", "import_node_fs", "import_node_path", "fs", "path"]
}
