intor 2.2.14 → 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.
- package/dist/exports/config/index.d.ts +2 -0
- package/dist/exports/config/index.js +4 -0
- package/dist/exports/index.d.ts +5 -0
- package/dist/exports/index.js +11 -0
- package/dist/exports/next/index.d.ts +3 -0
- package/dist/exports/next/index.js +9 -0
- package/dist/exports/next/middleware/index.d.ts +2 -0
- package/dist/exports/next/middleware/index.js +2 -0
- package/dist/exports/next/server/index.d.ts +2 -0
- package/dist/exports/next/server/index.js +2 -0
- package/dist/exports/react/index.d.ts +2 -0
- package/dist/exports/react/index.js +6 -0
- package/dist/exports/server/index.d.ts +2 -0
- package/dist/exports/server/index.js +7 -0
- package/dist/src/adapters/next/middleware/handle-prefix/handle-prefix-all.d.ts +12 -0
- package/dist/src/adapters/next/middleware/handle-prefix/handle-prefix-all.js +60 -0
- package/dist/src/adapters/next/middleware/handle-prefix/handle-prefix-except-default.d.ts +16 -0
- package/dist/src/adapters/next/middleware/handle-prefix/handle-prefix-except-default.js +81 -0
- package/dist/src/adapters/next/middleware/handle-prefix/handle-prefix-none.d.ts +10 -0
- package/dist/src/adapters/next/middleware/handle-prefix/handle-prefix-none.js +22 -0
- package/dist/src/adapters/next/middleware/index.d.ts +2 -0
- package/dist/src/adapters/next/middleware/intor-middleware.d.ts +6 -0
- package/dist/src/adapters/next/middleware/intor-middleware.js +22 -0
- package/dist/src/adapters/next/middleware/utils/create-response.d.ts +17 -0
- package/dist/src/adapters/next/middleware/utils/create-response.js +42 -0
- package/dist/src/adapters/next/middleware/utils/determine-initial-locale.d.ts +8 -0
- package/dist/src/adapters/next/middleware/utils/determine-initial-locale.js +28 -0
- package/dist/src/adapters/next/middleware/utils/set-locale-cookie-edge.d.ts +15 -0
- package/dist/src/adapters/next/middleware/utils/set-locale-cookie-edge.js +24 -0
- package/dist/src/adapters/next/middleware/utils/set-pathname-header.d.ts +12 -0
- package/dist/src/adapters/next/middleware/utils/set-pathname-header.js +13 -0
- package/dist/src/adapters/next/navigation/index.d.ts +4 -0
- package/dist/src/adapters/next/navigation/link.d.ts +16 -0
- package/dist/src/adapters/next/navigation/link.js +25 -0
- package/dist/src/adapters/next/navigation/redirect.d.ts +16 -0
- package/dist/src/adapters/next/navigation/redirect.js +36 -0
- package/dist/src/adapters/next/navigation/use-pathname.d.ts +17 -0
- package/dist/src/adapters/next/navigation/use-pathname.js +49 -0
- package/dist/src/adapters/next/navigation/use-router.d.ts +20 -0
- package/dist/src/adapters/next/navigation/use-router.js +31 -0
- package/dist/src/adapters/next/navigation/utils/should-full-reload.d.ts +7 -0
- package/dist/src/adapters/next/navigation/utils/should-full-reload.js +19 -0
- package/dist/src/adapters/next/navigation/utils/use-locale-switch.d.ts +16 -0
- package/dist/src/adapters/next/navigation/utils/use-locale-switch.js +58 -0
- package/dist/src/adapters/next/server/get-i18n-context.d.ts +9 -0
- package/dist/src/adapters/next/server/get-i18n-context.js +47 -0
- package/dist/src/adapters/next/server/get-translator.d.ts +30 -0
- package/dist/src/adapters/next/server/get-translator.js +19 -0
- package/dist/src/adapters/next/server/index.d.ts +2 -0
- package/dist/src/adapters/next/shared/constants/pathname-header-name.d.ts +1 -0
- package/dist/src/adapters/next/shared/constants/pathname-header-name.js +4 -0
- package/dist/src/adapters/next/shared/utils/locale-prefix-pathname.d.ts +16 -0
- package/dist/src/adapters/next/shared/utils/locale-prefix-pathname.js +33 -0
- package/dist/src/adapters/next/shared/utils/localize-pathname.d.ts +18 -0
- package/dist/src/adapters/next/shared/utils/localize-pathname.js +36 -0
- package/dist/src/client/react/contexts/config/context.d.ts +3 -0
- package/dist/src/client/react/contexts/config/context.js +6 -0
- package/dist/src/client/react/contexts/config/hook.d.ts +2 -0
- package/dist/src/client/react/contexts/config/hook.js +12 -0
- package/dist/src/client/react/contexts/config/index.d.ts +2 -0
- package/dist/src/client/react/contexts/config/provider.d.ts +2 -0
- package/dist/src/client/react/contexts/config/provider.js +11 -0
- package/dist/src/client/react/contexts/config/types.d.ts +10 -0
- package/dist/src/client/react/contexts/intor-provider/index.d.ts +2 -0
- package/dist/src/client/react/contexts/intor-provider/intor-provider.d.ts +2 -0
- package/dist/src/client/react/contexts/intor-provider/intor-provider.js +17 -0
- package/dist/src/client/react/contexts/intor-provider/types.d.ts +14 -0
- package/dist/src/client/react/contexts/locale/context.d.ts +3 -0
- package/dist/src/client/react/contexts/locale/context.js +6 -0
- package/dist/src/client/react/contexts/locale/hook.d.ts +1 -0
- package/dist/src/client/react/contexts/locale/hook.js +12 -0
- package/dist/src/client/react/contexts/locale/index.d.ts +2 -0
- package/dist/src/client/react/contexts/locale/provider.d.ts +3 -0
- package/dist/src/client/react/contexts/locale/provider.js +48 -0
- package/dist/src/client/react/contexts/locale/types.d.ts +13 -0
- package/dist/src/client/react/contexts/locale/utils/change-locale.d.ts +22 -0
- package/dist/src/client/react/contexts/locale/utils/change-locale.js +35 -0
- package/dist/src/client/react/contexts/locale/utils/use-init-locale-cookie.d.ts +8 -0
- package/dist/src/client/react/contexts/locale/utils/use-init-locale-cookie.js +28 -0
- package/dist/src/client/react/contexts/messages/context.d.ts +3 -0
- package/dist/src/client/react/contexts/messages/context.js +6 -0
- package/dist/src/client/react/contexts/messages/hook.d.ts +2 -0
- package/dist/src/client/react/contexts/messages/hook.js +12 -0
- package/dist/src/client/react/contexts/messages/index.d.ts +2 -0
- package/dist/src/client/react/contexts/messages/provider.d.ts +3 -0
- package/dist/src/client/react/contexts/messages/provider.js +32 -0
- package/dist/src/client/react/contexts/messages/types.d.ts +15 -0
- package/dist/src/client/react/contexts/messages/utils/use-refetch-messages.d.ts +16 -0
- package/dist/src/client/react/contexts/messages/utils/use-refetch-messages.js +57 -0
- package/dist/src/client/react/contexts/translate-handlers/context.d.ts +2 -0
- package/dist/src/client/react/contexts/translate-handlers/context.js +6 -0
- package/dist/src/client/react/contexts/translate-handlers/hook.d.ts +2 -0
- package/dist/src/client/react/contexts/translate-handlers/hook.js +10 -0
- package/dist/src/client/react/contexts/translate-handlers/index.d.ts +3 -0
- package/dist/src/client/react/contexts/translate-handlers/provider.d.ts +2 -0
- package/dist/src/client/react/contexts/translate-handlers/provider.js +11 -0
- package/dist/src/client/react/contexts/translate-handlers/types.d.ts +7 -0
- package/dist/src/client/react/contexts/translator/context.d.ts +3 -0
- package/dist/src/client/react/contexts/translator/context.js +6 -0
- package/dist/src/client/react/contexts/translator/hook.d.ts +2 -0
- package/dist/src/client/react/contexts/translator/hook.js +12 -0
- package/dist/src/client/react/contexts/translator/index.d.ts +2 -0
- package/dist/src/client/react/contexts/translator/provider.d.ts +2 -0
- package/dist/src/client/react/contexts/translator/provider.js +53 -0
- package/dist/src/client/react/contexts/translator/types.d.ts +11 -0
- package/dist/src/client/react/hooks/use-translator.d.ts +12 -0
- package/dist/src/client/react/hooks/use-translator.js +38 -0
- package/dist/src/client/react/index.d.ts +4 -0
- package/dist/src/client/shared/utils/get-initial-locale.d.ts +11 -0
- package/dist/src/client/shared/utils/get-initial-locale.js +21 -0
- package/dist/src/config/constants/cache.constants.d.ts +2 -0
- package/dist/src/config/constants/cache.constants.js +7 -0
- package/dist/src/config/constants/cookie.constants.d.ts +2 -0
- package/dist/src/config/constants/cookie.constants.js +14 -0
- package/dist/src/config/constants/routing.constants.d.ts +2 -0
- package/dist/src/config/constants/routing.constants.js +11 -0
- package/dist/src/config/define-intor-config.d.ts +2 -0
- package/dist/src/config/define-intor-config.js +34 -0
- package/dist/src/config/index.d.ts +5 -0
- package/dist/src/config/resolvers/resolve-cache-options.d.ts +2 -0
- package/dist/src/config/resolvers/resolve-cache-options.js +10 -0
- package/dist/src/config/resolvers/resolve-cookie-options.d.ts +11 -0
- package/dist/src/config/resolvers/resolve-cookie-options.js +19 -0
- package/dist/src/config/resolvers/resolve-fallback-locales.d.ts +3 -0
- package/dist/src/config/resolvers/resolve-fallback-locales.js +33 -0
- package/dist/src/config/resolvers/resolve-routing-options.d.ts +13 -0
- package/dist/src/config/resolvers/resolve-routing-options.js +28 -0
- package/dist/src/config/types/cache.types.d.ts +7 -0
- package/dist/src/config/types/cookie.types.d.ts +23 -0
- package/dist/src/config/types/intor-config.types.d.ts +41 -0
- package/dist/src/config/types/loader.types.d.ts +38 -0
- package/dist/src/config/types/logger.types.d.ts +7 -0
- package/dist/src/config/types/routing.types.d.ts +15 -0
- package/dist/src/config/types/translator.types.d.ts +4 -0
- package/dist/src/config/validators/validate-default-locale.d.ts +3 -0
- package/dist/src/config/validators/validate-default-locale.js +24 -0
- package/dist/src/config/validators/validate-supported-locales.d.ts +7 -0
- package/dist/src/config/validators/validate-supported-locales.js +22 -0
- package/dist/src/server/index.d.ts +4 -0
- package/dist/src/server/intor/index.d.ts +2 -0
- package/dist/src/server/intor/intor.d.ts +14 -0
- package/dist/src/server/intor/intor.js +67 -0
- package/dist/src/server/intor/types.d.ts +14 -0
- package/dist/src/server/messages/index.d.ts +7 -0
- package/dist/src/server/messages/load-local-messages/index.d.ts +2 -0
- package/dist/src/server/messages/load-local-messages/load-local-messages.d.ts +11 -0
- package/dist/src/server/messages/load-local-messages/load-local-messages.js +85 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.d.ts +29 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.js +95 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/index.d.ts +1 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/types.d.ts +15 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/index.d.ts +2 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/index.d.ts +1 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.d.ts +34 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.js +85 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/types.d.ts +18 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/json-reader.d.ts +6 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/json-reader.js +12 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/nest-object-from-path.d.ts +14 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/nest-object-from-path.js +21 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/read-locale-messages.d.ts +10 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/read-locale-messages.js +31 -0
- package/dist/src/server/messages/load-local-messages/read-locale-messages/types.d.ts +23 -0
- package/dist/src/server/messages/load-local-messages/types.d.ts +21 -0
- package/dist/src/server/messages/load-messages.d.ts +11 -0
- package/dist/src/server/messages/load-messages.js +77 -0
- package/dist/src/server/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.d.ts +9 -0
- package/dist/src/server/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +50 -0
- package/dist/src/server/messages/load-remote-messages/fetch-locale-messages/index.d.ts +1 -0
- package/dist/src/server/messages/load-remote-messages/fetch-locale-messages/types.d.ts +13 -0
- package/dist/src/server/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.d.ts +5 -0
- package/dist/src/server/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +25 -0
- package/dist/src/server/messages/load-remote-messages/index.d.ts +2 -0
- package/dist/src/server/messages/load-remote-messages/load-remote-messages.d.ts +9 -0
- package/dist/src/server/messages/load-remote-messages/load-remote-messages.js +79 -0
- package/dist/src/server/messages/load-remote-messages/types.d.ts +20 -0
- package/dist/src/server/messages/shared/global-messages-pool.d.ts +15 -0
- package/dist/src/server/messages/shared/global-messages-pool.js +10 -0
- package/dist/src/server/messages/shared/types.d.ts +39 -0
- package/dist/src/server/messages/shared/utils/is-valid-messages.d.ts +15 -0
- package/dist/src/server/messages/shared/utils/is-valid-messages.js +36 -0
- package/dist/src/server/messages/types.d.ts +15 -0
- package/dist/src/server/shared/logger/get-logger.d.ts +11 -0
- package/dist/src/server/shared/logger/get-logger.js +34 -0
- package/dist/src/server/shared/logger/global-logger-pool.d.ts +15 -0
- package/dist/src/server/shared/logger/global-logger-pool.js +8 -0
- package/dist/src/server/translator/get-translator.d.ts +33 -0
- package/dist/src/server/translator/get-translator.js +39 -0
- package/dist/src/server/translator/index.d.ts +1 -0
- package/dist/src/shared/constants/prefix-placeholder.d.ts +1 -0
- package/dist/src/shared/constants/prefix-placeholder.js +4 -0
- package/dist/src/shared/error/index.d.ts +1 -0
- package/dist/src/shared/error/intor-error.d.ts +16 -0
- package/dist/src/shared/error/intor-error.js +21 -0
- package/dist/src/shared/types/generated.types.d.ts +30 -0
- package/dist/src/shared/types/translator-instance.types.d.ts +33 -0
- package/dist/src/shared/utils/client/build-cookie-string.d.ts +9 -0
- package/dist/src/shared/utils/client/build-cookie-string.js +33 -0
- package/dist/src/shared/utils/client/set-locale-cookie-browser.d.ts +13 -0
- package/dist/src/shared/utils/client/set-locale-cookie-browser.js +21 -0
- package/dist/src/shared/utils/index.d.ts +8 -0
- package/dist/src/shared/utils/locale/normalize-locale.d.ts +4 -0
- package/dist/src/shared/utils/locale/normalize-locale.js +42 -0
- package/dist/src/shared/utils/locale/resolve-preferred-locale.d.ts +5 -0
- package/dist/src/shared/utils/locale/resolve-preferred-locale.js +26 -0
- package/dist/src/shared/utils/merge-messages.d.ts +6 -0
- package/dist/src/shared/utils/merge-messages.js +13 -0
- package/dist/src/shared/utils/normalize-cache-key.d.ts +3 -0
- package/dist/src/shared/utils/normalize-cache-key.js +29 -0
- package/dist/src/shared/utils/pathname/extract-pathname.d.ts +28 -0
- package/dist/src/shared/utils/pathname/extract-pathname.js +58 -0
- package/dist/src/shared/utils/pathname/normalize-pathname.d.ts +12 -0
- package/dist/src/shared/utils/pathname/normalize-pathname.js +43 -0
- package/dist/src/shared/utils/pathname/standardize-pathname.d.ts +18 -0
- package/dist/src/shared/utils/pathname/standardize-pathname.js +30 -0
- package/dist/src/shared/utils/resolve-namespaces.d.ts +10 -0
- package/dist/src/shared/utils/resolve-namespaces.js +33 -0
- package/package.json +28 -30
- package/dist/config/index.cjs +0 -198
- package/dist/config/index.d.cts +0 -145
- package/dist/config/index.d.ts +0 -145
- package/dist/config/index.js +0 -193
- package/dist/index.cjs +0 -234
- package/dist/index.d.cts +0 -224
- package/dist/index.d.ts +0 -224
- package/dist/index.js +0 -214
- package/dist/next/index.cjs +0 -940
- package/dist/next/index.d.cts +0 -282
- package/dist/next/index.d.ts +0 -282
- package/dist/next/index.js +0 -907
- package/dist/next/middleware/index.cjs +0 -387
- package/dist/next/middleware/index.d.cts +0 -128
- package/dist/next/middleware/index.d.ts +0 -128
- package/dist/next/middleware/index.js +0 -384
- package/dist/next/server/index.cjs +0 -734
- package/dist/next/server/index.d.cts +0 -277
- package/dist/next/server/index.d.ts +0 -277
- package/dist/next/server/index.js +0 -723
- package/dist/react/index.cjs +0 -649
- package/dist/react/index.d.cts +0 -224
- package/dist/react/index.d.ts +0 -224
- package/dist/react/index.js +0 -620
- package/dist/server/index.cjs +0 -696
- package/dist/server/index.d.cts +0 -377
- package/dist/server/index.d.ts +0 -377
- package/dist/server/index.js +0 -680
|
@@ -1,387 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var server = require('next/server');
|
|
4
|
-
var headers = require('next/headers');
|
|
5
|
-
|
|
6
|
-
// src/adapters/next/middleware/utils/create-response.ts
|
|
7
|
-
|
|
8
|
-
// src/adapters/next/middleware/utils/set-locale-cookie-edge.ts
|
|
9
|
-
function setLocaleCookieEdge({
|
|
10
|
-
request,
|
|
11
|
-
response,
|
|
12
|
-
cookie,
|
|
13
|
-
locale,
|
|
14
|
-
override = false
|
|
15
|
-
// Default to not override existed cookie
|
|
16
|
-
}) {
|
|
17
|
-
if (!cookie.enabled || !cookie.autoSetCookie) return;
|
|
18
|
-
const isCookieExists = request.cookies.has(cookie.name);
|
|
19
|
-
if (isCookieExists && !override) return;
|
|
20
|
-
response.cookies.set(cookie.name, locale, {
|
|
21
|
-
maxAge: cookie.maxAge,
|
|
22
|
-
path: cookie.path,
|
|
23
|
-
...cookie.domain ? { domain: cookie.domain } : {},
|
|
24
|
-
secure: cookie.secure,
|
|
25
|
-
httpOnly: cookie.httpOnly,
|
|
26
|
-
sameSite: cookie.sameSite
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// src/adapters/next/shared/constants/pathname-header-name.ts
|
|
31
|
-
var PATHNAME_HEADER_NAME = "x-intor-pathname";
|
|
32
|
-
|
|
33
|
-
// src/adapters/next/middleware/utils/set-pathname-header.ts
|
|
34
|
-
var setPathnameHeader = ({
|
|
35
|
-
request,
|
|
36
|
-
response,
|
|
37
|
-
key = PATHNAME_HEADER_NAME
|
|
38
|
-
}) => {
|
|
39
|
-
const pathname = request.nextUrl.pathname;
|
|
40
|
-
response.headers.set(key, pathname);
|
|
41
|
-
return response;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
// src/shared/constants/prefix-placeholder.ts
|
|
45
|
-
var PREFIX_PLACEHOLDER = "{locale}";
|
|
46
|
-
|
|
47
|
-
// src/shared/utils/locale/normalize-locale.ts
|
|
48
|
-
var toCanonical = (input) => {
|
|
49
|
-
try {
|
|
50
|
-
return Intl.getCanonicalLocales(input)[0]?.toLowerCase();
|
|
51
|
-
} catch {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
var normalizeLocale = (locale = "", supportedLocales = []) => {
|
|
56
|
-
if (!locale || supportedLocales.length === 0) return;
|
|
57
|
-
const canonicalLocale = toCanonical(locale);
|
|
58
|
-
if (!canonicalLocale) return;
|
|
59
|
-
const supportedCanonicalMap = /* @__PURE__ */ new Map();
|
|
60
|
-
for (const l of supportedLocales) {
|
|
61
|
-
const normalized = toCanonical(l);
|
|
62
|
-
if (normalized) {
|
|
63
|
-
supportedCanonicalMap.set(normalized, l);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
if (supportedCanonicalMap.has(canonicalLocale)) {
|
|
67
|
-
return supportedCanonicalMap.get(canonicalLocale);
|
|
68
|
-
}
|
|
69
|
-
const baseLang = canonicalLocale.split("-")[0];
|
|
70
|
-
for (const [key, original] of supportedCanonicalMap) {
|
|
71
|
-
const supportedBase = key.split("-")[0];
|
|
72
|
-
if (supportedBase === baseLang) {
|
|
73
|
-
return original;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return;
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
// src/shared/utils/locale/resolve-preferred-locale.ts
|
|
80
|
-
var resolvePreferredLocale = (acceptLanguageHeader, supportedLocales) => {
|
|
81
|
-
if (!acceptLanguageHeader || !supportedLocales || supportedLocales.length === 0) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
const supportedLocalesSet = new Set(supportedLocales);
|
|
85
|
-
const preferred = acceptLanguageHeader.split(",").map((part) => {
|
|
86
|
-
const [lang, qValue] = part.split(";");
|
|
87
|
-
const q = qValue ? Number.parseFloat(qValue.split("=")[1]) : 1;
|
|
88
|
-
if (Number.isNaN(q)) {
|
|
89
|
-
return { lang: lang.trim(), q: 0 };
|
|
90
|
-
}
|
|
91
|
-
return { lang: lang.trim(), q };
|
|
92
|
-
}).toSorted((a, b) => b.q - a.q).find(({ lang }) => supportedLocalesSet.has(lang))?.lang;
|
|
93
|
-
return preferred;
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
// src/shared/utils/pathname/normalize-pathname.ts
|
|
97
|
-
var normalizePathname = (rawPathname, options = {}) => {
|
|
98
|
-
const length = rawPathname.length;
|
|
99
|
-
let start = 0;
|
|
100
|
-
let end = length - 1;
|
|
101
|
-
while (start <= end && (rawPathname.codePointAt(start) ?? 0) <= 32) start++;
|
|
102
|
-
while (end >= start && (rawPathname.codePointAt(end) ?? 0) <= 32) end--;
|
|
103
|
-
if (start > end) return "/";
|
|
104
|
-
let result = "";
|
|
105
|
-
let hasSlash = false;
|
|
106
|
-
for (let i = start; i <= end; i++) {
|
|
107
|
-
const char = rawPathname[i];
|
|
108
|
-
if (char === "/") {
|
|
109
|
-
if (!hasSlash) {
|
|
110
|
-
hasSlash = true;
|
|
111
|
-
}
|
|
112
|
-
} else {
|
|
113
|
-
result += hasSlash || result === "" ? "/" + char : char;
|
|
114
|
-
hasSlash = false;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
if (options.removeLeadingSlash && result.startsWith("/")) {
|
|
118
|
-
result = result.slice(1);
|
|
119
|
-
}
|
|
120
|
-
return result || "/";
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
// src/shared/utils/pathname/extract-pathname.ts
|
|
124
|
-
var extractPathname = ({
|
|
125
|
-
config,
|
|
126
|
-
pathname: rawPathname
|
|
127
|
-
}) => {
|
|
128
|
-
const { routing, defaultLocale } = config;
|
|
129
|
-
const { basePath, prefix } = routing;
|
|
130
|
-
const normalizedPathname = normalizePathname(rawPathname);
|
|
131
|
-
let prefixedPathname = normalizedPathname;
|
|
132
|
-
if (basePath && normalizedPathname.startsWith(basePath + "/")) {
|
|
133
|
-
prefixedPathname = normalizedPathname.slice(basePath.length) || "/";
|
|
134
|
-
} else if (basePath && normalizedPathname === basePath) {
|
|
135
|
-
prefixedPathname = "/";
|
|
136
|
-
}
|
|
137
|
-
const pathPart = prefixedPathname.split("/").find(Boolean);
|
|
138
|
-
const maybeLocale = pathPart || "";
|
|
139
|
-
const isLocalePrefixed = config.supportedLocales?.includes(maybeLocale);
|
|
140
|
-
let unprefixedPathname = prefixedPathname;
|
|
141
|
-
if (prefix === "all") {
|
|
142
|
-
if (isLocalePrefixed) {
|
|
143
|
-
unprefixedPathname = prefixedPathname.slice(maybeLocale.length + 1) || "/";
|
|
144
|
-
}
|
|
145
|
-
} else if (prefix === "except-default") {
|
|
146
|
-
if (maybeLocale && maybeLocale !== defaultLocale && isLocalePrefixed) {
|
|
147
|
-
unprefixedPathname = prefixedPathname.slice(maybeLocale.length + 1) || "/";
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return {
|
|
151
|
-
basePath,
|
|
152
|
-
prefixedPathname,
|
|
153
|
-
unprefixedPathname,
|
|
154
|
-
maybeLocale,
|
|
155
|
-
isLocalePrefixed: Boolean(isLocalePrefixed)
|
|
156
|
-
};
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
// src/shared/utils/pathname/standardize-pathname.ts
|
|
160
|
-
var standardizePathname = ({
|
|
161
|
-
config,
|
|
162
|
-
pathname
|
|
163
|
-
}) => {
|
|
164
|
-
const { routing } = config;
|
|
165
|
-
const { basePath } = routing;
|
|
166
|
-
const parts = [
|
|
167
|
-
normalizePathname(basePath),
|
|
168
|
-
PREFIX_PLACEHOLDER,
|
|
169
|
-
normalizePathname(pathname)
|
|
170
|
-
];
|
|
171
|
-
const standardizedPathname = parts.join("/").replaceAll(/\/{2,}/g, "/");
|
|
172
|
-
return normalizePathname(standardizedPathname);
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
// src/adapters/next/shared/utils/locale-prefix-pathname.ts
|
|
176
|
-
var localePrefixPathname = ({
|
|
177
|
-
config,
|
|
178
|
-
pathname: standardizedPathname,
|
|
179
|
-
locale
|
|
180
|
-
}) => {
|
|
181
|
-
const { routing } = config;
|
|
182
|
-
const { prefix } = routing;
|
|
183
|
-
if (prefix !== "none" && !locale) {
|
|
184
|
-
throw new Error('No locale when using prefix "all", "except-default"');
|
|
185
|
-
}
|
|
186
|
-
if (prefix === "all") {
|
|
187
|
-
return normalizePathname(
|
|
188
|
-
standardizedPathname.replaceAll(PREFIX_PLACEHOLDER, locale)
|
|
189
|
-
);
|
|
190
|
-
}
|
|
191
|
-
if (prefix === "except-default") {
|
|
192
|
-
return locale === config.defaultLocale ? normalizePathname(
|
|
193
|
-
standardizedPathname.replaceAll(`/${PREFIX_PLACEHOLDER}`, "")
|
|
194
|
-
) : normalizePathname(
|
|
195
|
-
standardizedPathname.replaceAll(PREFIX_PLACEHOLDER, locale)
|
|
196
|
-
);
|
|
197
|
-
}
|
|
198
|
-
return normalizePathname(
|
|
199
|
-
standardizedPathname.replaceAll(`/${PREFIX_PLACEHOLDER}`, "")
|
|
200
|
-
);
|
|
201
|
-
};
|
|
202
|
-
|
|
203
|
-
// src/adapters/next/shared/utils/localize-pathname.ts
|
|
204
|
-
var localizePathname = ({
|
|
205
|
-
config,
|
|
206
|
-
pathname: rawPathname,
|
|
207
|
-
locale
|
|
208
|
-
}) => {
|
|
209
|
-
const { unprefixedPathname } = extractPathname({
|
|
210
|
-
config,
|
|
211
|
-
pathname: rawPathname
|
|
212
|
-
});
|
|
213
|
-
const standardizedPathname = standardizePathname({
|
|
214
|
-
config,
|
|
215
|
-
pathname: unprefixedPathname
|
|
216
|
-
});
|
|
217
|
-
const localePrefixedPathname = localePrefixPathname({
|
|
218
|
-
config,
|
|
219
|
-
pathname: standardizedPathname,
|
|
220
|
-
locale
|
|
221
|
-
});
|
|
222
|
-
return {
|
|
223
|
-
unprefixedPathname,
|
|
224
|
-
standardizedPathname,
|
|
225
|
-
localePrefixedPathname
|
|
226
|
-
};
|
|
227
|
-
};
|
|
228
|
-
|
|
229
|
-
// src/adapters/next/middleware/utils/create-response.ts
|
|
230
|
-
var createResponse = ({
|
|
231
|
-
request,
|
|
232
|
-
config,
|
|
233
|
-
locale,
|
|
234
|
-
responseType = "next",
|
|
235
|
-
setCookieOptions = { override: false }
|
|
236
|
-
}) => {
|
|
237
|
-
const { cookie } = config;
|
|
238
|
-
const { override } = setCookieOptions;
|
|
239
|
-
const url = request.nextUrl.clone();
|
|
240
|
-
const { localePrefixedPathname } = localizePathname({
|
|
241
|
-
config,
|
|
242
|
-
pathname: url.pathname,
|
|
243
|
-
locale
|
|
244
|
-
});
|
|
245
|
-
url.pathname = localePrefixedPathname;
|
|
246
|
-
const response = responseType === "redirect" ? server.NextResponse.redirect(url) : server.NextResponse.next();
|
|
247
|
-
if (locale) {
|
|
248
|
-
setLocaleCookieEdge({
|
|
249
|
-
request,
|
|
250
|
-
response,
|
|
251
|
-
locale,
|
|
252
|
-
cookie,
|
|
253
|
-
override
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
const finalResponse = setPathnameHeader({
|
|
257
|
-
request,
|
|
258
|
-
response
|
|
259
|
-
});
|
|
260
|
-
return finalResponse;
|
|
261
|
-
};
|
|
262
|
-
var determineInitialLocale = async (config) => {
|
|
263
|
-
const { defaultLocale, supportedLocales, routing } = config;
|
|
264
|
-
let initialLocale = defaultLocale;
|
|
265
|
-
if (routing.firstVisit.localeSource === "browser") {
|
|
266
|
-
const headersStore = await headers.headers();
|
|
267
|
-
const acceptLanguageHeader = headersStore.get("accept-language") || void 0;
|
|
268
|
-
const preferredLocale = resolvePreferredLocale(
|
|
269
|
-
acceptLanguageHeader,
|
|
270
|
-
supportedLocales
|
|
271
|
-
);
|
|
272
|
-
initialLocale = normalizeLocale(preferredLocale, supportedLocales) || defaultLocale;
|
|
273
|
-
}
|
|
274
|
-
return initialLocale;
|
|
275
|
-
};
|
|
276
|
-
|
|
277
|
-
// src/adapters/next/middleware/handle-prefix/handle-prefix-all.ts
|
|
278
|
-
var handlePrefixAll = async (config, request) => {
|
|
279
|
-
const { cookie, routing } = config;
|
|
280
|
-
const { maybeLocale, isLocalePrefixed } = extractPathname({
|
|
281
|
-
config,
|
|
282
|
-
pathname: request.nextUrl.pathname
|
|
283
|
-
});
|
|
284
|
-
const localeFromCookie = request.cookies.get(cookie.name)?.value;
|
|
285
|
-
if (isLocalePrefixed) {
|
|
286
|
-
return createResponse({
|
|
287
|
-
request,
|
|
288
|
-
config,
|
|
289
|
-
locale: maybeLocale,
|
|
290
|
-
setCookieOptions: { override: true }
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
if (!localeFromCookie) {
|
|
294
|
-
if (!routing.firstVisit.redirect) {
|
|
295
|
-
return createResponse({ request, config });
|
|
296
|
-
}
|
|
297
|
-
const initialLocale = await determineInitialLocale(config);
|
|
298
|
-
return createResponse({
|
|
299
|
-
request,
|
|
300
|
-
config,
|
|
301
|
-
locale: initialLocale,
|
|
302
|
-
// Use locale from 'browser' | 'default'
|
|
303
|
-
responseType: "redirect"
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
return createResponse({
|
|
307
|
-
request,
|
|
308
|
-
config,
|
|
309
|
-
locale: localeFromCookie,
|
|
310
|
-
// Use locale from cookie
|
|
311
|
-
responseType: "redirect"
|
|
312
|
-
});
|
|
313
|
-
};
|
|
314
|
-
|
|
315
|
-
// src/adapters/next/middleware/handle-prefix/handle-prefix-except-default.ts
|
|
316
|
-
var handlePrefixExceptDefault = async (config, request) => {
|
|
317
|
-
const { defaultLocale, cookie, routing } = config;
|
|
318
|
-
const { maybeLocale, isLocalePrefixed } = extractPathname({
|
|
319
|
-
config,
|
|
320
|
-
pathname: request.nextUrl.pathname
|
|
321
|
-
});
|
|
322
|
-
const localeFromCookie = request.cookies.get(cookie.name)?.value;
|
|
323
|
-
if (isLocalePrefixed && maybeLocale !== defaultLocale) {
|
|
324
|
-
return createResponse({
|
|
325
|
-
request,
|
|
326
|
-
config,
|
|
327
|
-
locale: maybeLocale,
|
|
328
|
-
setCookieOptions: { override: true }
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
if (!localeFromCookie) {
|
|
332
|
-
if (!routing.firstVisit.redirect) {
|
|
333
|
-
return createResponse({ request, config });
|
|
334
|
-
}
|
|
335
|
-
const initialLocale = await determineInitialLocale(config);
|
|
336
|
-
const isDefaultLocale2 = initialLocale === defaultLocale;
|
|
337
|
-
if (isDefaultLocale2) {
|
|
338
|
-
return createResponse({
|
|
339
|
-
request,
|
|
340
|
-
config,
|
|
341
|
-
locale: defaultLocale
|
|
342
|
-
});
|
|
343
|
-
}
|
|
344
|
-
return createResponse({
|
|
345
|
-
request,
|
|
346
|
-
config,
|
|
347
|
-
locale: initialLocale,
|
|
348
|
-
// Use locale from 'browser' | 'default'
|
|
349
|
-
responseType: "redirect"
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
const isDefaultLocale = localeFromCookie === defaultLocale;
|
|
353
|
-
if (isDefaultLocale) {
|
|
354
|
-
return createResponse({ request, config, locale: localeFromCookie });
|
|
355
|
-
}
|
|
356
|
-
return createResponse({
|
|
357
|
-
request,
|
|
358
|
-
config,
|
|
359
|
-
locale: localeFromCookie,
|
|
360
|
-
// Use locale from cookie
|
|
361
|
-
responseType: "redirect"
|
|
362
|
-
});
|
|
363
|
-
};
|
|
364
|
-
|
|
365
|
-
// src/adapters/next/middleware/handle-prefix/handle-prefix-none.ts
|
|
366
|
-
var handlePrefixNone = async (config, request) => {
|
|
367
|
-
let locale = request.cookies.get(config.cookie.name)?.value;
|
|
368
|
-
if (!locale) {
|
|
369
|
-
locale = await determineInitialLocale(config);
|
|
370
|
-
}
|
|
371
|
-
return createResponse({ request, config, locale });
|
|
372
|
-
};
|
|
373
|
-
|
|
374
|
-
// src/adapters/next/middleware/intor-middleware.ts
|
|
375
|
-
async function intorMiddleware(config, request) {
|
|
376
|
-
const { prefix } = config.routing;
|
|
377
|
-
if (prefix === "none") {
|
|
378
|
-
return handlePrefixNone(config, request);
|
|
379
|
-
}
|
|
380
|
-
if (prefix === "except-default") {
|
|
381
|
-
return await handlePrefixExceptDefault(config, request);
|
|
382
|
-
}
|
|
383
|
-
return await handlePrefixAll(config, request);
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
exports.PATHNAME_HEADER_NAME = PATHNAME_HEADER_NAME;
|
|
387
|
-
exports.intorMiddleware = intorMiddleware;
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { Level, NormalizerConfig, FormatterConfig, LoggerPreset } from 'logry/edge';
|
|
2
|
-
import { Locale, LocaleMessages, FallbackLocalesMap } from 'intor-translator';
|
|
3
|
-
import { NextRequest } from 'next/server';
|
|
4
|
-
|
|
5
|
-
type CookieRawOptions = {
|
|
6
|
-
/** Enable cookie usage (read/write) - default: true */
|
|
7
|
-
enabled?: boolean;
|
|
8
|
-
/** Allow the system to automatically set cookies - default: true */
|
|
9
|
-
autoSetCookie?: boolean;
|
|
10
|
-
/** default: "intor.i18n.locale" */
|
|
11
|
-
name?: string;
|
|
12
|
-
/** default: null */
|
|
13
|
-
domain?: string | null;
|
|
14
|
-
/** default: "/" */
|
|
15
|
-
path?: string;
|
|
16
|
-
/** default: 60 * 60 * 24 * 365 (365 days) */
|
|
17
|
-
maxAge?: number;
|
|
18
|
-
/** default: false */
|
|
19
|
-
httpOnly?: boolean;
|
|
20
|
-
/** default: process.env.NODE_ENV !== "development" */
|
|
21
|
-
secure?: boolean;
|
|
22
|
-
/** default: lax */
|
|
23
|
-
sameSite?: "lax" | "strict" | "none";
|
|
24
|
-
};
|
|
25
|
-
type CookieResolvedOptions = Required<Omit<CookieRawOptions, "domain">> & {
|
|
26
|
-
domain: string | null;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* ```ts
|
|
31
|
-
* {
|
|
32
|
-
* default: ["ui", "meta"],
|
|
33
|
-
* "/auth": ["auth", "admin"],
|
|
34
|
-
* }
|
|
35
|
-
* // When pathname is "/" => namespaces: ["ui", "meta"]
|
|
36
|
-
* // When pathname is "/auth" => namespaces: ["ui", "meta", "auth", "admin"]
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
type RouteNamespaces = {
|
|
40
|
-
[key: string]: string[];
|
|
41
|
-
} | {
|
|
42
|
-
[key: string]: string[];
|
|
43
|
-
default: string[];
|
|
44
|
-
};
|
|
45
|
-
interface RemoteHeaders {
|
|
46
|
-
authorization?: string;
|
|
47
|
-
"x-api-key"?: string;
|
|
48
|
-
[key: string]: string | undefined;
|
|
49
|
-
}
|
|
50
|
-
type BaseLoaderOptions = {
|
|
51
|
-
rootDir?: string;
|
|
52
|
-
namespaces?: string[];
|
|
53
|
-
routeNamespaces?: RouteNamespaces;
|
|
54
|
-
concurrency?: number;
|
|
55
|
-
};
|
|
56
|
-
type LocalLoader = BaseLoaderOptions & {
|
|
57
|
-
type: "local";
|
|
58
|
-
};
|
|
59
|
-
type RemoteLoader = BaseLoaderOptions & {
|
|
60
|
-
type: "remote";
|
|
61
|
-
remoteUrl: string;
|
|
62
|
-
remoteHeaders?: RemoteHeaders;
|
|
63
|
-
fullReload?: boolean;
|
|
64
|
-
};
|
|
65
|
-
type LoaderOptions = LocalLoader | RemoteLoader;
|
|
66
|
-
|
|
67
|
-
type LoggerOptions = {
|
|
68
|
-
level?: Level;
|
|
69
|
-
normalizerConfig?: NormalizerConfig;
|
|
70
|
-
formatterConfig?: FormatterConfig;
|
|
71
|
-
preset?: LoggerPreset;
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
declare const routingPrefix: readonly ["none", "all", "except-default"];
|
|
75
|
-
declare const routingFirstVisitLocaleSource: readonly ["default", "browser"];
|
|
76
|
-
type RoutingRawOptions = {
|
|
77
|
-
/** default: "none" */
|
|
78
|
-
prefix?: (typeof routingPrefix)[number];
|
|
79
|
-
firstVisit?: {
|
|
80
|
-
/** default: "browser" */
|
|
81
|
-
localeSource?: (typeof routingFirstVisitLocaleSource)[number];
|
|
82
|
-
/** default: true */
|
|
83
|
-
redirect?: boolean;
|
|
84
|
-
};
|
|
85
|
-
/** default: "" */
|
|
86
|
-
basePath?: string;
|
|
87
|
-
};
|
|
88
|
-
type RoutingResolvedOptions = Required<RoutingRawOptions>;
|
|
89
|
-
|
|
90
|
-
type CacheRawOptions = {
|
|
91
|
-
/** default: process.env.NODE_ENV === "production" */
|
|
92
|
-
enabled?: boolean;
|
|
93
|
-
/** default: 60\*60\*1000 (1 hour) */
|
|
94
|
-
ttl?: number;
|
|
95
|
-
};
|
|
96
|
-
type CacheResolvedOptions = Required<CacheRawOptions>;
|
|
97
|
-
|
|
98
|
-
type TranslatorOptions = {
|
|
99
|
-
loadingMessage?: string;
|
|
100
|
-
placeholder?: string;
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
type IntorResolvedConfig = ({
|
|
104
|
-
loader: LoaderOptions;
|
|
105
|
-
supportedLocales: readonly Locale[];
|
|
106
|
-
} | {
|
|
107
|
-
loader?: undefined;
|
|
108
|
-
supportedLocales: readonly Locale[];
|
|
109
|
-
}) & {
|
|
110
|
-
readonly id: string;
|
|
111
|
-
readonly messages?: LocaleMessages;
|
|
112
|
-
readonly defaultLocale: Locale;
|
|
113
|
-
readonly fallbackLocales: FallbackLocalesMap;
|
|
114
|
-
readonly translator?: TranslatorOptions;
|
|
115
|
-
readonly cookie: CookieResolvedOptions;
|
|
116
|
-
readonly routing: RoutingResolvedOptions;
|
|
117
|
-
readonly logger?: LoggerOptions;
|
|
118
|
-
readonly cache: CacheResolvedOptions;
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Handle locale routing based on prefix config
|
|
123
|
-
*/
|
|
124
|
-
declare function intorMiddleware<Req extends NextRequest = NextRequest>(config: IntorResolvedConfig, request: Req): Promise<Response>;
|
|
125
|
-
|
|
126
|
-
declare const PATHNAME_HEADER_NAME = "x-intor-pathname";
|
|
127
|
-
|
|
128
|
-
export { PATHNAME_HEADER_NAME, intorMiddleware };
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { Level, NormalizerConfig, FormatterConfig, LoggerPreset } from 'logry/edge';
|
|
2
|
-
import { Locale, LocaleMessages, FallbackLocalesMap } from 'intor-translator';
|
|
3
|
-
import { NextRequest } from 'next/server';
|
|
4
|
-
|
|
5
|
-
type CookieRawOptions = {
|
|
6
|
-
/** Enable cookie usage (read/write) - default: true */
|
|
7
|
-
enabled?: boolean;
|
|
8
|
-
/** Allow the system to automatically set cookies - default: true */
|
|
9
|
-
autoSetCookie?: boolean;
|
|
10
|
-
/** default: "intor.i18n.locale" */
|
|
11
|
-
name?: string;
|
|
12
|
-
/** default: null */
|
|
13
|
-
domain?: string | null;
|
|
14
|
-
/** default: "/" */
|
|
15
|
-
path?: string;
|
|
16
|
-
/** default: 60 * 60 * 24 * 365 (365 days) */
|
|
17
|
-
maxAge?: number;
|
|
18
|
-
/** default: false */
|
|
19
|
-
httpOnly?: boolean;
|
|
20
|
-
/** default: process.env.NODE_ENV !== "development" */
|
|
21
|
-
secure?: boolean;
|
|
22
|
-
/** default: lax */
|
|
23
|
-
sameSite?: "lax" | "strict" | "none";
|
|
24
|
-
};
|
|
25
|
-
type CookieResolvedOptions = Required<Omit<CookieRawOptions, "domain">> & {
|
|
26
|
-
domain: string | null;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* ```ts
|
|
31
|
-
* {
|
|
32
|
-
* default: ["ui", "meta"],
|
|
33
|
-
* "/auth": ["auth", "admin"],
|
|
34
|
-
* }
|
|
35
|
-
* // When pathname is "/" => namespaces: ["ui", "meta"]
|
|
36
|
-
* // When pathname is "/auth" => namespaces: ["ui", "meta", "auth", "admin"]
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
type RouteNamespaces = {
|
|
40
|
-
[key: string]: string[];
|
|
41
|
-
} | {
|
|
42
|
-
[key: string]: string[];
|
|
43
|
-
default: string[];
|
|
44
|
-
};
|
|
45
|
-
interface RemoteHeaders {
|
|
46
|
-
authorization?: string;
|
|
47
|
-
"x-api-key"?: string;
|
|
48
|
-
[key: string]: string | undefined;
|
|
49
|
-
}
|
|
50
|
-
type BaseLoaderOptions = {
|
|
51
|
-
rootDir?: string;
|
|
52
|
-
namespaces?: string[];
|
|
53
|
-
routeNamespaces?: RouteNamespaces;
|
|
54
|
-
concurrency?: number;
|
|
55
|
-
};
|
|
56
|
-
type LocalLoader = BaseLoaderOptions & {
|
|
57
|
-
type: "local";
|
|
58
|
-
};
|
|
59
|
-
type RemoteLoader = BaseLoaderOptions & {
|
|
60
|
-
type: "remote";
|
|
61
|
-
remoteUrl: string;
|
|
62
|
-
remoteHeaders?: RemoteHeaders;
|
|
63
|
-
fullReload?: boolean;
|
|
64
|
-
};
|
|
65
|
-
type LoaderOptions = LocalLoader | RemoteLoader;
|
|
66
|
-
|
|
67
|
-
type LoggerOptions = {
|
|
68
|
-
level?: Level;
|
|
69
|
-
normalizerConfig?: NormalizerConfig;
|
|
70
|
-
formatterConfig?: FormatterConfig;
|
|
71
|
-
preset?: LoggerPreset;
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
declare const routingPrefix: readonly ["none", "all", "except-default"];
|
|
75
|
-
declare const routingFirstVisitLocaleSource: readonly ["default", "browser"];
|
|
76
|
-
type RoutingRawOptions = {
|
|
77
|
-
/** default: "none" */
|
|
78
|
-
prefix?: (typeof routingPrefix)[number];
|
|
79
|
-
firstVisit?: {
|
|
80
|
-
/** default: "browser" */
|
|
81
|
-
localeSource?: (typeof routingFirstVisitLocaleSource)[number];
|
|
82
|
-
/** default: true */
|
|
83
|
-
redirect?: boolean;
|
|
84
|
-
};
|
|
85
|
-
/** default: "" */
|
|
86
|
-
basePath?: string;
|
|
87
|
-
};
|
|
88
|
-
type RoutingResolvedOptions = Required<RoutingRawOptions>;
|
|
89
|
-
|
|
90
|
-
type CacheRawOptions = {
|
|
91
|
-
/** default: process.env.NODE_ENV === "production" */
|
|
92
|
-
enabled?: boolean;
|
|
93
|
-
/** default: 60\*60\*1000 (1 hour) */
|
|
94
|
-
ttl?: number;
|
|
95
|
-
};
|
|
96
|
-
type CacheResolvedOptions = Required<CacheRawOptions>;
|
|
97
|
-
|
|
98
|
-
type TranslatorOptions = {
|
|
99
|
-
loadingMessage?: string;
|
|
100
|
-
placeholder?: string;
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
type IntorResolvedConfig = ({
|
|
104
|
-
loader: LoaderOptions;
|
|
105
|
-
supportedLocales: readonly Locale[];
|
|
106
|
-
} | {
|
|
107
|
-
loader?: undefined;
|
|
108
|
-
supportedLocales: readonly Locale[];
|
|
109
|
-
}) & {
|
|
110
|
-
readonly id: string;
|
|
111
|
-
readonly messages?: LocaleMessages;
|
|
112
|
-
readonly defaultLocale: Locale;
|
|
113
|
-
readonly fallbackLocales: FallbackLocalesMap;
|
|
114
|
-
readonly translator?: TranslatorOptions;
|
|
115
|
-
readonly cookie: CookieResolvedOptions;
|
|
116
|
-
readonly routing: RoutingResolvedOptions;
|
|
117
|
-
readonly logger?: LoggerOptions;
|
|
118
|
-
readonly cache: CacheResolvedOptions;
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Handle locale routing based on prefix config
|
|
123
|
-
*/
|
|
124
|
-
declare function intorMiddleware<Req extends NextRequest = NextRequest>(config: IntorResolvedConfig, request: Req): Promise<Response>;
|
|
125
|
-
|
|
126
|
-
declare const PATHNAME_HEADER_NAME = "x-intor-pathname";
|
|
127
|
-
|
|
128
|
-
export { PATHNAME_HEADER_NAME, intorMiddleware };
|