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
@@ -1,277 +0,0 @@
1
- import { Level, NormalizerConfig, FormatterConfig, LoggerPreset } from 'logry/edge';
2
- import { Locale, LocaleMessages, FallbackLocalesMap, NestedMessage, ScopedLeafKeys, LocalizedLeafKeys, Replacement, TranslateHandlers, LocalizedNodeKeys } from 'intor-translator';
3
- import Keyv from 'keyv';
4
- import { Logger } from 'logry';
5
-
6
- type CookieRawOptions = {
7
- /** Enable cookie usage (read/write) - default: true */
8
- enabled?: boolean;
9
- /** Allow the system to automatically set cookies - default: true */
10
- autoSetCookie?: boolean;
11
- /** default: "intor.i18n.locale" */
12
- name?: string;
13
- /** default: null */
14
- domain?: string | null;
15
- /** default: "/" */
16
- path?: string;
17
- /** default: 60 * 60 * 24 * 365 (365 days) */
18
- maxAge?: number;
19
- /** default: false */
20
- httpOnly?: boolean;
21
- /** default: process.env.NODE_ENV !== "development" */
22
- secure?: boolean;
23
- /** default: lax */
24
- sameSite?: "lax" | "strict" | "none";
25
- };
26
- type CookieResolvedOptions = Required<Omit<CookieRawOptions, "domain">> & {
27
- domain: string | null;
28
- };
29
-
30
- /**
31
- * ```ts
32
- * {
33
- * default: ["ui", "meta"],
34
- * "/auth": ["auth", "admin"],
35
- * }
36
- * // When pathname is "/" => namespaces: ["ui", "meta"]
37
- * // When pathname is "/auth" => namespaces: ["ui", "meta", "auth", "admin"]
38
- * ```
39
- */
40
- type RouteNamespaces = {
41
- [key: string]: string[];
42
- } | {
43
- [key: string]: string[];
44
- default: string[];
45
- };
46
- interface RemoteHeaders {
47
- authorization?: string;
48
- "x-api-key"?: string;
49
- [key: string]: string | undefined;
50
- }
51
- type BaseLoaderOptions = {
52
- rootDir?: string;
53
- namespaces?: string[];
54
- routeNamespaces?: RouteNamespaces;
55
- concurrency?: number;
56
- };
57
- type LocalLoader = BaseLoaderOptions & {
58
- type: "local";
59
- };
60
- type RemoteLoader = BaseLoaderOptions & {
61
- type: "remote";
62
- remoteUrl: string;
63
- remoteHeaders?: RemoteHeaders;
64
- fullReload?: boolean;
65
- };
66
- type LoaderOptions = LocalLoader | RemoteLoader;
67
-
68
- type LoggerOptions = {
69
- level?: Level;
70
- normalizerConfig?: NormalizerConfig;
71
- formatterConfig?: FormatterConfig;
72
- preset?: LoggerPreset;
73
- };
74
-
75
- declare const routingPrefix: readonly ["none", "all", "except-default"];
76
- declare const routingFirstVisitLocaleSource: readonly ["default", "browser"];
77
- type RoutingRawOptions = {
78
- /** default: "none" */
79
- prefix?: (typeof routingPrefix)[number];
80
- firstVisit?: {
81
- /** default: "browser" */
82
- localeSource?: (typeof routingFirstVisitLocaleSource)[number];
83
- /** default: true */
84
- redirect?: boolean;
85
- };
86
- /** default: "" */
87
- basePath?: string;
88
- };
89
- type RoutingResolvedOptions = Required<RoutingRawOptions>;
90
-
91
- type CacheRawOptions = {
92
- /** default: process.env.NODE_ENV === "production" */
93
- enabled?: boolean;
94
- /** default: 60\*60\*1000 (1 hour) */
95
- ttl?: number;
96
- };
97
- type CacheResolvedOptions = Required<CacheRawOptions>;
98
-
99
- type TranslatorOptions = {
100
- loadingMessage?: string;
101
- placeholder?: string;
102
- };
103
-
104
- type IntorResolvedConfig = ({
105
- loader: LoaderOptions;
106
- supportedLocales: readonly Locale[];
107
- } | {
108
- loader?: undefined;
109
- supportedLocales: readonly Locale[];
110
- }) & {
111
- readonly id: string;
112
- readonly messages?: LocaleMessages;
113
- readonly defaultLocale: Locale;
114
- readonly fallbackLocales: FallbackLocalesMap;
115
- readonly translator?: TranslatorOptions;
116
- readonly cookie: CookieResolvedOptions;
117
- readonly routing: RoutingResolvedOptions;
118
- readonly logger?: LoggerOptions;
119
- readonly cache: CacheResolvedOptions;
120
- };
121
-
122
- declare const PREFIX_PLACEHOLDER = "{locale}";
123
-
124
- /**
125
- * Conditional type for generated types.
126
- * - Returns `Then` if `IntorGeneratedTypes` exists, otherwise `Else`.
127
- */
128
- type IfGen<Then, Else = never> = IntorGeneratedTypes extends void ? Else : Then;
129
- /**
130
- * Union of all configuration keys.
131
- * - Defaults to `string` if `IntorGeneratedTypes` does not exist.
132
- */
133
- type GenConfigKeys = IfGen<keyof IntorGeneratedTypes, string>;
134
- /**
135
- * Configuration shape for a given config key.
136
- * - If `IntorGeneratedTypes` is not defined, falls back to default shape.
137
- * Otherwise, picks `Locales` and `Messages` according to the key.
138
- */
139
- type GenConfig<CK extends GenConfigKeys = "__default__"> = IntorGeneratedTypes extends void ? {
140
- Locales: string;
141
- Messages: LocaleMessages;
142
- } : CK extends keyof IntorGeneratedTypes ? {
143
- Locales: IntorGeneratedTypes[CK]["Locales"];
144
- Messages: {
145
- [K in IntorGeneratedTypes[CK]["Locales"]]: IntorGeneratedTypes[CK]["Messages"][typeof PREFIX_PLACEHOLDER];
146
- };
147
- } : never;
148
- /** Extracts messages for a given config key */
149
- type GenMessages<CK extends GenConfigKeys = "__default__"> = GenConfig<CK>["Messages"];
150
- /** Extracts locales for a given config key */
151
- type GenLocale<CK extends GenConfigKeys = "__default__"> = GenConfig<CK>["Locales"];
152
-
153
- interface I18nContext {
154
- locale: GenLocale;
155
- pathname: string;
156
- }
157
-
158
- /**
159
- * Retrieves the i18n context for the current request.
160
- *
161
- * Next.js adapter implementation: uses `next/headers` and `next/cookies`.
162
- */
163
- declare const getI18nContext: <CK extends GenConfigKeys = "__default__">(config: IntorResolvedConfig) => Promise<I18nContext>;
164
-
165
- /**
166
- * Represents a collection of localized messages.
167
- *
168
- * - Each key is a namespace or message identifier, and the value is a
169
- * `NestedMessage` object that can contain nested message structures.
170
- *
171
- * @example
172
- * ```ts
173
- * const messages: Messages = {
174
- * ui: {
175
- * greeting: "Hello",
176
- * farewell: "Goodbye"
177
- * },
178
- * errors: {
179
- * network: "Network error occurred"
180
- * }
181
- * };
182
- * ```
183
- */
184
- type Messages = Record<string, NestedMessage>;
185
- /**
186
- * A function that reads messages from a given file path.
187
- *
188
- * - This function is expected to return a `Promise` that resolves to a `Messages` object.
189
- * - It can be implemented to support different file formats such as JSON, YAML, or others.
190
- *
191
- * @param filePath - The path to the message file to read.
192
- * @returns A Promise that resolves to a `Messages` object.
193
- *
194
- * @example
195
- * ```ts
196
- * const reader: MessagesReader = async (filePath) => {
197
- * const content = await fs.promises.readFile(filePath, "utf-8");
198
- * return JSON.parse(content) as Messages;
199
- * };
200
- * ```
201
- */
202
- type MessagesReader = (filePath: string) => Promise<Messages>;
203
-
204
- /**
205
- * Global messages pool (cross-module + hot-reload safe)
206
- */
207
- type MessagesPool = Keyv<LocaleMessages>;
208
- declare global {
209
- var __INTOR_MESSAGES_POOL__: MessagesPool | undefined;
210
- }
211
-
212
- /** Base properties shared by all translator instances. */
213
- interface TranslatorBaseProps<M = unknown> {
214
- /** `messages`: The message object containing all translations. */
215
- messages: M;
216
- /** Current locale in use. */
217
- locale: Locale<M>;
218
- }
219
- /** Properties specific to client-side translator behavior. */
220
- interface TranslatorClientProps<M = unknown> {
221
- /** `isLoading`: Indicates whether translations are currently loading. */
222
- isLoading: boolean;
223
- /** `setLocale`: Function to update the current locale. */
224
- setLocale: (locale: Locale<M>) => void;
225
- }
226
- /**
227
- * Conditional key type for TranslatorInstance.
228
- * - Resolves to `ScopedLeafKeys` if a pre-key `PK` is provided,
229
- * otherwise resolves to `LocalizedLeafKeys`.
230
- */
231
- type Key<M, PK> = IfGen<PK extends string ? ScopedLeafKeys<M, PK> : LocalizedLeafKeys<M>, string>;
232
- /**
233
- * Translator instance type.
234
- * Combines base props, client props, and core translation methods.
235
- */
236
- type TranslatorInstance<M, PK extends string | undefined = undefined> = {
237
- /** Check if a given key exists in the messages. */
238
- hasKey: (key?: Key<M, PK>, targetLocale?: Locale<M>) => boolean;
239
- /** Translate a given key into its string representation. */
240
- t: <Result = string>(key?: Key<M, PK>, replacements?: Replacement) => Result;
241
- } & TranslatorBaseProps<M> & TranslatorClientProps<M>;
242
-
243
- /**
244
- * Global logger pool (cross-module + hot-reload safe)
245
- */
246
- type LoggerPool = Map<string, Logger>;
247
- declare global {
248
- var __INTOR_LOGGER_POOL__: LoggerPool | undefined;
249
- }
250
-
251
- /**
252
- * Create a translator instance ready for the current Next.js SSR environment.
253
- *
254
- * - **Automatically resolves the current locale and pathname using the Next.js adapter.**
255
- * - Loads messages using the provided config, locale, and pathname.
256
- * - Initializes a translator with `t`, `hasKey`, and optional scoped methods.
257
- * - Supports optional `preKey` to create a scoped translator for nested keys.
258
- */
259
- declare function getTranslator<CK extends GenConfigKeys = "__default__">(options: {
260
- config: IntorResolvedConfig;
261
- handlers?: TranslateHandlers;
262
- extraOptions?: {
263
- exts?: string[];
264
- messagesReader?: MessagesReader;
265
- };
266
- }): Promise<TranslatorInstance<GenMessages<CK>>>;
267
- declare function getTranslator<CK extends GenConfigKeys = "__default__", PK extends string = LocalizedNodeKeys<GenMessages<CK>>>(options: {
268
- config: IntorResolvedConfig;
269
- handlers?: TranslateHandlers;
270
- extraOptions?: {
271
- exts?: string[];
272
- messagesReader?: MessagesReader;
273
- };
274
- preKey: IfGen<PK, string>;
275
- }): Promise<TranslatorInstance<GenMessages<CK>, PK>>;
276
-
277
- export { getI18nContext, getTranslator };
@@ -1,277 +0,0 @@
1
- import { Level, NormalizerConfig, FormatterConfig, LoggerPreset } from 'logry/edge';
2
- import { Locale, LocaleMessages, FallbackLocalesMap, NestedMessage, ScopedLeafKeys, LocalizedLeafKeys, Replacement, TranslateHandlers, LocalizedNodeKeys } from 'intor-translator';
3
- import Keyv from 'keyv';
4
- import { Logger } from 'logry';
5
-
6
- type CookieRawOptions = {
7
- /** Enable cookie usage (read/write) - default: true */
8
- enabled?: boolean;
9
- /** Allow the system to automatically set cookies - default: true */
10
- autoSetCookie?: boolean;
11
- /** default: "intor.i18n.locale" */
12
- name?: string;
13
- /** default: null */
14
- domain?: string | null;
15
- /** default: "/" */
16
- path?: string;
17
- /** default: 60 * 60 * 24 * 365 (365 days) */
18
- maxAge?: number;
19
- /** default: false */
20
- httpOnly?: boolean;
21
- /** default: process.env.NODE_ENV !== "development" */
22
- secure?: boolean;
23
- /** default: lax */
24
- sameSite?: "lax" | "strict" | "none";
25
- };
26
- type CookieResolvedOptions = Required<Omit<CookieRawOptions, "domain">> & {
27
- domain: string | null;
28
- };
29
-
30
- /**
31
- * ```ts
32
- * {
33
- * default: ["ui", "meta"],
34
- * "/auth": ["auth", "admin"],
35
- * }
36
- * // When pathname is "/" => namespaces: ["ui", "meta"]
37
- * // When pathname is "/auth" => namespaces: ["ui", "meta", "auth", "admin"]
38
- * ```
39
- */
40
- type RouteNamespaces = {
41
- [key: string]: string[];
42
- } | {
43
- [key: string]: string[];
44
- default: string[];
45
- };
46
- interface RemoteHeaders {
47
- authorization?: string;
48
- "x-api-key"?: string;
49
- [key: string]: string | undefined;
50
- }
51
- type BaseLoaderOptions = {
52
- rootDir?: string;
53
- namespaces?: string[];
54
- routeNamespaces?: RouteNamespaces;
55
- concurrency?: number;
56
- };
57
- type LocalLoader = BaseLoaderOptions & {
58
- type: "local";
59
- };
60
- type RemoteLoader = BaseLoaderOptions & {
61
- type: "remote";
62
- remoteUrl: string;
63
- remoteHeaders?: RemoteHeaders;
64
- fullReload?: boolean;
65
- };
66
- type LoaderOptions = LocalLoader | RemoteLoader;
67
-
68
- type LoggerOptions = {
69
- level?: Level;
70
- normalizerConfig?: NormalizerConfig;
71
- formatterConfig?: FormatterConfig;
72
- preset?: LoggerPreset;
73
- };
74
-
75
- declare const routingPrefix: readonly ["none", "all", "except-default"];
76
- declare const routingFirstVisitLocaleSource: readonly ["default", "browser"];
77
- type RoutingRawOptions = {
78
- /** default: "none" */
79
- prefix?: (typeof routingPrefix)[number];
80
- firstVisit?: {
81
- /** default: "browser" */
82
- localeSource?: (typeof routingFirstVisitLocaleSource)[number];
83
- /** default: true */
84
- redirect?: boolean;
85
- };
86
- /** default: "" */
87
- basePath?: string;
88
- };
89
- type RoutingResolvedOptions = Required<RoutingRawOptions>;
90
-
91
- type CacheRawOptions = {
92
- /** default: process.env.NODE_ENV === "production" */
93
- enabled?: boolean;
94
- /** default: 60\*60\*1000 (1 hour) */
95
- ttl?: number;
96
- };
97
- type CacheResolvedOptions = Required<CacheRawOptions>;
98
-
99
- type TranslatorOptions = {
100
- loadingMessage?: string;
101
- placeholder?: string;
102
- };
103
-
104
- type IntorResolvedConfig = ({
105
- loader: LoaderOptions;
106
- supportedLocales: readonly Locale[];
107
- } | {
108
- loader?: undefined;
109
- supportedLocales: readonly Locale[];
110
- }) & {
111
- readonly id: string;
112
- readonly messages?: LocaleMessages;
113
- readonly defaultLocale: Locale;
114
- readonly fallbackLocales: FallbackLocalesMap;
115
- readonly translator?: TranslatorOptions;
116
- readonly cookie: CookieResolvedOptions;
117
- readonly routing: RoutingResolvedOptions;
118
- readonly logger?: LoggerOptions;
119
- readonly cache: CacheResolvedOptions;
120
- };
121
-
122
- declare const PREFIX_PLACEHOLDER = "{locale}";
123
-
124
- /**
125
- * Conditional type for generated types.
126
- * - Returns `Then` if `IntorGeneratedTypes` exists, otherwise `Else`.
127
- */
128
- type IfGen<Then, Else = never> = IntorGeneratedTypes extends void ? Else : Then;
129
- /**
130
- * Union of all configuration keys.
131
- * - Defaults to `string` if `IntorGeneratedTypes` does not exist.
132
- */
133
- type GenConfigKeys = IfGen<keyof IntorGeneratedTypes, string>;
134
- /**
135
- * Configuration shape for a given config key.
136
- * - If `IntorGeneratedTypes` is not defined, falls back to default shape.
137
- * Otherwise, picks `Locales` and `Messages` according to the key.
138
- */
139
- type GenConfig<CK extends GenConfigKeys = "__default__"> = IntorGeneratedTypes extends void ? {
140
- Locales: string;
141
- Messages: LocaleMessages;
142
- } : CK extends keyof IntorGeneratedTypes ? {
143
- Locales: IntorGeneratedTypes[CK]["Locales"];
144
- Messages: {
145
- [K in IntorGeneratedTypes[CK]["Locales"]]: IntorGeneratedTypes[CK]["Messages"][typeof PREFIX_PLACEHOLDER];
146
- };
147
- } : never;
148
- /** Extracts messages for a given config key */
149
- type GenMessages<CK extends GenConfigKeys = "__default__"> = GenConfig<CK>["Messages"];
150
- /** Extracts locales for a given config key */
151
- type GenLocale<CK extends GenConfigKeys = "__default__"> = GenConfig<CK>["Locales"];
152
-
153
- interface I18nContext {
154
- locale: GenLocale;
155
- pathname: string;
156
- }
157
-
158
- /**
159
- * Retrieves the i18n context for the current request.
160
- *
161
- * Next.js adapter implementation: uses `next/headers` and `next/cookies`.
162
- */
163
- declare const getI18nContext: <CK extends GenConfigKeys = "__default__">(config: IntorResolvedConfig) => Promise<I18nContext>;
164
-
165
- /**
166
- * Represents a collection of localized messages.
167
- *
168
- * - Each key is a namespace or message identifier, and the value is a
169
- * `NestedMessage` object that can contain nested message structures.
170
- *
171
- * @example
172
- * ```ts
173
- * const messages: Messages = {
174
- * ui: {
175
- * greeting: "Hello",
176
- * farewell: "Goodbye"
177
- * },
178
- * errors: {
179
- * network: "Network error occurred"
180
- * }
181
- * };
182
- * ```
183
- */
184
- type Messages = Record<string, NestedMessage>;
185
- /**
186
- * A function that reads messages from a given file path.
187
- *
188
- * - This function is expected to return a `Promise` that resolves to a `Messages` object.
189
- * - It can be implemented to support different file formats such as JSON, YAML, or others.
190
- *
191
- * @param filePath - The path to the message file to read.
192
- * @returns A Promise that resolves to a `Messages` object.
193
- *
194
- * @example
195
- * ```ts
196
- * const reader: MessagesReader = async (filePath) => {
197
- * const content = await fs.promises.readFile(filePath, "utf-8");
198
- * return JSON.parse(content) as Messages;
199
- * };
200
- * ```
201
- */
202
- type MessagesReader = (filePath: string) => Promise<Messages>;
203
-
204
- /**
205
- * Global messages pool (cross-module + hot-reload safe)
206
- */
207
- type MessagesPool = Keyv<LocaleMessages>;
208
- declare global {
209
- var __INTOR_MESSAGES_POOL__: MessagesPool | undefined;
210
- }
211
-
212
- /** Base properties shared by all translator instances. */
213
- interface TranslatorBaseProps<M = unknown> {
214
- /** `messages`: The message object containing all translations. */
215
- messages: M;
216
- /** Current locale in use. */
217
- locale: Locale<M>;
218
- }
219
- /** Properties specific to client-side translator behavior. */
220
- interface TranslatorClientProps<M = unknown> {
221
- /** `isLoading`: Indicates whether translations are currently loading. */
222
- isLoading: boolean;
223
- /** `setLocale`: Function to update the current locale. */
224
- setLocale: (locale: Locale<M>) => void;
225
- }
226
- /**
227
- * Conditional key type for TranslatorInstance.
228
- * - Resolves to `ScopedLeafKeys` if a pre-key `PK` is provided,
229
- * otherwise resolves to `LocalizedLeafKeys`.
230
- */
231
- type Key<M, PK> = IfGen<PK extends string ? ScopedLeafKeys<M, PK> : LocalizedLeafKeys<M>, string>;
232
- /**
233
- * Translator instance type.
234
- * Combines base props, client props, and core translation methods.
235
- */
236
- type TranslatorInstance<M, PK extends string | undefined = undefined> = {
237
- /** Check if a given key exists in the messages. */
238
- hasKey: (key?: Key<M, PK>, targetLocale?: Locale<M>) => boolean;
239
- /** Translate a given key into its string representation. */
240
- t: <Result = string>(key?: Key<M, PK>, replacements?: Replacement) => Result;
241
- } & TranslatorBaseProps<M> & TranslatorClientProps<M>;
242
-
243
- /**
244
- * Global logger pool (cross-module + hot-reload safe)
245
- */
246
- type LoggerPool = Map<string, Logger>;
247
- declare global {
248
- var __INTOR_LOGGER_POOL__: LoggerPool | undefined;
249
- }
250
-
251
- /**
252
- * Create a translator instance ready for the current Next.js SSR environment.
253
- *
254
- * - **Automatically resolves the current locale and pathname using the Next.js adapter.**
255
- * - Loads messages using the provided config, locale, and pathname.
256
- * - Initializes a translator with `t`, `hasKey`, and optional scoped methods.
257
- * - Supports optional `preKey` to create a scoped translator for nested keys.
258
- */
259
- declare function getTranslator<CK extends GenConfigKeys = "__default__">(options: {
260
- config: IntorResolvedConfig;
261
- handlers?: TranslateHandlers;
262
- extraOptions?: {
263
- exts?: string[];
264
- messagesReader?: MessagesReader;
265
- };
266
- }): Promise<TranslatorInstance<GenMessages<CK>>>;
267
- declare function getTranslator<CK extends GenConfigKeys = "__default__", PK extends string = LocalizedNodeKeys<GenMessages<CK>>>(options: {
268
- config: IntorResolvedConfig;
269
- handlers?: TranslateHandlers;
270
- extraOptions?: {
271
- exts?: string[];
272
- messagesReader?: MessagesReader;
273
- };
274
- preKey: IfGen<PK, string>;
275
- }): Promise<TranslatorInstance<GenMessages<CK>, PK>>;
276
-
277
- export { getI18nContext, getTranslator };