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
@@ -4,18 +4,7 @@ import { formatUrl } from 'next/dist/shared/lib/router/utils/format-url';
4
4
  import NextLink from 'next/link';
5
5
  import 'react';
6
6
  import { usePathname } from './use-pathname.js';
7
- import '../../../client/react/contexts/config/context.js';
8
- import 'intor/react';
9
- import '../../../client/react/contexts/locale/context.js';
10
- import '../../../config/constants/cache.constants.js';
11
- import 'logry';
12
- import 'keyv';
13
- import '../../../client/react/contexts/messages/context.js';
14
- import 'intor-translator';
15
- import '../../../client/react/contexts/translator-runtime/context.js';
16
- import '../../../client/react/contexts/translator/context.js';
17
- import { useNavigationTarget } from '../../../client/react/navigation/use-navigation-target.js';
18
- import { useNavigationStrategy } from '../../../client/react/navigation/use-navigation-strategy.js';
7
+ import { useNavigationTarget, useNavigationStrategy } from 'intor/react';
19
8
 
20
9
  /**
21
10
  * Locale-aware Link component.
@@ -1,14 +1,14 @@
1
1
  import { redirect as redirect$1 } from 'next/navigation';
2
2
  import { getLocale } from '../server/get-locale.js';
3
- import 'intor-translator';
3
+ import '../../../core/error/intor-error.js';
4
+ import { isExternalDestination } from '../../../core/utils/is-external-destination.js';
5
+ import { localizePathname } from '../../../core/utils/pathname/localize-pathname.js';
6
+ import 'logry';
7
+ import 'keyv';
4
8
  import 'node:path';
5
9
  import 'p-limit';
6
- import '../../../config/constants/cache.constants.js';
7
10
  import 'node:fs/promises';
8
- import 'logry';
9
- import { localizePathname } from '../../../shared/utils/pathname/localize-pathname.js';
10
- import 'keyv';
11
- import { isExternalDestination } from '../../../shared/utils/is-external-destination.js';
11
+ import 'intor-translator';
12
12
 
13
13
  /**
14
14
  * Locale-aware redirect helper (server-only).
@@ -1,6 +1,9 @@
1
1
  import { usePathname as usePathname$1 } from 'next/navigation';
2
- import { useConfig, useLocale } from 'intor/react';
3
- import { localizePathname } from '../../../shared/utils/pathname/localize-pathname.js';
2
+ import { useIntor } from 'intor/react';
3
+ import '../../../core/error/intor-error.js';
4
+ import { localizePathname } from '../../../core/utils/pathname/localize-pathname.js';
5
+ import 'logry';
6
+ import 'keyv';
4
7
 
5
8
  /**
6
9
  * Custom hook to get the current pathname in different forms based on the active locale.
@@ -15,8 +18,7 @@ import { localizePathname } from '../../../shared/utils/pathname/localize-pathna
15
18
  * // unprefixedPathname => "/about"
16
19
  */
17
20
  const usePathname = () => {
18
- const { config } = useConfig();
19
- const { locale } = useLocale();
21
+ const { config, locale } = useIntor();
20
22
  // Get the raw pathname from the Next.js usePathname hook
21
23
  const rawPathname = usePathname$1();
22
24
  // Generate the locale-prefixed pathname
@@ -1,19 +1,6 @@
1
1
  import { useRouter as useRouter$1 } from 'next/navigation';
2
2
  import { usePathname } from './use-pathname.js';
3
- import 'react/jsx-runtime';
4
- import 'react';
5
- import '../../../client/react/contexts/config/context.js';
6
- import 'intor/react';
7
- import '../../../client/react/contexts/locale/context.js';
8
- import '../../../config/constants/cache.constants.js';
9
- import 'logry';
10
- import 'keyv';
11
- import '../../../client/react/contexts/messages/context.js';
12
- import 'intor-translator';
13
- import '../../../client/react/contexts/translator-runtime/context.js';
14
- import '../../../client/react/contexts/translator/context.js';
15
- import { useNavigationTarget } from '../../../client/react/navigation/use-navigation-target.js';
16
- import { useNavigationStrategy } from '../../../client/react/navigation/use-navigation-strategy.js';
3
+ import { useNavigationTarget, useNavigationStrategy } from 'intor/react';
17
4
 
18
5
  /**
19
6
  * Locale-aware router hook.
@@ -1,8 +1,11 @@
1
1
  import { headers } from 'next/headers';
2
2
  import { NextResponse } from 'next/server';
3
3
  import { setLocaleCookieEdge } from './utils/set-locale-cookie-edge.js';
4
+ import '../../../core/error/intor-error.js';
5
+ import { getLocaleFromAcceptLanguage } from '../../../core/utils/locale/get-locale-from-accept-language.js';
6
+ import 'logry';
7
+ import 'keyv';
4
8
  import { resolveRouting } from '../../../routing/resolve-routing.js';
5
- import { getLocaleFromAcceptLanguage } from '../../../shared/utils/locale/get-locale-from-accept-language.js';
6
9
 
7
10
  /**
8
11
  * Next.js routing adapter for Intor.
@@ -1,6 +1,9 @@
1
1
  import { cookies, headers } from 'next/headers';
2
+ import '../../../core/error/intor-error.js';
3
+ import { getLocaleFromAcceptLanguage } from '../../../core/utils/locale/get-locale-from-accept-language.js';
4
+ import 'logry';
5
+ import 'keyv';
2
6
  import { resolveLocale } from '../../../routing/locale/resolve-locale.js';
3
- import { getLocaleFromAcceptLanguage } from '../../../shared/utils/locale/get-locale-from-accept-language.js';
4
7
 
5
8
  /**
6
9
  * Get the locale for the current Next.js request.
@@ -1,9 +1,15 @@
1
1
  import { getLocale } from './get-locale.js';
2
+ import '../../../core/error/intor-error.js';
3
+ import 'logry';
4
+ import 'keyv';
5
+ import 'node:path';
6
+ import 'p-limit';
7
+ import 'node:fs/promises';
2
8
  import { getTranslator as getTranslator$1 } from '../../../server/translator/get-translator.js';
3
9
 
4
10
  // Implementation
5
- async function getTranslator(options) {
6
- const { config, preKey, handlers, plugins, extraOptions } = options;
11
+ async function getTranslator(params) {
12
+ const { config, preKey, handlers, plugins, extraOptions } = params;
7
13
  const locale = await getLocale(config);
8
14
  const translatorInstance = getTranslator$1({
9
15
  config,
@@ -0,0 +1,9 @@
1
+ var IntorErrorCode;
2
+ (function (IntorErrorCode) {
3
+ // intor-config
4
+ IntorErrorCode["MISSING_SUPPORTED_LOCALES"] = "INTOR_MISSING_SUPPORTED_LOCALES";
5
+ IntorErrorCode["MISSING_DEFAULT_LOCALE"] = "INTOR_MISSING_DEFAULT_LOCALE";
6
+ IntorErrorCode["UNSUPPORTED_DEFAULT_LOCALE"] = "INTOR_UNSUPPORTED_DEFAULT_LOCALE";
7
+ })(IntorErrorCode || (IntorErrorCode = {}));
8
+
9
+ export { IntorErrorCode };
@@ -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 };
@@ -1,7 +1,10 @@
1
+ import '../../core/error/intor-error.js';
2
+ import { localizePathname } from '../../core/utils/pathname/localize-pathname.js';
3
+ import 'logry';
4
+ import 'keyv';
1
5
  import { all } from './strategies/all.js';
2
6
  import { exceptDefault } from './strategies/except-default.js';
3
7
  import { none } from './strategies/none.js';
4
- import { localizePathname } from '../../shared/utils/pathname/localize-pathname.js';
5
8
 
6
9
  const assertNever = (x) => {
7
10
  throw new Error(`Unhandled prefix strategy: ${x}`);
@@ -1,6 +1,9 @@
1
- import { getLocaleFromPathname } from '../shared/utils/locale/get-locale-from-pathname.js';
2
- import { getLocaleFromHost } from '../shared/utils/locale/get-locale-from-host.js';
3
- import { getLocaleFromQuery } from '../shared/utils/locale/get-locale-from-query.js';
1
+ import '../core/error/intor-error.js';
2
+ import { getLocaleFromPathname } from '../core/utils/locale/get-locale-from-pathname.js';
3
+ import { getLocaleFromHost } from '../core/utils/locale/get-locale-from-host.js';
4
+ import { getLocaleFromQuery } from '../core/utils/locale/get-locale-from-query.js';
5
+ import 'logry';
6
+ import 'keyv';
4
7
  import { resolveLocale } from './locale/resolve-locale.js';
5
8
  import { resolvePathname } from './pathname/resolve-pathname.js';
6
9
 
@@ -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
  }
@@ -1,18 +1,8 @@
1
- export { IntorProvider } from '../../src/client/react/contexts/intor-provider/intor-provider.js';
2
- import 'react/jsx-runtime';
3
- import 'react';
4
- import '../../src/client/react/contexts/config/context.js';
5
- export { useConfig } from '../../src/client/react/contexts/config/hook.js';
6
- import '../../src/client/react/contexts/locale/context.js';
7
- export { useLocale } from '../../src/client/react/contexts/locale/hook.js';
8
- import '../../src/config/constants/cache.constants.js';
9
- import 'logry';
10
- import 'keyv';
11
- import '../../src/client/react/contexts/messages/context.js';
12
- import 'intor-translator';
13
- export { TranslatorRuntimeProvider } from '../../src/client/react/contexts/translator-runtime/provider.js';
14
- import '../../src/client/react/contexts/translator-runtime/context.js';
15
- import '../../src/client/react/contexts/translator/context.js';
1
+ export { IntorProvider } from '../../src/client/react/provider/intor-provider.js';
2
+ export { useIntor } from '../../src/client/react/provider/use-intor.js';
16
3
  export { useTranslator } from '../../src/client/react/translator/use-translator.js';
17
4
  export { T } from '../../src/client/react/translator/t.js';
5
+ export { useNavigationTarget } from '../../src/client/react/navigation/use-navigation-target.js';
6
+ export { useNavigationStrategy } from '../../src/client/react/navigation/use-navigation-strategy.js';
7
+ export { useLoadMessages } from '../../src/client/react/helpers/use-load-messages.js';
18
8
  export { getClientLocale } from '../../src/client/helpers/get-client-locale.js';
@@ -1,6 +1,9 @@
1
+ import '../../core/error/intor-error.js';
2
+ import { normalizeLocale } from '../../core/utils/normalizers/normalize-locale.js';
3
+ import 'logry';
4
+ import 'keyv';
1
5
  import { detectBrowserLocale } from '../shared/utils/locale/detect-browser-locale.js';
2
6
  import { getLocaleCookieBrowser } from '../shared/utils/locale/get-locale-cookie-browser.js';
3
- import { normalizeLocale } from '../../shared/utils/normalizers/normalize-locale.js';
4
7
 
5
8
  /**
6
9
  * Resolve the locale in a client-only environment.