{"version":3,"file":"index-node18.mjs","sources":["../src/load.ts","../src/index.ts"],"sourcesContent":["import IntlMessageFormatDefault from 'intl-messageformat';\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\nconst IntlMessageFormat: typeof IntlMessageFormatDefault =\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  (IntlMessageFormatDefault as any).default || IntlMessageFormatDefault;\n\nexport type Translations = ReadonlyMap<string, IntlMessageFormatDefault>;\n\nexport default function load(\n  translations: ReadonlyMap<string, unknown>,\n  language: string,\n): Translations {\n  const result = new Map();\n\n  (function loadMap(map, prefix) {\n    map.forEach((value: any, key) => {\n      if (typeof value === 'object') {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        loadMap(value, `${prefix}${key}.`);\n        return;\n      }\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      result.set(`${prefix}${key}`, new IntlMessageFormat(value, language));\n    });\n  })(translations, '');\n\n  return result;\n}\n","import type { NodeApplicationInCreation, Context } from 'alp-types';\nimport { Logger } from 'nightingale-logger';\nimport type { Translations } from './load';\nimport load from './load';\n\nconst logger = new Logger('alp:translate');\n\ntype Args = Record<string, any>;\n\ndeclare module 'alp-types' {\n  interface BaseContext {\n    t: (id: string, args: Args) => string;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-shadow\n  interface Context {\n    readonly language: string;\n  }\n}\n\nexport default function alpTranslate(\n  dirname: string,\n): (app: NodeApplicationInCreation) => void {\n  dirname = dirname.replace(/\\/*$/, '/');\n  return (app: NodeApplicationInCreation) => {\n    const appTranslations = new Map<string, Translations>();\n\n    Object.assign(app.context, {\n      t(this: Context, id: string, args: Args): string {\n        const msg = appTranslations.get(this.language)!.get(id);\n        if (!msg) {\n          logger.warn('invalid msg', { language: this.language, id });\n          return id;\n        }\n\n        return msg.format(args) as string;\n      },\n    });\n\n    const config = app.config!;\n\n    config.get<string[]>('availableLanguages').forEach((language) => {\n      const translations = app.loadConfigSync(dirname + language);\n      appTranslations.set(language, load(translations, language));\n    });\n\n    return appTranslations;\n  };\n}\n"],"names":["IntlMessageFormat","IntlMessageFormatDefault","default","load","translations","language","result","Map","loadMap","map","prefix","forEach","value","key","set","logger","Logger","alpTranslate","dirname","replace","app","appTranslations","Object","assign","context","t","id","args","msg","get","warn","format","config","loadConfigSync"],"mappings":";;;AAEA;AACA,MAAMA,iBAAkD;AACtD;AACCC,wBAAwB,CAASC,OAAO,IAAID,wBAAwB,CAAA;AAIxD,SAASE,IAAIA,CAC1BC,YAA0C,EAC1CC,QAAgB,EACF;AACd,EAAA,MAAMC,MAAM,GAAG,IAAIC,GAAG,EAAE,CAAA;AAExB,EAAA,CAAC,SAASC,OAAOA,CAACC,GAAG,EAAEC,MAAM,EAAE;AAC7BD,IAAAA,GAAG,CAACE,OAAO,CAAC,CAACC,KAAU,EAAEC,GAAG,KAAK;AAC/B,MAAA,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE;AAC7B;QACAJ,OAAO,CAACI,KAAK,EAAG,CAAA,EAAEF,MAAO,CAAEG,EAAAA,GAAI,GAAE,CAAC,CAAA;AAClC,QAAA,OAAA;AACF,OAAA;;AAEA;AACAP,MAAAA,MAAM,CAACQ,GAAG,CAAE,CAAEJ,EAAAA,MAAO,GAAEG,GAAI,CAAA,CAAC,EAAE,IAAIb,iBAAiB,CAACY,KAAK,EAAEP,QAAQ,CAAC,CAAC,CAAA;AACvE,KAAC,CAAC,CAAA;AACJ,GAAC,EAAED,YAAY,EAAE,EAAE,CAAC,CAAA;AAEpB,EAAA,OAAOE,MAAM,CAAA;AACf;;ACxBA,MAAMS,MAAM,GAAG,IAAIC,MAAM,CAAC,eAAe,CAAC,CAAA;AAc3B,SAASC,YAAYA,CAClCC,OAAe,EAC2B;EAC1CA,OAAO,GAAGA,OAAO,CAACC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AACtC,EAAA,OAAQC,GAA8B,IAAK;AACzC,IAAA,MAAMC,eAAe,GAAG,IAAId,GAAG,EAAwB,CAAA;AAEvDe,IAAAA,MAAM,CAACC,MAAM,CAACH,GAAG,CAACI,OAAO,EAAE;AACzBC,MAAAA,CAACA,CAAgBC,EAAU,EAAEC,IAAU,EAAU;AAC/C,QAAA,MAAMC,GAAG,GAAGP,eAAe,CAACQ,GAAG,CAAC,IAAI,CAACxB,QAAQ,CAAC,CAAEwB,GAAG,CAACH,EAAE,CAAC,CAAA;QACvD,IAAI,CAACE,GAAG,EAAE;AACRb,UAAAA,MAAM,CAACe,IAAI,CAAC,aAAa,EAAE;YAAEzB,QAAQ,EAAE,IAAI,CAACA,QAAQ;AAAEqB,YAAAA,EAAAA;AAAG,WAAC,CAAC,CAAA;AAC3D,UAAA,OAAOA,EAAE,CAAA;AACX,SAAA;AAEA,QAAA,OAAOE,GAAG,CAACG,MAAM,CAACJ,IAAI,CAAC,CAAA;AACzB,OAAA;AACF,KAAC,CAAC,CAAA;AAEF,IAAA,MAAMK,MAAM,GAAGZ,GAAG,CAACY,MAAO,CAAA;IAE1BA,MAAM,CAACH,GAAG,CAAW,oBAAoB,CAAC,CAAClB,OAAO,CAAEN,QAAQ,IAAK;MAC/D,MAAMD,YAAY,GAAGgB,GAAG,CAACa,cAAc,CAACf,OAAO,GAAGb,QAAQ,CAAC,CAAA;MAC3DgB,eAAe,CAACP,GAAG,CAACT,QAAQ,EAAEF,IAAI,CAACC,YAAY,EAAEC,QAAQ,CAAC,CAAC,CAAA;AAC7D,KAAC,CAAC,CAAA;AAEF,IAAA,OAAOgB,eAAe,CAAA;GACvB,CAAA;AACH;;;;"}