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
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CookieRawOptions, CookieResolvedOptions } from "../../config/types/cookie.types";
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the final cookie options by merging the provided options with the default ones.
|
|
4
|
+
*
|
|
5
|
+
* This function accepts custom cookie options and merges them with the default values. If no custom options
|
|
6
|
+
* are provided, the default options will be used. The function returns the resolved cookie options.
|
|
7
|
+
*
|
|
8
|
+
* @param cookie - The custom cookie options to override the defaults (optional).
|
|
9
|
+
* @returns The resolved cookie options, merging the defaults and the provided options.
|
|
10
|
+
*/
|
|
11
|
+
export declare const resolveCookieOptions: (cookie?: CookieRawOptions) => CookieResolvedOptions;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DEFAULT_COOKIE_OPTIONS } from '../constants/cookie.constants.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Resolves the final cookie options by merging the provided options with the default ones.
|
|
5
|
+
*
|
|
6
|
+
* This function accepts custom cookie options and merges them with the default values. If no custom options
|
|
7
|
+
* are provided, the default options will be used. The function returns the resolved cookie options.
|
|
8
|
+
*
|
|
9
|
+
* @param cookie - The custom cookie options to override the defaults (optional).
|
|
10
|
+
* @returns The resolved cookie options, merging the defaults and the provided options.
|
|
11
|
+
*/
|
|
12
|
+
const resolveCookieOptions = (cookie = {}) => {
|
|
13
|
+
return {
|
|
14
|
+
...DEFAULT_COOKIE_OPTIONS,
|
|
15
|
+
...cookie,
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export { resolveCookieOptions };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { IntorRawConfig } from "../../config/types/intor-config.types";
|
|
2
|
+
import type { FallbackLocalesMap, Locale } from "intor-translator";
|
|
3
|
+
export declare const resolveFallbackLocales: (config: IntorRawConfig, supportedLocales?: readonly Locale[]) => FallbackLocalesMap;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const resolveFallbackLocales = (config, supportedLocales) => {
|
|
2
|
+
const { defaultLocale, fallbackLocales } = config;
|
|
3
|
+
if (!fallbackLocales || typeof fallbackLocales !== "object") {
|
|
4
|
+
return {};
|
|
5
|
+
}
|
|
6
|
+
const supportedSet = new Set(supportedLocales);
|
|
7
|
+
const validMap = {}; // Collected valid fallbacks
|
|
8
|
+
const invalidFallbackMap = new Map(); // Track invalid ones
|
|
9
|
+
for (const [locale, fallbacks] of Object.entries(fallbackLocales)) {
|
|
10
|
+
const fallbackArray = Array.isArray(fallbacks) ? fallbacks : [];
|
|
11
|
+
// Valid: in supported list, matches default, or literal "default"
|
|
12
|
+
const validFallbacks = fallbackArray.filter((fallback) => fallback === "default" ||
|
|
13
|
+
supportedSet.has(fallback) ||
|
|
14
|
+
fallback === defaultLocale);
|
|
15
|
+
// Invalid: not "default", not supported, and not defaultLocale
|
|
16
|
+
const invalidFallbacks = fallbackArray.filter((fallback) => fallback !== "default" &&
|
|
17
|
+
!supportedSet.has(fallback) &&
|
|
18
|
+
fallback !== defaultLocale);
|
|
19
|
+
if (invalidFallbacks.length > 0) {
|
|
20
|
+
invalidFallbackMap.set(locale, invalidFallbacks);
|
|
21
|
+
}
|
|
22
|
+
if (validFallbacks.length > 0) {
|
|
23
|
+
validMap[locale] = validFallbacks;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Log out invalid fallback locales
|
|
27
|
+
for (const [locale, invalids] of invalidFallbackMap.entries()) {
|
|
28
|
+
console.warn(`Invalid fallback locales for "${locale}"`, { invalids: [...invalids] }, { scope: "resolveFallbackLocales" });
|
|
29
|
+
}
|
|
30
|
+
return validMap;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { resolveFallbackLocales };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RoutingRawOptions, RoutingResolvedOptions } from "../../config/types/routing.types";
|
|
2
|
+
/**
|
|
3
|
+
* Resolves routing options by merging default routing options with the provided custom options.
|
|
4
|
+
* If any specific routing options are not provided, the default values will be used.
|
|
5
|
+
* The function also normalizes the basePath if provided.
|
|
6
|
+
*
|
|
7
|
+
* @param {RoutingRawOptions} [routing={}] - The custom routing options to override the defaults.
|
|
8
|
+
* It should be an object that may contain properties like `firstVisit`, `basePath`, etc.
|
|
9
|
+
* If not provided, the default values will be used.
|
|
10
|
+
* @returns {RoutingResolvedOptions} - The resolved routing options, merged from the defaults and provided values.
|
|
11
|
+
* This includes the normalized `basePath` and any customized `firstVisit` settings.
|
|
12
|
+
*/
|
|
13
|
+
export declare const resolveRoutingOptions: (routing?: RoutingRawOptions) => RoutingResolvedOptions;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DEFAULT_ROUTING_OPTIONS } from '../constants/routing.constants.js';
|
|
2
|
+
import 'lodash.merge';
|
|
3
|
+
import { normalizePathname } from '../../shared/utils/pathname/normalize-pathname.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Resolves routing options by merging default routing options with the provided custom options.
|
|
7
|
+
* If any specific routing options are not provided, the default values will be used.
|
|
8
|
+
* The function also normalizes the basePath if provided.
|
|
9
|
+
*
|
|
10
|
+
* @param {RoutingRawOptions} [routing={}] - The custom routing options to override the defaults.
|
|
11
|
+
* It should be an object that may contain properties like `firstVisit`, `basePath`, etc.
|
|
12
|
+
* If not provided, the default values will be used.
|
|
13
|
+
* @returns {RoutingResolvedOptions} - The resolved routing options, merged from the defaults and provided values.
|
|
14
|
+
* This includes the normalized `basePath` and any customized `firstVisit` settings.
|
|
15
|
+
*/
|
|
16
|
+
const resolveRoutingOptions = (routing = {}) => {
|
|
17
|
+
return {
|
|
18
|
+
...DEFAULT_ROUTING_OPTIONS,
|
|
19
|
+
...routing,
|
|
20
|
+
firstVisit: {
|
|
21
|
+
...DEFAULT_ROUTING_OPTIONS.firstVisit,
|
|
22
|
+
...routing.firstVisit,
|
|
23
|
+
},
|
|
24
|
+
basePath: normalizePathname(routing?.basePath || ""),
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { resolveRoutingOptions };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type CookieRawOptions = {
|
|
2
|
+
/** Enable cookie usage (read/write) - default: true */
|
|
3
|
+
enabled?: boolean;
|
|
4
|
+
/** Allow the system to automatically set cookies - default: true */
|
|
5
|
+
autoSetCookie?: boolean;
|
|
6
|
+
/** default: "intor.i18n.locale" */
|
|
7
|
+
name?: string;
|
|
8
|
+
/** default: null */
|
|
9
|
+
domain?: string | null;
|
|
10
|
+
/** default: "/" */
|
|
11
|
+
path?: string;
|
|
12
|
+
/** default: 60 * 60 * 24 * 365 (365 days) */
|
|
13
|
+
maxAge?: number;
|
|
14
|
+
/** default: false */
|
|
15
|
+
httpOnly?: boolean;
|
|
16
|
+
/** default: process.env.NODE_ENV !== "development" */
|
|
17
|
+
secure?: boolean;
|
|
18
|
+
/** default: lax */
|
|
19
|
+
sameSite?: "lax" | "strict" | "none";
|
|
20
|
+
};
|
|
21
|
+
export type CookieResolvedOptions = Required<Omit<CookieRawOptions, "domain">> & {
|
|
22
|
+
domain: string | null;
|
|
23
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { CookieRawOptions, CookieResolvedOptions } from "./cookie.types";
|
|
2
|
+
import type { LoaderOptions } from "./loader.types";
|
|
3
|
+
import type { LoggerOptions } from "./logger.types";
|
|
4
|
+
import type { RoutingRawOptions, RoutingResolvedOptions } from "./routing.types";
|
|
5
|
+
import type { CacheRawOptions, CacheResolvedOptions } from "../../config/types/cache.types";
|
|
6
|
+
import type { TranslatorOptions } from "../../config/types/translator.types";
|
|
7
|
+
import type { FallbackLocalesMap, Locale, LocaleMessages } from "intor-translator";
|
|
8
|
+
export type IntorRawConfig = ({
|
|
9
|
+
loader: LoaderOptions;
|
|
10
|
+
supportedLocales: readonly Locale[];
|
|
11
|
+
} | {
|
|
12
|
+
loader?: undefined;
|
|
13
|
+
supportedLocales?: readonly Locale[];
|
|
14
|
+
}) & {
|
|
15
|
+
readonly id?: string;
|
|
16
|
+
readonly messages?: LocaleMessages;
|
|
17
|
+
readonly defaultLocale: Locale;
|
|
18
|
+
readonly fallbackLocales?: FallbackLocalesMap;
|
|
19
|
+
readonly translator?: TranslatorOptions;
|
|
20
|
+
readonly cookie?: CookieRawOptions;
|
|
21
|
+
readonly routing?: RoutingRawOptions;
|
|
22
|
+
readonly logger?: LoggerOptions;
|
|
23
|
+
readonly cache?: CacheRawOptions;
|
|
24
|
+
};
|
|
25
|
+
export type IntorResolvedConfig = ({
|
|
26
|
+
loader: LoaderOptions;
|
|
27
|
+
supportedLocales: readonly Locale[];
|
|
28
|
+
} | {
|
|
29
|
+
loader?: undefined;
|
|
30
|
+
supportedLocales: readonly Locale[];
|
|
31
|
+
}) & {
|
|
32
|
+
readonly id: string;
|
|
33
|
+
readonly messages?: LocaleMessages;
|
|
34
|
+
readonly defaultLocale: Locale;
|
|
35
|
+
readonly fallbackLocales: FallbackLocalesMap;
|
|
36
|
+
readonly translator?: TranslatorOptions;
|
|
37
|
+
readonly cookie: CookieResolvedOptions;
|
|
38
|
+
readonly routing: RoutingResolvedOptions;
|
|
39
|
+
readonly logger?: LoggerOptions;
|
|
40
|
+
readonly cache: CacheResolvedOptions;
|
|
41
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ```ts
|
|
3
|
+
* {
|
|
4
|
+
* default: ["ui", "meta"],
|
|
5
|
+
* "/auth": ["auth", "admin"],
|
|
6
|
+
* }
|
|
7
|
+
* // When pathname is "/" => namespaces: ["ui", "meta"]
|
|
8
|
+
* // When pathname is "/auth" => namespaces: ["ui", "meta", "auth", "admin"]
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
type RouteNamespaces = {
|
|
12
|
+
[key: string]: string[];
|
|
13
|
+
} | {
|
|
14
|
+
[key: string]: string[];
|
|
15
|
+
default: string[];
|
|
16
|
+
};
|
|
17
|
+
export interface RemoteHeaders {
|
|
18
|
+
authorization?: string;
|
|
19
|
+
"x-api-key"?: string;
|
|
20
|
+
[key: string]: string | undefined;
|
|
21
|
+
}
|
|
22
|
+
type BaseLoaderOptions = {
|
|
23
|
+
rootDir?: string;
|
|
24
|
+
namespaces?: string[];
|
|
25
|
+
routeNamespaces?: RouteNamespaces;
|
|
26
|
+
concurrency?: number;
|
|
27
|
+
};
|
|
28
|
+
type LocalLoader = BaseLoaderOptions & {
|
|
29
|
+
type: "local";
|
|
30
|
+
};
|
|
31
|
+
type RemoteLoader = BaseLoaderOptions & {
|
|
32
|
+
type: "remote";
|
|
33
|
+
remoteUrl: string;
|
|
34
|
+
remoteHeaders?: RemoteHeaders;
|
|
35
|
+
fullReload?: boolean;
|
|
36
|
+
};
|
|
37
|
+
export type LoaderOptions = LocalLoader | RemoteLoader;
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const routingPrefix: readonly ["none", "all", "except-default"];
|
|
2
|
+
export declare const routingFirstVisitLocaleSource: readonly ["default", "browser"];
|
|
3
|
+
export type RoutingRawOptions = {
|
|
4
|
+
/** default: "none" */
|
|
5
|
+
prefix?: (typeof routingPrefix)[number];
|
|
6
|
+
firstVisit?: {
|
|
7
|
+
/** default: "browser" */
|
|
8
|
+
localeSource?: (typeof routingFirstVisitLocaleSource)[number];
|
|
9
|
+
/** default: true */
|
|
10
|
+
redirect?: boolean;
|
|
11
|
+
};
|
|
12
|
+
/** default: "" */
|
|
13
|
+
basePath?: string;
|
|
14
|
+
};
|
|
15
|
+
export type RoutingResolvedOptions = Required<RoutingRawOptions>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IntorError, IntorErrorCode } from '../../shared/error/intor-error.js';
|
|
2
|
+
|
|
3
|
+
const validateDefaultLocale = (config, supportedLocales) => {
|
|
4
|
+
const { id, defaultLocale } = config;
|
|
5
|
+
// Throw error if defaultLocale is undefined
|
|
6
|
+
if (!defaultLocale) {
|
|
7
|
+
throw new IntorError({
|
|
8
|
+
id,
|
|
9
|
+
code: IntorErrorCode.MISSING_DEFAULT_LOCALE,
|
|
10
|
+
message: `The defaultLocale is undefined`,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
// Throw error if defaultLocale is not listed in supportedLocales
|
|
14
|
+
if (!supportedLocales.includes(defaultLocale)) {
|
|
15
|
+
throw new IntorError({
|
|
16
|
+
id,
|
|
17
|
+
code: IntorErrorCode.UNSUPPORTED_DEFAULT_LOCALE,
|
|
18
|
+
message: `The defaultLocale "${defaultLocale}" is not included in the supportedLocales.`,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return defaultLocale;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export { validateDefaultLocale };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IntorRawConfig } from "../../config/types/intor-config.types";
|
|
2
|
+
/**
|
|
3
|
+
* Validate and resolve supported locales.
|
|
4
|
+
* Throws error if loader is used without supportedLocales.
|
|
5
|
+
* Falls back to message keys if supportedLocales is undefined.
|
|
6
|
+
*/
|
|
7
|
+
export declare const validateSupportedLocales: (config: IntorRawConfig) => readonly string[];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IntorError, IntorErrorCode } from '../../shared/error/intor-error.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Validate and resolve supported locales.
|
|
5
|
+
* Throws error if loader is used without supportedLocales.
|
|
6
|
+
* Falls back to message keys if supportedLocales is undefined.
|
|
7
|
+
*/
|
|
8
|
+
const validateSupportedLocales = (config) => {
|
|
9
|
+
const { id, loader, supportedLocales } = config;
|
|
10
|
+
// Ensure supportedLocales is set when using loader
|
|
11
|
+
if (loader && !supportedLocales) {
|
|
12
|
+
throw new IntorError({
|
|
13
|
+
id,
|
|
14
|
+
code: IntorErrorCode.MISSING_SUPPORTED_LOCALES,
|
|
15
|
+
message: `"supportedLocales" is required when using loader, but it is missing.`,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
// Return supportedLocales or infer from message keys
|
|
19
|
+
return supportedLocales || Object.keys(config.messages || {});
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { validateSupportedLocales };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { intor, type I18nContext, type IntorResult } from "./intor";
|
|
2
|
+
export { loadMessages, loadLocalMessages, type LoadLocalMessagesOptions, loadRemoteMessages, type LoadRemoteMessagesOptions, type Messages, type MessagesReader, clearMessagesPool, } from "./messages";
|
|
3
|
+
export { getTranslator } from "./translator";
|
|
4
|
+
export { clearLoggerPool } from "./shared/logger/global-logger-pool";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IntorResolvedConfig } from "../../config";
|
|
2
|
+
import type { I18nContext, GetI18nContext, IntorResult } from "../../server/intor/types";
|
|
3
|
+
import type { MessagesReader } from "../../server/messages";
|
|
4
|
+
/**
|
|
5
|
+
* Entry point for initializing Intor.
|
|
6
|
+
*
|
|
7
|
+
* 1. Resolve context via adapter or fallback values.
|
|
8
|
+
* 2. Load messages if loader is enabled.
|
|
9
|
+
* 3. Merge static messages with loaded messages.
|
|
10
|
+
*/
|
|
11
|
+
export declare const intor: (config: IntorResolvedConfig, i18nContext: GetI18nContext | Partial<I18nContext>, loadMessagesOptions?: {
|
|
12
|
+
exts?: string[];
|
|
13
|
+
messagesReader?: MessagesReader;
|
|
14
|
+
}) => Promise<IntorResult>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { loadMessages } from '../messages/load-messages.js';
|
|
2
|
+
import 'node:path';
|
|
3
|
+
import 'node:perf_hooks';
|
|
4
|
+
import 'p-limit';
|
|
5
|
+
import '../../config/constants/cache.constants.js';
|
|
6
|
+
import 'node:fs/promises';
|
|
7
|
+
import { getLogger } from '../shared/logger/get-logger.js';
|
|
8
|
+
import 'lodash.merge';
|
|
9
|
+
import 'keyv';
|
|
10
|
+
import { mergeMessages } from '../../shared/utils/merge-messages.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Entry point for initializing Intor.
|
|
14
|
+
*
|
|
15
|
+
* 1. Resolve context via adapter or fallback values.
|
|
16
|
+
* 2. Load messages if loader is enabled.
|
|
17
|
+
* 3. Merge static messages with loaded messages.
|
|
18
|
+
*/
|
|
19
|
+
const intor = async (config, i18nContext, loadMessagesOptions = {}) => {
|
|
20
|
+
const baseLogger = getLogger({ id: config.id, ...config.logger });
|
|
21
|
+
const logger = baseLogger.child({ scope: "intor" });
|
|
22
|
+
logger.info("Start Intor initialization.");
|
|
23
|
+
const { messages, loader } = config;
|
|
24
|
+
const isI18nContextFunction = typeof i18nContext === "function";
|
|
25
|
+
// 1. Resolve context via adapter or fallback values
|
|
26
|
+
const context = isI18nContextFunction
|
|
27
|
+
? await i18nContext(config)
|
|
28
|
+
: {
|
|
29
|
+
locale: (i18nContext?.locale || config.defaultLocale),
|
|
30
|
+
pathname: i18nContext?.pathname || "",
|
|
31
|
+
};
|
|
32
|
+
const { locale, pathname } = context;
|
|
33
|
+
const source = isI18nContextFunction ? i18nContext.name : "static fallback";
|
|
34
|
+
logger.debug(`I18n context resolved via ${source}.`, context);
|
|
35
|
+
// 2. Load messages if loader enabled
|
|
36
|
+
let loadedMessages;
|
|
37
|
+
if (loader) {
|
|
38
|
+
loadedMessages = await loadMessages({
|
|
39
|
+
config,
|
|
40
|
+
locale,
|
|
41
|
+
pathname,
|
|
42
|
+
extraOptions: {
|
|
43
|
+
exts: loadMessagesOptions.exts,
|
|
44
|
+
messagesReader: loadMessagesOptions.messagesReader,
|
|
45
|
+
},
|
|
46
|
+
allowCacheWrite: true,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
// 3. Merge static and loaded messages
|
|
50
|
+
const mergedMessages = mergeMessages(messages, loadedMessages);
|
|
51
|
+
logger.info("Messages successfully initialized.", {
|
|
52
|
+
static: { enabled: !!messages },
|
|
53
|
+
loaded: {
|
|
54
|
+
enabled: !!loadedMessages,
|
|
55
|
+
...(loader ? { loaderType: loader.type } : null),
|
|
56
|
+
},
|
|
57
|
+
merged: mergedMessages,
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
config,
|
|
61
|
+
initialLocale: locale,
|
|
62
|
+
pathname,
|
|
63
|
+
messages: mergedMessages,
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export { intor };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IntorResolvedConfig } from "../../config/types/intor-config.types";
|
|
2
|
+
import type { GenLocale } from "../../shared/types/generated.types";
|
|
3
|
+
import type { Locale, LocaleMessages } from "intor-translator";
|
|
4
|
+
export interface I18nContext {
|
|
5
|
+
locale: GenLocale;
|
|
6
|
+
pathname: string;
|
|
7
|
+
}
|
|
8
|
+
export type GetI18nContext = (config: IntorResolvedConfig) => Promise<I18nContext>;
|
|
9
|
+
export interface IntorResult {
|
|
10
|
+
config: IntorResolvedConfig;
|
|
11
|
+
initialLocale: Locale;
|
|
12
|
+
pathname: string;
|
|
13
|
+
messages: LocaleMessages;
|
|
14
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { loadMessages } from "./load-messages";
|
|
2
|
+
export { loadLocalMessages } from "./load-local-messages";
|
|
3
|
+
export type { LoadLocalMessagesOptions } from "./load-local-messages";
|
|
4
|
+
export { loadRemoteMessages } from "./load-remote-messages";
|
|
5
|
+
export type { LoadRemoteMessagesOptions } from "./load-remote-messages";
|
|
6
|
+
export type { Messages, MessagesReader } from "./shared/types";
|
|
7
|
+
export { clearMessagesPool } from "./shared/global-messages-pool";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { LoadLocalMessagesOptions } from "./types";
|
|
2
|
+
import type { LocaleMessages } from "intor-translator";
|
|
3
|
+
/**
|
|
4
|
+
* Load local messages from the file system.
|
|
5
|
+
*
|
|
6
|
+
* - Load messages for a target locale with optional fallback locales.
|
|
7
|
+
* - Support filtering by specific namespaces.
|
|
8
|
+
* - Cache messages if enabled.
|
|
9
|
+
* - Limit concurrent file reads for performance.
|
|
10
|
+
*/
|
|
11
|
+
export declare const loadLocalMessages: ({ pool, rootDir, locale, fallbackLocales, namespaces, extraOptions: { concurrency, cacheOptions, loggerOptions, exts, messagesReader, }, allowCacheWrite, }: LoadLocalMessagesOptions) => Promise<LocaleMessages | undefined>;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { performance } from 'node:perf_hooks';
|
|
3
|
+
import pLimit from 'p-limit';
|
|
4
|
+
import { DEFAULT_CACHE_OPTIONS } from '../../../config/constants/cache.constants.js';
|
|
5
|
+
import { readLocaleMessages } from './read-locale-messages/read-locale-messages.js';
|
|
6
|
+
import { getGlobalMessagesPool } from '../shared/global-messages-pool.js';
|
|
7
|
+
import { getLogger } from '../../shared/logger/get-logger.js';
|
|
8
|
+
import 'lodash.merge';
|
|
9
|
+
import { normalizeCacheKey } from '../../../shared/utils/normalize-cache-key.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Load local messages from the file system.
|
|
13
|
+
*
|
|
14
|
+
* - Load messages for a target locale with optional fallback locales.
|
|
15
|
+
* - Support filtering by specific namespaces.
|
|
16
|
+
* - Cache messages if enabled.
|
|
17
|
+
* - Limit concurrent file reads for performance.
|
|
18
|
+
*/
|
|
19
|
+
const loadLocalMessages = async ({ pool = getGlobalMessagesPool(), rootDir = "messages", locale, fallbackLocales, namespaces, extraOptions: { concurrency = 10, cacheOptions = DEFAULT_CACHE_OPTIONS, loggerOptions = { id: "default" }, exts, messagesReader, } = {}, allowCacheWrite = false, }) => {
|
|
20
|
+
const baseLogger = getLogger({ ...loggerOptions });
|
|
21
|
+
const logger = baseLogger.child({ scope: "load-local-messages" });
|
|
22
|
+
// Start performance measurement
|
|
23
|
+
const start = performance.now();
|
|
24
|
+
logger.debug("Loading local messages from directory.", {
|
|
25
|
+
rootDir,
|
|
26
|
+
resolvedRootDir: path.resolve(process.cwd(), rootDir),
|
|
27
|
+
});
|
|
28
|
+
//====== Cache lookup ======
|
|
29
|
+
const key = normalizeCacheKey([
|
|
30
|
+
loggerOptions.id,
|
|
31
|
+
"loaderType:local",
|
|
32
|
+
rootDir,
|
|
33
|
+
locale,
|
|
34
|
+
(fallbackLocales || []).toSorted().join(","),
|
|
35
|
+
(namespaces || []).toSorted().join(","),
|
|
36
|
+
]);
|
|
37
|
+
if (cacheOptions.enabled && key) {
|
|
38
|
+
const cached = await pool?.get(key);
|
|
39
|
+
if (cached) {
|
|
40
|
+
logger.debug("Messages cache hit.", { key });
|
|
41
|
+
return cached;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//============================================================
|
|
45
|
+
// Read messages
|
|
46
|
+
//============================================================
|
|
47
|
+
const limit = pLimit(concurrency);
|
|
48
|
+
const candidateLocales = [locale, ...(fallbackLocales || [])];
|
|
49
|
+
let messages;
|
|
50
|
+
for (const candidateLocale of candidateLocales) {
|
|
51
|
+
try {
|
|
52
|
+
const result = await readLocaleMessages({
|
|
53
|
+
limit,
|
|
54
|
+
rootDir,
|
|
55
|
+
locale: candidateLocale,
|
|
56
|
+
namespaces,
|
|
57
|
+
extraOptions: { loggerOptions, exts, messagesReader },
|
|
58
|
+
});
|
|
59
|
+
if (result && Object.values(result[candidateLocale] || {}).length > 0) {
|
|
60
|
+
messages = result;
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
logger.error("Failed to read locale messages", {
|
|
66
|
+
locale: candidateLocale,
|
|
67
|
+
error,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//====== Cache storage ======
|
|
72
|
+
if (allowCacheWrite && cacheOptions.enabled && key && messages) {
|
|
73
|
+
await pool?.set(key, messages, cacheOptions.ttl);
|
|
74
|
+
}
|
|
75
|
+
// Log out validnamespaces & performance measurement
|
|
76
|
+
const end = performance.now();
|
|
77
|
+
const duration = Math.round(end - start);
|
|
78
|
+
logger.trace("Finished loading local messages.", {
|
|
79
|
+
loadedLocale: messages ? Object.keys(messages)[0] : undefined,
|
|
80
|
+
duration: `${duration} ms`,
|
|
81
|
+
});
|
|
82
|
+
return messages;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export { loadLocalMessages };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { CollectFileEntriesOptions } from "./types";
|
|
2
|
+
import type { FileEntry } from "../../../../../server/messages/load-local-messages/read-locale-messages";
|
|
3
|
+
/**
|
|
4
|
+
* Recursively collects all message files under a given root directory.
|
|
5
|
+
*
|
|
6
|
+
* - Supports filtering by allowed file extensions and optional namespaces.
|
|
7
|
+
* - Processes directories concurrently using the provided `limit` function.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* [
|
|
12
|
+
* {
|
|
13
|
+
* namespace: "index", // "index" = messages under locale root (no namespace)
|
|
14
|
+
* fullPath: "/Users/john/my-app/messages/en-US/index.json",
|
|
15
|
+
* relativePath: "index.json",
|
|
16
|
+
* segments: ["index"],
|
|
17
|
+
* basename: "index",
|
|
18
|
+
* },
|
|
19
|
+
* {
|
|
20
|
+
* namespace: "auth",
|
|
21
|
+
* fullPath: "/Users/john/my-app/messages/en-US/auth/login.json",
|
|
22
|
+
* relativePath: "auth/login.json",
|
|
23
|
+
* segments: ["auth", "login"],
|
|
24
|
+
* basename: "login",
|
|
25
|
+
* },
|
|
26
|
+
* ];
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function collectFileEntries({ readdir, limit, rootDir, namespaces, extraOptions: { exts, loggerOptions }, }: CollectFileEntriesOptions): Promise<FileEntry[]>;
|