intor 2.3.6 → 2.3.7

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.
Files changed (373) hide show
  1. package/dist/core/export/config/index.js +2 -0
  2. package/dist/core/export/index.js +8 -4
  3. package/dist/core/export/server/index.js +1 -4
  4. package/dist/core/src/config/define-intor-config.js +5 -2
  5. package/dist/core/src/config/resolvers/resolve-cache-options.js +2 -1
  6. package/dist/core/src/config/resolvers/resolve-cookie-options.js +2 -1
  7. package/dist/core/src/config/resolvers/resolve-routing-options.js +7 -2
  8. package/dist/core/src/config/validators/validate-default-locale.js +3 -1
  9. package/dist/core/src/config/validators/validate-supported-locales.js +8 -4
  10. package/dist/{react/src/server → core/src/core}/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +11 -11
  11. package/dist/core/src/{server → core}/messages/load-remote-messages/load-remote-messages.js +13 -15
  12. package/dist/core/src/core/utils/resolve-loader-options.js +25 -0
  13. package/dist/core/src/server/helpers/local-messages-from-url.js +12 -6
  14. package/dist/core/src/server/intor/intor.js +11 -7
  15. package/dist/core/src/server/messages/load-local-messages/load-local-messages.js +16 -16
  16. package/dist/core/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.js +5 -3
  17. package/dist/core/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.js +7 -5
  18. package/dist/core/src/server/messages/load-local-messages/read-locale-messages/read-locale-messages.js +2 -2
  19. package/dist/core/src/server/messages/load-messages.js +28 -22
  20. package/dist/core/src/server/translator/get-translator.js +10 -15
  21. package/dist/next/src/adapters/next/navigation/link.js +1 -12
  22. package/dist/next/src/adapters/next/navigation/redirect.js +6 -6
  23. package/dist/next/src/adapters/next/navigation/use-pathname.js +6 -4
  24. package/dist/next/src/adapters/next/navigation/use-router.js +1 -14
  25. package/dist/next/src/adapters/next/proxy/intor-proxy.js +4 -1
  26. package/dist/next/src/adapters/next/server/get-locale.js +4 -1
  27. package/dist/next/src/adapters/next/server/get-translator.js +8 -2
  28. package/dist/next/src/core/error/intor-error.js +9 -0
  29. package/dist/next/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +11 -11
  30. package/dist/next/src/{server → core}/messages/load-remote-messages/load-remote-messages.js +13 -15
  31. package/dist/next/src/core/utils/resolve-loader-options.js +25 -0
  32. package/dist/next/src/routing/pathname/resolve-pathname.js +4 -1
  33. package/dist/next/src/routing/resolve-routing.js +6 -3
  34. package/dist/next/src/server/messages/load-local-messages/load-local-messages.js +16 -16
  35. package/dist/next/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.js +5 -3
  36. package/dist/next/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.js +7 -5
  37. package/dist/next/src/server/messages/load-local-messages/read-locale-messages/read-locale-messages.js +2 -2
  38. package/dist/next/src/server/messages/load-messages.js +28 -22
  39. package/dist/next/src/server/translator/get-translator.js +10 -15
  40. package/dist/react/export/react/index.js +5 -15
  41. package/dist/react/src/client/helpers/get-client-locale.js +4 -1
  42. package/dist/react/src/client/react/helpers/use-load-messages.js +46 -0
  43. package/dist/{next → react}/src/client/react/navigation/use-navigation-strategy.js +11 -7
  44. package/dist/{next → react}/src/client/react/navigation/use-navigation-target.js +6 -3
  45. package/dist/react/src/client/react/provider/effects/use-locale-effects.js +14 -0
  46. package/dist/react/src/client/react/provider/effects/use-messages-effects.js +24 -0
  47. package/dist/react/src/client/react/provider/intor-provider.js +70 -0
  48. package/dist/react/src/client/react/provider/use-intor.js +11 -0
  49. package/dist/react/src/client/react/render/create-react-renderer.js +2 -2
  50. package/dist/react/src/client/react/translator/use-translator.js +9 -20
  51. package/dist/react/src/client/shared/messages/create-refetch-messages.js +61 -0
  52. package/dist/react/src/core/constants/prefix-placeholder.js +4 -0
  53. package/dist/react/src/core/error/intor-error.js +9 -0
  54. package/dist/{core/src/server → react/src/core}/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +11 -11
  55. package/dist/react/src/{server → core}/messages/load-remote-messages/load-remote-messages.js +13 -15
  56. package/dist/react/src/core/utils/is-external-destination.js +11 -0
  57. package/dist/react/src/core/utils/normalizers/normalize-pathname.js +43 -0
  58. package/dist/react/src/core/utils/pathname/get-unprefixed-pathname.js +39 -0
  59. package/dist/react/src/core/utils/pathname/locale-prefix-pathname.js +38 -0
  60. package/dist/react/src/core/utils/pathname/localize-pathname.js +36 -0
  61. package/dist/react/src/core/utils/pathname/standardize-pathname.js +30 -0
  62. package/dist/react/src/core/utils/resolve-loader-options.js +32 -0
  63. package/dist/{next → react}/src/routing/resolve-navigation-target.js +5 -2
  64. package/dist/svelte/export/svelte/index.js +6 -0
  65. package/dist/svelte/src/client/helpers/get-client-locale.js +27 -0
  66. package/dist/svelte/src/client/shared/messages/create-refetch-messages.js +61 -0
  67. package/dist/svelte/src/client/shared/utils/locale/detect-browser-locale.js +12 -0
  68. package/dist/svelte/src/client/shared/utils/locale/get-locale-cookie-browser.js +16 -0
  69. package/dist/svelte/src/client/shared/utils/locale/set-document-locale.js +12 -0
  70. package/dist/svelte/src/client/svelte/runtime/create-intor.js +70 -0
  71. package/dist/svelte/src/client/svelte/runtime/effects/locale-effects.js +19 -0
  72. package/dist/svelte/src/client/svelte/runtime/effects/messages-effects.js +23 -0
  73. package/dist/svelte/src/core/error/intor-error.js +9 -0
  74. package/dist/svelte/src/core/logger/get-logger.js +39 -0
  75. package/dist/svelte/src/core/logger/global-logger-pool.js +8 -0
  76. package/dist/svelte/src/core/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +55 -0
  77. package/dist/svelte/src/core/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +25 -0
  78. package/dist/svelte/src/core/messages/load-remote-messages/load-remote-messages.js +108 -0
  79. package/dist/svelte/src/core/messages/utils/is-valid-messages.js +36 -0
  80. package/dist/svelte/src/core/utils/deep-merge.js +31 -0
  81. package/dist/svelte/src/core/utils/normalizers/normalize-cache-key.js +45 -0
  82. package/dist/svelte/src/core/utils/normalizers/normalize-locale.js +59 -0
  83. package/dist/svelte/src/core/utils/resolve-loader-options.js +32 -0
  84. package/dist/types/export/index.d.ts +1 -3
  85. package/dist/types/export/internal/index.d.ts +1 -1
  86. package/dist/types/export/react/index.d.ts +4 -1
  87. package/dist/types/export/server/index.d.ts +1 -1
  88. package/dist/types/export/svelte/index.d.ts +1 -0
  89. package/dist/types/export/vue/index.d.ts +1 -0
  90. package/dist/types/src/adapters/next/navigation/link.d.ts +1 -1
  91. package/dist/types/src/adapters/next/navigation/redirect.d.ts +1 -1
  92. package/dist/types/src/adapters/next/navigation/use-router.d.ts +1 -1
  93. package/dist/types/src/adapters/next/proxy/utils/set-locale-cookie-edge.d.ts +1 -1
  94. package/dist/types/src/adapters/next/server/get-locale.d.ts +2 -2
  95. package/dist/types/src/adapters/next/server/get-translator.d.ts +9 -24
  96. package/dist/types/src/client/react/helpers/index.d.ts +1 -0
  97. package/dist/types/src/client/react/helpers/use-load-messages.d.ts +10 -0
  98. package/dist/types/src/client/react/index.d.ts +2 -1
  99. package/dist/types/src/client/react/navigation/use-navigation-strategy.d.ts +1 -1
  100. package/dist/types/src/client/react/navigation/use-navigation-target.d.ts +1 -1
  101. package/dist/types/src/client/react/provider/effects/use-locale-effects.d.ts +3 -0
  102. package/dist/types/src/client/react/provider/effects/use-messages-effects.d.ts +4 -0
  103. package/dist/types/src/client/react/{contexts/intor-provider → provider}/index.d.ts +1 -0
  104. package/dist/types/src/client/react/provider/intor-provider.d.ts +5 -0
  105. package/dist/types/src/client/react/provider/types.d.ts +22 -0
  106. package/dist/types/src/client/react/provider/use-intor.d.ts +2 -0
  107. package/dist/types/src/client/react/render/create-react-renderer.d.ts +1 -0
  108. package/dist/types/src/client/react/translator/create-t-rich.d.ts +1 -1
  109. package/dist/types/src/client/react/translator/t.d.ts +2 -2
  110. package/dist/types/src/client/react/translator/translator-instance.d.ts +12 -8
  111. package/dist/types/src/client/react/translator/use-translator.d.ts +3 -3
  112. package/dist/types/src/client/shared/messages/create-refetch-messages.d.ts +18 -0
  113. package/dist/types/src/client/shared/messages/index.d.ts +1 -0
  114. package/dist/types/src/client/shared/types/bootstrap.d.ts +16 -0
  115. package/dist/types/src/client/shared/types/index.d.ts +1 -1
  116. package/dist/types/src/client/shared/utils/build-cookie-string.d.ts +1 -1
  117. package/dist/types/src/client/shared/utils/locale/set-locale-cookie-browser.d.ts +1 -1
  118. package/dist/types/src/client/svelte/helpers/create-messages.d.ts +11 -0
  119. package/dist/types/src/client/svelte/helpers/index.d.ts +1 -0
  120. package/dist/types/src/client/svelte/index.d.ts +3 -0
  121. package/dist/types/src/client/svelte/runtime/create-intor.d.ts +13 -0
  122. package/dist/types/src/client/svelte/runtime/effects/locale-effects.d.ts +11 -0
  123. package/dist/types/src/client/svelte/runtime/effects/messages-effects.d.ts +9 -0
  124. package/dist/types/src/client/svelte/runtime/index.d.ts +1 -0
  125. package/dist/types/src/client/svelte/runtime/types.d.ts +9 -0
  126. package/dist/types/src/client/vue/helpers/index.d.ts +1 -0
  127. package/dist/types/src/client/vue/helpers/use-load-messages.d.ts +11 -0
  128. package/dist/types/src/client/vue/index.d.ts +4 -0
  129. package/dist/types/src/client/vue/provider/effects/use-locale-effects.d.ts +4 -0
  130. package/dist/types/src/client/vue/provider/effects/use-messages-effects.d.ts +11 -0
  131. package/dist/types/src/client/vue/provider/index.d.ts +2 -0
  132. package/dist/types/src/client/vue/provider/inject.d.ts +3 -0
  133. package/dist/types/src/client/vue/provider/intor-provider.d.ts +4 -0
  134. package/dist/types/src/client/vue/provider/types.d.ts +18 -0
  135. package/dist/types/src/client/vue/render/create-vue-renderer.d.ts +18 -0
  136. package/dist/types/src/client/vue/render/index.d.ts +2 -0
  137. package/dist/types/src/client/vue/render/render-rich-message-react.d.ts +13 -0
  138. package/dist/types/src/client/vue/render/types.d.ts +15 -0
  139. package/dist/types/src/client/vue/translator/create-t-rich.d.ts +16 -0
  140. package/dist/types/src/client/vue/translator/index.d.ts +2 -0
  141. package/dist/types/src/client/vue/translator/t.d.ts +38 -0
  142. package/dist/types/src/client/vue/translator/translator-instance.d.ts +16 -0
  143. package/dist/types/src/client/vue/translator/use-translator.d.ts +8 -0
  144. package/dist/types/src/config/constants/cache.d.ts +2 -0
  145. package/dist/types/src/config/constants/cookie.d.ts +2 -0
  146. package/dist/types/src/config/constants/index.d.ts +3 -0
  147. package/dist/types/src/config/constants/routing.d.ts +2 -0
  148. package/dist/types/src/config/define-intor-config.d.ts +1 -1
  149. package/dist/types/src/config/index.d.ts +2 -1
  150. package/dist/types/src/config/resolvers/resolve-cache-options.d.ts +1 -1
  151. package/dist/types/src/config/resolvers/resolve-cookie-options.d.ts +1 -1
  152. package/dist/types/src/config/resolvers/resolve-fallback-locales.d.ts +1 -1
  153. package/dist/types/src/config/resolvers/resolve-routing-options.d.ts +1 -1
  154. package/dist/types/src/config/types/index.d.ts +7 -0
  155. package/dist/types/src/config/types/{intor-config.types.d.ts → intor-config.d.ts} +28 -24
  156. package/dist/types/src/config/types/{loader.types.d.ts → loader.d.ts} +15 -12
  157. package/dist/types/src/config/types/{logger.types.d.ts → logger.d.ts} +1 -0
  158. package/dist/types/src/config/types/{routing.types.d.ts → routing.d.ts} +1 -1
  159. package/dist/types/src/config/types/translator.d.ts +7 -0
  160. package/dist/types/src/config/validators/validate-default-locale.d.ts +1 -1
  161. package/dist/types/src/config/validators/validate-supported-locales.d.ts +1 -1
  162. package/dist/types/src/core/index.d.ts +6 -0
  163. package/dist/types/src/{server/shared → core}/logger/get-logger.d.ts +3 -4
  164. package/dist/types/src/core/logger/index.d.ts +2 -0
  165. package/dist/types/src/core/messages/index.d.ts +4 -0
  166. package/dist/types/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.d.ts +1 -1
  167. package/dist/types/src/core/messages/load-remote-messages/fetch-locale-messages/types.d.ts +12 -0
  168. package/dist/types/src/core/messages/load-remote-messages/index.d.ts +1 -0
  169. package/dist/types/src/{server → core}/messages/load-remote-messages/load-remote-messages.d.ts +1 -1
  170. package/dist/types/src/core/messages/load-remote-messages/types.d.ts +15 -0
  171. package/dist/types/src/{server/messages/shared → core/messages}/types.d.ts +8 -5
  172. package/dist/types/src/{server/messages/shared → core/messages}/utils/is-valid-messages.d.ts +1 -1
  173. package/dist/types/src/{shared → core}/types/generated.d.ts +1 -1
  174. package/dist/types/src/core/types/index.d.ts +3 -0
  175. package/dist/types/src/{shared → core}/types/translator-instance.d.ts +2 -6
  176. package/dist/types/src/{shared → core}/utils/index.d.ts +2 -0
  177. package/dist/types/src/{shared → core}/utils/locale/get-locale-from-pathname.d.ts +1 -1
  178. package/dist/types/src/{shared → core}/utils/locale/get-locale-from-query.d.ts +1 -1
  179. package/dist/types/src/{shared → core}/utils/pathname/get-unprefixed-pathname.d.ts +1 -1
  180. package/dist/types/src/{shared → core}/utils/pathname/locale-prefix-pathname.d.ts +1 -1
  181. package/dist/types/src/{shared → core}/utils/pathname/localize-pathname.d.ts +1 -1
  182. package/dist/types/src/{shared → core}/utils/pathname/standardize-pathname.d.ts +1 -1
  183. package/dist/types/src/core/utils/resolve-loader-options.d.ts +21 -0
  184. package/dist/types/src/routing/index.d.ts +2 -0
  185. package/dist/types/src/routing/locale/resolve-locale.d.ts +1 -1
  186. package/dist/types/src/routing/locale/types.d.ts +1 -1
  187. package/dist/types/src/routing/pathname/resolve-pathname.d.ts +1 -1
  188. package/dist/types/src/routing/pathname/types.d.ts +1 -1
  189. package/dist/types/src/routing/resolve-navigation-target.d.ts +1 -1
  190. package/dist/types/src/routing/resolve-routing.d.ts +1 -1
  191. package/dist/types/src/server/helpers/index.d.ts +1 -1
  192. package/dist/types/src/server/helpers/local-messages-from-url.d.ts +15 -5
  193. package/dist/types/src/server/index.d.ts +3 -5
  194. package/dist/types/src/server/intor/intor.d.ts +4 -4
  195. package/dist/types/src/server/intor/types.d.ts +4 -4
  196. package/dist/types/src/server/messages/index.d.ts +0 -2
  197. package/dist/types/src/server/messages/load-local-messages/index.d.ts +1 -1
  198. package/dist/types/src/server/messages/load-local-messages/load-local-messages.d.ts +1 -1
  199. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.d.ts +2 -2
  200. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/types.d.ts +5 -7
  201. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.d.ts +1 -1
  202. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/types.d.ts +5 -7
  203. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/json-reader.d.ts +1 -1
  204. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/nest-object-from-path.d.ts +1 -1
  205. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/read-locale-messages.d.ts +2 -2
  206. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/types.d.ts +6 -8
  207. package/dist/types/src/server/messages/load-local-messages/types.d.ts +9 -16
  208. package/dist/types/src/server/messages/load-messages.d.ts +3 -3
  209. package/dist/types/src/server/messages/types.d.ts +11 -5
  210. package/dist/types/src/server/translator/get-translator.d.ts +11 -19
  211. package/dist/types/src/server/translator/index.d.ts +2 -1
  212. package/dist/types/src/server/translator/translator-instance.d.ts +8 -0
  213. package/dist/vue/export/vue/index.js +6 -0
  214. package/dist/vue/src/client/helpers/get-client-locale.js +27 -0
  215. package/dist/vue/src/client/shared/messages/create-refetch-messages.js +61 -0
  216. package/dist/vue/src/client/shared/utils/build-cookie-string.js +30 -0
  217. package/dist/vue/src/client/shared/utils/locale/detect-browser-locale.js +12 -0
  218. package/dist/vue/src/client/shared/utils/locale/get-locale-cookie-browser.js +16 -0
  219. package/dist/vue/src/client/shared/utils/locale/set-document-locale.js +12 -0
  220. package/dist/vue/src/client/shared/utils/locale/set-locale-cookie-browser.js +18 -0
  221. package/dist/vue/src/client/vue/helpers/use-load-messages.js +44 -0
  222. package/dist/vue/src/client/vue/provider/effects/use-locale-effects.js +13 -0
  223. package/dist/vue/src/client/vue/provider/effects/use-messages-effects.js +36 -0
  224. package/dist/vue/src/client/vue/provider/inject.js +11 -0
  225. package/dist/vue/src/client/vue/provider/intor-provider.js +79 -0
  226. package/dist/vue/src/client/vue/render/create-vue-renderer.js +36 -0
  227. package/dist/vue/src/client/vue/render/render-rich-message-react.js +19 -0
  228. package/dist/vue/src/client/vue/translator/create-t-rich.js +26 -0
  229. package/dist/vue/src/client/vue/translator/t.js +32 -0
  230. package/dist/vue/src/client/vue/translator/use-translator.js +28 -0
  231. package/dist/vue/src/core/error/intor-error.js +9 -0
  232. package/dist/vue/src/core/logger/get-logger.js +39 -0
  233. package/dist/vue/src/core/logger/global-logger-pool.js +8 -0
  234. package/dist/vue/src/core/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +55 -0
  235. package/dist/vue/src/core/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +25 -0
  236. package/dist/vue/src/core/messages/load-remote-messages/load-remote-messages.js +108 -0
  237. package/dist/vue/src/core/messages/utils/is-valid-messages.js +36 -0
  238. package/dist/vue/src/core/utils/deep-merge.js +31 -0
  239. package/dist/vue/src/core/utils/normalizers/normalize-cache-key.js +45 -0
  240. package/dist/vue/src/core/utils/normalizers/normalize-locale.js +59 -0
  241. package/dist/vue/src/core/utils/resolve-loader-options.js +32 -0
  242. package/package.json +16 -6
  243. package/dist/next/src/client/react/contexts/config/context.js +0 -3
  244. package/dist/next/src/client/react/contexts/locale/context.js +0 -3
  245. package/dist/next/src/client/react/contexts/messages/context.js +0 -3
  246. package/dist/next/src/client/react/contexts/translator/context.js +0 -3
  247. package/dist/next/src/client/react/contexts/translator-runtime/context.js +0 -3
  248. package/dist/next/src/config/constants/cache.constants.js +0 -7
  249. package/dist/react/src/client/react/contexts/config/context.js +0 -5
  250. package/dist/react/src/client/react/contexts/config/hook.js +0 -11
  251. package/dist/react/src/client/react/contexts/config/provider.js +0 -14
  252. package/dist/react/src/client/react/contexts/intor-provider/intor-provider.js +0 -17
  253. package/dist/react/src/client/react/contexts/locale/context.js +0 -5
  254. package/dist/react/src/client/react/contexts/locale/hook.js +0 -11
  255. package/dist/react/src/client/react/contexts/locale/provider.js +0 -38
  256. package/dist/react/src/client/react/contexts/locale/utils/change-locale.js +0 -26
  257. package/dist/react/src/client/react/contexts/messages/context.js +0 -5
  258. package/dist/react/src/client/react/contexts/messages/hook.js +0 -11
  259. package/dist/react/src/client/react/contexts/messages/provider.js +0 -39
  260. package/dist/react/src/client/react/contexts/messages/utils/use-refetch-messages.js +0 -70
  261. package/dist/react/src/client/react/contexts/translator/context.js +0 -5
  262. package/dist/react/src/client/react/contexts/translator/hook.js +0 -11
  263. package/dist/react/src/client/react/contexts/translator/provider.js +0 -58
  264. package/dist/react/src/client/react/contexts/translator-runtime/context.js +0 -5
  265. package/dist/react/src/client/react/contexts/translator-runtime/hook.js +0 -9
  266. package/dist/react/src/client/react/contexts/translator-runtime/provider.js +0 -15
  267. package/dist/react/src/config/constants/cache.constants.js +0 -7
  268. package/dist/react/src/server/shared/messages/global-messages-pool.js +0 -10
  269. package/dist/types/src/client/react/contexts/config/context.d.ts +0 -3
  270. package/dist/types/src/client/react/contexts/config/hook.d.ts +0 -2
  271. package/dist/types/src/client/react/contexts/config/index.d.ts +0 -2
  272. package/dist/types/src/client/react/contexts/config/provider.d.ts +0 -2
  273. package/dist/types/src/client/react/contexts/config/types.d.ts +0 -11
  274. package/dist/types/src/client/react/contexts/index.d.ts +0 -6
  275. package/dist/types/src/client/react/contexts/intor-provider/intor-provider.d.ts +0 -2
  276. package/dist/types/src/client/react/contexts/intor-provider/types.d.ts +0 -13
  277. package/dist/types/src/client/react/contexts/locale/context.d.ts +0 -3
  278. package/dist/types/src/client/react/contexts/locale/hook.d.ts +0 -1
  279. package/dist/types/src/client/react/contexts/locale/index.d.ts +0 -2
  280. package/dist/types/src/client/react/contexts/locale/provider.d.ts +0 -3
  281. package/dist/types/src/client/react/contexts/locale/types.d.ts +0 -13
  282. package/dist/types/src/client/react/contexts/locale/utils/change-locale.d.ts +0 -20
  283. package/dist/types/src/client/react/contexts/messages/context.d.ts +0 -3
  284. package/dist/types/src/client/react/contexts/messages/hook.d.ts +0 -2
  285. package/dist/types/src/client/react/contexts/messages/index.d.ts +0 -2
  286. package/dist/types/src/client/react/contexts/messages/provider.d.ts +0 -3
  287. package/dist/types/src/client/react/contexts/messages/types.d.ts +0 -12
  288. package/dist/types/src/client/react/contexts/messages/utils/use-refetch-messages.d.ts +0 -20
  289. package/dist/types/src/client/react/contexts/translator/context.d.ts +0 -3
  290. package/dist/types/src/client/react/contexts/translator/hook.d.ts +0 -2
  291. package/dist/types/src/client/react/contexts/translator/index.d.ts +0 -2
  292. package/dist/types/src/client/react/contexts/translator/provider.d.ts +0 -2
  293. package/dist/types/src/client/react/contexts/translator/types.d.ts +0 -11
  294. package/dist/types/src/client/react/contexts/translator-runtime/context.d.ts +0 -3
  295. package/dist/types/src/client/react/contexts/translator-runtime/hook.d.ts +0 -2
  296. package/dist/types/src/client/react/contexts/translator-runtime/index.d.ts +0 -3
  297. package/dist/types/src/client/react/contexts/translator-runtime/provider.d.ts +0 -2
  298. package/dist/types/src/client/react/contexts/translator-runtime/types.d.ts +0 -13
  299. package/dist/types/src/client/shared/types/translator-instance.d.ts +0 -11
  300. package/dist/types/src/config/constants/cache.constants.d.ts +0 -2
  301. package/dist/types/src/config/constants/cookie.constants.d.ts +0 -2
  302. package/dist/types/src/config/constants/routing.constants.d.ts +0 -2
  303. package/dist/types/src/config/types/translator.types.d.ts +0 -7
  304. package/dist/types/src/server/messages/load-remote-messages/fetch-locale-messages/types.d.ts +0 -14
  305. package/dist/types/src/server/messages/load-remote-messages/index.d.ts +0 -2
  306. package/dist/types/src/server/messages/load-remote-messages/types.d.ts +0 -21
  307. package/dist/types/src/shared/types/index.d.ts +0 -2
  308. /package/dist/core/src/config/constants/{cache.constants.js → cache.js} +0 -0
  309. /package/dist/core/src/config/constants/{cookie.constants.js → cookie.js} +0 -0
  310. /package/dist/core/src/config/constants/{routing.constants.js → routing.js} +0 -0
  311. /package/dist/core/src/{shared → core}/constants/prefix-placeholder.js +0 -0
  312. /package/dist/core/src/{shared → core}/error/intor-error.js +0 -0
  313. /package/dist/core/src/{server/shared → core}/logger/get-logger.js +0 -0
  314. /package/dist/core/src/{server/shared → core}/logger/global-logger-pool.js +0 -0
  315. /package/dist/core/src/{server/shared → core}/messages/global-messages-pool.js +0 -0
  316. /package/dist/core/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +0 -0
  317. /package/dist/core/src/{server/messages/shared → core/messages}/utils/is-valid-messages.js +0 -0
  318. /package/dist/core/src/{shared → core}/utils/deep-merge.js +0 -0
  319. /package/dist/core/src/{shared → core}/utils/normalizers/normalize-cache-key.js +0 -0
  320. /package/dist/core/src/{shared → core}/utils/normalizers/normalize-pathname.js +0 -0
  321. /package/dist/core/src/{shared → core}/utils/pathname/get-unprefixed-pathname.js +0 -0
  322. /package/dist/core/src/{shared → core}/utils/pathname/locale-prefix-pathname.js +0 -0
  323. /package/dist/core/src/{shared → core}/utils/pathname/localize-pathname.js +0 -0
  324. /package/dist/core/src/{shared → core}/utils/pathname/standardize-pathname.js +0 -0
  325. /package/dist/next/src/{shared → core}/constants/prefix-placeholder.js +0 -0
  326. /package/dist/next/src/{server/shared → core}/logger/get-logger.js +0 -0
  327. /package/dist/next/src/{server/shared → core}/logger/global-logger-pool.js +0 -0
  328. /package/dist/next/src/{server/shared → core}/messages/global-messages-pool.js +0 -0
  329. /package/dist/next/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +0 -0
  330. /package/dist/next/src/{server/messages/shared → core/messages}/utils/is-valid-messages.js +0 -0
  331. /package/dist/next/src/{shared → core}/utils/deep-merge.js +0 -0
  332. /package/dist/next/src/{shared → core}/utils/is-external-destination.js +0 -0
  333. /package/dist/next/src/{shared → core}/utils/locale/get-locale-from-accept-language.js +0 -0
  334. /package/dist/next/src/{shared → core}/utils/locale/get-locale-from-host.js +0 -0
  335. /package/dist/next/src/{shared → core}/utils/locale/get-locale-from-pathname.js +0 -0
  336. /package/dist/next/src/{shared → core}/utils/locale/get-locale-from-query.js +0 -0
  337. /package/dist/next/src/{shared → core}/utils/normalizers/normalize-cache-key.js +0 -0
  338. /package/dist/next/src/{shared → core}/utils/normalizers/normalize-locale.js +0 -0
  339. /package/dist/next/src/{shared → core}/utils/normalizers/normalize-pathname.js +0 -0
  340. /package/dist/next/src/{shared → core}/utils/pathname/get-unprefixed-pathname.js +0 -0
  341. /package/dist/next/src/{shared → core}/utils/pathname/locale-prefix-pathname.js +0 -0
  342. /package/dist/next/src/{shared → core}/utils/pathname/localize-pathname.js +0 -0
  343. /package/dist/next/src/{shared → core}/utils/pathname/standardize-pathname.js +0 -0
  344. /package/dist/react/src/{server/shared → core}/logger/get-logger.js +0 -0
  345. /package/dist/react/src/{server/shared → core}/logger/global-logger-pool.js +0 -0
  346. /package/dist/react/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +0 -0
  347. /package/dist/react/src/{server/messages/shared → core/messages}/utils/is-valid-messages.js +0 -0
  348. /package/dist/react/src/{shared → core}/utils/deep-merge.js +0 -0
  349. /package/dist/react/src/{shared → core}/utils/normalizers/normalize-cache-key.js +0 -0
  350. /package/dist/react/src/{shared → core}/utils/normalizers/normalize-locale.js +0 -0
  351. /package/dist/{next → svelte}/src/client/shared/utils/build-cookie-string.js +0 -0
  352. /package/dist/{next → svelte}/src/client/shared/utils/locale/set-locale-cookie-browser.js +0 -0
  353. /package/dist/types/src/config/types/{cache.types.d.ts → cache.d.ts} +0 -0
  354. /package/dist/types/src/config/types/{cookie.types.d.ts → cookie.d.ts} +0 -0
  355. /package/dist/types/src/{shared → core}/constants/index.d.ts +0 -0
  356. /package/dist/types/src/{shared → core}/constants/prefix-placeholder.d.ts +0 -0
  357. /package/dist/types/src/{shared → core}/error/index.d.ts +0 -0
  358. /package/dist/types/src/{shared → core}/error/intor-error.d.ts +0 -0
  359. /package/dist/types/src/{server/shared → core}/logger/global-logger-pool.d.ts +0 -0
  360. /package/dist/types/src/{server/shared → core}/messages/global-messages-pool.d.ts +0 -0
  361. /package/dist/types/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/index.d.ts +0 -0
  362. /package/dist/types/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.d.ts +0 -0
  363. /package/dist/types/src/{shared → core}/types/routing.d.ts +0 -0
  364. /package/dist/types/src/{shared → core}/utils/deep-merge.d.ts +0 -0
  365. /package/dist/types/src/{shared → core}/utils/is-external-destination.d.ts +0 -0
  366. /package/dist/types/src/{shared → core}/utils/locale/get-locale-from-accept-language.d.ts +0 -0
  367. /package/dist/types/src/{shared → core}/utils/locale/get-locale-from-host.d.ts +0 -0
  368. /package/dist/types/src/{shared → core}/utils/locale/index.d.ts +0 -0
  369. /package/dist/types/src/{shared → core}/utils/normalizers/index.d.ts +0 -0
  370. /package/dist/types/src/{shared → core}/utils/normalizers/normalize-cache-key.d.ts +0 -0
  371. /package/dist/types/src/{shared → core}/utils/normalizers/normalize-locale.d.ts +0 -0
  372. /package/dist/types/src/{shared → core}/utils/normalizers/normalize-pathname.d.ts +0 -0
  373. /package/dist/types/src/{shared → core}/utils/pathname/index.d.ts +0 -0
@@ -1 +1,3 @@
1
1
  export { defineIntorConfig } from '../../src/config/define-intor-config.js';
2
+ import '../../src/config/constants/cookie.js';
3
+ import '../../src/config/constants/cache.js';
@@ -1,5 +1,9 @@
1
- export { PREFIX_PLACEHOLDER } from '../src/shared/constants/prefix-placeholder.js';
2
- export { deepMerge } from '../src/shared/utils/deep-merge.js';
3
- export { localizePathname } from '../src/shared/utils/pathname/localize-pathname.js';
4
- export { IntorError, IntorErrorCode } from '../src/shared/error/intor-error.js';
1
+ export { PREFIX_PLACEHOLDER } from '../src/core/constants/prefix-placeholder.js';
2
+ export { IntorError, IntorErrorCode } from '../src/core/error/intor-error.js';
3
+ export { deepMerge } from '../src/core/utils/deep-merge.js';
4
+ export { localizePathname } from '../src/core/utils/pathname/localize-pathname.js';
5
+ import 'logry';
6
+ export { clearLoggerPool } from '../src/core/logger/global-logger-pool.js';
7
+ export { isValidMessages } from '../src/core/messages/utils/is-valid-messages.js';
8
+ export { clearMessagesPool, setGlobalMessagesPool } from '../src/core/messages/global-messages-pool.js';
5
9
  import 'intor-translator';
@@ -1,7 +1,4 @@
1
1
  export { intor } from '../../src/server/intor/intor.js';
2
2
  export { loadMessages } from '../../src/server/messages/load-messages.js';
3
- export { isValidMessages } from '../../src/server/messages/shared/utils/is-valid-messages.js';
4
3
  export { getTranslator } from '../../src/server/translator/get-translator.js';
5
- export { clearLoggerPool } from '../../src/server/shared/logger/global-logger-pool.js';
6
- export { clearMessagesPool, setGlobalMessagesPool } from '../../src/server/shared/messages/global-messages-pool.js';
7
- export { loadLocalMessagesFromUrl } from '../../src/server/helpers/local-messages-from-url.js';
4
+ export { loadMessagesFromUrl } from '../../src/server/helpers/local-messages-from-url.js';
@@ -30,8 +30,9 @@ const defineIntorConfig = (config) => {
30
30
  const cookie = resolveCookieOptions(config.cookie);
31
31
  const routing = resolveRoutingOptions(config.routing);
32
32
  const cache = resolveCacheOptions(config.cache);
33
+ const id = config.id ?? "default";
33
34
  return {
34
- id: config.id ?? "default",
35
+ id,
35
36
  messages: config.messages,
36
37
  loader: config.loader,
37
38
  defaultLocale,
@@ -40,8 +41,10 @@ const defineIntorConfig = (config) => {
40
41
  translator: config.translator,
41
42
  cookie,
42
43
  routing,
43
- logger: config.logger,
44
+ logger: { id, ...config.logger },
44
45
  cache,
46
+ client: config.client,
47
+ server: config.server,
45
48
  };
46
49
  };
47
50
 
@@ -1,4 +1,5 @@
1
- import { DEFAULT_CACHE_OPTIONS } from '../constants/cache.constants.js';
1
+ import '../constants/cookie.js';
2
+ import { DEFAULT_CACHE_OPTIONS } from '../constants/cache.js';
2
3
 
3
4
  const resolveCacheOptions = (cache) => {
4
5
  return {
@@ -1,4 +1,5 @@
1
- import { DEFAULT_COOKIE_OPTIONS } from '../constants/cookie.constants.js';
1
+ import { DEFAULT_COOKIE_OPTIONS } from '../constants/cookie.js';
2
+ import '../constants/cache.js';
2
3
 
3
4
  const resolveCookieOptions = (cookie = {}) => {
4
5
  return {
@@ -1,5 +1,10 @@
1
- import { DEFAULT_ROUTING_OPTIONS } from '../constants/routing.constants.js';
2
- import { normalizePathname } from '../../shared/utils/normalizers/normalize-pathname.js';
1
+ import '../../core/error/intor-error.js';
2
+ import { normalizePathname } from '../../core/utils/normalizers/normalize-pathname.js';
3
+ import 'logry';
4
+ import 'keyv';
5
+ import { DEFAULT_ROUTING_OPTIONS } from '../constants/routing.js';
6
+ import '../constants/cookie.js';
7
+ import '../constants/cache.js';
3
8
 
4
9
  const resolveRoutingOptions = (routing = {}) => {
5
10
  return {
@@ -1,4 +1,6 @@
1
- import { IntorError, IntorErrorCode } from '../../shared/error/intor-error.js';
1
+ import { IntorError, IntorErrorCode } from '../../core/error/intor-error.js';
2
+ import 'logry';
3
+ import 'keyv';
2
4
 
3
5
  /**
4
6
  * Validates the configured default locale.
@@ -1,4 +1,6 @@
1
- import { IntorError, IntorErrorCode } from '../../shared/error/intor-error.js';
1
+ import { IntorError, IntorErrorCode } from '../../core/error/intor-error.js';
2
+ import 'logry';
3
+ import 'keyv';
2
4
 
3
5
  /**
4
6
  * Validates and resolves the list of supported locales.
@@ -11,13 +13,15 @@ import { IntorError, IntorErrorCode } from '../../shared/error/intor-error.js';
11
13
  * to fail fast when required inputs are missing.
12
14
  */
13
15
  const validateSupportedLocales = (config) => {
14
- const { id, loader, supportedLocales } = config;
16
+ const { id, supportedLocales } = config;
17
+ const hasAnyLoader = !!config.loader || !!config.server?.loader || !!config.client?.loader;
15
18
  // Ensure supportedLocales is set when using loader
16
- if (loader && !supportedLocales) {
19
+ if (hasAnyLoader && !supportedLocales) {
17
20
  throw new IntorError({
18
21
  id,
19
22
  code: IntorErrorCode.MISSING_SUPPORTED_LOCALES,
20
- message: `"supportedLocales" is required when using loader, but it is missing.`,
23
+ message: `"supportedLocales" is required when using message loaders.
24
+ Please specify all supported locales explicitly.`,
21
25
  });
22
26
  }
23
27
  // Return supportedLocales or infer from message keys
@@ -1,5 +1,6 @@
1
- import { isValidMessages } from '../../shared/utils/is-valid-messages.js';
2
- import { getLogger } from '../../../shared/logger/get-logger.js';
1
+ import { getLogger } from '../../../logger/get-logger.js';
2
+ import { isValidMessages } from '../../utils/is-valid-messages.js';
3
+ import { buildSearchParams } from './utils/build-search-params.js';
3
4
 
4
5
  /**
5
6
  * Fetches locale messages from a remote API.
@@ -7,22 +8,21 @@ import { getLogger } from '../../../shared/logger/get-logger.js';
7
8
  * - Validates that the returned JSON matches the expected `NamespaceMessages` structure.
8
9
  * - Uses `fetch` with `no-store` cache to always get fresh data.
9
10
  */
10
- const fetchLocaleMessages = async ({ remoteUrl, remoteHeaders, searchParams, locale, extraOptions: { loggerOptions } = {}, signal, }) => {
11
- const baseLogger = getLogger({ ...loggerOptions });
11
+ const fetchLocaleMessages = async ({ locale, namespaces, rootDir, url: rawUrl, headers: rawHeaders, signal, extraOptions: { loggerOptions }, }) => {
12
+ const baseLogger = getLogger(loggerOptions);
12
13
  const logger = baseLogger.child({ scope: "fetch-locale-messages" });
14
+ const searchParams = buildSearchParams({ locale, rootDir, namespaces });
15
+ const url = `${rawUrl}?${searchParams.toString()}`;
13
16
  try {
14
- const params = new URLSearchParams(searchParams);
15
- params.append("locale", locale);
16
- const url = `${remoteUrl}?${params.toString()}`;
17
17
  // Headers
18
18
  const headers = {
19
19
  "Content-Type": "application/json",
20
- ...remoteHeaders,
20
+ ...rawHeaders,
21
21
  };
22
22
  // Fetch
23
23
  const response = await fetch(url, {
24
24
  method: "GET",
25
- headers,
25
+ headers: headers,
26
26
  cache: "no-store",
27
27
  signal,
28
28
  });
@@ -39,12 +39,12 @@ const fetchLocaleMessages = async ({ remoteUrl, remoteHeaders, searchParams, loc
39
39
  }
40
40
  catch (error) {
41
41
  if (error instanceof Error && error.name === "AbortError") {
42
- logger.debug("Fetching locale messages aborted.", { locale, remoteUrl });
42
+ logger.debug("Fetching locale messages aborted.", { locale, url });
43
43
  return;
44
44
  }
45
45
  logger.warn("Fetching locale messages failed.", {
46
46
  locale,
47
- remoteUrl,
47
+ url,
48
48
  searchParams: decodeURIComponent(searchParams.toString()),
49
49
  error,
50
50
  });
@@ -1,9 +1,6 @@
1
- import { DEFAULT_CACHE_OPTIONS } from '../../../config/constants/cache.constants.js';
1
+ import { getLogger } from '../../logger/get-logger.js';
2
+ import { normalizeCacheKey } from '../../utils/normalizers/normalize-cache-key.js';
2
3
  import { fetchLocaleMessages } from './fetch-locale-messages/fetch-locale-messages.js';
3
- import { buildSearchParams } from './fetch-locale-messages/utils/build-search-params.js';
4
- import { getLogger } from '../../shared/logger/get-logger.js';
5
- import { getGlobalMessagesPool } from '../../shared/messages/global-messages-pool.js';
6
- import { normalizeCacheKey } from '../../../shared/utils/normalizers/normalize-cache-key.js';
7
4
 
8
5
  /**
9
6
  * Load locale messages from a remote API.
@@ -17,8 +14,8 @@ import { normalizeCacheKey } from '../../../shared/utils/normalizers/normalize-c
17
14
  *
18
15
  * Network fetching and data validation are delegated to lower-level utilities.
19
16
  */
20
- const loadRemoteMessages = async ({ pool = getGlobalMessagesPool(), rootDir, locale, fallbackLocales, namespaces, remoteUrl, remoteHeaders, extraOptions: { cacheOptions = DEFAULT_CACHE_OPTIONS, loggerOptions = { id: "default" }, } = {}, allowCacheWrite = false, signal, }) => {
21
- const baseLogger = getLogger({ ...loggerOptions });
17
+ const loadRemoteMessages = async ({ locale, fallbackLocales, namespaces, rootDir, url, headers, signal, pool, cacheOptions, allowCacheWrite = false, loggerOptions, }) => {
18
+ const baseLogger = getLogger(loggerOptions);
22
19
  const logger = baseLogger.child({ scope: "load-remote-messages" });
23
20
  // Abort early if the request has already been cancelled
24
21
  if (signal?.aborted) {
@@ -26,8 +23,8 @@ const loadRemoteMessages = async ({ pool = getGlobalMessagesPool(), rootDir, loc
26
23
  return;
27
24
  }
28
25
  const start = performance.now();
29
- logger.debug("Loading remote messages.", { remoteUrl });
30
- // --- Cache key
26
+ logger.debug("Loading remote messages.", { url });
27
+ // --- Cache key ---
31
28
  const cacheKey = normalizeCacheKey([
32
29
  loggerOptions.id,
33
30
  "loaderType:remote",
@@ -36,7 +33,7 @@ const loadRemoteMessages = async ({ pool = getGlobalMessagesPool(), rootDir, loc
36
33
  (fallbackLocales ?? []).toSorted().join(","),
37
34
  (namespaces ?? []).toSorted().join(","),
38
35
  ]);
39
- // --- Cache read --------------------------------------------------
36
+ // --- Cache read ---
40
37
  if (cacheOptions.enabled && cacheKey) {
41
38
  const cached = await pool?.get(cacheKey);
42
39
  if (signal?.aborted) {
@@ -56,12 +53,13 @@ const loadRemoteMessages = async ({ pool = getGlobalMessagesPool(), rootDir, loc
56
53
  const isLast = i === candidateLocales.length - 1;
57
54
  try {
58
55
  const fetched = await fetchLocaleMessages({
59
- remoteUrl,
60
- remoteHeaders,
61
56
  locale: candidateLocale,
62
- searchParams: buildSearchParams({ rootDir, namespaces }),
63
- extraOptions: { loggerOptions },
57
+ namespaces,
58
+ rootDir,
59
+ url,
60
+ headers,
64
61
  signal,
62
+ extraOptions: { loggerOptions },
65
63
  });
66
64
  // Stop at the first locale that yields non-empty messages
67
65
  if (fetched && Object.values(fetched[candidateLocale] || {}).length > 0) {
@@ -89,7 +87,7 @@ const loadRemoteMessages = async ({ pool = getGlobalMessagesPool(), rootDir, loc
89
87
  });
90
88
  }
91
89
  }
92
- // --- Cache write --------------------------------------------------
90
+ // --- Cache write ---
93
91
  if (cacheOptions.enabled && allowCacheWrite && cacheKey && messages) {
94
92
  if (signal?.aborted) {
95
93
  logger.debug("Remote message loading aborted before cache write.");
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Resolve the effective message loader for a given runtime.
3
+ *
4
+ * Loader resolution follows an inheritance-based priority model:
5
+ *
6
+ * - client runtime:
7
+ * client.loader → server.loader → root loader
8
+ *
9
+ * - server runtime:
10
+ * server.loader → root loader
11
+ *
12
+ * This allows the client runtime to inherit server behavior
13
+ * when no explicit client loader is provided.
14
+ *
15
+ * Notes:
16
+ * - Static `messages` are intentionally NOT handled here.
17
+ * - Returning `undefined` indicates that no loader is enabled
18
+ * for the given runtime.
19
+ */
20
+ const resolveLoaderOptions = (config, runtime) => {
21
+ // --- runtime: server ---
22
+ return config.server?.loader ?? config.loader;
23
+ };
24
+
25
+ export { resolveLoaderOptions };
@@ -11,9 +11,9 @@ function parseMultiValueParam(values) {
11
11
  return result.length > 0 ? result : undefined;
12
12
  }
13
13
  /**
14
- * Load local locale messages from a URL-based query protocol.
14
+ * Load locale messages from a URL-based query protocol.
15
15
  *
16
- * - A convenience helper for exposing local messages through a URL-accessible interface.
16
+ * - This helper is intended for building custom HTTP endpoints
17
17
  *
18
18
  * @example
19
19
  * ```ts
@@ -26,10 +26,10 @@ function parseMultiValueParam(values) {
26
26
  * "&fallbackLocales=zh-TW"
27
27
  * );
28
28
  *
29
- * const messages = await loadLocalMessagesFromUrl(url);
29
+ * const messages = await loadMessagesFromUrl(url);
30
30
  * ```
31
31
  */
32
- async function loadLocalMessagesFromUrl(url, extraOptions) {
32
+ async function loadMessagesFromUrl(url, options) {
33
33
  // Parse query parameters
34
34
  const rootDir = url.searchParams.get("rootDir") ?? "";
35
35
  const locale = url.searchParams.get("locale") ?? "en-US";
@@ -41,8 +41,14 @@ async function loadLocalMessagesFromUrl(url, extraOptions) {
41
41
  locale,
42
42
  namespaces,
43
43
  fallbackLocales,
44
- extraOptions,
44
+ concurrency: options?.concurrency,
45
+ exts: options?.exts,
46
+ messagesReader: options?.messagesReader,
47
+ pool: options?.pool,
48
+ cacheOptions: options?.cacheOptions || { enabled: false, ttl: 0 },
49
+ allowCacheWrite: options?.allowCacheWrite,
50
+ loggerOptions: options?.loggerOptions || { id: "default" },
45
51
  });
46
52
  }
47
53
 
48
- export { loadLocalMessagesFromUrl };
54
+ export { loadMessagesFromUrl };
@@ -1,6 +1,9 @@
1
+ import '../../core/error/intor-error.js';
2
+ import { deepMerge } from '../../core/utils/deep-merge.js';
3
+ import { resolveLoaderOptions } from '../../core/utils/resolve-loader-options.js';
4
+ import { getLogger } from '../../core/logger/get-logger.js';
5
+ import 'keyv';
1
6
  import { loadMessages } from '../messages/load-messages.js';
2
- import { getLogger } from '../shared/logger/get-logger.js';
3
- import { deepMerge } from '../../shared/utils/deep-merge.js';
4
7
 
5
8
  /**
6
9
  * Entry point for initializing Intor.
@@ -15,7 +18,7 @@ import { deepMerge } from '../../shared/utils/deep-merge.js';
15
18
  * Locale resolution is delegated to the provided `getLocale` implementation.
16
19
  */
17
20
  const intor = async (config, getLocale, loadMessagesOptions = {}) => {
18
- const baseLogger = getLogger({ id: config.id, ...config.logger });
21
+ const baseLogger = getLogger(config.logger);
19
22
  const logger = baseLogger.child({ scope: "intor" });
20
23
  logger.info("Start Intor initialization.");
21
24
  // Resolve initial locale
@@ -25,9 +28,10 @@ const intor = async (config, getLocale, loadMessagesOptions = {}) => {
25
28
  : getLocale || config.defaultLocale;
26
29
  const source = typeof getLocale === "function" ? "resolver" : "static";
27
30
  logger.debug(`Initial locale resolved as "${locale}" via "${source}".`);
28
- // Load messages (if enabled)
31
+ // Load messages during initialization when a loader is configured.
29
32
  let loadedMessages;
30
- if (config.loader) {
33
+ const loader = resolveLoaderOptions(config);
34
+ if (loader) {
31
35
  loadedMessages = await loadMessages({
32
36
  config,
33
37
  locale,
@@ -35,14 +39,14 @@ const intor = async (config, getLocale, loadMessagesOptions = {}) => {
35
39
  exts: loadMessagesOptions.exts,
36
40
  messagesReader: loadMessagesOptions.messagesReader,
37
41
  },
38
- allowCacheWrite: true,
42
+ allowCacheWrite: true, // Intor is the primary cache writer during initialization.
39
43
  });
40
44
  }
41
45
  logger.info("Intor initialized.");
42
46
  return {
43
47
  config,
44
48
  initialLocale: locale,
45
- messages: deepMerge(config.messages, loadedMessages) || {},
49
+ initialMessages: deepMerge(config.messages, loadedMessages),
46
50
  };
47
51
  };
48
52
 
@@ -1,10 +1,10 @@
1
1
  import path from 'node:path';
2
2
  import pLimit from 'p-limit';
3
- import { DEFAULT_CACHE_OPTIONS } from '../../../config/constants/cache.constants.js';
3
+ import '../../../core/error/intor-error.js';
4
+ import { normalizeCacheKey } from '../../../core/utils/normalizers/normalize-cache-key.js';
5
+ import { getLogger } from '../../../core/logger/get-logger.js';
6
+ import { getGlobalMessagesPool } from '../../../core/messages/global-messages-pool.js';
4
7
  import { readLocaleMessages } from './read-locale-messages/read-locale-messages.js';
5
- import { getLogger } from '../../shared/logger/get-logger.js';
6
- import { getGlobalMessagesPool } from '../../shared/messages/global-messages-pool.js';
7
- import { normalizeCacheKey } from '../../../shared/utils/normalizers/normalize-cache-key.js';
8
8
 
9
9
  /**
10
10
  * Load locale messages from the local file system.
@@ -18,15 +18,15 @@ import { normalizeCacheKey } from '../../../shared/utils/normalizers/normalize-c
18
18
  *
19
19
  * File system traversal, parsing, and message validation are delegated to lower-level utilities.
20
20
  */
21
- const loadLocalMessages = async ({ pool = getGlobalMessagesPool(), rootDir = "messages", locale, fallbackLocales, namespaces, extraOptions: { concurrency = 10, cacheOptions = DEFAULT_CACHE_OPTIONS, loggerOptions = { id: "default" }, exts, messagesReader, } = {}, allowCacheWrite = false, }) => {
22
- const baseLogger = getLogger({ ...loggerOptions });
21
+ const loadLocalMessages = async ({ locale, fallbackLocales, namespaces, rootDir = "messages", concurrency = 10, exts, messagesReader, pool = getGlobalMessagesPool(), cacheOptions, allowCacheWrite = false, loggerOptions, }) => {
22
+ const baseLogger = getLogger(loggerOptions);
23
23
  const logger = baseLogger.child({ scope: "load-local-messages" });
24
24
  const start = performance.now();
25
25
  logger.debug("Loading local messages.", {
26
26
  rootDir,
27
27
  resolvedRootDir: path.resolve(process.cwd(), rootDir),
28
28
  });
29
- // --- Cache key
29
+ // --- Cache key ---
30
30
  const cacheKey = normalizeCacheKey([
31
31
  loggerOptions.id,
32
32
  "loaderType:local",
@@ -35,7 +35,7 @@ const loadLocalMessages = async ({ pool = getGlobalMessagesPool(), rootDir = "me
35
35
  (fallbackLocales || []).toSorted().join(","),
36
36
  (namespaces || []).toSorted().join(","),
37
37
  ]);
38
- // --- Cache read --------------------------------------------------
38
+ // --- Cache read ---
39
39
  if (cacheOptions.enabled && cacheKey) {
40
40
  const cached = await pool?.get(cacheKey);
41
41
  if (cached) {
@@ -51,16 +51,16 @@ const loadLocalMessages = async ({ pool = getGlobalMessagesPool(), rootDir = "me
51
51
  const candidateLocale = candidateLocales[i];
52
52
  const isLast = i === candidateLocales.length - 1;
53
53
  try {
54
- const readed = await readLocaleMessages({
55
- limit,
56
- rootDir,
54
+ const result = await readLocaleMessages({
57
55
  locale: candidateLocale,
58
56
  namespaces,
59
- extraOptions: { loggerOptions, exts, messagesReader },
57
+ rootDir,
58
+ limit,
59
+ extraOptions: { exts, messagesReader, loggerOptions },
60
60
  });
61
61
  // Stop at the first locale that yields non-empty messages
62
- if (Object.values(readed[candidateLocale] || {}).length > 0) {
63
- messages = readed;
62
+ if (Object.values(result[candidateLocale] || {}).length > 0) {
63
+ messages = result;
64
64
  break;
65
65
  }
66
66
  }
@@ -76,8 +76,8 @@ const loadLocalMessages = async ({ pool = getGlobalMessagesPool(), rootDir = "me
76
76
  }
77
77
  }
78
78
  }
79
- // --- Cache write --------------------------------------------------
80
- if (allowCacheWrite && cacheOptions.enabled && cacheKey && messages) {
79
+ // --- Cache write ---
80
+ if (cacheOptions.enabled && allowCacheWrite && cacheKey && messages) {
81
81
  await pool?.set(cacheKey, messages, cacheOptions.ttl);
82
82
  }
83
83
  // Final success log with resolved locale and timing
@@ -1,6 +1,8 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
- import { getLogger } from '../../../../shared/logger/get-logger.js';
3
+ import '../../../../../core/error/intor-error.js';
4
+ import { getLogger } from '../../../../../core/logger/get-logger.js';
5
+ import 'keyv';
4
6
 
5
7
  /**
6
8
  * Recursively collects all message files under a given root directory.
@@ -19,8 +21,8 @@ import { getLogger } from '../../../../shared/logger/get-logger.js';
19
21
  * }, ... ];
20
22
  * ```
21
23
  */
22
- async function collectFileEntries({ readdir = fs.readdir, limit, rootDir, namespaces, extraOptions: { exts = [".json"], loggerOptions } = {}, }) {
23
- const baseLogger = getLogger({ ...loggerOptions });
24
+ async function collectFileEntries({ readdir = fs.readdir, namespaces, rootDir, limit, extraOptions: { exts = [".json"], loggerOptions }, }) {
25
+ const baseLogger = getLogger(loggerOptions);
24
26
  const logger = baseLogger.child({ scope: "collect-file-entries" });
25
27
  const fileEntries = [];
26
28
  const walk = async (currentDir) => {
@@ -1,7 +1,9 @@
1
1
  import path from 'node:path';
2
- import { isValidMessages } from '../../../shared/utils/is-valid-messages.js';
3
- import { getLogger } from '../../../../shared/logger/get-logger.js';
4
- import { deepMerge } from '../../../../../shared/utils/deep-merge.js';
2
+ import '../../../../../core/error/intor-error.js';
3
+ import { deepMerge } from '../../../../../core/utils/deep-merge.js';
4
+ import { getLogger } from '../../../../../core/logger/get-logger.js';
5
+ import { isValidMessages } from '../../../../../core/messages/utils/is-valid-messages.js';
6
+ import 'keyv';
5
7
  import { jsonReader } from './utils/json-reader.js';
6
8
  import { nestObjectFromPath } from './utils/nest-object-from-path.js';
7
9
 
@@ -36,8 +38,8 @@ import { nestObjectFromPath } from './utils/nest-object-from-path.js';
36
38
  * }
37
39
  * ```
38
40
  */
39
- async function parseFileEntries({ fileEntries, limit, extraOptions: { messagesReader, loggerOptions } = {}, }) {
40
- const baseLogger = getLogger({ ...loggerOptions });
41
+ async function parseFileEntries({ fileEntries, limit, extraOptions: { messagesReader, loggerOptions }, }) {
42
+ const baseLogger = getLogger(loggerOptions);
41
43
  const logger = baseLogger.child({ scope: "parse-file-entries" });
42
44
  // Read and parse all file entries
43
45
  const parsedFileEntries = [];
@@ -9,11 +9,11 @@ import { parseFileEntries } from './parse-file-entries/parse-file-entries.js';
9
9
  * 2. Parses each file into a messages object.
10
10
  * 3. Wraps the parsed messages under the locale key.
11
11
  */
12
- const readLocaleMessages = async ({ limit, rootDir = "messages", locale, namespaces, extraOptions: { exts, messagesReader, loggerOptions } = {}, }) => {
12
+ const readLocaleMessages = async ({ locale, namespaces, rootDir = "messages", limit, extraOptions: { exts, messagesReader, loggerOptions }, }) => {
13
13
  // 1. Collect file entries
14
14
  const fileEntries = await collectFileEntries({
15
- rootDir: path.resolve(process.cwd(), rootDir, locale),
16
15
  namespaces,
16
+ rootDir: path.resolve(process.cwd(), rootDir, locale),
17
17
  limit,
18
18
  extraOptions: { exts, loggerOptions },
19
19
  });
@@ -1,6 +1,9 @@
1
+ import '../../core/error/intor-error.js';
2
+ import { resolveLoaderOptions } from '../../core/utils/resolve-loader-options.js';
3
+ import { getLogger } from '../../core/logger/get-logger.js';
4
+ import { loadRemoteMessages } from '../../core/messages/load-remote-messages/load-remote-messages.js';
5
+ import 'keyv';
1
6
  import { loadLocalMessages } from './load-local-messages/load-local-messages.js';
2
- import { loadRemoteMessages } from './load-remote-messages/load-remote-messages.js';
3
- import { getLogger } from '../shared/logger/get-logger.js';
4
7
 
5
8
  /**
6
9
  * Load locale messages based on the resolved Intor configuration.
@@ -14,14 +17,15 @@ import { getLogger } from '../shared/logger/get-logger.js';
14
17
  * It does not perform message normalization or transformation itself.
15
18
  */
16
19
  const loadMessages = async ({ config, locale, extraOptions: { exts, messagesReader } = {}, allowCacheWrite = false, }) => {
17
- const baseLogger = getLogger({ id: config.id, ...config.logger });
20
+ const baseLogger = getLogger(config.logger);
18
21
  const logger = baseLogger.child({ scope: "load-messages" });
22
+ const loader = resolveLoaderOptions(config);
19
23
  // Guard: no loader configured
20
- if (!config.loader) {
24
+ if (!loader) {
21
25
  logger.warn("No loader options have been configured in the current config.");
22
26
  return;
23
27
  }
24
- const { type, concurrency, rootDir, namespaces } = config.loader;
28
+ const { type, namespaces, rootDir } = loader;
25
29
  const fallbackLocales = config.fallbackLocales[locale] || [];
26
30
  logger.info(`Loading messages for locale "${locale}".`);
27
31
  logger.trace("Starting to load messages with runtime context.", {
@@ -30,41 +34,43 @@ const loadMessages = async ({ config, locale, extraOptions: { exts, messagesRead
30
34
  fallbackLocales,
31
35
  namespaces: namespaces && namespaces.length > 0 ? [...namespaces] : "[ALL]",
32
36
  cache: config.cache,
33
- concurrency: concurrency ?? 10,
34
37
  });
35
38
  let loadedMessages;
36
- // --- loader type: local
39
+ // ====== loader type: local ======
37
40
  if (type === "local") {
38
41
  loadedMessages = await loadLocalMessages({
42
+ // --- Messages Scope ---
39
43
  locale,
40
44
  fallbackLocales,
41
45
  namespaces,
42
46
  rootDir,
43
- extraOptions: {
44
- concurrency,
45
- cacheOptions: config.cache,
46
- loggerOptions: { id: config.id, ...config.logger },
47
- exts,
48
- messagesReader,
49
- },
47
+ // --- Execution ---
48
+ concurrency: loader.concurrency,
49
+ exts,
50
+ messagesReader,
51
+ // --- Caching ---
52
+ cacheOptions: config.cache,
50
53
  allowCacheWrite,
54
+ // --- Observability ---
55
+ loggerOptions: config.logger,
51
56
  });
52
57
  }
53
- // --- loader type: remote
58
+ // ====== loader type: remote ======
54
59
  else if (type === "remote") {
55
- // Fetch messages from remote
56
60
  loadedMessages = await loadRemoteMessages({
61
+ // --- Messages Scope ---
57
62
  locale,
58
63
  fallbackLocales,
59
64
  namespaces,
60
65
  rootDir,
61
- remoteUrl: config.loader.remoteUrl,
62
- remoteHeaders: config.loader.remoteHeaders,
63
- extraOptions: {
64
- cacheOptions: config.cache,
65
- loggerOptions: { id: config.id, ...config.logger },
66
- },
66
+ // --- Remote Source ---
67
+ url: loader.url,
68
+ headers: loader.headers,
69
+ // --- Caching ---
67
70
  allowCacheWrite,
71
+ cacheOptions: config.cache,
72
+ // --- Observability ---
73
+ loggerOptions: config.logger,
68
74
  });
69
75
  }
70
76
  // No messages found
@@ -2,32 +2,27 @@ import { Translator } from 'intor-translator';
2
2
  import { loadMessages } from '../messages/load-messages.js';
3
3
 
4
4
  // Implementation
5
- async function getTranslator(options) {
6
- const { config, locale, preKey } = options;
7
- const messages = await loadMessages({
8
- config,
9
- locale,
10
- extraOptions: options.extraOptions,
11
- });
12
- // Create a Translator instance
5
+ async function getTranslator(params) {
6
+ const { config, locale, preKey, extraOptions } = params;
7
+ const messages = await loadMessages({ config, locale, extraOptions });
13
8
  const translator = new Translator({
14
9
  locale,
15
10
  messages,
16
11
  fallbackLocales: config.fallbackLocales,
17
12
  loadingMessage: config.translator?.loadingMessage,
18
- placeholder: config.translator?.placeholder,
19
- handlers: options.handlers,
20
- plugins: options.plugins,
13
+ missingMessage: config.translator?.missingMessage,
14
+ handlers: params.handlers,
15
+ plugins: params.plugins,
21
16
  });
22
- const props = { messages, locale };
23
17
  const scoped = translator.scoped(preKey);
24
18
  return {
25
- ...props,
19
+ messages,
20
+ locale,
26
21
  hasKey: preKey ? scoped.hasKey : translator.hasKey,
27
22
  t: preKey ? scoped.t : translator.t,
28
23
  // NOTE:
29
- // Return type is fully validated by overload signatures.
30
- // Assertion here is intentional due to TS inference limitations.
24
+ // The runtime implementation is intentionally erased.
25
+ // Type safety is guaranteed by public type contracts.
31
26
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
27
  };
33
28
  }