intor 2.3.5 → 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 -3
  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/{react/src/shared → core/src/core}/utils/deep-merge.js +4 -9
  13. package/dist/core/src/core/utils/resolve-loader-options.js +25 -0
  14. package/dist/core/src/server/helpers/local-messages-from-url.js +12 -6
  15. package/dist/core/src/server/intor/intor.js +11 -7
  16. package/dist/core/src/server/messages/load-local-messages/load-local-messages.js +16 -16
  17. package/dist/core/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.js +5 -3
  18. package/dist/core/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.js +9 -10
  19. package/dist/core/src/server/messages/load-local-messages/read-locale-messages/read-locale-messages.js +2 -2
  20. package/dist/core/src/server/messages/load-messages.js +28 -22
  21. package/dist/core/src/server/translator/get-translator.js +10 -15
  22. package/dist/next/src/adapters/next/navigation/link.js +1 -12
  23. package/dist/next/src/adapters/next/navigation/redirect.js +6 -6
  24. package/dist/next/src/adapters/next/navigation/use-pathname.js +6 -4
  25. package/dist/next/src/adapters/next/navigation/use-router.js +1 -14
  26. package/dist/next/src/adapters/next/proxy/intor-proxy.js +4 -1
  27. package/dist/next/src/adapters/next/server/get-locale.js +4 -1
  28. package/dist/next/src/adapters/next/server/get-translator.js +8 -2
  29. package/dist/next/src/core/error/intor-error.js +9 -0
  30. package/dist/next/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +11 -11
  31. package/dist/next/src/{server → core}/messages/load-remote-messages/load-remote-messages.js +13 -15
  32. package/dist/next/src/{shared → core}/utils/deep-merge.js +4 -9
  33. package/dist/next/src/core/utils/resolve-loader-options.js +25 -0
  34. package/dist/next/src/routing/pathname/resolve-pathname.js +4 -1
  35. package/dist/next/src/routing/resolve-routing.js +6 -3
  36. package/dist/next/src/server/messages/load-local-messages/load-local-messages.js +16 -16
  37. package/dist/next/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.js +5 -3
  38. package/dist/next/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.js +9 -10
  39. package/dist/next/src/server/messages/load-local-messages/read-locale-messages/read-locale-messages.js +2 -2
  40. package/dist/next/src/server/messages/load-messages.js +28 -22
  41. package/dist/next/src/server/translator/get-translator.js +10 -15
  42. package/dist/react/export/react/index.js +5 -15
  43. package/dist/react/src/client/helpers/get-client-locale.js +4 -1
  44. package/dist/react/src/client/react/helpers/use-load-messages.js +46 -0
  45. package/dist/{next → react}/src/client/react/navigation/use-navigation-strategy.js +11 -7
  46. package/dist/{next → react}/src/client/react/navigation/use-navigation-target.js +6 -3
  47. package/dist/react/src/client/react/provider/effects/use-locale-effects.js +14 -0
  48. package/dist/react/src/client/react/provider/effects/use-messages-effects.js +24 -0
  49. package/dist/react/src/client/react/provider/intor-provider.js +70 -0
  50. package/dist/react/src/client/react/provider/use-intor.js +11 -0
  51. package/dist/react/src/client/react/render/create-react-renderer.js +2 -2
  52. package/dist/react/src/client/react/translator/use-translator.js +9 -20
  53. package/dist/react/src/client/shared/messages/create-refetch-messages.js +61 -0
  54. package/dist/react/src/core/constants/prefix-placeholder.js +4 -0
  55. package/dist/react/src/core/error/intor-error.js +9 -0
  56. package/dist/{core/src/server → react/src/core}/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +11 -11
  57. package/dist/react/src/{server → core}/messages/load-remote-messages/load-remote-messages.js +13 -15
  58. package/dist/{core/src/shared → react/src/core}/utils/deep-merge.js +4 -9
  59. package/dist/react/src/core/utils/is-external-destination.js +11 -0
  60. package/dist/react/src/core/utils/normalizers/normalize-pathname.js +43 -0
  61. package/dist/react/src/core/utils/pathname/get-unprefixed-pathname.js +39 -0
  62. package/dist/react/src/core/utils/pathname/locale-prefix-pathname.js +38 -0
  63. package/dist/react/src/core/utils/pathname/localize-pathname.js +36 -0
  64. package/dist/react/src/core/utils/pathname/standardize-pathname.js +30 -0
  65. package/dist/react/src/core/utils/resolve-loader-options.js +32 -0
  66. package/dist/{next → react}/src/routing/resolve-navigation-target.js +5 -2
  67. package/dist/svelte/export/svelte/index.js +6 -0
  68. package/dist/svelte/src/client/helpers/get-client-locale.js +27 -0
  69. package/dist/svelte/src/client/shared/messages/create-refetch-messages.js +61 -0
  70. package/dist/svelte/src/client/shared/utils/locale/detect-browser-locale.js +12 -0
  71. package/dist/svelte/src/client/shared/utils/locale/get-locale-cookie-browser.js +16 -0
  72. package/dist/svelte/src/client/shared/utils/locale/set-document-locale.js +12 -0
  73. package/dist/svelte/src/client/svelte/runtime/create-intor.js +70 -0
  74. package/dist/svelte/src/client/svelte/runtime/effects/locale-effects.js +19 -0
  75. package/dist/svelte/src/client/svelte/runtime/effects/messages-effects.js +23 -0
  76. package/dist/svelte/src/core/error/intor-error.js +9 -0
  77. package/dist/svelte/src/core/logger/get-logger.js +39 -0
  78. package/dist/svelte/src/core/logger/global-logger-pool.js +8 -0
  79. package/dist/svelte/src/core/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +55 -0
  80. package/dist/svelte/src/core/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +25 -0
  81. package/dist/svelte/src/core/messages/load-remote-messages/load-remote-messages.js +108 -0
  82. package/dist/svelte/src/core/messages/utils/is-valid-messages.js +36 -0
  83. package/dist/svelte/src/core/utils/deep-merge.js +31 -0
  84. package/dist/svelte/src/core/utils/normalizers/normalize-cache-key.js +45 -0
  85. package/dist/svelte/src/core/utils/normalizers/normalize-locale.js +59 -0
  86. package/dist/svelte/src/core/utils/resolve-loader-options.js +32 -0
  87. package/dist/types/export/index.d.ts +1 -3
  88. package/dist/types/export/internal/index.d.ts +1 -1
  89. package/dist/types/export/react/index.d.ts +4 -1
  90. package/dist/types/export/server/index.d.ts +1 -1
  91. package/dist/types/export/svelte/index.d.ts +1 -0
  92. package/dist/types/export/vue/index.d.ts +1 -0
  93. package/dist/types/src/adapters/next/navigation/link.d.ts +1 -1
  94. package/dist/types/src/adapters/next/navigation/redirect.d.ts +1 -1
  95. package/dist/types/src/adapters/next/navigation/use-router.d.ts +1 -1
  96. package/dist/types/src/adapters/next/proxy/utils/set-locale-cookie-edge.d.ts +1 -1
  97. package/dist/types/src/adapters/next/server/get-locale.d.ts +2 -2
  98. package/dist/types/src/adapters/next/server/get-translator.d.ts +9 -24
  99. package/dist/types/src/client/react/helpers/index.d.ts +1 -0
  100. package/dist/types/src/client/react/helpers/use-load-messages.d.ts +10 -0
  101. package/dist/types/src/client/react/index.d.ts +2 -1
  102. package/dist/types/src/client/react/navigation/use-navigation-strategy.d.ts +1 -1
  103. package/dist/types/src/client/react/navigation/use-navigation-target.d.ts +1 -1
  104. package/dist/types/src/client/react/provider/effects/use-locale-effects.d.ts +3 -0
  105. package/dist/types/src/client/react/provider/effects/use-messages-effects.d.ts +4 -0
  106. package/dist/types/src/client/react/{contexts/intor-provider → provider}/index.d.ts +1 -0
  107. package/dist/types/src/client/react/provider/intor-provider.d.ts +5 -0
  108. package/dist/types/src/client/react/provider/types.d.ts +22 -0
  109. package/dist/types/src/client/react/provider/use-intor.d.ts +2 -0
  110. package/dist/types/src/client/react/render/create-react-renderer.d.ts +1 -0
  111. package/dist/types/src/client/react/translator/create-t-rich.d.ts +1 -1
  112. package/dist/types/src/client/react/translator/t.d.ts +2 -2
  113. package/dist/types/src/client/react/translator/translator-instance.d.ts +12 -8
  114. package/dist/types/src/client/react/translator/use-translator.d.ts +3 -3
  115. package/dist/types/src/client/shared/messages/create-refetch-messages.d.ts +18 -0
  116. package/dist/types/src/client/shared/messages/index.d.ts +1 -0
  117. package/dist/types/src/client/shared/types/bootstrap.d.ts +16 -0
  118. package/dist/types/src/client/shared/types/index.d.ts +1 -1
  119. package/dist/types/src/client/shared/utils/build-cookie-string.d.ts +1 -1
  120. package/dist/types/src/client/shared/utils/locale/set-locale-cookie-browser.d.ts +1 -1
  121. package/dist/types/src/client/svelte/helpers/create-messages.d.ts +11 -0
  122. package/dist/types/src/client/svelte/helpers/index.d.ts +1 -0
  123. package/dist/types/src/client/svelte/index.d.ts +3 -0
  124. package/dist/types/src/client/svelte/runtime/create-intor.d.ts +13 -0
  125. package/dist/types/src/client/svelte/runtime/effects/locale-effects.d.ts +11 -0
  126. package/dist/types/src/client/svelte/runtime/effects/messages-effects.d.ts +9 -0
  127. package/dist/types/src/client/svelte/runtime/index.d.ts +1 -0
  128. package/dist/types/src/client/svelte/runtime/types.d.ts +9 -0
  129. package/dist/types/src/client/vue/helpers/index.d.ts +1 -0
  130. package/dist/types/src/client/vue/helpers/use-load-messages.d.ts +11 -0
  131. package/dist/types/src/client/vue/index.d.ts +4 -0
  132. package/dist/types/src/client/vue/provider/effects/use-locale-effects.d.ts +4 -0
  133. package/dist/types/src/client/vue/provider/effects/use-messages-effects.d.ts +11 -0
  134. package/dist/types/src/client/vue/provider/index.d.ts +2 -0
  135. package/dist/types/src/client/vue/provider/inject.d.ts +3 -0
  136. package/dist/types/src/client/vue/provider/intor-provider.d.ts +4 -0
  137. package/dist/types/src/client/vue/provider/types.d.ts +18 -0
  138. package/dist/types/src/client/vue/render/create-vue-renderer.d.ts +18 -0
  139. package/dist/types/src/client/vue/render/index.d.ts +2 -0
  140. package/dist/types/src/client/vue/render/render-rich-message-react.d.ts +13 -0
  141. package/dist/types/src/client/vue/render/types.d.ts +15 -0
  142. package/dist/types/src/client/vue/translator/create-t-rich.d.ts +16 -0
  143. package/dist/types/src/client/vue/translator/index.d.ts +2 -0
  144. package/dist/types/src/client/vue/translator/t.d.ts +38 -0
  145. package/dist/types/src/client/vue/translator/translator-instance.d.ts +16 -0
  146. package/dist/types/src/client/vue/translator/use-translator.d.ts +8 -0
  147. package/dist/types/src/config/constants/cache.d.ts +2 -0
  148. package/dist/types/src/config/constants/cookie.d.ts +2 -0
  149. package/dist/types/src/config/constants/index.d.ts +3 -0
  150. package/dist/types/src/config/constants/routing.d.ts +2 -0
  151. package/dist/types/src/config/define-intor-config.d.ts +1 -1
  152. package/dist/types/src/config/index.d.ts +2 -1
  153. package/dist/types/src/config/resolvers/resolve-cache-options.d.ts +1 -1
  154. package/dist/types/src/config/resolvers/resolve-cookie-options.d.ts +1 -1
  155. package/dist/types/src/config/resolvers/resolve-fallback-locales.d.ts +1 -1
  156. package/dist/types/src/config/resolvers/resolve-routing-options.d.ts +1 -1
  157. package/dist/types/src/config/types/index.d.ts +7 -0
  158. package/dist/types/src/config/types/{intor-config.types.d.ts → intor-config.d.ts} +28 -24
  159. package/dist/types/src/config/types/{loader.types.d.ts → loader.d.ts} +15 -12
  160. package/dist/types/src/config/types/{logger.types.d.ts → logger.d.ts} +1 -0
  161. package/dist/types/src/config/types/{routing.types.d.ts → routing.d.ts} +1 -1
  162. package/dist/types/src/config/types/translator.d.ts +7 -0
  163. package/dist/types/src/config/validators/validate-default-locale.d.ts +1 -1
  164. package/dist/types/src/config/validators/validate-supported-locales.d.ts +1 -1
  165. package/dist/types/src/core/index.d.ts +6 -0
  166. package/dist/types/src/{server/shared → core}/logger/get-logger.d.ts +3 -4
  167. package/dist/types/src/core/logger/index.d.ts +2 -0
  168. package/dist/types/src/core/messages/index.d.ts +4 -0
  169. package/dist/types/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.d.ts +1 -1
  170. package/dist/types/src/core/messages/load-remote-messages/fetch-locale-messages/types.d.ts +12 -0
  171. package/dist/types/src/core/messages/load-remote-messages/index.d.ts +1 -0
  172. package/dist/types/src/{server → core}/messages/load-remote-messages/load-remote-messages.d.ts +1 -1
  173. package/dist/types/src/core/messages/load-remote-messages/types.d.ts +15 -0
  174. package/dist/types/src/{server/messages/shared → core/messages}/types.d.ts +8 -5
  175. package/dist/types/src/{server/messages/shared → core/messages}/utils/is-valid-messages.d.ts +1 -1
  176. package/dist/types/src/{shared → core}/types/generated.d.ts +1 -1
  177. package/dist/types/src/core/types/index.d.ts +3 -0
  178. package/dist/types/src/{shared → core}/types/translator-instance.d.ts +2 -6
  179. package/dist/types/src/{shared → core}/utils/deep-merge.d.ts +4 -1
  180. package/dist/types/src/{shared → core}/utils/index.d.ts +2 -0
  181. package/dist/types/src/{shared → core}/utils/locale/get-locale-from-pathname.d.ts +1 -1
  182. package/dist/types/src/{shared → core}/utils/locale/get-locale-from-query.d.ts +1 -1
  183. package/dist/types/src/{shared → core}/utils/pathname/get-unprefixed-pathname.d.ts +1 -1
  184. package/dist/types/src/{shared → core}/utils/pathname/locale-prefix-pathname.d.ts +1 -1
  185. package/dist/types/src/{shared → core}/utils/pathname/localize-pathname.d.ts +1 -1
  186. package/dist/types/src/{shared → core}/utils/pathname/standardize-pathname.d.ts +1 -1
  187. package/dist/types/src/core/utils/resolve-loader-options.d.ts +21 -0
  188. package/dist/types/src/routing/index.d.ts +2 -0
  189. package/dist/types/src/routing/locale/resolve-locale.d.ts +1 -1
  190. package/dist/types/src/routing/locale/types.d.ts +1 -1
  191. package/dist/types/src/routing/pathname/resolve-pathname.d.ts +1 -1
  192. package/dist/types/src/routing/pathname/types.d.ts +1 -1
  193. package/dist/types/src/routing/resolve-navigation-target.d.ts +1 -1
  194. package/dist/types/src/routing/resolve-routing.d.ts +1 -1
  195. package/dist/types/src/server/helpers/index.d.ts +1 -1
  196. package/dist/types/src/server/helpers/local-messages-from-url.d.ts +15 -5
  197. package/dist/types/src/server/index.d.ts +3 -5
  198. package/dist/types/src/server/intor/intor.d.ts +4 -4
  199. package/dist/types/src/server/intor/types.d.ts +4 -4
  200. package/dist/types/src/server/messages/index.d.ts +0 -2
  201. package/dist/types/src/server/messages/load-local-messages/index.d.ts +1 -1
  202. package/dist/types/src/server/messages/load-local-messages/load-local-messages.d.ts +1 -1
  203. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.d.ts +2 -2
  204. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/types.d.ts +5 -7
  205. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.d.ts +1 -1
  206. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/types.d.ts +5 -7
  207. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/json-reader.d.ts +1 -1
  208. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/nest-object-from-path.d.ts +1 -1
  209. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/read-locale-messages.d.ts +2 -2
  210. package/dist/types/src/server/messages/load-local-messages/read-locale-messages/types.d.ts +6 -8
  211. package/dist/types/src/server/messages/load-local-messages/types.d.ts +9 -16
  212. package/dist/types/src/server/messages/load-messages.d.ts +3 -3
  213. package/dist/types/src/server/messages/types.d.ts +11 -5
  214. package/dist/types/src/server/translator/get-translator.d.ts +11 -19
  215. package/dist/types/src/server/translator/index.d.ts +2 -1
  216. package/dist/types/src/server/translator/translator-instance.d.ts +8 -0
  217. package/dist/vue/export/vue/index.js +6 -0
  218. package/dist/vue/src/client/helpers/get-client-locale.js +27 -0
  219. package/dist/vue/src/client/shared/messages/create-refetch-messages.js +61 -0
  220. package/dist/vue/src/client/shared/utils/build-cookie-string.js +30 -0
  221. package/dist/vue/src/client/shared/utils/locale/detect-browser-locale.js +12 -0
  222. package/dist/vue/src/client/shared/utils/locale/get-locale-cookie-browser.js +16 -0
  223. package/dist/vue/src/client/shared/utils/locale/set-document-locale.js +12 -0
  224. package/dist/vue/src/client/shared/utils/locale/set-locale-cookie-browser.js +18 -0
  225. package/dist/vue/src/client/vue/helpers/use-load-messages.js +44 -0
  226. package/dist/vue/src/client/vue/provider/effects/use-locale-effects.js +13 -0
  227. package/dist/vue/src/client/vue/provider/effects/use-messages-effects.js +36 -0
  228. package/dist/vue/src/client/vue/provider/inject.js +11 -0
  229. package/dist/vue/src/client/vue/provider/intor-provider.js +79 -0
  230. package/dist/vue/src/client/vue/render/create-vue-renderer.js +36 -0
  231. package/dist/vue/src/client/vue/render/render-rich-message-react.js +19 -0
  232. package/dist/vue/src/client/vue/translator/create-t-rich.js +26 -0
  233. package/dist/vue/src/client/vue/translator/t.js +32 -0
  234. package/dist/vue/src/client/vue/translator/use-translator.js +28 -0
  235. package/dist/vue/src/core/error/intor-error.js +9 -0
  236. package/dist/vue/src/core/logger/get-logger.js +39 -0
  237. package/dist/vue/src/core/logger/global-logger-pool.js +8 -0
  238. package/dist/vue/src/core/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +55 -0
  239. package/dist/vue/src/core/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +25 -0
  240. package/dist/vue/src/core/messages/load-remote-messages/load-remote-messages.js +108 -0
  241. package/dist/vue/src/core/messages/utils/is-valid-messages.js +36 -0
  242. package/dist/vue/src/core/utils/deep-merge.js +31 -0
  243. package/dist/vue/src/core/utils/normalizers/normalize-cache-key.js +45 -0
  244. package/dist/vue/src/core/utils/normalizers/normalize-locale.js +59 -0
  245. package/dist/vue/src/core/utils/resolve-loader-options.js +32 -0
  246. package/package.json +16 -6
  247. package/dist/next/src/client/react/contexts/config/context.js +0 -3
  248. package/dist/next/src/client/react/contexts/locale/context.js +0 -3
  249. package/dist/next/src/client/react/contexts/messages/context.js +0 -3
  250. package/dist/next/src/client/react/contexts/translator/context.js +0 -3
  251. package/dist/next/src/client/react/contexts/translator-runtime/context.js +0 -3
  252. package/dist/next/src/config/constants/cache.constants.js +0 -7
  253. package/dist/react/src/client/react/contexts/config/context.js +0 -5
  254. package/dist/react/src/client/react/contexts/config/hook.js +0 -11
  255. package/dist/react/src/client/react/contexts/config/provider.js +0 -14
  256. package/dist/react/src/client/react/contexts/intor-provider/intor-provider.js +0 -17
  257. package/dist/react/src/client/react/contexts/locale/context.js +0 -5
  258. package/dist/react/src/client/react/contexts/locale/hook.js +0 -11
  259. package/dist/react/src/client/react/contexts/locale/provider.js +0 -38
  260. package/dist/react/src/client/react/contexts/locale/utils/change-locale.js +0 -26
  261. package/dist/react/src/client/react/contexts/messages/context.js +0 -5
  262. package/dist/react/src/client/react/contexts/messages/hook.js +0 -11
  263. package/dist/react/src/client/react/contexts/messages/provider.js +0 -39
  264. package/dist/react/src/client/react/contexts/messages/utils/use-refetch-messages.js +0 -70
  265. package/dist/react/src/client/react/contexts/translator/context.js +0 -5
  266. package/dist/react/src/client/react/contexts/translator/hook.js +0 -11
  267. package/dist/react/src/client/react/contexts/translator/provider.js +0 -50
  268. package/dist/react/src/client/react/contexts/translator-runtime/context.js +0 -5
  269. package/dist/react/src/client/react/contexts/translator-runtime/hook.js +0 -9
  270. package/dist/react/src/client/react/contexts/translator-runtime/provider.js +0 -15
  271. package/dist/react/src/config/constants/cache.constants.js +0 -7
  272. package/dist/react/src/server/shared/messages/global-messages-pool.js +0 -10
  273. package/dist/types/src/client/react/contexts/config/context.d.ts +0 -3
  274. package/dist/types/src/client/react/contexts/config/hook.d.ts +0 -2
  275. package/dist/types/src/client/react/contexts/config/index.d.ts +0 -2
  276. package/dist/types/src/client/react/contexts/config/provider.d.ts +0 -2
  277. package/dist/types/src/client/react/contexts/config/types.d.ts +0 -11
  278. package/dist/types/src/client/react/contexts/index.d.ts +0 -6
  279. package/dist/types/src/client/react/contexts/intor-provider/intor-provider.d.ts +0 -2
  280. package/dist/types/src/client/react/contexts/intor-provider/types.d.ts +0 -13
  281. package/dist/types/src/client/react/contexts/locale/context.d.ts +0 -3
  282. package/dist/types/src/client/react/contexts/locale/hook.d.ts +0 -1
  283. package/dist/types/src/client/react/contexts/locale/index.d.ts +0 -2
  284. package/dist/types/src/client/react/contexts/locale/provider.d.ts +0 -3
  285. package/dist/types/src/client/react/contexts/locale/types.d.ts +0 -13
  286. package/dist/types/src/client/react/contexts/locale/utils/change-locale.d.ts +0 -20
  287. package/dist/types/src/client/react/contexts/messages/context.d.ts +0 -3
  288. package/dist/types/src/client/react/contexts/messages/hook.d.ts +0 -2
  289. package/dist/types/src/client/react/contexts/messages/index.d.ts +0 -2
  290. package/dist/types/src/client/react/contexts/messages/provider.d.ts +0 -3
  291. package/dist/types/src/client/react/contexts/messages/types.d.ts +0 -12
  292. package/dist/types/src/client/react/contexts/messages/utils/use-refetch-messages.d.ts +0 -20
  293. package/dist/types/src/client/react/contexts/translator/context.d.ts +0 -3
  294. package/dist/types/src/client/react/contexts/translator/hook.d.ts +0 -2
  295. package/dist/types/src/client/react/contexts/translator/index.d.ts +0 -2
  296. package/dist/types/src/client/react/contexts/translator/provider.d.ts +0 -2
  297. package/dist/types/src/client/react/contexts/translator/types.d.ts +0 -11
  298. package/dist/types/src/client/react/contexts/translator-runtime/context.d.ts +0 -3
  299. package/dist/types/src/client/react/contexts/translator-runtime/hook.d.ts +0 -2
  300. package/dist/types/src/client/react/contexts/translator-runtime/index.d.ts +0 -3
  301. package/dist/types/src/client/react/contexts/translator-runtime/provider.d.ts +0 -2
  302. package/dist/types/src/client/react/contexts/translator-runtime/types.d.ts +0 -13
  303. package/dist/types/src/client/shared/types/translator-instance.d.ts +0 -11
  304. package/dist/types/src/config/constants/cache.constants.d.ts +0 -2
  305. package/dist/types/src/config/constants/cookie.constants.d.ts +0 -2
  306. package/dist/types/src/config/constants/routing.constants.d.ts +0 -2
  307. package/dist/types/src/config/types/translator.types.d.ts +0 -7
  308. package/dist/types/src/server/messages/load-remote-messages/fetch-locale-messages/types.d.ts +0 -14
  309. package/dist/types/src/server/messages/load-remote-messages/index.d.ts +0 -2
  310. package/dist/types/src/server/messages/load-remote-messages/types.d.ts +0 -21
  311. package/dist/types/src/shared/types/index.d.ts +0 -2
  312. /package/dist/core/src/config/constants/{cache.constants.js → cache.js} +0 -0
  313. /package/dist/core/src/config/constants/{cookie.constants.js → cookie.js} +0 -0
  314. /package/dist/core/src/config/constants/{routing.constants.js → routing.js} +0 -0
  315. /package/dist/core/src/{shared → core}/constants/prefix-placeholder.js +0 -0
  316. /package/dist/core/src/{shared → core}/error/intor-error.js +0 -0
  317. /package/dist/core/src/{server/shared → core}/logger/get-logger.js +0 -0
  318. /package/dist/core/src/{server/shared → core}/logger/global-logger-pool.js +0 -0
  319. /package/dist/core/src/{server/shared → core}/messages/global-messages-pool.js +0 -0
  320. /package/dist/core/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +0 -0
  321. /package/dist/core/src/{server/messages/shared → core/messages}/utils/is-valid-messages.js +0 -0
  322. /package/dist/core/src/{shared → core}/utils/normalizers/normalize-cache-key.js +0 -0
  323. /package/dist/core/src/{shared → core}/utils/normalizers/normalize-pathname.js +0 -0
  324. /package/dist/core/src/{shared → core}/utils/pathname/get-unprefixed-pathname.js +0 -0
  325. /package/dist/core/src/{shared → core}/utils/pathname/locale-prefix-pathname.js +0 -0
  326. /package/dist/core/src/{shared → core}/utils/pathname/localize-pathname.js +0 -0
  327. /package/dist/core/src/{shared → core}/utils/pathname/standardize-pathname.js +0 -0
  328. /package/dist/next/src/{shared → core}/constants/prefix-placeholder.js +0 -0
  329. /package/dist/next/src/{server/shared → core}/logger/get-logger.js +0 -0
  330. /package/dist/next/src/{server/shared → core}/logger/global-logger-pool.js +0 -0
  331. /package/dist/next/src/{server/shared → core}/messages/global-messages-pool.js +0 -0
  332. /package/dist/next/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +0 -0
  333. /package/dist/next/src/{server/messages/shared → core/messages}/utils/is-valid-messages.js +0 -0
  334. /package/dist/next/src/{shared → core}/utils/is-external-destination.js +0 -0
  335. /package/dist/next/src/{shared → core}/utils/locale/get-locale-from-accept-language.js +0 -0
  336. /package/dist/next/src/{shared → core}/utils/locale/get-locale-from-host.js +0 -0
  337. /package/dist/next/src/{shared → core}/utils/locale/get-locale-from-pathname.js +0 -0
  338. /package/dist/next/src/{shared → core}/utils/locale/get-locale-from-query.js +0 -0
  339. /package/dist/next/src/{shared → core}/utils/normalizers/normalize-cache-key.js +0 -0
  340. /package/dist/next/src/{shared → core}/utils/normalizers/normalize-locale.js +0 -0
  341. /package/dist/next/src/{shared → core}/utils/normalizers/normalize-pathname.js +0 -0
  342. /package/dist/next/src/{shared → core}/utils/pathname/get-unprefixed-pathname.js +0 -0
  343. /package/dist/next/src/{shared → core}/utils/pathname/locale-prefix-pathname.js +0 -0
  344. /package/dist/next/src/{shared → core}/utils/pathname/localize-pathname.js +0 -0
  345. /package/dist/next/src/{shared → core}/utils/pathname/standardize-pathname.js +0 -0
  346. /package/dist/react/src/{server/shared → core}/logger/get-logger.js +0 -0
  347. /package/dist/react/src/{server/shared → core}/logger/global-logger-pool.js +0 -0
  348. /package/dist/react/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +0 -0
  349. /package/dist/react/src/{server/messages/shared → core/messages}/utils/is-valid-messages.js +0 -0
  350. /package/dist/react/src/{shared → core}/utils/normalizers/normalize-cache-key.js +0 -0
  351. /package/dist/react/src/{shared → core}/utils/normalizers/normalize-locale.js +0 -0
  352. /package/dist/{next → svelte}/src/client/shared/utils/build-cookie-string.js +0 -0
  353. /package/dist/{next → svelte}/src/client/shared/utils/locale/set-locale-cookie-browser.js +0 -0
  354. /package/dist/types/src/config/types/{cache.types.d.ts → cache.d.ts} +0 -0
  355. /package/dist/types/src/config/types/{cookie.types.d.ts → cookie.d.ts} +0 -0
  356. /package/dist/types/src/{shared → core}/constants/index.d.ts +0 -0
  357. /package/dist/types/src/{shared → core}/constants/prefix-placeholder.d.ts +0 -0
  358. /package/dist/types/src/{shared → core}/error/index.d.ts +0 -0
  359. /package/dist/types/src/{shared → core}/error/intor-error.d.ts +0 -0
  360. /package/dist/types/src/{server/shared → core}/logger/global-logger-pool.d.ts +0 -0
  361. /package/dist/types/src/{server/shared → core}/messages/global-messages-pool.d.ts +0 -0
  362. /package/dist/types/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/index.d.ts +0 -0
  363. /package/dist/types/src/{server → core}/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.d.ts +0 -0
  364. /package/dist/types/src/{shared → core}/types/routing.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
@@ -0,0 +1,108 @@
1
+ import { getLogger } from '../../logger/get-logger.js';
2
+ import { normalizeCacheKey } from '../../utils/normalizers/normalize-cache-key.js';
3
+ import { fetchLocaleMessages } from './fetch-locale-messages/fetch-locale-messages.js';
4
+
5
+ /**
6
+ * Load locale messages from a remote API.
7
+ *
8
+ * This function acts as the orchestration layer for remote message loading.
9
+ * It is responsible for:
10
+ *
11
+ * - Resolving fallback locales in order
12
+ * - Coordinating cache read / write behavior
13
+ * - Respecting abort signals across the entire async flow
14
+ *
15
+ * Network fetching and data validation are delegated to lower-level utilities.
16
+ */
17
+ const loadRemoteMessages = async ({ locale, fallbackLocales, namespaces, rootDir, url, headers, signal, pool, cacheOptions, allowCacheWrite = false, loggerOptions, }) => {
18
+ const baseLogger = getLogger(loggerOptions);
19
+ const logger = baseLogger.child({ scope: "load-remote-messages" });
20
+ // Abort early if the request has already been cancelled
21
+ if (signal?.aborted) {
22
+ logger.debug("Remote message loading aborted before fetch.");
23
+ return;
24
+ }
25
+ const start = performance.now();
26
+ logger.debug("Loading remote messages.", { url });
27
+ // --- Cache key ---
28
+ const cacheKey = normalizeCacheKey([
29
+ loggerOptions.id,
30
+ "loaderType:remote",
31
+ rootDir,
32
+ locale,
33
+ (fallbackLocales ?? []).toSorted().join(","),
34
+ (namespaces ?? []).toSorted().join(","),
35
+ ]);
36
+ // --- Cache read ---
37
+ if (cacheOptions.enabled && cacheKey) {
38
+ const cached = await pool?.get(cacheKey);
39
+ if (signal?.aborted) {
40
+ logger.debug("Remote message loading aborted after cache read.");
41
+ return;
42
+ }
43
+ if (cached) {
44
+ logger.debug("Messages cache hit.", { key: cacheKey });
45
+ return cached;
46
+ }
47
+ }
48
+ const candidateLocales = [locale, ...(fallbackLocales || [])];
49
+ let messages;
50
+ // Try each candidate locale in order and stop at the first successful result
51
+ for (let i = 0; i < candidateLocales.length; i++) {
52
+ const candidateLocale = candidateLocales[i];
53
+ const isLast = i === candidateLocales.length - 1;
54
+ try {
55
+ const fetched = await fetchLocaleMessages({
56
+ locale: candidateLocale,
57
+ namespaces,
58
+ rootDir,
59
+ url,
60
+ headers,
61
+ signal,
62
+ extraOptions: { loggerOptions },
63
+ });
64
+ // Stop at the first locale that yields non-empty messages
65
+ if (fetched && Object.values(fetched[candidateLocale] || {}).length > 0) {
66
+ messages = fetched;
67
+ break;
68
+ }
69
+ }
70
+ catch (error) {
71
+ if (error instanceof Error && error.name === "AbortError") {
72
+ logger.debug("Remote message loading aborted.");
73
+ return;
74
+ }
75
+ if (isLast) {
76
+ logger.warn("Failed to load messages for all candidate locales.", {
77
+ locale,
78
+ fallbackLocales,
79
+ });
80
+ }
81
+ else {
82
+ logger.warn(`Failed to fetch locale messages for "${candidateLocale}", trying next fallback.`);
83
+ }
84
+ logger.trace("Remote fetch error detail.", {
85
+ locale: candidateLocale,
86
+ error,
87
+ });
88
+ }
89
+ }
90
+ // --- Cache write ---
91
+ if (cacheOptions.enabled && allowCacheWrite && cacheKey && messages) {
92
+ if (signal?.aborted) {
93
+ logger.debug("Remote message loading aborted before cache write.");
94
+ return;
95
+ }
96
+ await pool?.set(cacheKey, messages, cacheOptions.ttl);
97
+ }
98
+ // Final success log with resolved locale and timing
99
+ if (messages) {
100
+ logger.trace("Finished loading remote messages.", {
101
+ loadedLocale: messages ? Object.keys(messages)[0] : undefined,
102
+ duration: `${Math.round(performance.now() - start)} ms`,
103
+ });
104
+ }
105
+ return messages;
106
+ };
107
+
108
+ export { loadRemoteMessages };
@@ -0,0 +1,36 @@
1
+ /** Check if a value is a plain object (not null, not array) */
2
+ function isPlainObject(value) {
3
+ return typeof value === "object" && value !== null && !Array.isArray(value);
4
+ }
5
+ /**
6
+ * Check if a value is a valid **Messages** object.
7
+ *
8
+ * - Uses an iterative approach to avoid stack overflow with deeply nested objects.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * isValidMessages({ en: { hello: "Hello" } }) // true
13
+ * isValidMessages({ en: { count: 5 } }) // false
14
+ * ```
15
+ */
16
+ function isValidMessages(value) {
17
+ if (!isPlainObject(value))
18
+ return false;
19
+ const stack = [value];
20
+ while (stack.length > 0) {
21
+ const current = stack.pop();
22
+ for (const v of Object.values(current)) {
23
+ if (typeof v === "string")
24
+ continue;
25
+ if (isPlainObject(v)) {
26
+ stack.push(v);
27
+ }
28
+ else {
29
+ return false;
30
+ }
31
+ }
32
+ }
33
+ return true;
34
+ }
35
+
36
+ export { isPlainObject, isValidMessages };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Deeply merges two objects.
3
+ *
4
+ * - Nested objects → merged recursively
5
+ * - Array / primitive → b overwrites a
6
+ *
7
+ * This function always returns a plain object.
8
+ */
9
+ const deepMerge = (a = {}, b = {}) => {
10
+ const result = { ...a };
11
+ for (const key in b) {
12
+ if (Object.prototype.hasOwnProperty.call(b, key)) {
13
+ const av = a[key];
14
+ const bv = b[key];
15
+ if (av &&
16
+ bv &&
17
+ typeof av === "object" &&
18
+ typeof bv === "object" &&
19
+ !Array.isArray(av) &&
20
+ !Array.isArray(bv)) {
21
+ result[key] = deepMerge(av, bv);
22
+ }
23
+ else {
24
+ result[key] = bv;
25
+ }
26
+ }
27
+ }
28
+ return result;
29
+ };
30
+
31
+ export { deepMerge };
@@ -0,0 +1,45 @@
1
+ const CACHE_KEY_DELIMITER = "|";
2
+ const sanitize = (k) => k
3
+ .replaceAll(/[\u200B-\u200D\uFEFF]/g, "")
4
+ .replaceAll(/[\r\n]/g, "")
5
+ .trim();
6
+ /**
7
+ * Normalizes a value into a stable cache key string.
8
+ *
9
+ * - Supports primitive values and structured array keys.
10
+ * - Produces deterministic output suitable for cache identifiers.
11
+ *
12
+ * Notes:
13
+ * - `null`, `undefined`, or empty arrays return `null`.
14
+ * - Special tokens are used for boolean, null, and undefined values
15
+ * to preserve semantic differences.
16
+ */
17
+ const normalizeCacheKey = (key, delimiter = CACHE_KEY_DELIMITER) => {
18
+ // Treat nullish values as "no cache key"
19
+ if (key === null || key === undefined)
20
+ return null;
21
+ if (Array.isArray(key)) {
22
+ // Empty array produces no meaningful cache key
23
+ if (key.length === 0)
24
+ return null;
25
+ const normalized = key.map((k) => {
26
+ // Preserve semantic differences for special values
27
+ if (k === null)
28
+ return "__null";
29
+ if (k === undefined)
30
+ return "__undefined";
31
+ if (typeof k === "boolean")
32
+ return k ? "__true" : "__false";
33
+ return sanitize(String(k));
34
+ });
35
+ // Join segments into a single deterministic cache key
36
+ return normalized.join(delimiter);
37
+ }
38
+ // Normalize boolean primitives explicitly
39
+ if (typeof key === "boolean")
40
+ return key ? "__true" : "__false";
41
+ // Fallback: stringify primitive values
42
+ return String(key);
43
+ };
44
+
45
+ export { normalizeCacheKey };
@@ -0,0 +1,59 @@
1
+ const toCanonical = (input) => {
2
+ try {
3
+ return Intl.getCanonicalLocales(input)[0];
4
+ }
5
+ catch {
6
+ return;
7
+ }
8
+ };
9
+ /**
10
+ * Normalizes a locale string and resolves the best match
11
+ * from a list of supported locales.
12
+ *
13
+ * Resolution strategy:
14
+ *
15
+ * 1. Exact canonical match (BCP 47)
16
+ * 2. Base language fallback
17
+ * - Falls back by base language when no exact match is found
18
+ * (e.g. `"en"` → `"en-US"`).
19
+ * - Script and region subtags are ignored during this step
20
+ * (e.g. `"zh-Hans"` → `"zh-Hant-TW"`)
21
+ * - Preference is determined by the order of `supportedLocales`.
22
+ *
23
+ * Returns `undefined` if no suitable match is found.
24
+ *
25
+ * Notes:
26
+ * - Invalid locale inputs are ignored gracefully.
27
+ * - Always returns an original entry from `supportedLocales`.
28
+ * - Requires `Intl` locale support in the runtime.
29
+ */
30
+ const normalizeLocale = (locale, supportedLocales = []) => {
31
+ if (!locale || supportedLocales.length === 0)
32
+ return;
33
+ const canonicalLocale = toCanonical(locale);
34
+ if (!canonicalLocale)
35
+ return;
36
+ const supportedCanonicalMap = new Map();
37
+ for (const l of supportedLocales) {
38
+ const normalized = toCanonical(l);
39
+ if (normalized) {
40
+ supportedCanonicalMap.set(normalized, l);
41
+ }
42
+ }
43
+ // 1. Exact match
44
+ if (supportedCanonicalMap.has(canonicalLocale)) {
45
+ return supportedCanonicalMap.get(canonicalLocale);
46
+ }
47
+ const baseLang = canonicalLocale.split("-")[0];
48
+ // 2. Match by same base language (e.g., "en" matches "en-US" or "en-GB")
49
+ for (const [key, original] of supportedCanonicalMap) {
50
+ const supportedBase = key.split("-")[0];
51
+ if (supportedBase === baseLang) {
52
+ return original;
53
+ }
54
+ }
55
+ // 3. No match
56
+ return;
57
+ };
58
+
59
+ export { normalizeLocale };
@@ -0,0 +1,32 @@
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: client ---
22
+ {
23
+ const client = config.client?.loader;
24
+ if (client) {
25
+ // Client loader is always remote by design
26
+ return { type: "remote", ...client };
27
+ }
28
+ return config.server?.loader ?? config.loader;
29
+ }
30
+ };
31
+
32
+ export { resolveLoaderOptions };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intor",
3
- "version": "2.3.5",
3
+ "version": "2.3.7",
4
4
  "description": "A modular and extensible i18n core designed for TypeScript and JavaScript projects. Intor enables custom translation logic with support for both frontend and backend environments, featuring runtime configuration, caching, adapters, and message loaders.",
5
5
  "author": "Yiming Liao",
6
6
  "homepage": "https://github.com/yiming-liao/intor#readme",
@@ -64,6 +64,14 @@
64
64
  "./next/server": {
65
65
  "import": "./dist/next/export/next/server/index.js",
66
66
  "types": "./dist/types/export/next/server/index.d.ts"
67
+ },
68
+ "./vue": {
69
+ "import": "./dist/vue/export/vue/index.js",
70
+ "types": "./dist/types/export/vue/index.d.ts"
71
+ },
72
+ "./svelte": {
73
+ "import": "./dist/svelte/export/svelte/index.js",
74
+ "types": "./dist/types/export/svelte/index.d.ts"
67
75
  }
68
76
  },
69
77
  "main": "./dist/export/index.js",
@@ -89,15 +97,15 @@
89
97
  "examples:html": "vite --config examples/html/vite.config.ts"
90
98
  },
91
99
  "dependencies": {
92
- "intor-translator": "1.3.1",
100
+ "intor-translator": "1.3.2",
93
101
  "keyv": "5.5.5",
94
102
  "logry": "2.1.5",
95
103
  "p-limit": "7.2.0"
96
104
  },
97
105
  "devDependencies": {
98
- "@rollup/plugin-alias": "^6.0.0",
106
+ "@rollup/plugin-alias": "6.0.0",
99
107
  "@rollup/plugin-typescript": "12.3.0",
100
- "@rollup/pluginutils": "^5.3.0",
108
+ "@rollup/pluginutils": "5.3.0",
101
109
  "@testing-library/dom": "10.4.1",
102
110
  "@testing-library/jest-dom": "6.9.1",
103
111
  "@testing-library/react": "16.3.1",
@@ -118,7 +126,7 @@
118
126
  "eslint-plugin-unused-imports": "4.1.4",
119
127
  "jsdom": "27.3.0",
120
128
  "knip": "5.69.1",
121
- "magic-string": "^0.30.21",
129
+ "magic-string": "0.30.21",
122
130
  "next": "16.0.3",
123
131
  "prettier": "3.6.2",
124
132
  "react": "19.0.0",
@@ -126,12 +134,14 @@
126
134
  "remark": "15.0.1",
127
135
  "remark-gfm": "4.0.1",
128
136
  "rollup": "4.53.3",
137
+ "svelte": "5.46.1",
129
138
  "tsc-alias": "1.8.16",
130
139
  "tsd": "0.33.0",
131
140
  "typescript": "5.8.3",
132
141
  "typescript-eslint": "8.32.1",
133
142
  "vite": "7.3.0",
134
143
  "vite-tsconfig-paths": "6.0.3",
135
- "vitest": "4.0.16"
144
+ "vitest": "4.0.16",
145
+ "vue": "3.5.26"
136
146
  }
137
147
  }
@@ -1,3 +0,0 @@
1
- import * as React from 'react';
2
-
3
- React.createContext(undefined);
@@ -1,3 +0,0 @@
1
- import * as React from 'react';
2
-
3
- React.createContext(undefined);
@@ -1,3 +0,0 @@
1
- import * as React from 'react';
2
-
3
- React.createContext(undefined);
@@ -1,3 +0,0 @@
1
- import * as React from 'react';
2
-
3
- React.createContext(undefined);
@@ -1,3 +0,0 @@
1
- import * as React from 'react';
2
-
3
- React.createContext(undefined);
@@ -1,7 +0,0 @@
1
- // Default cache options
2
- const DEFAULT_CACHE_OPTIONS = {
3
- enabled: process.env.NODE_ENV === "production",
4
- ttl: 60 * 60 * 1000, // 1 hour
5
- };
6
-
7
- export { DEFAULT_CACHE_OPTIONS };
@@ -1,5 +0,0 @@
1
- import * as React from 'react';
2
-
3
- const ConfigContext = React.createContext(undefined);
4
-
5
- export { ConfigContext };
@@ -1,11 +0,0 @@
1
- import * as React from 'react';
2
- import { ConfigContext } from './context.js';
3
-
4
- function useConfig() {
5
- const context = React.useContext(ConfigContext);
6
- if (!context)
7
- throw new Error("useConfig must be used within ConfigProvider");
8
- return context;
9
- }
10
-
11
- export { useConfig };
@@ -1,14 +0,0 @@
1
- "use client";
2
- import { jsx } from 'react/jsx-runtime';
3
- import * as React from 'react';
4
- import { ConfigContext } from './context.js';
5
-
6
- function ConfigProvider({ value: { config }, children, }) {
7
- // context value
8
- const value = React.useMemo(() => ({
9
- config,
10
- }), [config]);
11
- return (jsx(ConfigContext.Provider, { value: value, children: children }));
12
- }
13
-
14
- export { ConfigProvider };
@@ -1,17 +0,0 @@
1
- "use client";
2
- import { jsx } from 'react/jsx-runtime';
3
- import { ConfigProvider } from '../config/provider.js';
4
- import 'react';
5
- import '../config/context.js';
6
- import { LocaleProvider } from '../locale/provider.js';
7
- import '../locale/context.js';
8
- import { MessagesProvider } from '../messages/provider.js';
9
- import '../messages/context.js';
10
- import { TranslatorProvider } from '../translator/provider.js';
11
- import '../translator/context.js';
12
-
13
- const IntorProvider = ({ value: { config, initialLocale, messages = config.messages, onLocaleChange, isLoading, }, children, }) => {
14
- return (jsx(ConfigProvider, { value: { config }, children: jsx(LocaleProvider, { value: { initialLocale, onLocaleChange }, children: jsx(MessagesProvider, { value: { messages }, children: jsx(TranslatorProvider, { value: { isLoading }, children: children }) }) }) }));
15
- };
16
-
17
- export { IntorProvider };
@@ -1,5 +0,0 @@
1
- import * as React from 'react';
2
-
3
- const LocaleContext = React.createContext(undefined);
4
-
5
- export { LocaleContext };
@@ -1,11 +0,0 @@
1
- import * as React from 'react';
2
- import { LocaleContext } from './context.js';
3
-
4
- function useLocale() {
5
- const context = React.useContext(LocaleContext);
6
- if (!context)
7
- throw new Error("useLocale must be used within a LocaleProvider");
8
- return context;
9
- }
10
-
11
- export { useLocale };
@@ -1,38 +0,0 @@
1
- "use client";
2
- import { jsx } from 'react/jsx-runtime';
3
- import * as React from 'react';
4
- import '../config/context.js';
5
- import { useConfig } from '../config/hook.js';
6
- import { setLocaleCookieBrowser } from '../../../shared/utils/locale/set-locale-cookie-browser.js';
7
- import { setDocumentLocale } from '../../../shared/utils/locale/set-document-locale.js';
8
- import { LocaleContext } from './context.js';
9
- import { changeLocale } from './utils/change-locale.js';
10
-
11
- function LocaleProvider({ value: { initialLocale, onLocaleChange }, children, }) {
12
- const { config } = useConfig();
13
- const [locale, setLocaleState] = React.useState(initialLocale);
14
- // Request a locale change.
15
- const setLocale = React.useCallback(async (newLocale) => {
16
- changeLocale({
17
- locale,
18
- newLocale,
19
- fullReloadRequired: config.loader?.type === "local",
20
- setLocaleState,
21
- });
22
- // Notify external listener (fire-and-forget)
23
- onLocaleChange?.(newLocale);
24
- }, [locale, config.loader, onLocaleChange]);
25
- // Sync locale-related browser side effects.
26
- React.useEffect(() => {
27
- setLocaleCookieBrowser(config.cookie, locale);
28
- setDocumentLocale(locale);
29
- }, [config.cookie, locale]);
30
- // context value
31
- const value = React.useMemo(() => ({
32
- locale,
33
- setLocale,
34
- }), [locale, setLocale]);
35
- return (jsx(LocaleContext.Provider, { value: value, children: children }));
36
- }
37
-
38
- export { LocaleProvider };
@@ -1,26 +0,0 @@
1
- /**
2
- * Requests a locale change on the client.
3
- *
4
- * - This function updates the locale state only.
5
- * - Side effects such as cookie persistence, `<html lang>` updates,
6
- * or message refetching are handled by higher-level providers.
7
- *
8
- * Notes:
9
- * - When using a `local` loader, client-side locale switching
10
- * requires a full page reload to load new message bundles.
11
- */
12
- const changeLocale = ({ locale, newLocale, fullReloadRequired, setLocaleState, }) => {
13
- // No-op when locale does not change
14
- if (newLocale === locale)
15
- return;
16
- // Informational warning when a full reload is required
17
- if (fullReloadRequired) {
18
- console.warn(`[Intor] Locale change requested while using a "local" loader. ` +
19
- `Client-side navigation alone will not load new messages. ` +
20
- `Use the provided <Link> wrapper or trigger a full page reload.`);
21
- }
22
- // Update locale state
23
- setLocaleState(newLocale);
24
- };
25
-
26
- export { changeLocale };
@@ -1,5 +0,0 @@
1
- import * as React from 'react';
2
-
3
- const MessagesContext = React.createContext(undefined);
4
-
5
- export { MessagesContext };
@@ -1,11 +0,0 @@
1
- import * as React from 'react';
2
- import { MessagesContext } from './context.js';
3
-
4
- function useMessages() {
5
- const context = React.useContext(MessagesContext);
6
- if (!context)
7
- throw new Error("useMessages must be used within a MessagesProvider");
8
- return context;
9
- }
10
-
11
- export { useMessages };
@@ -1,39 +0,0 @@
1
- "use client";
2
- import { jsx } from 'react/jsx-runtime';
3
- import * as React from 'react';
4
- import '../config/context.js';
5
- import { useConfig } from '../config/hook.js';
6
- import '../locale/context.js';
7
- import { useLocale } from '../locale/hook.js';
8
- import { useRefetchMessages } from './utils/use-refetch-messages.js';
9
- import { MessagesContext } from './context.js';
10
-
11
- function MessagesProvider({ value: { messages = {} }, children, }) {
12
- const { config } = useConfig();
13
- const { locale } = useLocale();
14
- const [runtimeMessages, setRuntimeMessages] = React.useState(null);
15
- const [isLoadingMessages, setIsLoadingMessages] = React.useState(false);
16
- const isInitialRenderRef = React.useRef(true);
17
- // Prepares message refetch function.
18
- const { refetchMessages } = useRefetchMessages({
19
- config,
20
- setRuntimeMessages,
21
- setIsLoadingMessages,
22
- });
23
- // Refetch messages when locale changes (except initial render).
24
- React.useEffect(() => {
25
- if (isInitialRenderRef.current) {
26
- isInitialRenderRef.current = false;
27
- return;
28
- }
29
- refetchMessages(locale);
30
- }, [refetchMessages, locale]);
31
- // context value
32
- const value = React.useMemo(() => ({
33
- messages: runtimeMessages || messages,
34
- isLoading: isLoadingMessages,
35
- }), [runtimeMessages, messages, isLoadingMessages]);
36
- return (jsx(MessagesContext.Provider, { value: value, children: children }));
37
- }
38
-
39
- export { MessagesProvider };