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,384 +0,0 @@
1
- import { NextResponse } from 'next/server';
2
- import { headers } from 'next/headers';
3
-
4
- // src/adapters/next/middleware/utils/create-response.ts
5
-
6
- // src/adapters/next/middleware/utils/set-locale-cookie-edge.ts
7
- function setLocaleCookieEdge({
8
- request,
9
- response,
10
- cookie,
11
- locale,
12
- override = false
13
- // Default to not override existed cookie
14
- }) {
15
- if (!cookie.enabled || !cookie.autoSetCookie) return;
16
- const isCookieExists = request.cookies.has(cookie.name);
17
- if (isCookieExists && !override) return;
18
- response.cookies.set(cookie.name, locale, {
19
- maxAge: cookie.maxAge,
20
- path: cookie.path,
21
- ...cookie.domain ? { domain: cookie.domain } : {},
22
- secure: cookie.secure,
23
- httpOnly: cookie.httpOnly,
24
- sameSite: cookie.sameSite
25
- });
26
- }
27
-
28
- // src/adapters/next/shared/constants/pathname-header-name.ts
29
- var PATHNAME_HEADER_NAME = "x-intor-pathname";
30
-
31
- // src/adapters/next/middleware/utils/set-pathname-header.ts
32
- var setPathnameHeader = ({
33
- request,
34
- response,
35
- key = PATHNAME_HEADER_NAME
36
- }) => {
37
- const pathname = request.nextUrl.pathname;
38
- response.headers.set(key, pathname);
39
- return response;
40
- };
41
-
42
- // src/shared/constants/prefix-placeholder.ts
43
- var PREFIX_PLACEHOLDER = "{locale}";
44
-
45
- // src/shared/utils/locale/normalize-locale.ts
46
- var toCanonical = (input) => {
47
- try {
48
- return Intl.getCanonicalLocales(input)[0]?.toLowerCase();
49
- } catch {
50
- return;
51
- }
52
- };
53
- var normalizeLocale = (locale = "", supportedLocales = []) => {
54
- if (!locale || supportedLocales.length === 0) return;
55
- const canonicalLocale = toCanonical(locale);
56
- if (!canonicalLocale) return;
57
- const supportedCanonicalMap = /* @__PURE__ */ new Map();
58
- for (const l of supportedLocales) {
59
- const normalized = toCanonical(l);
60
- if (normalized) {
61
- supportedCanonicalMap.set(normalized, l);
62
- }
63
- }
64
- if (supportedCanonicalMap.has(canonicalLocale)) {
65
- return supportedCanonicalMap.get(canonicalLocale);
66
- }
67
- const baseLang = canonicalLocale.split("-")[0];
68
- for (const [key, original] of supportedCanonicalMap) {
69
- const supportedBase = key.split("-")[0];
70
- if (supportedBase === baseLang) {
71
- return original;
72
- }
73
- }
74
- return;
75
- };
76
-
77
- // src/shared/utils/locale/resolve-preferred-locale.ts
78
- var resolvePreferredLocale = (acceptLanguageHeader, supportedLocales) => {
79
- if (!acceptLanguageHeader || !supportedLocales || supportedLocales.length === 0) {
80
- return;
81
- }
82
- const supportedLocalesSet = new Set(supportedLocales);
83
- const preferred = acceptLanguageHeader.split(",").map((part) => {
84
- const [lang, qValue] = part.split(";");
85
- const q = qValue ? Number.parseFloat(qValue.split("=")[1]) : 1;
86
- if (Number.isNaN(q)) {
87
- return { lang: lang.trim(), q: 0 };
88
- }
89
- return { lang: lang.trim(), q };
90
- }).toSorted((a, b) => b.q - a.q).find(({ lang }) => supportedLocalesSet.has(lang))?.lang;
91
- return preferred;
92
- };
93
-
94
- // src/shared/utils/pathname/normalize-pathname.ts
95
- var normalizePathname = (rawPathname, options = {}) => {
96
- const length = rawPathname.length;
97
- let start = 0;
98
- let end = length - 1;
99
- while (start <= end && (rawPathname.codePointAt(start) ?? 0) <= 32) start++;
100
- while (end >= start && (rawPathname.codePointAt(end) ?? 0) <= 32) end--;
101
- if (start > end) return "/";
102
- let result = "";
103
- let hasSlash = false;
104
- for (let i = start; i <= end; i++) {
105
- const char = rawPathname[i];
106
- if (char === "/") {
107
- if (!hasSlash) {
108
- hasSlash = true;
109
- }
110
- } else {
111
- result += hasSlash || result === "" ? "/" + char : char;
112
- hasSlash = false;
113
- }
114
- }
115
- if (options.removeLeadingSlash && result.startsWith("/")) {
116
- result = result.slice(1);
117
- }
118
- return result || "/";
119
- };
120
-
121
- // src/shared/utils/pathname/extract-pathname.ts
122
- var extractPathname = ({
123
- config,
124
- pathname: rawPathname
125
- }) => {
126
- const { routing, defaultLocale } = config;
127
- const { basePath, prefix } = routing;
128
- const normalizedPathname = normalizePathname(rawPathname);
129
- let prefixedPathname = normalizedPathname;
130
- if (basePath && normalizedPathname.startsWith(basePath + "/")) {
131
- prefixedPathname = normalizedPathname.slice(basePath.length) || "/";
132
- } else if (basePath && normalizedPathname === basePath) {
133
- prefixedPathname = "/";
134
- }
135
- const pathPart = prefixedPathname.split("/").find(Boolean);
136
- const maybeLocale = pathPart || "";
137
- const isLocalePrefixed = config.supportedLocales?.includes(maybeLocale);
138
- let unprefixedPathname = prefixedPathname;
139
- if (prefix === "all") {
140
- if (isLocalePrefixed) {
141
- unprefixedPathname = prefixedPathname.slice(maybeLocale.length + 1) || "/";
142
- }
143
- } else if (prefix === "except-default") {
144
- if (maybeLocale && maybeLocale !== defaultLocale && isLocalePrefixed) {
145
- unprefixedPathname = prefixedPathname.slice(maybeLocale.length + 1) || "/";
146
- }
147
- }
148
- return {
149
- basePath,
150
- prefixedPathname,
151
- unprefixedPathname,
152
- maybeLocale,
153
- isLocalePrefixed: Boolean(isLocalePrefixed)
154
- };
155
- };
156
-
157
- // src/shared/utils/pathname/standardize-pathname.ts
158
- var standardizePathname = ({
159
- config,
160
- pathname
161
- }) => {
162
- const { routing } = config;
163
- const { basePath } = routing;
164
- const parts = [
165
- normalizePathname(basePath),
166
- PREFIX_PLACEHOLDER,
167
- normalizePathname(pathname)
168
- ];
169
- const standardizedPathname = parts.join("/").replaceAll(/\/{2,}/g, "/");
170
- return normalizePathname(standardizedPathname);
171
- };
172
-
173
- // src/adapters/next/shared/utils/locale-prefix-pathname.ts
174
- var localePrefixPathname = ({
175
- config,
176
- pathname: standardizedPathname,
177
- locale
178
- }) => {
179
- const { routing } = config;
180
- const { prefix } = routing;
181
- if (prefix !== "none" && !locale) {
182
- throw new Error('No locale when using prefix "all", "except-default"');
183
- }
184
- if (prefix === "all") {
185
- return normalizePathname(
186
- standardizedPathname.replaceAll(PREFIX_PLACEHOLDER, locale)
187
- );
188
- }
189
- if (prefix === "except-default") {
190
- return locale === config.defaultLocale ? normalizePathname(
191
- standardizedPathname.replaceAll(`/${PREFIX_PLACEHOLDER}`, "")
192
- ) : normalizePathname(
193
- standardizedPathname.replaceAll(PREFIX_PLACEHOLDER, locale)
194
- );
195
- }
196
- return normalizePathname(
197
- standardizedPathname.replaceAll(`/${PREFIX_PLACEHOLDER}`, "")
198
- );
199
- };
200
-
201
- // src/adapters/next/shared/utils/localize-pathname.ts
202
- var localizePathname = ({
203
- config,
204
- pathname: rawPathname,
205
- locale
206
- }) => {
207
- const { unprefixedPathname } = extractPathname({
208
- config,
209
- pathname: rawPathname
210
- });
211
- const standardizedPathname = standardizePathname({
212
- config,
213
- pathname: unprefixedPathname
214
- });
215
- const localePrefixedPathname = localePrefixPathname({
216
- config,
217
- pathname: standardizedPathname,
218
- locale
219
- });
220
- return {
221
- unprefixedPathname,
222
- standardizedPathname,
223
- localePrefixedPathname
224
- };
225
- };
226
-
227
- // src/adapters/next/middleware/utils/create-response.ts
228
- var createResponse = ({
229
- request,
230
- config,
231
- locale,
232
- responseType = "next",
233
- setCookieOptions = { override: false }
234
- }) => {
235
- const { cookie } = config;
236
- const { override } = setCookieOptions;
237
- const url = request.nextUrl.clone();
238
- const { localePrefixedPathname } = localizePathname({
239
- config,
240
- pathname: url.pathname,
241
- locale
242
- });
243
- url.pathname = localePrefixedPathname;
244
- const response = responseType === "redirect" ? NextResponse.redirect(url) : NextResponse.next();
245
- if (locale) {
246
- setLocaleCookieEdge({
247
- request,
248
- response,
249
- locale,
250
- cookie,
251
- override
252
- });
253
- }
254
- const finalResponse = setPathnameHeader({
255
- request,
256
- response
257
- });
258
- return finalResponse;
259
- };
260
- var determineInitialLocale = async (config) => {
261
- const { defaultLocale, supportedLocales, routing } = config;
262
- let initialLocale = defaultLocale;
263
- if (routing.firstVisit.localeSource === "browser") {
264
- const headersStore = await headers();
265
- const acceptLanguageHeader = headersStore.get("accept-language") || void 0;
266
- const preferredLocale = resolvePreferredLocale(
267
- acceptLanguageHeader,
268
- supportedLocales
269
- );
270
- initialLocale = normalizeLocale(preferredLocale, supportedLocales) || defaultLocale;
271
- }
272
- return initialLocale;
273
- };
274
-
275
- // src/adapters/next/middleware/handle-prefix/handle-prefix-all.ts
276
- var handlePrefixAll = async (config, request) => {
277
- const { cookie, routing } = config;
278
- const { maybeLocale, isLocalePrefixed } = extractPathname({
279
- config,
280
- pathname: request.nextUrl.pathname
281
- });
282
- const localeFromCookie = request.cookies.get(cookie.name)?.value;
283
- if (isLocalePrefixed) {
284
- return createResponse({
285
- request,
286
- config,
287
- locale: maybeLocale,
288
- setCookieOptions: { override: true }
289
- });
290
- }
291
- if (!localeFromCookie) {
292
- if (!routing.firstVisit.redirect) {
293
- return createResponse({ request, config });
294
- }
295
- const initialLocale = await determineInitialLocale(config);
296
- return createResponse({
297
- request,
298
- config,
299
- locale: initialLocale,
300
- // Use locale from 'browser' | 'default'
301
- responseType: "redirect"
302
- });
303
- }
304
- return createResponse({
305
- request,
306
- config,
307
- locale: localeFromCookie,
308
- // Use locale from cookie
309
- responseType: "redirect"
310
- });
311
- };
312
-
313
- // src/adapters/next/middleware/handle-prefix/handle-prefix-except-default.ts
314
- var handlePrefixExceptDefault = async (config, request) => {
315
- const { defaultLocale, cookie, routing } = config;
316
- const { maybeLocale, isLocalePrefixed } = extractPathname({
317
- config,
318
- pathname: request.nextUrl.pathname
319
- });
320
- const localeFromCookie = request.cookies.get(cookie.name)?.value;
321
- if (isLocalePrefixed && maybeLocale !== defaultLocale) {
322
- return createResponse({
323
- request,
324
- config,
325
- locale: maybeLocale,
326
- setCookieOptions: { override: true }
327
- });
328
- }
329
- if (!localeFromCookie) {
330
- if (!routing.firstVisit.redirect) {
331
- return createResponse({ request, config });
332
- }
333
- const initialLocale = await determineInitialLocale(config);
334
- const isDefaultLocale2 = initialLocale === defaultLocale;
335
- if (isDefaultLocale2) {
336
- return createResponse({
337
- request,
338
- config,
339
- locale: defaultLocale
340
- });
341
- }
342
- return createResponse({
343
- request,
344
- config,
345
- locale: initialLocale,
346
- // Use locale from 'browser' | 'default'
347
- responseType: "redirect"
348
- });
349
- }
350
- const isDefaultLocale = localeFromCookie === defaultLocale;
351
- if (isDefaultLocale) {
352
- return createResponse({ request, config, locale: localeFromCookie });
353
- }
354
- return createResponse({
355
- request,
356
- config,
357
- locale: localeFromCookie,
358
- // Use locale from cookie
359
- responseType: "redirect"
360
- });
361
- };
362
-
363
- // src/adapters/next/middleware/handle-prefix/handle-prefix-none.ts
364
- var handlePrefixNone = async (config, request) => {
365
- let locale = request.cookies.get(config.cookie.name)?.value;
366
- if (!locale) {
367
- locale = await determineInitialLocale(config);
368
- }
369
- return createResponse({ request, config, locale });
370
- };
371
-
372
- // src/adapters/next/middleware/intor-middleware.ts
373
- async function intorMiddleware(config, request) {
374
- const { prefix } = config.routing;
375
- if (prefix === "none") {
376
- return handlePrefixNone(config, request);
377
- }
378
- if (prefix === "except-default") {
379
- return await handlePrefixExceptDefault(config, request);
380
- }
381
- return await handlePrefixAll(config, request);
382
- }
383
-
384
- export { PATHNAME_HEADER_NAME, intorMiddleware };