@common.js/next-intl 4.13.1

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 (297) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/config.d.ts +4 -0
  4. package/dist/cjs/development/ExtractorCodec-D9Tw618d.cjs +7 -0
  5. package/dist/cjs/development/JSONCodec-CzA8ubPy.cjs +55 -0
  6. package/dist/cjs/development/POCodec-CWGHK-Gp.cjs +111 -0
  7. package/dist/cjs/development/plugin-DlFYUFWh.cjs +1613 -0
  8. package/dist/cjs/development/plugin.cjs +13 -0
  9. package/dist/esm/development/config.js +13 -0
  10. package/dist/esm/development/extractor/ExtractionCompiler.js +284 -0
  11. package/dist/esm/development/extractor/catalog/CatalogLocales.js +398 -0
  12. package/dist/esm/development/extractor/catalog/CatalogManager.js +1515 -0
  13. package/dist/esm/development/extractor/catalog/CatalogPersister.js +341 -0
  14. package/dist/esm/development/extractor/catalog/SaveScheduler.js +314 -0
  15. package/dist/esm/development/extractor/catalogLoader.js +288 -0
  16. package/dist/esm/development/extractor/extractMessages.js +180 -0
  17. package/dist/esm/development/extractor/extractionLoader.js +37 -0
  18. package/dist/esm/development/extractor/extractor/LRUCache.js +68 -0
  19. package/dist/esm/development/extractor/extractor/MessageExtractor.js +273 -0
  20. package/dist/esm/development/extractor/format/ExtractorCodec.js +13 -0
  21. package/dist/esm/development/extractor/format/codecs/JSONCodec.js +91 -0
  22. package/dist/esm/development/extractor/format/codecs/POCodec.js +227 -0
  23. package/dist/esm/development/extractor/format/index.js +289 -0
  24. package/dist/esm/development/extractor/normalizeExtractorConfig.js +91 -0
  25. package/dist/esm/development/extractor/source/SourceFileFilter.js +104 -0
  26. package/dist/esm/development/extractor/source/SourceFileScanner.js +297 -0
  27. package/dist/esm/development/extractor/source/SourceFileWatcher.js +610 -0
  28. package/dist/esm/development/extractor/utils.js +133 -0
  29. package/dist/esm/development/extractor.js +25 -0
  30. package/dist/esm/development/index.react-client.js +59 -0
  31. package/dist/esm/development/index.react-server.js +61 -0
  32. package/dist/esm/development/middleware/getAlternateLinksHeaderValue.js +142 -0
  33. package/dist/esm/development/middleware/middleware.js +231 -0
  34. package/dist/esm/development/middleware/resolveLocale.js +150 -0
  35. package/dist/esm/development/middleware/syncCookie.js +87 -0
  36. package/dist/esm/development/middleware/utils.js +403 -0
  37. package/dist/esm/development/middleware.js +16 -0
  38. package/dist/esm/development/navigation/react-client/createNavigation.js +195 -0
  39. package/dist/esm/development/navigation/react-client/useBasePathname.js +46 -0
  40. package/dist/esm/development/navigation/react-server/createNavigation.js +111 -0
  41. package/dist/esm/development/navigation/react-server/getServerLocale.js +167 -0
  42. package/dist/esm/development/navigation/shared/BaseLink.js +115 -0
  43. package/dist/esm/development/navigation/shared/createSharedNavigationFns.js +214 -0
  44. package/dist/esm/development/navigation/shared/syncLocaleCookie.js +139 -0
  45. package/dist/esm/development/navigation/shared/utils.js +352 -0
  46. package/dist/esm/development/navigation.react-client.js +16 -0
  47. package/dist/esm/development/navigation.react-server.js +16 -0
  48. package/dist/esm/development/plugin/config.js +28 -0
  49. package/dist/esm/development/plugin/createNextIntlPlugin.js +66 -0
  50. package/dist/esm/development/plugin/declaration/createMessagesDeclaration.js +91 -0
  51. package/dist/esm/development/plugin/extractor/initExtractionCompiler.js +64 -0
  52. package/dist/esm/development/plugin/getNextConfig.js +355 -0
  53. package/dist/esm/development/plugin/nextFlags.js +47 -0
  54. package/dist/esm/development/plugin/utils.js +43 -0
  55. package/dist/esm/development/plugin/watchFile.js +32 -0
  56. package/dist/esm/development/plugin.js +16 -0
  57. package/dist/esm/development/react-client/index.js +67 -0
  58. package/dist/esm/development/react-server/NextIntlClientProviderServer.js +327 -0
  59. package/dist/esm/development/react-server/useConfig.js +40 -0
  60. package/dist/esm/development/react-server/useExtracted.js +21 -0
  61. package/dist/esm/development/react-server/useFormatter.js +21 -0
  62. package/dist/esm/development/react-server/useLocale.js +20 -0
  63. package/dist/esm/development/react-server/useMessages.js +21 -0
  64. package/dist/esm/development/react-server/useNow.js +25 -0
  65. package/dist/esm/development/react-server/useTimeZone.js +20 -0
  66. package/dist/esm/development/react-server/useTranslations.js +71 -0
  67. package/dist/esm/development/routing/config.js +82 -0
  68. package/dist/esm/development/routing/defineRouting.js +116 -0
  69. package/dist/esm/development/routing.js +16 -0
  70. package/dist/esm/development/server/react-client/index.js +68 -0
  71. package/dist/esm/development/server/react-server/RequestLocale.js +267 -0
  72. package/dist/esm/development/server/react-server/RequestLocaleCache.js +33 -0
  73. package/dist/esm/development/server/react-server/createRequestConfig.js +16 -0
  74. package/dist/esm/development/server/react-server/getConfig.js +283 -0
  75. package/dist/esm/development/server/react-server/getConfigNow.js +166 -0
  76. package/dist/esm/development/server/react-server/getDefaultNow.js +16 -0
  77. package/dist/esm/development/server/react-server/getExtracted.js +176 -0
  78. package/dist/esm/development/server/react-server/getFormats.js +166 -0
  79. package/dist/esm/development/server/react-server/getFormatter.js +186 -0
  80. package/dist/esm/development/server/react-server/getLocale.js +166 -0
  81. package/dist/esm/development/server/react-server/getMessages.js +194 -0
  82. package/dist/esm/development/server/react-server/getNow.js +164 -0
  83. package/dist/esm/development/server/react-server/getRequestConfig.js +15 -0
  84. package/dist/esm/development/server/react-server/getServerExtractor.js +108 -0
  85. package/dist/esm/development/server/react-server/getServerFormatter.js +81 -0
  86. package/dist/esm/development/server/react-server/getServerTranslator.js +70 -0
  87. package/dist/esm/development/server/react-server/getTimeZone.js +180 -0
  88. package/dist/esm/development/server/react-server/getTranslations.js +179 -0
  89. package/dist/esm/development/server/react-server/validateLocale.js +20 -0
  90. package/dist/esm/development/server.react-client.js +40 -0
  91. package/dist/esm/development/server.react-server.js +53 -0
  92. package/dist/esm/development/shared/NextIntlClientProvider.js +79 -0
  93. package/dist/esm/development/shared/constants.js +12 -0
  94. package/dist/esm/development/shared/use.js +59 -0
  95. package/dist/esm/development/shared/utils.js +201 -0
  96. package/dist/esm/production/config.js +13 -0
  97. package/dist/esm/production/extractor/ExtractionCompiler.js +275 -0
  98. package/dist/esm/production/extractor/catalog/CatalogLocales.js +384 -0
  99. package/dist/esm/production/extractor/catalog/CatalogManager.js +1401 -0
  100. package/dist/esm/production/extractor/catalog/CatalogPersister.js +334 -0
  101. package/dist/esm/production/extractor/catalog/SaveScheduler.js +278 -0
  102. package/dist/esm/production/extractor/catalogLoader.js +251 -0
  103. package/dist/esm/production/extractor/extractMessages.js +178 -0
  104. package/dist/esm/production/extractor/extractionLoader.js +27 -0
  105. package/dist/esm/production/extractor/extractor/LRUCache.js +59 -0
  106. package/dist/esm/production/extractor/extractor/MessageExtractor.js +259 -0
  107. package/dist/esm/production/extractor/format/ExtractorCodec.js +13 -0
  108. package/dist/esm/production/extractor/format/codecs/JSONCodec.js +83 -0
  109. package/dist/esm/production/extractor/format/codecs/POCodec.js +210 -0
  110. package/dist/esm/production/extractor/format/index.js +278 -0
  111. package/dist/esm/production/extractor/normalizeExtractorConfig.js +54 -0
  112. package/dist/esm/production/extractor/source/SourceFileFilter.js +99 -0
  113. package/dist/esm/production/extractor/source/SourceFileScanner.js +293 -0
  114. package/dist/esm/production/extractor/source/SourceFileWatcher.js +579 -0
  115. package/dist/esm/production/extractor/utils.js +108 -0
  116. package/dist/esm/production/extractor.js +25 -0
  117. package/dist/esm/production/index.react-client.js +59 -0
  118. package/dist/esm/production/index.react-server.js +61 -0
  119. package/dist/esm/production/middleware/getAlternateLinksHeaderValue.js +104 -0
  120. package/dist/esm/production/middleware/middleware.js +155 -0
  121. package/dist/esm/production/middleware/resolveLocale.js +99 -0
  122. package/dist/esm/production/middleware/syncCookie.js +81 -0
  123. package/dist/esm/production/middleware/utils.js +315 -0
  124. package/dist/esm/production/middleware.js +16 -0
  125. package/dist/esm/production/navigation/react-client/createNavigation.js +174 -0
  126. package/dist/esm/production/navigation/react-client/useBasePathname.js +32 -0
  127. package/dist/esm/production/navigation/react-server/createNavigation.js +110 -0
  128. package/dist/esm/production/navigation/react-server/getServerLocale.js +162 -0
  129. package/dist/esm/production/navigation/shared/BaseLink.js +98 -0
  130. package/dist/esm/production/navigation/shared/createSharedNavigationFns.js +182 -0
  131. package/dist/esm/production/navigation/shared/syncLocaleCookie.js +113 -0
  132. package/dist/esm/production/navigation/shared/utils.js +264 -0
  133. package/dist/esm/production/navigation.react-client.js +16 -0
  134. package/dist/esm/production/navigation.react-server.js +16 -0
  135. package/dist/esm/production/plugin/config.js +22 -0
  136. package/dist/esm/production/plugin/createNextIntlPlugin.js +48 -0
  137. package/dist/esm/production/plugin/declaration/createMessagesDeclaration.js +72 -0
  138. package/dist/esm/production/plugin/extractor/initExtractionCompiler.js +33 -0
  139. package/dist/esm/production/plugin/getNextConfig.js +242 -0
  140. package/dist/esm/production/plugin/nextFlags.js +44 -0
  141. package/dist/esm/production/plugin/utils.js +35 -0
  142. package/dist/esm/production/plugin/watchFile.js +26 -0
  143. package/dist/esm/production/plugin.js +16 -0
  144. package/dist/esm/production/react-client/index.js +57 -0
  145. package/dist/esm/production/react-server/NextIntlClientProviderServer.js +327 -0
  146. package/dist/esm/production/react-server/useConfig.js +35 -0
  147. package/dist/esm/production/react-server/useExtracted.js +21 -0
  148. package/dist/esm/production/react-server/useFormatter.js +21 -0
  149. package/dist/esm/production/react-server/useLocale.js +19 -0
  150. package/dist/esm/production/react-server/useMessages.js +21 -0
  151. package/dist/esm/production/react-server/useNow.js +22 -0
  152. package/dist/esm/production/react-server/useTimeZone.js +19 -0
  153. package/dist/esm/production/react-server/useTranslations.js +71 -0
  154. package/dist/esm/production/routing/config.js +77 -0
  155. package/dist/esm/production/routing/defineRouting.js +13 -0
  156. package/dist/esm/production/routing.js +16 -0
  157. package/dist/esm/production/server/react-client/index.js +51 -0
  158. package/dist/esm/production/server/react-server/RequestLocale.js +246 -0
  159. package/dist/esm/production/server/react-server/RequestLocaleCache.js +30 -0
  160. package/dist/esm/production/server/react-server/createRequestConfig.js +16 -0
  161. package/dist/esm/production/server/react-server/getConfig.js +262 -0
  162. package/dist/esm/production/server/react-server/getConfigNow.js +162 -0
  163. package/dist/esm/production/server/react-server/getDefaultNow.js +14 -0
  164. package/dist/esm/production/server/react-server/getExtracted.js +166 -0
  165. package/dist/esm/production/server/react-server/getFormats.js +157 -0
  166. package/dist/esm/production/server/react-server/getFormatter.js +179 -0
  167. package/dist/esm/production/server/react-server/getLocale.js +157 -0
  168. package/dist/esm/production/server/react-server/getMessages.js +190 -0
  169. package/dist/esm/production/server/react-server/getNow.js +164 -0
  170. package/dist/esm/production/server/react-server/getRequestConfig.js +13 -0
  171. package/dist/esm/production/server/react-server/getServerExtractor.js +20 -0
  172. package/dist/esm/production/server/react-server/getServerFormatter.js +78 -0
  173. package/dist/esm/production/server/react-server/getServerTranslator.js +69 -0
  174. package/dist/esm/production/server/react-server/getTimeZone.js +176 -0
  175. package/dist/esm/production/server/react-server/getTranslations.js +166 -0
  176. package/dist/esm/production/server.react-client.js +40 -0
  177. package/dist/esm/production/server.react-server.js +53 -0
  178. package/dist/esm/production/shared/NextIntlClientProvider.js +77 -0
  179. package/dist/esm/production/shared/constants.js +11 -0
  180. package/dist/esm/production/shared/use.js +51 -0
  181. package/dist/esm/production/shared/utils.js +156 -0
  182. package/dist/types/config.d.ts +1 -0
  183. package/dist/types/extractor/ExtractionCompiler.d.ts +16 -0
  184. package/dist/types/extractor/catalog/CatalogLocales.d.ts +29 -0
  185. package/dist/types/extractor/catalog/CatalogManager.d.ts +76 -0
  186. package/dist/types/extractor/catalog/CatalogPersister.d.ts +20 -0
  187. package/dist/types/extractor/catalog/SaveScheduler.d.ts +18 -0
  188. package/dist/types/extractor/extractMessages.d.ts +2 -0
  189. package/dist/types/extractor/extractor/LRUCache.d.ts +7 -0
  190. package/dist/types/extractor/extractor/MessageExtractor.bench.d.ts +1 -0
  191. package/dist/types/extractor/extractor/MessageExtractor.d.ts +17 -0
  192. package/dist/types/extractor/format/ExtractorCodec.d.ts +33 -0
  193. package/dist/types/extractor/format/codecs/JSONCodec.d.ts +2 -0
  194. package/dist/types/extractor/format/codecs/POCodec.d.ts +2 -0
  195. package/dist/types/extractor/format/codecs/fixtures/JSONCodecStructured.d.ts +2 -0
  196. package/dist/types/extractor/format/codecs/fixtures/POCodecSourceMessageKey.d.ts +2 -0
  197. package/dist/types/extractor/format/index.d.ts +15 -0
  198. package/dist/types/extractor/format/types.d.ts +8 -0
  199. package/dist/types/extractor/index.d.ts +2 -0
  200. package/dist/types/extractor/normalizeExtractorConfig.d.ts +5 -0
  201. package/dist/types/extractor/source/SourceFileFilter.d.ts +8 -0
  202. package/dist/types/extractor/source/SourceFileScanner.d.ts +4 -0
  203. package/dist/types/extractor/source/SourceFileWatcher.d.ts +15 -0
  204. package/dist/types/extractor/types.d.ts +79 -0
  205. package/dist/types/extractor/utils.d.ts +9 -0
  206. package/dist/types/extractor.d.ts +1 -0
  207. package/dist/types/index.react-client.d.ts +8 -0
  208. package/dist/types/index.react-server.d.ts +1 -0
  209. package/dist/types/middleware/getAlternateLinksHeaderValue.d.ts +13 -0
  210. package/dist/types/middleware/index.d.ts +4 -0
  211. package/dist/types/middleware/middleware.d.ts +4 -0
  212. package/dist/types/middleware/resolveLocale.d.ts +9 -0
  213. package/dist/types/middleware/syncCookie.d.ts +7 -0
  214. package/dist/types/middleware/utils.d.ts +26 -0
  215. package/dist/types/middleware.d.ts +1 -0
  216. package/dist/types/navigation/react-client/createNavigation.d.ts +465 -0
  217. package/dist/types/navigation/react-client/index.d.ts +2 -0
  218. package/dist/types/navigation/react-client/useBasePathname.d.ts +5 -0
  219. package/dist/types/navigation/react-server/createNavigation.d.ts +384 -0
  220. package/dist/types/navigation/react-server/getServerLocale.d.ts +5 -0
  221. package/dist/types/navigation/react-server/index.d.ts +2 -0
  222. package/dist/types/navigation/shared/BaseLink.d.ts +11 -0
  223. package/dist/types/navigation/shared/StrictParams.d.ts +8 -0
  224. package/dist/types/navigation/shared/createSharedNavigationFns.d.ts +370 -0
  225. package/dist/types/navigation/shared/syncLocaleCookie.d.ts +8 -0
  226. package/dist/types/navigation/shared/utils.d.ts +53 -0
  227. package/dist/types/navigation.react-client.d.ts +1 -0
  228. package/dist/types/navigation.react-server.d.ts +1 -0
  229. package/dist/types/plugin/catalog/catalogLoader.d.ts +10 -0
  230. package/dist/types/plugin/config.d.ts +3 -0
  231. package/dist/types/plugin/createNextIntlPlugin.d.ts +3 -0
  232. package/dist/types/plugin/declaration/createMessagesDeclaration.d.ts +1 -0
  233. package/dist/types/plugin/declaration/index.d.ts +1 -0
  234. package/dist/types/plugin/extractor/extractionLoader.d.ts +3 -0
  235. package/dist/types/plugin/extractor/initExtractionCompiler.d.ts +2 -0
  236. package/dist/types/plugin/getNextConfig.d.ts +4 -0
  237. package/dist/types/plugin/index.d.ts +1 -0
  238. package/dist/types/plugin/nextFlags.d.ts +2 -0
  239. package/dist/types/plugin/types.d.ts +25 -0
  240. package/dist/types/plugin/utils.d.ts +8 -0
  241. package/dist/types/plugin/watchFile.d.ts +6 -0
  242. package/dist/types/plugin.d.ts +1 -0
  243. package/dist/types/react-client/index.d.ts +16 -0
  244. package/dist/types/react-server/NextIntlClientProviderServer.d.ts +5 -0
  245. package/dist/types/react-server/index.d.ts +16 -0
  246. package/dist/types/react-server/testUtils.d.ts +2 -0
  247. package/dist/types/react-server/useConfig.d.ts +2 -0
  248. package/dist/types/react-server/useExtracted.d.ts +2 -0
  249. package/dist/types/react-server/useFormatter.d.ts +2 -0
  250. package/dist/types/react-server/useLocale.d.ts +2 -0
  251. package/dist/types/react-server/useMessages.d.ts +2 -0
  252. package/dist/types/react-server/useNow.d.ts +2 -0
  253. package/dist/types/react-server/useTimeZone.d.ts +2 -0
  254. package/dist/types/react-server/useTranslations.d.ts +2 -0
  255. package/dist/types/routing/config.d.ts +73 -0
  256. package/dist/types/routing/defineRouting.d.ts +3 -0
  257. package/dist/types/routing/index.d.ts +3 -0
  258. package/dist/types/routing/types.d.ts +25 -0
  259. package/dist/types/routing.d.ts +1 -0
  260. package/dist/types/server/react-client/index.d.ts +10 -0
  261. package/dist/types/server/react-server/RequestLocale.d.ts +1 -0
  262. package/dist/types/server/react-server/RequestLocaleCache.d.ts +3 -0
  263. package/dist/types/server/react-server/createRequestConfig.d.ts +3 -0
  264. package/dist/types/server/react-server/getConfig.d.ts +13 -0
  265. package/dist/types/server/react-server/getConfigNow.d.ts +4 -0
  266. package/dist/types/server/react-server/getDefaultNow.d.ts +3 -0
  267. package/dist/types/server/react-server/getExtracted.d.ts +10 -0
  268. package/dist/types/server/react-server/getFormats.d.ts +3 -0
  269. package/dist/types/server/react-server/getFormatter.d.ts +10 -0
  270. package/dist/types/server/react-server/getLocale.d.ts +4 -0
  271. package/dist/types/server/react-server/getMessages.d.ts +6 -0
  272. package/dist/types/server/react-server/getNow.d.ts +4 -0
  273. package/dist/types/server/react-server/getRequestConfig.d.ts +35 -0
  274. package/dist/types/server/react-server/getServerExtractor.d.ts +5 -0
  275. package/dist/types/server/react-server/getServerFormatter.d.ts +29 -0
  276. package/dist/types/server/react-server/getServerTranslator.d.ts +4 -0
  277. package/dist/types/server/react-server/getTimeZone.d.ts +4 -0
  278. package/dist/types/server/react-server/getTranslations.d.ts +8 -0
  279. package/dist/types/server/react-server/index.d.ts +12 -0
  280. package/dist/types/server/react-server/validateLocale.d.ts +1 -0
  281. package/dist/types/server.react-client.d.ts +1 -0
  282. package/dist/types/server.react-server.d.ts +1 -0
  283. package/dist/types/shared/NextIntlClientProvider.d.ts +9 -0
  284. package/dist/types/shared/constants.d.ts +1 -0
  285. package/dist/types/shared/types.d.ts +5 -0
  286. package/dist/types/shared/use.d.ts +3 -0
  287. package/dist/types/shared/utils.d.ts +20 -0
  288. package/extractor/catalogLoader.d.ts +4 -0
  289. package/extractor/extractionLoader.d.ts +4 -0
  290. package/extractor.d.ts +2 -0
  291. package/middleware.d.ts +4 -0
  292. package/navigation.d.ts +2 -0
  293. package/package.json +60 -0
  294. package/plugin.d.cts +3 -0
  295. package/plugin.d.ts +4 -0
  296. package/routing.d.ts +2 -0
  297. package/server.d.ts +2 -0
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ default: function() {
13
+ return resolveLocale;
14
+ },
15
+ getAcceptLanguageLocale: function() {
16
+ return getAcceptLanguageLocale;
17
+ }
18
+ });
19
+ var _intlLocalematcher = require("@formatjs/intl-localematcher");
20
+ var _negotiator = /*#__PURE__*/ _interopRequireDefault(require("negotiator"));
21
+ var _utilsJs = require("./utils.js");
22
+ function _interopRequireDefault(obj) {
23
+ return obj && obj.__esModule ? obj : {
24
+ default: obj
25
+ };
26
+ }
27
+ function findDomainFromHost(requestHeaders, domains) {
28
+ var host = (0, _utilsJs.getHost)(requestHeaders);
29
+ if (host) {
30
+ return domains.find(function(cur) {
31
+ return cur.domain === host;
32
+ });
33
+ }
34
+ return undefined;
35
+ }
36
+ function orderLocales(locales) {
37
+ // Workaround for https://github.com/formatjs/formatjs/issues/4469
38
+ return locales.slice().sort(function(a, b) {
39
+ return b.length - a.length;
40
+ });
41
+ }
42
+ function mapToProvidedLocale(locales, locale) {
43
+ return locales.find(function(cur) {
44
+ return cur.toLowerCase() === locale.toLowerCase();
45
+ });
46
+ }
47
+ function getAcceptLanguageLocale(requestHeaders, locales, defaultLocale) {
48
+ var locale;
49
+ var languages = new _negotiator.default({
50
+ headers: {
51
+ "accept-language": requestHeaders.get("accept-language") || undefined
52
+ }
53
+ }).languages();
54
+ try {
55
+ var orderedLocales = orderLocales(locales);
56
+ locale = mapToProvidedLocale(locales, (0, _intlLocalematcher.match)(languages, orderedLocales, defaultLocale));
57
+ } catch (e) {
58
+ // Invalid language
59
+ }
60
+ return locale;
61
+ }
62
+ function getLocaleFromCookie(routing, requestCookies) {
63
+ if (routing.localeCookie && requestCookies.has(routing.localeCookie.name)) {
64
+ var ref;
65
+ var value = (ref = requestCookies.get(routing.localeCookie.name)) === null || ref === void 0 ? void 0 : ref.value;
66
+ if (value && routing.locales.includes(value)) {
67
+ return value;
68
+ }
69
+ }
70
+ }
71
+ function resolveLocaleFromPrefix(routing, requestHeaders, requestCookies, pathname) {
72
+ var locale;
73
+ // Prio 1: Use route prefix
74
+ if (pathname) {
75
+ var ref;
76
+ locale = (ref = (0, _utilsJs.getPathnameMatch)(pathname, routing.locales, routing.localePrefix)) === null || ref === void 0 ? void 0 : ref.locale;
77
+ }
78
+ // Prio 2: Use existing cookie
79
+ if (!locale && routing.localeDetection) {
80
+ locale = getLocaleFromCookie(routing, requestCookies);
81
+ }
82
+ // Prio 3: Use the `accept-language` header
83
+ if (!locale && routing.localeDetection) {
84
+ locale = getAcceptLanguageLocale(requestHeaders, routing.locales, routing.defaultLocale);
85
+ }
86
+ // Prio 4: Use default locale
87
+ if (!locale) {
88
+ locale = routing.defaultLocale;
89
+ }
90
+ return locale;
91
+ }
92
+ function resolveLocaleFromDomain(routing, requestHeaders, requestCookies, pathname) {
93
+ var domains = routing.domains;
94
+ var domain = findDomainFromHost(requestHeaders, domains);
95
+ if (!domain) {
96
+ return {
97
+ locale: resolveLocaleFromPrefix(routing, requestHeaders, requestCookies, pathname)
98
+ };
99
+ }
100
+ var locale;
101
+ // Prio 1: Use route prefix
102
+ if (pathname) {
103
+ var ref;
104
+ var prefixLocale = (ref = (0, _utilsJs.getPathnameMatch)(pathname, routing.locales, routing.localePrefix, domain)) === null || ref === void 0 ? void 0 : ref.locale;
105
+ if (prefixLocale) {
106
+ if ((0, _utilsJs.isLocaleSupportedOnDomain)(prefixLocale, domain)) {
107
+ locale = prefixLocale;
108
+ } else {
109
+ // Causes a redirect to a domain that supports the locale
110
+ return {
111
+ locale: prefixLocale,
112
+ domain: domain
113
+ };
114
+ }
115
+ }
116
+ }
117
+ // Prio 2: Use existing cookie
118
+ if (!locale && routing.localeDetection) {
119
+ var cookieLocale = getLocaleFromCookie(routing, requestCookies);
120
+ if (cookieLocale) {
121
+ if ((0, _utilsJs.isLocaleSupportedOnDomain)(cookieLocale, domain)) {
122
+ locale = cookieLocale;
123
+ }
124
+ }
125
+ }
126
+ // Prio 3: Use the `accept-language` header
127
+ if (!locale && routing.localeDetection) {
128
+ var headerLocale = getAcceptLanguageLocale(requestHeaders, domain.locales, domain.defaultLocale);
129
+ if (headerLocale) {
130
+ locale = headerLocale;
131
+ }
132
+ }
133
+ // Prio 4: Use default locale
134
+ if (!locale) {
135
+ locale = domain.defaultLocale;
136
+ }
137
+ return {
138
+ locale: locale,
139
+ domain: domain
140
+ };
141
+ }
142
+ function resolveLocale(routing, requestHeaders, requestCookies, pathname) {
143
+ if (routing.domains) {
144
+ return resolveLocaleFromDomain(routing, requestHeaders, requestCookies, pathname);
145
+ } else {
146
+ return {
147
+ locale: resolveLocaleFromPrefix(routing, requestHeaders, requestCookies, pathname)
148
+ };
149
+ }
150
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return syncCookie;
9
+ }
10
+ });
11
+ var _resolveLocaleJs = require("./resolveLocale.js");
12
+ function _defineProperty(obj, key, value) {
13
+ if (key in obj) {
14
+ Object.defineProperty(obj, key, {
15
+ value: value,
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true
19
+ });
20
+ } else {
21
+ obj[key] = value;
22
+ }
23
+ return obj;
24
+ }
25
+ function _objectSpread(target) {
26
+ for(var i = 1; i < arguments.length; i++){
27
+ var source = arguments[i] != null ? arguments[i] : {};
28
+ var ownKeys = Object.keys(source);
29
+ if (typeof Object.getOwnPropertySymbols === "function") {
30
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
31
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
32
+ }));
33
+ }
34
+ ownKeys.forEach(function(key) {
35
+ _defineProperty(target, key, source[key]);
36
+ });
37
+ }
38
+ return target;
39
+ }
40
+ function _objectWithoutProperties(source, excluded) {
41
+ if (source == null) return {};
42
+ var target = _objectWithoutPropertiesLoose(source, excluded);
43
+ var key, i;
44
+ if (Object.getOwnPropertySymbols) {
45
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
46
+ for(i = 0; i < sourceSymbolKeys.length; i++){
47
+ key = sourceSymbolKeys[i];
48
+ if (excluded.indexOf(key) >= 0) continue;
49
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
50
+ target[key] = source[key];
51
+ }
52
+ }
53
+ return target;
54
+ }
55
+ function _objectWithoutPropertiesLoose(source, excluded) {
56
+ if (source == null) return {};
57
+ var target = {};
58
+ var sourceKeys = Object.keys(source);
59
+ var key, i;
60
+ for(i = 0; i < sourceKeys.length; i++){
61
+ key = sourceKeys[i];
62
+ if (excluded.indexOf(key) >= 0) continue;
63
+ target[key] = source[key];
64
+ }
65
+ return target;
66
+ }
67
+ function syncCookie(request, response, locale, routing, domain) {
68
+ var ref;
69
+ if (!routing.localeCookie) return;
70
+ var _localeCookie = routing.localeCookie, name = _localeCookie.name, rest = _objectWithoutProperties(_localeCookie, [
71
+ "name"
72
+ ]);
73
+ var hasLocaleCookie = request.cookies.has(name);
74
+ var hasOutdatedCookie = hasLocaleCookie && ((ref = request.cookies.get(name)) === null || ref === void 0 ? void 0 : ref.value) !== locale;
75
+ if (hasOutdatedCookie) {
76
+ response.cookies.set(name, locale, _objectSpread({
77
+ path: request.nextUrl.basePath || undefined
78
+ }, rest));
79
+ } else if (!hasLocaleCookie) {
80
+ var acceptLanguageLocale = (0, _resolveLocaleJs.getAcceptLanguageLocale)(request.headers, (domain === null || domain === void 0 ? void 0 : domain.locales) || routing.locales, routing.defaultLocale);
81
+ if (acceptLanguageLocale !== locale) {
82
+ response.cookies.set(name, locale, _objectSpread({
83
+ path: request.nextUrl.basePath || undefined
84
+ }, rest));
85
+ }
86
+ }
87
+ }
@@ -0,0 +1,403 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ applyBasePath: function() {
13
+ return applyBasePath;
14
+ },
15
+ formatPathname: function() {
16
+ return formatPathname;
17
+ },
18
+ formatPathnameTemplate: function() {
19
+ return formatPathnameTemplate;
20
+ },
21
+ formatTemplatePathname: function() {
22
+ return formatTemplatePathname;
23
+ },
24
+ getBestMatchingDomain: function() {
25
+ return getBestMatchingDomain;
26
+ },
27
+ getHost: function() {
28
+ return getHost;
29
+ },
30
+ getInternalTemplate: function() {
31
+ return getInternalTemplate;
32
+ },
33
+ getLocaleAsPrefix: function() {
34
+ return getLocaleAsPrefix;
35
+ },
36
+ getLocalePrefixes: function() {
37
+ return getLocalePrefixes;
38
+ },
39
+ getNormalizedPathname: function() {
40
+ return getNormalizedPathname;
41
+ },
42
+ getPathnameMatch: function() {
43
+ return getPathnameMatch;
44
+ },
45
+ getRouteParams: function() {
46
+ return getRouteParams;
47
+ },
48
+ isLocaleSupportedOnDomain: function() {
49
+ return isLocaleSupportedOnDomain;
50
+ },
51
+ sanitizePathname: function() {
52
+ return sanitizePathname;
53
+ }
54
+ });
55
+ var _utilsJs = require("../shared/utils.js");
56
+ function _arrayLikeToArray(arr, len) {
57
+ if (len == null || len > arr.length) len = arr.length;
58
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
59
+ return arr2;
60
+ }
61
+ function _arrayWithHoles(arr) {
62
+ if (Array.isArray(arr)) return arr;
63
+ }
64
+ function _iterableToArrayLimit(arr, i) {
65
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
66
+ if (_i == null) return;
67
+ var _arr = [];
68
+ var _n = true;
69
+ var _d = false;
70
+ var _s, _e;
71
+ try {
72
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
73
+ _arr.push(_s.value);
74
+ if (i && _arr.length === i) break;
75
+ }
76
+ } catch (err) {
77
+ _d = true;
78
+ _e = err;
79
+ } finally{
80
+ try {
81
+ if (!_n && _i["return"] != null) _i["return"]();
82
+ } finally{
83
+ if (_d) throw _e;
84
+ }
85
+ }
86
+ return _arr;
87
+ }
88
+ function _nonIterableRest() {
89
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
90
+ }
91
+ function _slicedToArray(arr, i) {
92
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
93
+ }
94
+ var _typeof = function(obj) {
95
+ "@swc/helpers - typeof";
96
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
97
+ };
98
+ function _unsupportedIterableToArray(o, minLen) {
99
+ if (!o) return;
100
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
101
+ var n = Object.prototype.toString.call(o).slice(8, -1);
102
+ if (n === "Object" && o.constructor) n = o.constructor.name;
103
+ if (n === "Map" || n === "Set") return Array.from(n);
104
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
105
+ }
106
+ function getInternalTemplate(pathnames, pathname, locale) {
107
+ var sortedPathnames = (0, _utilsJs.getSortedPathnames)(Object.keys(pathnames));
108
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
109
+ try {
110
+ var _loop = function() {
111
+ var internalPathname = _step.value;
112
+ var localizedPathnamesOrPathname = pathnames[internalPathname];
113
+ if (typeof localizedPathnamesOrPathname === "string") {
114
+ var localizedPathname = localizedPathnamesOrPathname;
115
+ if ((0, _utilsJs.matchesPathname)(localizedPathname, pathname)) {
116
+ return {
117
+ v: [
118
+ undefined,
119
+ internalPathname
120
+ ]
121
+ };
122
+ }
123
+ } else {
124
+ // Prefer the entry with the current locale in case multiple
125
+ // localized pathnames match the current pathname
126
+ var sortedEntries = Object.entries(localizedPathnamesOrPathname);
127
+ var curLocaleIndex = sortedEntries.findIndex(function(param) {
128
+ var _param = _slicedToArray(param, 1), entryLocale = _param[0];
129
+ return entryLocale === locale;
130
+ });
131
+ if (curLocaleIndex > 0) {
132
+ sortedEntries.unshift(sortedEntries.splice(curLocaleIndex, 1)[0]);
133
+ }
134
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
135
+ try {
136
+ for(var _iterator = sortedEntries[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator.next()).done); _iteratorNormalCompletion = true){
137
+ var _value = _slicedToArray(_step1.value, 1), entryLocale = _value[0];
138
+ var localizedTemplate = (0, _utilsJs.getLocalizedTemplate)(pathnames[internalPathname], entryLocale, internalPathname);
139
+ if ((0, _utilsJs.matchesPathname)(localizedTemplate, pathname)) {
140
+ return {
141
+ v: [
142
+ entryLocale,
143
+ internalPathname
144
+ ]
145
+ };
146
+ }
147
+ }
148
+ } catch (err) {
149
+ _didIteratorError = true;
150
+ _iteratorError = err;
151
+ } finally{
152
+ try {
153
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
154
+ _iterator.return();
155
+ }
156
+ } finally{
157
+ if (_didIteratorError) {
158
+ throw _iteratorError;
159
+ }
160
+ }
161
+ }
162
+ }
163
+ };
164
+ // Try to find a localized pathname that matches
165
+ for(var _iterator = sortedPathnames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
166
+ var _ret = _loop();
167
+ if (_typeof(_ret) === "object") return _ret.v;
168
+ }
169
+ } catch (err) {
170
+ _didIteratorError = true;
171
+ _iteratorError = err;
172
+ } finally{
173
+ try {
174
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
175
+ _iterator.return();
176
+ }
177
+ } finally{
178
+ if (_didIteratorError) {
179
+ throw _iteratorError;
180
+ }
181
+ }
182
+ }
183
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
184
+ try {
185
+ // Try to find an internal pathname that matches (this can be the case
186
+ // if all localized pathnames are different from the internal pathnames)
187
+ for(var _iterator1 = Object.keys(pathnames)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
188
+ var internalPathname = _step1.value;
189
+ if ((0, _utilsJs.matchesPathname)(internalPathname, pathname)) {
190
+ return [
191
+ undefined,
192
+ internalPathname
193
+ ];
194
+ }
195
+ }
196
+ } catch (err) {
197
+ _didIteratorError1 = true;
198
+ _iteratorError1 = err;
199
+ } finally{
200
+ try {
201
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
202
+ _iterator1.return();
203
+ }
204
+ } finally{
205
+ if (_didIteratorError1) {
206
+ throw _iteratorError1;
207
+ }
208
+ }
209
+ }
210
+ // No match
211
+ return [
212
+ undefined,
213
+ undefined
214
+ ];
215
+ }
216
+ function formatTemplatePathname(sourcePathname, sourceTemplate, targetTemplate, prefix) {
217
+ var params = getRouteParams(sourceTemplate, sourcePathname);
218
+ var targetPathname = "";
219
+ targetPathname += formatPathnameTemplate(targetTemplate, params);
220
+ // A pathname with an optional catchall like `/categories/[[...slug]]`
221
+ // should be normalized to `/categories` if the catchall is not present
222
+ // and no trailing slash is configured
223
+ targetPathname = (0, _utilsJs.normalizeTrailingSlash)(targetPathname);
224
+ return targetPathname;
225
+ }
226
+ /**
227
+ * Removes potential prefixes from the pathname.
228
+ */ function getNormalizedPathname(pathname, locales, localePrefix) {
229
+ // Add trailing slash for consistent handling
230
+ // both for the root as well as nested paths
231
+ if (!pathname.endsWith("/")) {
232
+ pathname += "/";
233
+ }
234
+ var localePrefixes = getLocalePrefixes(locales, localePrefix);
235
+ var regex = new RegExp("^(".concat(localePrefixes.map(function(param) {
236
+ var _param = _slicedToArray(param, 2), prefix = _param[1];
237
+ return prefix.replaceAll("/", "\\/");
238
+ }).join("|"), ")/(.*)"), "i");
239
+ var match = pathname.match(regex);
240
+ var result = match ? "/" + match[2] : pathname;
241
+ if (result !== "/") {
242
+ result = (0, _utilsJs.normalizeTrailingSlash)(result);
243
+ }
244
+ return result;
245
+ }
246
+ function getLocalePrefixes(locales, localePrefix) {
247
+ var sort = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;
248
+ var prefixes = locales.map(function(locale) {
249
+ return [
250
+ locale,
251
+ (0, _utilsJs.getLocalePrefix)(locale, localePrefix)
252
+ ];
253
+ });
254
+ if (sort) {
255
+ // More specific ones first
256
+ prefixes.sort(function(a, b) {
257
+ return b[1].length - a[1].length;
258
+ });
259
+ }
260
+ return prefixes;
261
+ }
262
+ function getPathnameMatch(pathname, locales, localePrefix, domain) {
263
+ var localePrefixes = getLocalePrefixes(locales, localePrefix);
264
+ // Sort to prioritize domain locales
265
+ if (domain) {
266
+ localePrefixes.sort(function(param, param1) {
267
+ var _param = _slicedToArray(param, 1), localeA = _param[0], _param1 = _slicedToArray(param1, 1), localeB = _param1[0];
268
+ if (localeA === domain.defaultLocale) return -1;
269
+ if (localeB === domain.defaultLocale) return 1;
270
+ var isLocaleAInDomain = domain.locales.includes(localeA);
271
+ var isLocaleBInDomain = domain.locales.includes(localeB);
272
+ if (isLocaleAInDomain && !isLocaleBInDomain) return -1;
273
+ if (!isLocaleAInDomain && isLocaleBInDomain) return 1;
274
+ return 0;
275
+ });
276
+ }
277
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
278
+ try {
279
+ for(var _iterator = localePrefixes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
280
+ var _value = _slicedToArray(_step.value, 2), locale = _value[0], prefix = _value[1];
281
+ var exact = void 0, matches = void 0;
282
+ if (pathname === prefix || pathname.startsWith(prefix + "/")) {
283
+ exact = matches = true;
284
+ } else {
285
+ var normalizedPathname = pathname.toLowerCase();
286
+ var normalizedPrefix = prefix.toLowerCase();
287
+ if (normalizedPathname === normalizedPrefix || normalizedPathname.startsWith(normalizedPrefix + "/")) {
288
+ exact = false;
289
+ matches = true;
290
+ }
291
+ }
292
+ if (matches) {
293
+ return {
294
+ locale: locale,
295
+ prefix: prefix,
296
+ matchedPrefix: pathname.slice(0, prefix.length),
297
+ exact: exact
298
+ };
299
+ }
300
+ }
301
+ } catch (err) {
302
+ _didIteratorError = true;
303
+ _iteratorError = err;
304
+ } finally{
305
+ try {
306
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
307
+ _iterator.return();
308
+ }
309
+ } finally{
310
+ if (_didIteratorError) {
311
+ throw _iteratorError;
312
+ }
313
+ }
314
+ }
315
+ }
316
+ function getRouteParams(template, pathname) {
317
+ var normalizedPathname = (0, _utilsJs.normalizeTrailingSlash)(pathname);
318
+ var normalizedTemplate = (0, _utilsJs.normalizeTrailingSlash)(template);
319
+ var regex = (0, _utilsJs.templateToRegex)(normalizedTemplate);
320
+ var match = regex.exec(normalizedPathname);
321
+ if (!match) return undefined;
322
+ var params = {};
323
+ var ref;
324
+ var keys = (ref = normalizedTemplate.match(/\[([^\]]+)\]/g)) !== null && ref !== void 0 ? ref : [];
325
+ for(var i = 1; i < match.length; i++){
326
+ var rawKey = keys[i - 1];
327
+ if (!rawKey) continue;
328
+ var key = rawKey.replace(/[[\]]/g, "");
329
+ var _i;
330
+ var value = (_i = match[i]) !== null && _i !== void 0 ? _i : "";
331
+ params[key] = value;
332
+ }
333
+ return params;
334
+ }
335
+ function formatPathnameTemplate(template, params) {
336
+ if (!params) return template;
337
+ // Simplify syntax for optional catchall ('[[...slug]]') so
338
+ // we can replace the value with simple interpolation
339
+ template = template.replace(/\[\[/g, "[").replace(/\]\]/g, "]");
340
+ var result = template;
341
+ Object.entries(params).forEach(function(param) {
342
+ var _param = _slicedToArray(param, 2), key = _param[0], value = _param[1];
343
+ result = result.replace("[".concat(key, "]"), value);
344
+ });
345
+ return result;
346
+ }
347
+ function formatPathname(pathname, prefix, search) {
348
+ var result = pathname;
349
+ if (prefix) {
350
+ result = (0, _utilsJs.prefixPathname)(prefix, result);
351
+ }
352
+ if (search) {
353
+ result += search;
354
+ }
355
+ return result;
356
+ }
357
+ function getHost(requestHeaders) {
358
+ var ref, ref1;
359
+ return (ref1 = (ref = requestHeaders.get("x-forwarded-host")) !== null && ref !== void 0 ? ref : requestHeaders.get("host")) !== null && ref1 !== void 0 ? ref1 : undefined;
360
+ }
361
+ function isLocaleSupportedOnDomain(locale, domain) {
362
+ return domain.defaultLocale === locale || domain.locales.includes(locale);
363
+ }
364
+ function getBestMatchingDomain(curHostDomain, locale, domainsConfig) {
365
+ var domainConfig;
366
+ // Prio 1: Stay on current domain
367
+ if (curHostDomain && isLocaleSupportedOnDomain(locale, curHostDomain)) {
368
+ domainConfig = curHostDomain;
369
+ }
370
+ // Prio 2: Use alternative domain with matching default locale
371
+ if (!domainConfig) {
372
+ domainConfig = domainsConfig.find(function(cur) {
373
+ return cur.defaultLocale === locale;
374
+ });
375
+ }
376
+ // Prio 3: Use alternative domain that supports the locale
377
+ if (!domainConfig) {
378
+ domainConfig = domainsConfig.find(function(cur) {
379
+ return cur.locales.includes(locale);
380
+ });
381
+ }
382
+ return domainConfig;
383
+ }
384
+ function applyBasePath(pathname, basePath) {
385
+ return (0, _utilsJs.normalizeTrailingSlash)(basePath + pathname);
386
+ }
387
+ function getLocaleAsPrefix(locale) {
388
+ return "/".concat(locale);
389
+ }
390
+ function sanitizePathname(pathname) {
391
+ // Sanitize malicious URIs, e.g.:
392
+ // '/en/\\example.org' → '/en/%5Cexample.org' (backslash → %5C)
393
+ // '/en/\t/example.org' → '/en/example.org' (WHATWG-stripped TAB)
394
+ // '/en/\n/example.org' → '/en/example.org' (WHATWG-stripped LF)
395
+ // '/en/\r/example.org' → '/en/example.org' (WHATWG-stripped CR)
396
+ // '/en////example.org' → '/en/example.org' (consecutive slashes)
397
+ //
398
+ // U+0009/000A/000D are silently stripped by the WHATWG URL parser
399
+ // (https://url.spec.whatwg.org/#concept-url-parser). Without removing
400
+ // them here, a decoded TAB in a segment separator position causes
401
+ // new URL("/\t/host", base) to collapse to "//host" → open redirect.
402
+ return pathname.replace(/\\/g, "%5C").replace(/[\t\n\r]/g, "").replace(/\/+/g, "/");
403
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _middlewareJs.default;
9
+ }
10
+ });
11
+ var _middlewareJs = /*#__PURE__*/ _interopRequireDefault(require("./middleware/middleware.js"));
12
+ function _interopRequireDefault(obj) {
13
+ return obj && obj.__esModule ? obj : {
14
+ default: obj
15
+ };
16
+ }