@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.
- package/LICENSE +21 -0
- package/README.md +5 -0
- package/config.d.ts +4 -0
- package/dist/cjs/development/ExtractorCodec-D9Tw618d.cjs +7 -0
- package/dist/cjs/development/JSONCodec-CzA8ubPy.cjs +55 -0
- package/dist/cjs/development/POCodec-CWGHK-Gp.cjs +111 -0
- package/dist/cjs/development/plugin-DlFYUFWh.cjs +1613 -0
- package/dist/cjs/development/plugin.cjs +13 -0
- package/dist/esm/development/config.js +13 -0
- package/dist/esm/development/extractor/ExtractionCompiler.js +284 -0
- package/dist/esm/development/extractor/catalog/CatalogLocales.js +398 -0
- package/dist/esm/development/extractor/catalog/CatalogManager.js +1515 -0
- package/dist/esm/development/extractor/catalog/CatalogPersister.js +341 -0
- package/dist/esm/development/extractor/catalog/SaveScheduler.js +314 -0
- package/dist/esm/development/extractor/catalogLoader.js +288 -0
- package/dist/esm/development/extractor/extractMessages.js +180 -0
- package/dist/esm/development/extractor/extractionLoader.js +37 -0
- package/dist/esm/development/extractor/extractor/LRUCache.js +68 -0
- package/dist/esm/development/extractor/extractor/MessageExtractor.js +273 -0
- package/dist/esm/development/extractor/format/ExtractorCodec.js +13 -0
- package/dist/esm/development/extractor/format/codecs/JSONCodec.js +91 -0
- package/dist/esm/development/extractor/format/codecs/POCodec.js +227 -0
- package/dist/esm/development/extractor/format/index.js +289 -0
- package/dist/esm/development/extractor/normalizeExtractorConfig.js +91 -0
- package/dist/esm/development/extractor/source/SourceFileFilter.js +104 -0
- package/dist/esm/development/extractor/source/SourceFileScanner.js +297 -0
- package/dist/esm/development/extractor/source/SourceFileWatcher.js +610 -0
- package/dist/esm/development/extractor/utils.js +133 -0
- package/dist/esm/development/extractor.js +25 -0
- package/dist/esm/development/index.react-client.js +59 -0
- package/dist/esm/development/index.react-server.js +61 -0
- package/dist/esm/development/middleware/getAlternateLinksHeaderValue.js +142 -0
- package/dist/esm/development/middleware/middleware.js +231 -0
- package/dist/esm/development/middleware/resolveLocale.js +150 -0
- package/dist/esm/development/middleware/syncCookie.js +87 -0
- package/dist/esm/development/middleware/utils.js +403 -0
- package/dist/esm/development/middleware.js +16 -0
- package/dist/esm/development/navigation/react-client/createNavigation.js +195 -0
- package/dist/esm/development/navigation/react-client/useBasePathname.js +46 -0
- package/dist/esm/development/navigation/react-server/createNavigation.js +111 -0
- package/dist/esm/development/navigation/react-server/getServerLocale.js +167 -0
- package/dist/esm/development/navigation/shared/BaseLink.js +115 -0
- package/dist/esm/development/navigation/shared/createSharedNavigationFns.js +214 -0
- package/dist/esm/development/navigation/shared/syncLocaleCookie.js +139 -0
- package/dist/esm/development/navigation/shared/utils.js +352 -0
- package/dist/esm/development/navigation.react-client.js +16 -0
- package/dist/esm/development/navigation.react-server.js +16 -0
- package/dist/esm/development/plugin/config.js +28 -0
- package/dist/esm/development/plugin/createNextIntlPlugin.js +66 -0
- package/dist/esm/development/plugin/declaration/createMessagesDeclaration.js +91 -0
- package/dist/esm/development/plugin/extractor/initExtractionCompiler.js +64 -0
- package/dist/esm/development/plugin/getNextConfig.js +355 -0
- package/dist/esm/development/plugin/nextFlags.js +47 -0
- package/dist/esm/development/plugin/utils.js +43 -0
- package/dist/esm/development/plugin/watchFile.js +32 -0
- package/dist/esm/development/plugin.js +16 -0
- package/dist/esm/development/react-client/index.js +67 -0
- package/dist/esm/development/react-server/NextIntlClientProviderServer.js +327 -0
- package/dist/esm/development/react-server/useConfig.js +40 -0
- package/dist/esm/development/react-server/useExtracted.js +21 -0
- package/dist/esm/development/react-server/useFormatter.js +21 -0
- package/dist/esm/development/react-server/useLocale.js +20 -0
- package/dist/esm/development/react-server/useMessages.js +21 -0
- package/dist/esm/development/react-server/useNow.js +25 -0
- package/dist/esm/development/react-server/useTimeZone.js +20 -0
- package/dist/esm/development/react-server/useTranslations.js +71 -0
- package/dist/esm/development/routing/config.js +82 -0
- package/dist/esm/development/routing/defineRouting.js +116 -0
- package/dist/esm/development/routing.js +16 -0
- package/dist/esm/development/server/react-client/index.js +68 -0
- package/dist/esm/development/server/react-server/RequestLocale.js +267 -0
- package/dist/esm/development/server/react-server/RequestLocaleCache.js +33 -0
- package/dist/esm/development/server/react-server/createRequestConfig.js +16 -0
- package/dist/esm/development/server/react-server/getConfig.js +283 -0
- package/dist/esm/development/server/react-server/getConfigNow.js +166 -0
- package/dist/esm/development/server/react-server/getDefaultNow.js +16 -0
- package/dist/esm/development/server/react-server/getExtracted.js +176 -0
- package/dist/esm/development/server/react-server/getFormats.js +166 -0
- package/dist/esm/development/server/react-server/getFormatter.js +186 -0
- package/dist/esm/development/server/react-server/getLocale.js +166 -0
- package/dist/esm/development/server/react-server/getMessages.js +194 -0
- package/dist/esm/development/server/react-server/getNow.js +164 -0
- package/dist/esm/development/server/react-server/getRequestConfig.js +15 -0
- package/dist/esm/development/server/react-server/getServerExtractor.js +108 -0
- package/dist/esm/development/server/react-server/getServerFormatter.js +81 -0
- package/dist/esm/development/server/react-server/getServerTranslator.js +70 -0
- package/dist/esm/development/server/react-server/getTimeZone.js +180 -0
- package/dist/esm/development/server/react-server/getTranslations.js +179 -0
- package/dist/esm/development/server/react-server/validateLocale.js +20 -0
- package/dist/esm/development/server.react-client.js +40 -0
- package/dist/esm/development/server.react-server.js +53 -0
- package/dist/esm/development/shared/NextIntlClientProvider.js +79 -0
- package/dist/esm/development/shared/constants.js +12 -0
- package/dist/esm/development/shared/use.js +59 -0
- package/dist/esm/development/shared/utils.js +201 -0
- package/dist/esm/production/config.js +13 -0
- package/dist/esm/production/extractor/ExtractionCompiler.js +275 -0
- package/dist/esm/production/extractor/catalog/CatalogLocales.js +384 -0
- package/dist/esm/production/extractor/catalog/CatalogManager.js +1401 -0
- package/dist/esm/production/extractor/catalog/CatalogPersister.js +334 -0
- package/dist/esm/production/extractor/catalog/SaveScheduler.js +278 -0
- package/dist/esm/production/extractor/catalogLoader.js +251 -0
- package/dist/esm/production/extractor/extractMessages.js +178 -0
- package/dist/esm/production/extractor/extractionLoader.js +27 -0
- package/dist/esm/production/extractor/extractor/LRUCache.js +59 -0
- package/dist/esm/production/extractor/extractor/MessageExtractor.js +259 -0
- package/dist/esm/production/extractor/format/ExtractorCodec.js +13 -0
- package/dist/esm/production/extractor/format/codecs/JSONCodec.js +83 -0
- package/dist/esm/production/extractor/format/codecs/POCodec.js +210 -0
- package/dist/esm/production/extractor/format/index.js +278 -0
- package/dist/esm/production/extractor/normalizeExtractorConfig.js +54 -0
- package/dist/esm/production/extractor/source/SourceFileFilter.js +99 -0
- package/dist/esm/production/extractor/source/SourceFileScanner.js +293 -0
- package/dist/esm/production/extractor/source/SourceFileWatcher.js +579 -0
- package/dist/esm/production/extractor/utils.js +108 -0
- package/dist/esm/production/extractor.js +25 -0
- package/dist/esm/production/index.react-client.js +59 -0
- package/dist/esm/production/index.react-server.js +61 -0
- package/dist/esm/production/middleware/getAlternateLinksHeaderValue.js +104 -0
- package/dist/esm/production/middleware/middleware.js +155 -0
- package/dist/esm/production/middleware/resolveLocale.js +99 -0
- package/dist/esm/production/middleware/syncCookie.js +81 -0
- package/dist/esm/production/middleware/utils.js +315 -0
- package/dist/esm/production/middleware.js +16 -0
- package/dist/esm/production/navigation/react-client/createNavigation.js +174 -0
- package/dist/esm/production/navigation/react-client/useBasePathname.js +32 -0
- package/dist/esm/production/navigation/react-server/createNavigation.js +110 -0
- package/dist/esm/production/navigation/react-server/getServerLocale.js +162 -0
- package/dist/esm/production/navigation/shared/BaseLink.js +98 -0
- package/dist/esm/production/navigation/shared/createSharedNavigationFns.js +182 -0
- package/dist/esm/production/navigation/shared/syncLocaleCookie.js +113 -0
- package/dist/esm/production/navigation/shared/utils.js +264 -0
- package/dist/esm/production/navigation.react-client.js +16 -0
- package/dist/esm/production/navigation.react-server.js +16 -0
- package/dist/esm/production/plugin/config.js +22 -0
- package/dist/esm/production/plugin/createNextIntlPlugin.js +48 -0
- package/dist/esm/production/plugin/declaration/createMessagesDeclaration.js +72 -0
- package/dist/esm/production/plugin/extractor/initExtractionCompiler.js +33 -0
- package/dist/esm/production/plugin/getNextConfig.js +242 -0
- package/dist/esm/production/plugin/nextFlags.js +44 -0
- package/dist/esm/production/plugin/utils.js +35 -0
- package/dist/esm/production/plugin/watchFile.js +26 -0
- package/dist/esm/production/plugin.js +16 -0
- package/dist/esm/production/react-client/index.js +57 -0
- package/dist/esm/production/react-server/NextIntlClientProviderServer.js +327 -0
- package/dist/esm/production/react-server/useConfig.js +35 -0
- package/dist/esm/production/react-server/useExtracted.js +21 -0
- package/dist/esm/production/react-server/useFormatter.js +21 -0
- package/dist/esm/production/react-server/useLocale.js +19 -0
- package/dist/esm/production/react-server/useMessages.js +21 -0
- package/dist/esm/production/react-server/useNow.js +22 -0
- package/dist/esm/production/react-server/useTimeZone.js +19 -0
- package/dist/esm/production/react-server/useTranslations.js +71 -0
- package/dist/esm/production/routing/config.js +77 -0
- package/dist/esm/production/routing/defineRouting.js +13 -0
- package/dist/esm/production/routing.js +16 -0
- package/dist/esm/production/server/react-client/index.js +51 -0
- package/dist/esm/production/server/react-server/RequestLocale.js +246 -0
- package/dist/esm/production/server/react-server/RequestLocaleCache.js +30 -0
- package/dist/esm/production/server/react-server/createRequestConfig.js +16 -0
- package/dist/esm/production/server/react-server/getConfig.js +262 -0
- package/dist/esm/production/server/react-server/getConfigNow.js +162 -0
- package/dist/esm/production/server/react-server/getDefaultNow.js +14 -0
- package/dist/esm/production/server/react-server/getExtracted.js +166 -0
- package/dist/esm/production/server/react-server/getFormats.js +157 -0
- package/dist/esm/production/server/react-server/getFormatter.js +179 -0
- package/dist/esm/production/server/react-server/getLocale.js +157 -0
- package/dist/esm/production/server/react-server/getMessages.js +190 -0
- package/dist/esm/production/server/react-server/getNow.js +164 -0
- package/dist/esm/production/server/react-server/getRequestConfig.js +13 -0
- package/dist/esm/production/server/react-server/getServerExtractor.js +20 -0
- package/dist/esm/production/server/react-server/getServerFormatter.js +78 -0
- package/dist/esm/production/server/react-server/getServerTranslator.js +69 -0
- package/dist/esm/production/server/react-server/getTimeZone.js +176 -0
- package/dist/esm/production/server/react-server/getTranslations.js +166 -0
- package/dist/esm/production/server.react-client.js +40 -0
- package/dist/esm/production/server.react-server.js +53 -0
- package/dist/esm/production/shared/NextIntlClientProvider.js +77 -0
- package/dist/esm/production/shared/constants.js +11 -0
- package/dist/esm/production/shared/use.js +51 -0
- package/dist/esm/production/shared/utils.js +156 -0
- package/dist/types/config.d.ts +1 -0
- package/dist/types/extractor/ExtractionCompiler.d.ts +16 -0
- package/dist/types/extractor/catalog/CatalogLocales.d.ts +29 -0
- package/dist/types/extractor/catalog/CatalogManager.d.ts +76 -0
- package/dist/types/extractor/catalog/CatalogPersister.d.ts +20 -0
- package/dist/types/extractor/catalog/SaveScheduler.d.ts +18 -0
- package/dist/types/extractor/extractMessages.d.ts +2 -0
- package/dist/types/extractor/extractor/LRUCache.d.ts +7 -0
- package/dist/types/extractor/extractor/MessageExtractor.bench.d.ts +1 -0
- package/dist/types/extractor/extractor/MessageExtractor.d.ts +17 -0
- package/dist/types/extractor/format/ExtractorCodec.d.ts +33 -0
- package/dist/types/extractor/format/codecs/JSONCodec.d.ts +2 -0
- package/dist/types/extractor/format/codecs/POCodec.d.ts +2 -0
- package/dist/types/extractor/format/codecs/fixtures/JSONCodecStructured.d.ts +2 -0
- package/dist/types/extractor/format/codecs/fixtures/POCodecSourceMessageKey.d.ts +2 -0
- package/dist/types/extractor/format/index.d.ts +15 -0
- package/dist/types/extractor/format/types.d.ts +8 -0
- package/dist/types/extractor/index.d.ts +2 -0
- package/dist/types/extractor/normalizeExtractorConfig.d.ts +5 -0
- package/dist/types/extractor/source/SourceFileFilter.d.ts +8 -0
- package/dist/types/extractor/source/SourceFileScanner.d.ts +4 -0
- package/dist/types/extractor/source/SourceFileWatcher.d.ts +15 -0
- package/dist/types/extractor/types.d.ts +79 -0
- package/dist/types/extractor/utils.d.ts +9 -0
- package/dist/types/extractor.d.ts +1 -0
- package/dist/types/index.react-client.d.ts +8 -0
- package/dist/types/index.react-server.d.ts +1 -0
- package/dist/types/middleware/getAlternateLinksHeaderValue.d.ts +13 -0
- package/dist/types/middleware/index.d.ts +4 -0
- package/dist/types/middleware/middleware.d.ts +4 -0
- package/dist/types/middleware/resolveLocale.d.ts +9 -0
- package/dist/types/middleware/syncCookie.d.ts +7 -0
- package/dist/types/middleware/utils.d.ts +26 -0
- package/dist/types/middleware.d.ts +1 -0
- package/dist/types/navigation/react-client/createNavigation.d.ts +465 -0
- package/dist/types/navigation/react-client/index.d.ts +2 -0
- package/dist/types/navigation/react-client/useBasePathname.d.ts +5 -0
- package/dist/types/navigation/react-server/createNavigation.d.ts +384 -0
- package/dist/types/navigation/react-server/getServerLocale.d.ts +5 -0
- package/dist/types/navigation/react-server/index.d.ts +2 -0
- package/dist/types/navigation/shared/BaseLink.d.ts +11 -0
- package/dist/types/navigation/shared/StrictParams.d.ts +8 -0
- package/dist/types/navigation/shared/createSharedNavigationFns.d.ts +370 -0
- package/dist/types/navigation/shared/syncLocaleCookie.d.ts +8 -0
- package/dist/types/navigation/shared/utils.d.ts +53 -0
- package/dist/types/navigation.react-client.d.ts +1 -0
- package/dist/types/navigation.react-server.d.ts +1 -0
- package/dist/types/plugin/catalog/catalogLoader.d.ts +10 -0
- package/dist/types/plugin/config.d.ts +3 -0
- package/dist/types/plugin/createNextIntlPlugin.d.ts +3 -0
- package/dist/types/plugin/declaration/createMessagesDeclaration.d.ts +1 -0
- package/dist/types/plugin/declaration/index.d.ts +1 -0
- package/dist/types/plugin/extractor/extractionLoader.d.ts +3 -0
- package/dist/types/plugin/extractor/initExtractionCompiler.d.ts +2 -0
- package/dist/types/plugin/getNextConfig.d.ts +4 -0
- package/dist/types/plugin/index.d.ts +1 -0
- package/dist/types/plugin/nextFlags.d.ts +2 -0
- package/dist/types/plugin/types.d.ts +25 -0
- package/dist/types/plugin/utils.d.ts +8 -0
- package/dist/types/plugin/watchFile.d.ts +6 -0
- package/dist/types/plugin.d.ts +1 -0
- package/dist/types/react-client/index.d.ts +16 -0
- package/dist/types/react-server/NextIntlClientProviderServer.d.ts +5 -0
- package/dist/types/react-server/index.d.ts +16 -0
- package/dist/types/react-server/testUtils.d.ts +2 -0
- package/dist/types/react-server/useConfig.d.ts +2 -0
- package/dist/types/react-server/useExtracted.d.ts +2 -0
- package/dist/types/react-server/useFormatter.d.ts +2 -0
- package/dist/types/react-server/useLocale.d.ts +2 -0
- package/dist/types/react-server/useMessages.d.ts +2 -0
- package/dist/types/react-server/useNow.d.ts +2 -0
- package/dist/types/react-server/useTimeZone.d.ts +2 -0
- package/dist/types/react-server/useTranslations.d.ts +2 -0
- package/dist/types/routing/config.d.ts +73 -0
- package/dist/types/routing/defineRouting.d.ts +3 -0
- package/dist/types/routing/index.d.ts +3 -0
- package/dist/types/routing/types.d.ts +25 -0
- package/dist/types/routing.d.ts +1 -0
- package/dist/types/server/react-client/index.d.ts +10 -0
- package/dist/types/server/react-server/RequestLocale.d.ts +1 -0
- package/dist/types/server/react-server/RequestLocaleCache.d.ts +3 -0
- package/dist/types/server/react-server/createRequestConfig.d.ts +3 -0
- package/dist/types/server/react-server/getConfig.d.ts +13 -0
- package/dist/types/server/react-server/getConfigNow.d.ts +4 -0
- package/dist/types/server/react-server/getDefaultNow.d.ts +3 -0
- package/dist/types/server/react-server/getExtracted.d.ts +10 -0
- package/dist/types/server/react-server/getFormats.d.ts +3 -0
- package/dist/types/server/react-server/getFormatter.d.ts +10 -0
- package/dist/types/server/react-server/getLocale.d.ts +4 -0
- package/dist/types/server/react-server/getMessages.d.ts +6 -0
- package/dist/types/server/react-server/getNow.d.ts +4 -0
- package/dist/types/server/react-server/getRequestConfig.d.ts +35 -0
- package/dist/types/server/react-server/getServerExtractor.d.ts +5 -0
- package/dist/types/server/react-server/getServerFormatter.d.ts +29 -0
- package/dist/types/server/react-server/getServerTranslator.d.ts +4 -0
- package/dist/types/server/react-server/getTimeZone.d.ts +4 -0
- package/dist/types/server/react-server/getTranslations.d.ts +8 -0
- package/dist/types/server/react-server/index.d.ts +12 -0
- package/dist/types/server/react-server/validateLocale.d.ts +1 -0
- package/dist/types/server.react-client.d.ts +1 -0
- package/dist/types/server.react-server.d.ts +1 -0
- package/dist/types/shared/NextIntlClientProvider.d.ts +9 -0
- package/dist/types/shared/constants.d.ts +1 -0
- package/dist/types/shared/types.d.ts +5 -0
- package/dist/types/shared/use.d.ts +3 -0
- package/dist/types/shared/utils.d.ts +20 -0
- package/extractor/catalogLoader.d.ts +4 -0
- package/extractor/extractionLoader.d.ts +4 -0
- package/extractor.d.ts +2 -0
- package/middleware.d.ts +4 -0
- package/navigation.d.ts +2 -0
- package/package.json +60 -0
- package/plugin.d.cts +3 -0
- package/plugin.d.ts +4 -0
- package/routing.d.ts +2 -0
- 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
|
+
}
|