intor 2.2.13 → 2.2.15

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 (246) hide show
  1. package/dist/exports/config/index.d.ts +2 -0
  2. package/dist/exports/config/index.js +4 -0
  3. package/dist/exports/index.d.ts +5 -0
  4. package/dist/exports/index.js +11 -0
  5. package/dist/exports/next/index.d.ts +3 -0
  6. package/dist/exports/next/index.js +9 -0
  7. package/dist/exports/next/middleware/index.d.ts +2 -0
  8. package/dist/exports/next/middleware/index.js +2 -0
  9. package/dist/exports/next/server/index.d.ts +2 -0
  10. package/dist/exports/next/server/index.js +2 -0
  11. package/dist/exports/react/index.d.ts +2 -0
  12. package/dist/exports/react/index.js +6 -0
  13. package/dist/exports/server/index.d.ts +2 -0
  14. package/dist/exports/server/index.js +7 -0
  15. package/dist/src/adapters/next/middleware/handle-prefix/handle-prefix-all.d.ts +12 -0
  16. package/dist/src/adapters/next/middleware/handle-prefix/handle-prefix-all.js +60 -0
  17. package/dist/src/adapters/next/middleware/handle-prefix/handle-prefix-except-default.d.ts +16 -0
  18. package/dist/src/adapters/next/middleware/handle-prefix/handle-prefix-except-default.js +81 -0
  19. package/dist/src/adapters/next/middleware/handle-prefix/handle-prefix-none.d.ts +10 -0
  20. package/dist/src/adapters/next/middleware/handle-prefix/handle-prefix-none.js +22 -0
  21. package/dist/src/adapters/next/middleware/index.d.ts +2 -0
  22. package/dist/src/adapters/next/middleware/intor-middleware.d.ts +6 -0
  23. package/dist/src/adapters/next/middleware/intor-middleware.js +22 -0
  24. package/dist/src/adapters/next/middleware/utils/create-response.d.ts +17 -0
  25. package/dist/src/adapters/next/middleware/utils/create-response.js +42 -0
  26. package/dist/src/adapters/next/middleware/utils/determine-initial-locale.d.ts +8 -0
  27. package/dist/src/adapters/next/middleware/utils/determine-initial-locale.js +28 -0
  28. package/dist/src/adapters/next/middleware/utils/set-locale-cookie-edge.d.ts +15 -0
  29. package/dist/src/adapters/next/middleware/utils/set-locale-cookie-edge.js +24 -0
  30. package/dist/src/adapters/next/middleware/utils/set-pathname-header.d.ts +12 -0
  31. package/dist/src/adapters/next/middleware/utils/set-pathname-header.js +13 -0
  32. package/dist/src/adapters/next/navigation/index.d.ts +4 -0
  33. package/dist/src/adapters/next/navigation/link.d.ts +16 -0
  34. package/dist/src/adapters/next/navigation/link.js +25 -0
  35. package/dist/src/adapters/next/navigation/redirect.d.ts +16 -0
  36. package/dist/src/adapters/next/navigation/redirect.js +36 -0
  37. package/dist/src/adapters/next/navigation/use-pathname.d.ts +17 -0
  38. package/dist/src/adapters/next/navigation/use-pathname.js +49 -0
  39. package/dist/src/adapters/next/navigation/use-router.d.ts +20 -0
  40. package/dist/src/adapters/next/navigation/use-router.js +31 -0
  41. package/dist/src/adapters/next/navigation/utils/should-full-reload.d.ts +7 -0
  42. package/dist/src/adapters/next/navigation/utils/should-full-reload.js +19 -0
  43. package/dist/src/adapters/next/navigation/utils/use-locale-switch.d.ts +16 -0
  44. package/dist/src/adapters/next/navigation/utils/use-locale-switch.js +58 -0
  45. package/dist/src/adapters/next/server/get-i18n-context.d.ts +9 -0
  46. package/dist/src/adapters/next/server/get-i18n-context.js +47 -0
  47. package/dist/src/adapters/next/server/get-translator.d.ts +30 -0
  48. package/dist/src/adapters/next/server/get-translator.js +19 -0
  49. package/dist/src/adapters/next/server/index.d.ts +2 -0
  50. package/dist/src/adapters/next/shared/constants/pathname-header-name.d.ts +1 -0
  51. package/dist/src/adapters/next/shared/constants/pathname-header-name.js +4 -0
  52. package/dist/src/adapters/next/shared/utils/locale-prefix-pathname.d.ts +16 -0
  53. package/dist/src/adapters/next/shared/utils/locale-prefix-pathname.js +33 -0
  54. package/dist/src/adapters/next/shared/utils/localize-pathname.d.ts +18 -0
  55. package/dist/src/adapters/next/shared/utils/localize-pathname.js +36 -0
  56. package/dist/src/client/react/contexts/config/context.d.ts +3 -0
  57. package/dist/src/client/react/contexts/config/context.js +6 -0
  58. package/dist/src/client/react/contexts/config/hook.d.ts +2 -0
  59. package/dist/src/client/react/contexts/config/hook.js +12 -0
  60. package/dist/src/client/react/contexts/config/index.d.ts +2 -0
  61. package/dist/src/client/react/contexts/config/provider.d.ts +2 -0
  62. package/dist/src/client/react/contexts/config/provider.js +11 -0
  63. package/dist/src/client/react/contexts/config/types.d.ts +10 -0
  64. package/dist/src/client/react/contexts/intor-provider/index.d.ts +2 -0
  65. package/dist/src/client/react/contexts/intor-provider/intor-provider.d.ts +2 -0
  66. package/dist/src/client/react/contexts/intor-provider/intor-provider.js +17 -0
  67. package/dist/src/client/react/contexts/intor-provider/types.d.ts +14 -0
  68. package/dist/src/client/react/contexts/locale/context.d.ts +3 -0
  69. package/dist/src/client/react/contexts/locale/context.js +6 -0
  70. package/dist/src/client/react/contexts/locale/hook.d.ts +1 -0
  71. package/dist/src/client/react/contexts/locale/hook.js +12 -0
  72. package/dist/src/client/react/contexts/locale/index.d.ts +2 -0
  73. package/dist/src/client/react/contexts/locale/provider.d.ts +3 -0
  74. package/dist/src/client/react/contexts/locale/provider.js +48 -0
  75. package/dist/src/client/react/contexts/locale/types.d.ts +13 -0
  76. package/dist/src/client/react/contexts/locale/utils/change-locale.d.ts +22 -0
  77. package/dist/src/client/react/contexts/locale/utils/change-locale.js +35 -0
  78. package/dist/src/client/react/contexts/locale/utils/use-init-locale-cookie.d.ts +8 -0
  79. package/dist/src/client/react/contexts/locale/utils/use-init-locale-cookie.js +28 -0
  80. package/dist/src/client/react/contexts/messages/context.d.ts +3 -0
  81. package/dist/src/client/react/contexts/messages/context.js +6 -0
  82. package/dist/src/client/react/contexts/messages/hook.d.ts +2 -0
  83. package/dist/src/client/react/contexts/messages/hook.js +12 -0
  84. package/dist/src/client/react/contexts/messages/index.d.ts +2 -0
  85. package/dist/src/client/react/contexts/messages/provider.d.ts +3 -0
  86. package/dist/src/client/react/contexts/messages/provider.js +32 -0
  87. package/dist/src/client/react/contexts/messages/types.d.ts +15 -0
  88. package/dist/src/client/react/contexts/messages/utils/use-refetch-messages.d.ts +16 -0
  89. package/dist/src/client/react/contexts/messages/utils/use-refetch-messages.js +57 -0
  90. package/dist/src/client/react/contexts/translate-handlers/context.d.ts +2 -0
  91. package/dist/src/client/react/contexts/translate-handlers/context.js +6 -0
  92. package/dist/src/client/react/contexts/translate-handlers/hook.d.ts +2 -0
  93. package/dist/src/client/react/contexts/translate-handlers/hook.js +10 -0
  94. package/dist/src/client/react/contexts/translate-handlers/index.d.ts +3 -0
  95. package/dist/src/client/react/contexts/translate-handlers/provider.d.ts +2 -0
  96. package/dist/src/client/react/contexts/translate-handlers/provider.js +11 -0
  97. package/dist/src/client/react/contexts/translate-handlers/types.d.ts +7 -0
  98. package/dist/src/client/react/contexts/translator/context.d.ts +3 -0
  99. package/dist/src/client/react/contexts/translator/context.js +6 -0
  100. package/dist/src/client/react/contexts/translator/hook.d.ts +2 -0
  101. package/dist/src/client/react/contexts/translator/hook.js +12 -0
  102. package/dist/src/client/react/contexts/translator/index.d.ts +2 -0
  103. package/dist/src/client/react/contexts/translator/provider.d.ts +2 -0
  104. package/dist/src/client/react/contexts/translator/provider.js +53 -0
  105. package/dist/src/client/react/contexts/translator/types.d.ts +11 -0
  106. package/dist/src/client/react/hooks/use-translator.d.ts +12 -0
  107. package/dist/src/client/react/hooks/use-translator.js +38 -0
  108. package/dist/src/client/react/index.d.ts +4 -0
  109. package/dist/src/client/shared/utils/get-initial-locale.d.ts +11 -0
  110. package/dist/src/client/shared/utils/get-initial-locale.js +21 -0
  111. package/dist/src/config/constants/cache.constants.d.ts +2 -0
  112. package/dist/src/config/constants/cache.constants.js +7 -0
  113. package/dist/src/config/constants/cookie.constants.d.ts +2 -0
  114. package/dist/src/config/constants/cookie.constants.js +14 -0
  115. package/dist/src/config/constants/routing.constants.d.ts +2 -0
  116. package/dist/src/config/constants/routing.constants.js +11 -0
  117. package/dist/src/config/define-intor-config.d.ts +2 -0
  118. package/dist/src/config/define-intor-config.js +34 -0
  119. package/dist/src/config/index.d.ts +5 -0
  120. package/dist/src/config/resolvers/resolve-cache-options.d.ts +2 -0
  121. package/dist/src/config/resolvers/resolve-cache-options.js +10 -0
  122. package/dist/src/config/resolvers/resolve-cookie-options.d.ts +11 -0
  123. package/dist/src/config/resolvers/resolve-cookie-options.js +19 -0
  124. package/dist/src/config/resolvers/resolve-fallback-locales.d.ts +3 -0
  125. package/dist/src/config/resolvers/resolve-fallback-locales.js +33 -0
  126. package/dist/src/config/resolvers/resolve-routing-options.d.ts +13 -0
  127. package/dist/src/config/resolvers/resolve-routing-options.js +28 -0
  128. package/dist/src/config/types/cache.types.d.ts +7 -0
  129. package/dist/src/config/types/cookie.types.d.ts +23 -0
  130. package/dist/src/config/types/intor-config.types.d.ts +41 -0
  131. package/dist/src/config/types/loader.types.d.ts +38 -0
  132. package/dist/src/config/types/logger.types.d.ts +7 -0
  133. package/dist/src/config/types/routing.types.d.ts +15 -0
  134. package/dist/src/config/types/translator.types.d.ts +4 -0
  135. package/dist/src/config/validators/validate-default-locale.d.ts +3 -0
  136. package/dist/src/config/validators/validate-default-locale.js +24 -0
  137. package/dist/src/config/validators/validate-supported-locales.d.ts +7 -0
  138. package/dist/src/config/validators/validate-supported-locales.js +22 -0
  139. package/dist/src/server/index.d.ts +4 -0
  140. package/dist/src/server/intor/index.d.ts +2 -0
  141. package/dist/src/server/intor/intor.d.ts +14 -0
  142. package/dist/src/server/intor/intor.js +67 -0
  143. package/dist/src/server/intor/types.d.ts +14 -0
  144. package/dist/src/server/messages/index.d.ts +7 -0
  145. package/dist/src/server/messages/load-local-messages/index.d.ts +2 -0
  146. package/dist/src/server/messages/load-local-messages/load-local-messages.d.ts +11 -0
  147. package/dist/src/server/messages/load-local-messages/load-local-messages.js +85 -0
  148. package/dist/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.d.ts +29 -0
  149. package/dist/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.js +95 -0
  150. package/dist/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/index.d.ts +1 -0
  151. package/dist/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/types.d.ts +15 -0
  152. package/dist/src/server/messages/load-local-messages/read-locale-messages/index.d.ts +2 -0
  153. package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/index.d.ts +1 -0
  154. package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.d.ts +34 -0
  155. package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.js +85 -0
  156. package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/types.d.ts +18 -0
  157. package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/json-reader.d.ts +6 -0
  158. package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/json-reader.js +12 -0
  159. package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/nest-object-from-path.d.ts +14 -0
  160. package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/nest-object-from-path.js +21 -0
  161. package/dist/src/server/messages/load-local-messages/read-locale-messages/read-locale-messages.d.ts +10 -0
  162. package/dist/src/server/messages/load-local-messages/read-locale-messages/read-locale-messages.js +31 -0
  163. package/dist/src/server/messages/load-local-messages/read-locale-messages/types.d.ts +23 -0
  164. package/dist/src/server/messages/load-local-messages/types.d.ts +21 -0
  165. package/dist/src/server/messages/load-messages.d.ts +11 -0
  166. package/dist/src/server/messages/load-messages.js +77 -0
  167. package/dist/src/server/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.d.ts +9 -0
  168. package/dist/src/server/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +50 -0
  169. package/dist/src/server/messages/load-remote-messages/fetch-locale-messages/index.d.ts +1 -0
  170. package/dist/src/server/messages/load-remote-messages/fetch-locale-messages/types.d.ts +13 -0
  171. package/dist/src/server/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.d.ts +5 -0
  172. package/dist/src/server/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +25 -0
  173. package/dist/src/server/messages/load-remote-messages/index.d.ts +2 -0
  174. package/dist/src/server/messages/load-remote-messages/load-remote-messages.d.ts +9 -0
  175. package/dist/src/server/messages/load-remote-messages/load-remote-messages.js +79 -0
  176. package/dist/src/server/messages/load-remote-messages/types.d.ts +20 -0
  177. package/dist/src/server/messages/shared/global-messages-pool.d.ts +15 -0
  178. package/dist/src/server/messages/shared/global-messages-pool.js +10 -0
  179. package/dist/src/server/messages/shared/types.d.ts +39 -0
  180. package/dist/src/server/messages/shared/utils/is-valid-messages.d.ts +15 -0
  181. package/dist/src/server/messages/shared/utils/is-valid-messages.js +36 -0
  182. package/dist/src/server/messages/types.d.ts +15 -0
  183. package/dist/src/server/shared/logger/get-logger.d.ts +11 -0
  184. package/dist/src/server/shared/logger/get-logger.js +34 -0
  185. package/dist/src/server/shared/logger/global-logger-pool.d.ts +15 -0
  186. package/dist/src/server/shared/logger/global-logger-pool.js +8 -0
  187. package/dist/src/server/translator/get-translator.d.ts +33 -0
  188. package/dist/src/server/translator/get-translator.js +39 -0
  189. package/dist/src/server/translator/index.d.ts +1 -0
  190. package/dist/src/shared/constants/prefix-placeholder.d.ts +1 -0
  191. package/dist/src/shared/constants/prefix-placeholder.js +4 -0
  192. package/dist/src/shared/error/index.d.ts +1 -0
  193. package/dist/src/shared/error/intor-error.d.ts +16 -0
  194. package/dist/src/shared/error/intor-error.js +21 -0
  195. package/dist/src/shared/types/generated.types.d.ts +30 -0
  196. package/dist/src/shared/types/translator-instance.types.d.ts +33 -0
  197. package/dist/src/shared/utils/client/build-cookie-string.d.ts +9 -0
  198. package/dist/src/shared/utils/client/build-cookie-string.js +33 -0
  199. package/dist/src/shared/utils/client/set-locale-cookie-browser.d.ts +13 -0
  200. package/dist/src/shared/utils/client/set-locale-cookie-browser.js +21 -0
  201. package/dist/src/shared/utils/index.d.ts +8 -0
  202. package/dist/src/shared/utils/locale/normalize-locale.d.ts +4 -0
  203. package/dist/src/shared/utils/locale/normalize-locale.js +42 -0
  204. package/dist/src/shared/utils/locale/resolve-preferred-locale.d.ts +5 -0
  205. package/dist/src/shared/utils/locale/resolve-preferred-locale.js +26 -0
  206. package/dist/src/shared/utils/merge-messages.d.ts +6 -0
  207. package/dist/src/shared/utils/merge-messages.js +13 -0
  208. package/dist/src/shared/utils/normalize-cache-key.d.ts +3 -0
  209. package/dist/src/shared/utils/normalize-cache-key.js +29 -0
  210. package/dist/src/shared/utils/pathname/extract-pathname.d.ts +28 -0
  211. package/dist/src/shared/utils/pathname/extract-pathname.js +58 -0
  212. package/dist/src/shared/utils/pathname/normalize-pathname.d.ts +12 -0
  213. package/dist/src/shared/utils/pathname/normalize-pathname.js +43 -0
  214. package/dist/src/shared/utils/pathname/standardize-pathname.d.ts +18 -0
  215. package/dist/src/shared/utils/pathname/standardize-pathname.js +30 -0
  216. package/dist/src/shared/utils/resolve-namespaces.d.ts +10 -0
  217. package/dist/src/shared/utils/resolve-namespaces.js +33 -0
  218. package/package.json +28 -30
  219. package/dist/config/index.cjs +0 -198
  220. package/dist/config/index.d.cts +0 -145
  221. package/dist/config/index.d.ts +0 -145
  222. package/dist/config/index.js +0 -193
  223. package/dist/index.cjs +0 -234
  224. package/dist/index.d.cts +0 -224
  225. package/dist/index.d.ts +0 -224
  226. package/dist/index.js +0 -214
  227. package/dist/next/index.cjs +0 -940
  228. package/dist/next/index.d.cts +0 -282
  229. package/dist/next/index.d.ts +0 -282
  230. package/dist/next/index.js +0 -907
  231. package/dist/next/middleware/index.cjs +0 -387
  232. package/dist/next/middleware/index.d.cts +0 -128
  233. package/dist/next/middleware/index.d.ts +0 -128
  234. package/dist/next/middleware/index.js +0 -384
  235. package/dist/next/server/index.cjs +0 -734
  236. package/dist/next/server/index.d.cts +0 -277
  237. package/dist/next/server/index.d.ts +0 -277
  238. package/dist/next/server/index.js +0 -723
  239. package/dist/react/index.cjs +0 -649
  240. package/dist/react/index.d.cts +0 -224
  241. package/dist/react/index.d.ts +0 -224
  242. package/dist/react/index.js +0 -620
  243. package/dist/server/index.cjs +0 -696
  244. package/dist/server/index.d.cts +0 -377
  245. package/dist/server/index.d.ts +0 -377
  246. package/dist/server/index.js +0 -680
@@ -0,0 +1,2 @@
1
+ /** intor — config */
2
+ export { defineIntorConfig, DEFAULT_CACHE_OPTIONS, DEFAULT_COOKIE_OPTIONS, DEFAULT_ROUTING_OPTIONS, type IntorRawConfig, type IntorResolvedConfig, } from "../../src/config";
@@ -0,0 +1,4 @@
1
+ export { defineIntorConfig } from '../../src/config/define-intor-config.js';
2
+ export { DEFAULT_CACHE_OPTIONS } from '../../src/config/constants/cache.constants.js';
3
+ export { DEFAULT_COOKIE_OPTIONS } from '../../src/config/constants/cookie.constants.js';
4
+ export { DEFAULT_ROUTING_OPTIONS } from '../../src/config/constants/routing.constants.js';
@@ -0,0 +1,5 @@
1
+ /** intor — main */
2
+ export { PREFIX_PLACEHOLDER } from "../src/shared/constants/prefix-placeholder";
3
+ export { mergeMessages, normalizeCacheKey, resolveNamespaces, normalizeLocale, resolvePreferredLocale, extractPathname, normalizePathname, standardizePathname, } from "../src/shared/utils";
4
+ export { IntorError, IntorErrorCode } from "../src/shared/error";
5
+ export { Translator, type TranslateHandlers, type FormatHandler, type LoadingHandler, type MissingHandler, type TranslateHandlerContext, type Locale, type FallbackLocalesMap, type NestedMessage, type LocaleMessages, type LocalizedMessagesUnion, type Replacement, type NodeKeys, type LeafKeys, type LocalizedLeafKeys, type ScopedLeafKeys, } from "intor-translator";
@@ -0,0 +1,11 @@
1
+ export { PREFIX_PLACEHOLDER } from '../src/shared/constants/prefix-placeholder.js';
2
+ export { mergeMessages } from '../src/shared/utils/merge-messages.js';
3
+ export { normalizeCacheKey } from '../src/shared/utils/normalize-cache-key.js';
4
+ export { resolveNamespaces } from '../src/shared/utils/resolve-namespaces.js';
5
+ export { normalizeLocale } from '../src/shared/utils/locale/normalize-locale.js';
6
+ export { resolvePreferredLocale } from '../src/shared/utils/locale/resolve-preferred-locale.js';
7
+ export { extractPathname } from '../src/shared/utils/pathname/extract-pathname.js';
8
+ export { normalizePathname } from '../src/shared/utils/pathname/normalize-pathname.js';
9
+ export { standardizePathname } from '../src/shared/utils/pathname/standardize-pathname.js';
10
+ export { IntorError, IntorErrorCode } from '../src/shared/error/intor-error.js';
11
+ export { Translator } from 'intor-translator';
@@ -0,0 +1,3 @@
1
+ /** intor — next / main (client) */
2
+ export { Link, usePathname, useRouter, redirect, } from "../../src/adapters/next/navigation";
3
+ export { IntorProvider, type IntorProviderProps, TranslateHandlersProvider, type TranslateHandlersProviderProps, useTranslator, } from "../../src/client/react";
@@ -0,0 +1,9 @@
1
+ export { Link } from '../../src/adapters/next/navigation/link.js';
2
+ export { usePathname } from '../../src/adapters/next/navigation/use-pathname.js';
3
+ export { useRouter } from '../../src/adapters/next/navigation/use-router.js';
4
+ export { redirect } from '../../src/adapters/next/navigation/redirect.js';
5
+ export { IntorProvider } from '../../src/client/react/contexts/intor-provider/intor-provider.js';
6
+ export { TranslateHandlersProvider } from '../../src/client/react/contexts/translate-handlers/provider.js';
7
+ import 'react';
8
+ import '../../src/client/react/contexts/translate-handlers/context.js';
9
+ export { useTranslator } from '../../src/client/react/hooks/use-translator.js';
@@ -0,0 +1,2 @@
1
+ /** intor — next / middleware */
2
+ export { intorMiddleware, PATHNAME_HEADER_NAME, } from "../../../src/adapters/next/middleware";
@@ -0,0 +1,2 @@
1
+ export { intorMiddleware } from '../../../src/adapters/next/middleware/intor-middleware.js';
2
+ export { PATHNAME_HEADER_NAME } from '../../../src/adapters/next/shared/constants/pathname-header-name.js';
@@ -0,0 +1,2 @@
1
+ /** intor — next / server */
2
+ export { getI18nContext, getTranslator, } from "../../../src/adapters/next/server";
@@ -0,0 +1,2 @@
1
+ export { getI18nContext } from '../../../src/adapters/next/server/get-i18n-context.js';
2
+ export { getTranslator } from '../../../src/adapters/next/server/get-translator.js';
@@ -0,0 +1,2 @@
1
+ /** intor — react */
2
+ export { IntorProvider, type IntorProviderProps, TranslateHandlersProvider, type TranslateHandlersProviderProps, useTranslator, getInitialLocale, } from "../../src/client/react";
@@ -0,0 +1,6 @@
1
+ export { IntorProvider } from '../../src/client/react/contexts/intor-provider/intor-provider.js';
2
+ export { TranslateHandlersProvider } from '../../src/client/react/contexts/translate-handlers/provider.js';
3
+ import 'react';
4
+ import '../../src/client/react/contexts/translate-handlers/context.js';
5
+ export { useTranslator } from '../../src/client/react/hooks/use-translator.js';
6
+ export { getInitialLocale } from '../../src/client/shared/utils/get-initial-locale.js';
@@ -0,0 +1,2 @@
1
+ /** intor — server */
2
+ export { intor, type I18nContext, type IntorResult, loadMessages, loadLocalMessages, type LoadLocalMessagesOptions, loadRemoteMessages, type LoadRemoteMessagesOptions, type Messages, type MessagesReader, clearMessagesPool, getTranslator, clearLoggerPool, } from "../../src/server";
@@ -0,0 +1,7 @@
1
+ export { intor } from '../../src/server/intor/intor.js';
2
+ export { loadMessages } from '../../src/server/messages/load-messages.js';
3
+ export { loadLocalMessages } from '../../src/server/messages/load-local-messages/load-local-messages.js';
4
+ export { loadRemoteMessages } from '../../src/server/messages/load-remote-messages/load-remote-messages.js';
5
+ export { clearMessagesPool } from '../../src/server/messages/shared/global-messages-pool.js';
6
+ export { getTranslator } from '../../src/server/translator/get-translator.js';
7
+ export { clearLoggerPool } from '../../src/server/shared/logger/global-logger-pool.js';
@@ -0,0 +1,12 @@
1
+ import type { IntorResolvedConfig } from "../../../../config";
2
+ import type { NextRequest } from "next/server";
3
+ /**
4
+ * Handle routing for "all" prefix.
5
+ *
6
+ * - If URL has locale prefix → use it and override cookie.
7
+ * - If no prefix and no cookie:
8
+ * - If redirect disabled → respond directly.
9
+ * - If redirect enabled → detect initial locale and redirect.
10
+ * - If no prefix but cookie exists → redirect using cookie locale.
11
+ */
12
+ export declare const handlePrefixAll: <Req extends NextRequest = NextRequest>(config: IntorResolvedConfig, request: Req) => Promise<Response>;
@@ -0,0 +1,60 @@
1
+ import { createResponse } from '../utils/create-response.js';
2
+ import { determineInitialLocale } from '../utils/determine-initial-locale.js';
3
+ import 'lodash.merge';
4
+ import { extractPathname } from '../../../../shared/utils/pathname/extract-pathname.js';
5
+
6
+ /**
7
+ * Handle routing for "all" prefix.
8
+ *
9
+ * - If URL has locale prefix → use it and override cookie.
10
+ * - If no prefix and no cookie:
11
+ * - If redirect disabled → respond directly.
12
+ * - If redirect enabled → detect initial locale and redirect.
13
+ * - If no prefix but cookie exists → redirect using cookie locale.
14
+ */
15
+ const handlePrefixAll = async (config, request) => {
16
+ const { cookie, routing } = config;
17
+ const { maybeLocale, isLocalePrefixed } = extractPathname({
18
+ config,
19
+ pathname: request.nextUrl.pathname,
20
+ });
21
+ const localeFromCookie = request.cookies.get(cookie.name)?.value;
22
+ // ▼ URL has a locale prefix, (e.g. https://example.com/en)
23
+ if (isLocalePrefixed) {
24
+ // ▶ Go directly and override cookie
25
+ return createResponse({
26
+ request,
27
+ config,
28
+ locale: maybeLocale,
29
+ setCookieOptions: { override: true },
30
+ });
31
+ }
32
+ // ▼ URL doesn't have a locale prefix, (e.g. https://example.com/)
33
+ // No cookie, so is first visit
34
+ if (!localeFromCookie) {
35
+ // Not using redirect (Do not set cookie)
36
+ if (!routing.firstVisit.redirect) {
37
+ // ▶ Go directly
38
+ return createResponse({ request, config });
39
+ }
40
+ // Decide to use locale from browser or defaultLocale
41
+ const initialLocale = await determineInitialLocale(config);
42
+ // Using redirect for the first visit
43
+ // ▶ Redirect to URL (set cookie for the first visit)
44
+ return createResponse({
45
+ request,
46
+ config,
47
+ locale: initialLocale, // Use locale from 'browser' | 'default'
48
+ responseType: "redirect",
49
+ });
50
+ }
51
+ // ▶ Redirect to URL
52
+ return createResponse({
53
+ request,
54
+ config,
55
+ locale: localeFromCookie, // Use locale from cookie
56
+ responseType: "redirect",
57
+ });
58
+ };
59
+
60
+ export { handlePrefixAll };
@@ -0,0 +1,16 @@
1
+ import type { IntorResolvedConfig } from "../../../../config";
2
+ import type { NextRequest } from "next/server";
3
+ /**
4
+ * Handle routing for "except-default" prefix.
5
+ *
6
+ * - If URL has a non-default locale prefix → use it and override cookie.
7
+ * - If no prefix and no cookie:
8
+ * - If redirect disabled → respond directly.
9
+ * - If redirect enabled:
10
+ * - If resolved locale is default → respond directly.
11
+ * - Else → redirect to locale URL.
12
+ * - If no prefix but cookie exists:
13
+ * - If cookie locale is default → respond directly.
14
+ * - Else → redirect to locale URL.
15
+ */
16
+ export declare const handlePrefixExceptDefault: <Req extends NextRequest = NextRequest>(config: IntorResolvedConfig, request: Req) => Promise<Response>;
@@ -0,0 +1,81 @@
1
+ import { createResponse } from '../utils/create-response.js';
2
+ import { determineInitialLocale } from '../utils/determine-initial-locale.js';
3
+ import 'lodash.merge';
4
+ import { extractPathname } from '../../../../shared/utils/pathname/extract-pathname.js';
5
+
6
+ /**
7
+ * Handle routing for "except-default" prefix.
8
+ *
9
+ * - If URL has a non-default locale prefix → use it and override cookie.
10
+ * - If no prefix and no cookie:
11
+ * - If redirect disabled → respond directly.
12
+ * - If redirect enabled:
13
+ * - If resolved locale is default → respond directly.
14
+ * - Else → redirect to locale URL.
15
+ * - If no prefix but cookie exists:
16
+ * - If cookie locale is default → respond directly.
17
+ * - Else → redirect to locale URL.
18
+ */
19
+ const handlePrefixExceptDefault = async (config, request) => {
20
+ const { defaultLocale, cookie, routing } = config;
21
+ const { maybeLocale, isLocalePrefixed } = extractPathname({
22
+ config,
23
+ pathname: request.nextUrl.pathname,
24
+ });
25
+ const localeFromCookie = request.cookies.get(cookie.name)?.value;
26
+ // ▼ URL has a locale prefix, and it's not defaultLocale (e.g. https://example.com/zh)
27
+ if (isLocalePrefixed && maybeLocale !== defaultLocale) {
28
+ // ▶ Go directly and override cookie
29
+ return createResponse({
30
+ request,
31
+ config,
32
+ locale: maybeLocale,
33
+ setCookieOptions: { override: true },
34
+ });
35
+ }
36
+ // ▼ URL doesn't have a locale prefix, (e.g. https://example.com/)
37
+ // No cookie, so is first visit
38
+ if (!localeFromCookie) {
39
+ // Not using redirect (Do not set cookie)
40
+ if (!routing.firstVisit.redirect) {
41
+ // ▶ Go directly
42
+ return createResponse({ request, config });
43
+ }
44
+ // Using redirect for the first visit
45
+ // Decide to use locale from browser or defaultLocale
46
+ const initialLocale = await determineInitialLocale(config);
47
+ const isDefaultLocale = initialLocale === defaultLocale;
48
+ // Is defaultLocale
49
+ if (isDefaultLocale) {
50
+ // ▶ Go directly, no prefix (set cookie for the first visit)
51
+ return createResponse({
52
+ request,
53
+ config,
54
+ locale: defaultLocale,
55
+ });
56
+ }
57
+ // Not defaultLocale
58
+ // ▶ Redirect to URL (set cookie for the first visit)
59
+ return createResponse({
60
+ request,
61
+ config,
62
+ locale: initialLocale, // Use locale from 'browser' | 'default'
63
+ responseType: "redirect",
64
+ });
65
+ }
66
+ // Cookie found (No need to set cookie)
67
+ const isDefaultLocale = localeFromCookie === defaultLocale;
68
+ if (isDefaultLocale) {
69
+ // ▶ Go directly
70
+ return createResponse({ request, config, locale: localeFromCookie });
71
+ }
72
+ // ▶ Redirect to URL
73
+ return createResponse({
74
+ request,
75
+ config,
76
+ locale: localeFromCookie, // Use locale from cookie
77
+ responseType: "redirect",
78
+ });
79
+ };
80
+
81
+ export { handlePrefixExceptDefault };
@@ -0,0 +1,10 @@
1
+ import type { IntorResolvedConfig } from "../../../../config";
2
+ import type { NextRequest } from "next/server";
3
+ /**
4
+ * Handle routing for "none" prefix.
5
+ *
6
+ * Checks cookie for locale. If absent,
7
+ * determines initial locale via config.
8
+ * Returns response with locale.
9
+ */
10
+ export declare const handlePrefixNone: <Req extends NextRequest = NextRequest>(config: IntorResolvedConfig, request: Req) => Promise<Response>;
@@ -0,0 +1,22 @@
1
+ import { createResponse } from '../utils/create-response.js';
2
+ import { determineInitialLocale } from '../utils/determine-initial-locale.js';
3
+
4
+ /**
5
+ * Handle routing for "none" prefix.
6
+ *
7
+ * Checks cookie for locale. If absent,
8
+ * determines initial locale via config.
9
+ * Returns response with locale.
10
+ */
11
+ const handlePrefixNone = async (config, request) => {
12
+ let locale = request.cookies.get(config.cookie.name)?.value;
13
+ // No cookie, so is first visit
14
+ if (!locale) {
15
+ // Decide to use locale from browser or defaultLocale
16
+ locale = await determineInitialLocale(config);
17
+ }
18
+ // ▶ Go directly (set cookie only for the first time, no override)
19
+ return createResponse({ request, config, locale });
20
+ };
21
+
22
+ export { handlePrefixNone };
@@ -0,0 +1,2 @@
1
+ export { intorMiddleware } from "./intor-middleware";
2
+ export { PATHNAME_HEADER_NAME } from "../../../adapters/next/shared/constants/pathname-header-name";
@@ -0,0 +1,6 @@
1
+ import type { IntorResolvedConfig } from "../../../config/types/intor-config.types";
2
+ import type { NextRequest } from "next/server";
3
+ /**
4
+ * Handle locale routing based on prefix config
5
+ */
6
+ export declare function intorMiddleware<Req extends NextRequest = NextRequest>(config: IntorResolvedConfig, request: Req): Promise<Response>;
@@ -0,0 +1,22 @@
1
+ import { handlePrefixAll } from './handle-prefix/handle-prefix-all.js';
2
+ import { handlePrefixExceptDefault } from './handle-prefix/handle-prefix-except-default.js';
3
+ import { handlePrefixNone } from './handle-prefix/handle-prefix-none.js';
4
+
5
+ /**
6
+ * Handle locale routing based on prefix config
7
+ */
8
+ async function intorMiddleware(config, request) {
9
+ const { prefix } = config.routing;
10
+ // ===== Prefix: none =====
11
+ if (prefix === "none") {
12
+ return handlePrefixNone(config, request);
13
+ }
14
+ // ===== Prefix: except-default =====
15
+ if (prefix === "except-default") {
16
+ return await handlePrefixExceptDefault(config, request);
17
+ }
18
+ // ===== Prefix: all =====
19
+ return await handlePrefixAll(config, request);
20
+ }
21
+
22
+ export { intorMiddleware };
@@ -0,0 +1,17 @@
1
+ import type { IntorResolvedConfig } from "../../../../config/types/intor-config.types";
2
+ import type { NextRequest } from "next/server";
3
+ import { NextResponse } from "next/server";
4
+ interface CreateResponseOptions<Req extends NextRequest = NextRequest> {
5
+ request: Req;
6
+ config: IntorResolvedConfig;
7
+ locale?: string;
8
+ responseType?: "next" | "redirect";
9
+ setCookieOptions?: {
10
+ override?: boolean;
11
+ };
12
+ }
13
+ /**
14
+ * Create a Next.js response with locale handling.
15
+ */
16
+ export declare const createResponse: <Req extends NextRequest = NextRequest, Res extends NextResponse = NextResponse>({ request, config, locale, responseType, setCookieOptions, }: CreateResponseOptions<Req>) => Response;
17
+ export {};
@@ -0,0 +1,42 @@
1
+ import { NextResponse } from 'next/server';
2
+ import { setLocaleCookieEdge } from './set-locale-cookie-edge.js';
3
+ import { setPathnameHeader } from './set-pathname-header.js';
4
+ import { localizePathname } from '../../shared/utils/localize-pathname.js';
5
+
6
+ /**
7
+ * Create a Next.js response with locale handling.
8
+ */
9
+ const createResponse = ({ request, config, locale, responseType = "next", setCookieOptions = { override: false }, }) => {
10
+ const { cookie } = config;
11
+ const { override } = setCookieOptions;
12
+ const url = request.nextUrl.clone(); // Clone URL to avoid mutating original
13
+ // Generate locale-prefixed pathname
14
+ const { localePrefixedPathname } = localizePathname({
15
+ config,
16
+ pathname: url.pathname,
17
+ locale,
18
+ });
19
+ url.pathname = localePrefixedPathname;
20
+ // Create response based on the responseType
21
+ const response = responseType === "redirect"
22
+ ? NextResponse.redirect(url)
23
+ : NextResponse.next();
24
+ // Set locale cookie if locale is provided
25
+ if (locale) {
26
+ setLocaleCookieEdge({
27
+ request,
28
+ response,
29
+ locale,
30
+ cookie,
31
+ override,
32
+ });
33
+ }
34
+ // Set pathname header
35
+ const finalResponse = setPathnameHeader({
36
+ request,
37
+ response: response,
38
+ });
39
+ return finalResponse;
40
+ };
41
+
42
+ export { createResponse };
@@ -0,0 +1,8 @@
1
+ import type { IntorResolvedConfig } from "../../../../config/types/intor-config.types";
2
+ /**
3
+ * Determine the initial locale for the user.
4
+ *
5
+ * @param config - The resolved configuration object.
6
+ * @returns The initial locale string.
7
+ */
8
+ export declare const determineInitialLocale: (config: IntorResolvedConfig) => Promise<string>;
@@ -0,0 +1,28 @@
1
+ import { headers } from 'next/headers';
2
+ import 'lodash.merge';
3
+ import { normalizeLocale } from '../../../../shared/utils/locale/normalize-locale.js';
4
+ import { resolvePreferredLocale } from '../../../../shared/utils/locale/resolve-preferred-locale.js';
5
+
6
+ /**
7
+ * Determine the initial locale for the user.
8
+ *
9
+ * @param config - The resolved configuration object.
10
+ * @returns The initial locale string.
11
+ */
12
+ const determineInitialLocale = async (config) => {
13
+ const { defaultLocale, supportedLocales, routing } = config;
14
+ let initialLocale = defaultLocale;
15
+ // If locale should be determined from browser on first visit
16
+ if (routing.firstVisit.localeSource === "browser") {
17
+ const headersStore = await headers();
18
+ const acceptLanguageHeader = headersStore.get("accept-language") || undefined;
19
+ // Find the best matching locale from the supported locales
20
+ const preferredLocale = resolvePreferredLocale(acceptLanguageHeader, supportedLocales);
21
+ // Normalize the preferred locale or fallback to default
22
+ initialLocale =
23
+ normalizeLocale(preferredLocale, supportedLocales) || defaultLocale;
24
+ }
25
+ return initialLocale;
26
+ };
27
+
28
+ export { determineInitialLocale };
@@ -0,0 +1,15 @@
1
+ import type { CookieResolvedOptions } from "../../../../config/types/cookie.types";
2
+ import type { NextRequest, NextResponse } from "next/server";
3
+ interface SetLocaleCookieParams {
4
+ request: NextRequest;
5
+ response: NextResponse;
6
+ cookie: CookieResolvedOptions;
7
+ locale: string;
8
+ override?: boolean;
9
+ }
10
+ /**
11
+ * Set a locale cookie on the response.
12
+ * - For Next.js edge middleware.
13
+ */
14
+ export declare function setLocaleCookieEdge({ request, response, cookie, locale, override, }: SetLocaleCookieParams): void;
15
+ export {};
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Set a locale cookie on the response.
3
+ * - For Next.js edge middleware.
4
+ */
5
+ function setLocaleCookieEdge({ request, response, cookie, locale, override = false, // Default to not override existed cookie
6
+ }) {
7
+ if (!cookie.enabled || !cookie.autoSetCookie)
8
+ return;
9
+ const isCookieExists = request.cookies.has(cookie.name);
10
+ // Cookie already exists and cannot override
11
+ if (isCookieExists && !override)
12
+ return;
13
+ // Set cookie to response
14
+ response.cookies.set(cookie.name, locale, {
15
+ maxAge: cookie.maxAge,
16
+ path: cookie.path,
17
+ ...(cookie.domain ? { domain: cookie.domain } : {}),
18
+ secure: cookie.secure,
19
+ httpOnly: cookie.httpOnly,
20
+ sameSite: cookie.sameSite,
21
+ });
22
+ }
23
+
24
+ export { setLocaleCookieEdge };
@@ -0,0 +1,12 @@
1
+ import type { NextRequest, NextResponse } from "next/server";
2
+ interface SetPathnameHeaderOptions<Req extends NextRequest = NextRequest, Res extends NextResponse = NextResponse> {
3
+ request: Req;
4
+ response: Res;
5
+ key?: string;
6
+ }
7
+ /**
8
+ * Set the pathname in the response header.
9
+ * - For Next.js edge middleware.
10
+ */
11
+ export declare const setPathnameHeader: <Req extends NextRequest = NextRequest, Res extends NextResponse = NextResponse>({ request, response, key, }: SetPathnameHeaderOptions<Req, Res>) => Response;
12
+ export {};
@@ -0,0 +1,13 @@
1
+ import { PATHNAME_HEADER_NAME } from '../../shared/constants/pathname-header-name.js';
2
+
3
+ /**
4
+ * Set the pathname in the response header.
5
+ * - For Next.js edge middleware.
6
+ */
7
+ const setPathnameHeader = ({ request, response, key = PATHNAME_HEADER_NAME, }) => {
8
+ const pathname = request.nextUrl.pathname;
9
+ response.headers.set(key, pathname);
10
+ return response;
11
+ };
12
+
13
+ export { setPathnameHeader };
@@ -0,0 +1,4 @@
1
+ export { Link } from "./link";
2
+ export { usePathname } from "./use-pathname";
3
+ export { useRouter } from "./use-router";
4
+ export { redirect } from "./redirect";
@@ -0,0 +1,16 @@
1
+ import type { GenLocale } from "../../../shared/types/generated.types";
2
+ import type { Url } from "next/dist/shared/lib/router/router";
3
+ import type { LinkProps as NextLinkProps } from "next/link";
4
+ import * as React from "react";
5
+ interface LinkProps extends Omit<NextLinkProps, "href">, Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "href"> {
6
+ href?: Url;
7
+ locale?: GenLocale;
8
+ }
9
+ /**
10
+ * Localized Link component
11
+ *
12
+ * - Wraps Next.js Link and handles locale switching.
13
+ * - Full reload occurs only if the locale changes and requires it; otherwise updates context.
14
+ */
15
+ export declare const Link: ({ href, locale, children, onClick, ...props }: LinkProps) => React.JSX.Element;
16
+ export {};
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { formatUrl } from 'next/dist/shared/lib/router/utils/format-url';
4
+ import NextLink from 'next/link';
5
+ import 'react';
6
+ import { useLocaleSwitch } from './utils/use-locale-switch.js';
7
+
8
+ /**
9
+ * Localized Link component
10
+ *
11
+ * - Wraps Next.js Link and handles locale switching.
12
+ * - Full reload occurs only if the locale changes and requires it; otherwise updates context.
13
+ */
14
+ const Link = ({ href, locale, children, onClick, ...props }) => {
15
+ const formatted = typeof href === "string" ? href : href ? formatUrl(href) : undefined;
16
+ const { resolveHref, switchLocale } = useLocaleSwitch();
17
+ const { resolvedHref } = resolveHref({ href: formatted, locale });
18
+ const handleClick = (e) => {
19
+ onClick?.(e);
20
+ switchLocale({ href: formatted, locale });
21
+ };
22
+ return (jsx(NextLink, { href: resolvedHref, onClick: handleClick, ...props, children: children }));
23
+ };
24
+
25
+ export { Link };
@@ -0,0 +1,16 @@
1
+ import type { IntorResolvedConfig } from "../../../config";
2
+ import type { GenLocale } from "../../../shared/types/generated.types";
3
+ import type { RedirectType } from "next/navigation";
4
+ /**
5
+ * redirect utility.
6
+ *
7
+ * - Wraps Next.js redirect and applies locale-aware navigation.
8
+ * - Automatically prefixes the pathname with the correct locale.
9
+ * - External URLs are redirected directly without modification.
10
+ */
11
+ export declare const redirect: ({ config, locale, url, type, }: {
12
+ config: IntorResolvedConfig;
13
+ locale?: GenLocale;
14
+ url: string;
15
+ type?: RedirectType | undefined;
16
+ }) => Promise<never>;
@@ -0,0 +1,36 @@
1
+ import { redirect as redirect$1 } from 'next/navigation';
2
+ import { getI18nContext } from '../server/get-i18n-context.js';
3
+ import 'intor-translator';
4
+
5
+
6
+
7
+ import '../../../config/constants/cache.constants.js';
8
+
9
+
10
+
11
+
12
+ import { localizePathname } from '../shared/utils/localize-pathname.js';
13
+
14
+ /**
15
+ * redirect utility.
16
+ *
17
+ * - Wraps Next.js redirect and applies locale-aware navigation.
18
+ * - Automatically prefixes the pathname with the correct locale.
19
+ * - External URLs are redirected directly without modification.
20
+ */
21
+ const redirect = async ({ config, locale, url, type, }) => {
22
+ if (url.startsWith("http")) {
23
+ redirect$1(url);
24
+ }
25
+ const isLocaleValid = locale && config.supportedLocales?.includes(locale);
26
+ const { locale: detectedLocale } = await getI18nContext(config);
27
+ // Generate the locale-prefixed pathname
28
+ const { localePrefixedPathname } = localizePathname({
29
+ config,
30
+ pathname: url,
31
+ locale: isLocaleValid ? locale : detectedLocale,
32
+ });
33
+ redirect$1(localePrefixedPathname, type);
34
+ };
35
+
36
+ export { redirect };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Custom hook to get the current pathname in different forms based on the active locale.
3
+ *
4
+ * This hook wraps Next.js `usePathname` and processes the pathname according to the app's
5
+ * locale configuration.
6
+ *
7
+ * @example
8
+ * const { localizedPathname, standardizedPathname, unprefixedPathname } = usePathname();
9
+ * console.log(localizedPathname); // e.g. "/en/about"
10
+ * console.log(standardizedPathname); // e.g. "/{locale}/about"
11
+ * console.log(unprefixedPathname); // e.g. "/about"
12
+ */
13
+ export declare const usePathname: () => {
14
+ localizedPathname: string;
15
+ standardizedPathname: string;
16
+ unprefixedPathname: string;
17
+ };