intor 2.3.3 → 2.3.5
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/README.md +79 -0
- package/dist/core/export/config/index.js +1 -0
- package/dist/core/export/index.js +4 -0
- package/dist/core/export/server/index.js +7 -0
- package/dist/{src → core/src}/config/constants/cookie.constants.js +2 -2
- package/dist/{src → core/src}/config/constants/routing.constants.js +6 -0
- package/dist/{src → core/src}/config/define-intor-config.js +18 -4
- package/dist/core/src/config/resolvers/resolve-cookie-options.js +10 -0
- package/dist/{src → core/src}/config/resolvers/resolve-fallback-locales.js +17 -0
- package/dist/core/src/config/resolvers/resolve-routing-options.js +20 -0
- package/dist/{src → core/src}/config/validators/validate-default-locale.js +9 -0
- package/dist/{src → core/src}/config/validators/validate-supported-locales.js +8 -3
- package/dist/core/src/server/helpers/local-messages-from-url.js +48 -0
- package/dist/core/src/server/intor/intor.js +49 -0
- package/dist/core/src/server/messages/load-local-messages/load-local-messages.js +93 -0
- package/dist/{src → core/src}/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.js +12 -29
- package/dist/{src → core/src}/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.js +8 -5
- package/dist/{src → core/src}/server/messages/load-local-messages/read-locale-messages/read-locale-messages.js +3 -3
- package/dist/{src → core/src}/server/messages/load-messages.js +21 -21
- package/dist/{src → core/src}/server/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +6 -1
- package/dist/core/src/server/messages/load-remote-messages/load-remote-messages.js +110 -0
- package/dist/{src → core/src}/server/shared/logger/get-logger.js +10 -5
- package/dist/core/src/server/shared/logger/global-logger-pool.js +16 -0
- package/dist/core/src/server/shared/messages/global-messages-pool.js +27 -0
- package/dist/{src → core/src}/server/translator/get-translator.js +6 -10
- package/dist/core/src/shared/utils/deep-merge.js +36 -0
- package/dist/{src/shared/utils → core/src/shared/utils/normalizers}/normalize-cache-key.js +17 -1
- package/dist/{src/shared/utils/pathname → core/src/shared/utils/normalizers}/normalize-pathname.js +1 -1
- package/dist/core/src/shared/utils/pathname/get-unprefixed-pathname.js +39 -0
- package/dist/{src/adapters/next/shared/utils → core/src/shared/utils/pathname}/locale-prefix-pathname.js +17 -12
- package/dist/core/src/shared/utils/pathname/localize-pathname.js +36 -0
- package/dist/{src → core/src}/shared/utils/pathname/standardize-pathname.js +8 -8
- package/dist/next/export/next/index.js +4 -0
- package/dist/{exports → next/export}/next/proxy/index.js +0 -1
- package/dist/next/export/next/server/index.js +2 -0
- package/dist/next/src/adapters/next/navigation/link.js +54 -0
- package/dist/next/src/adapters/next/navigation/redirect.js +37 -0
- package/dist/next/src/adapters/next/navigation/use-pathname.js +31 -0
- package/dist/next/src/adapters/next/navigation/use-router.js +68 -0
- package/dist/next/src/adapters/next/proxy/intor-proxy.js +44 -0
- package/dist/{src → next/src}/adapters/next/proxy/utils/set-locale-cookie-edge.js +2 -7
- package/dist/next/src/adapters/next/server/get-locale.js +25 -0
- package/dist/{src → next/src}/adapters/next/server/get-translator.js +4 -4
- package/dist/next/src/client/react/contexts/config/context.js +3 -0
- package/dist/next/src/client/react/contexts/locale/context.js +3 -0
- package/dist/next/src/client/react/contexts/messages/context.js +3 -0
- package/dist/next/src/client/react/contexts/translator/context.js +3 -0
- package/dist/next/src/client/react/contexts/translator-runtime/context.js +3 -0
- package/dist/next/src/client/react/navigation/use-navigation-strategy.js +32 -0
- package/dist/next/src/client/react/navigation/use-navigation-target.js +20 -0
- package/dist/next/src/client/shared/utils/build-cookie-string.js +30 -0
- package/dist/next/src/client/shared/utils/locale/set-locale-cookie-browser.js +18 -0
- package/dist/next/src/config/constants/cache.constants.js +7 -0
- package/dist/next/src/routing/locale/resolve-locale.js +32 -0
- package/dist/next/src/routing/pathname/resolve-pathname.js +53 -0
- package/dist/next/src/routing/pathname/strategies/all.js +23 -0
- package/dist/next/src/routing/pathname/strategies/except-default.js +33 -0
- package/dist/next/src/routing/pathname/strategies/none.js +14 -0
- package/dist/next/src/routing/resolve-navigation-target.js +28 -0
- package/dist/next/src/routing/resolve-routing.js +38 -0
- package/dist/next/src/server/messages/load-local-messages/load-local-messages.js +93 -0
- package/dist/next/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.js +78 -0
- package/dist/next/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.js +88 -0
- package/dist/next/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/json-reader.js +12 -0
- package/dist/next/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/nest-object-from-path.js +21 -0
- package/dist/next/src/server/messages/load-local-messages/read-locale-messages/read-locale-messages.js +31 -0
- package/dist/next/src/server/messages/load-messages.js +77 -0
- package/dist/next/src/server/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +55 -0
- package/dist/next/src/server/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +25 -0
- package/dist/next/src/server/messages/load-remote-messages/load-remote-messages.js +110 -0
- package/dist/next/src/server/messages/shared/utils/is-valid-messages.js +36 -0
- package/dist/next/src/server/shared/logger/get-logger.js +39 -0
- package/dist/next/src/server/translator/get-translator.js +35 -0
- package/dist/next/src/shared/constants/prefix-placeholder.js +4 -0
- package/dist/next/src/shared/utils/deep-merge.js +36 -0
- package/dist/next/src/shared/utils/is-external-destination.js +11 -0
- package/dist/next/src/shared/utils/locale/get-locale-from-accept-language.js +45 -0
- package/dist/next/src/shared/utils/locale/get-locale-from-host.js +31 -0
- package/dist/next/src/shared/utils/locale/get-locale-from-pathname.js +52 -0
- package/dist/next/src/shared/utils/locale/get-locale-from-query.js +33 -0
- package/dist/next/src/shared/utils/normalizers/normalize-cache-key.js +45 -0
- package/dist/{src/shared/utils/locale → next/src/shared/utils/normalizers}/normalize-locale.js +21 -4
- package/dist/next/src/shared/utils/normalizers/normalize-pathname.js +43 -0
- package/dist/next/src/shared/utils/pathname/get-unprefixed-pathname.js +39 -0
- package/dist/next/src/shared/utils/pathname/locale-prefix-pathname.js +38 -0
- package/dist/next/src/shared/utils/pathname/localize-pathname.js +36 -0
- package/dist/next/src/shared/utils/pathname/standardize-pathname.js +30 -0
- package/dist/react/export/react/index.js +18 -0
- package/dist/react/src/client/helpers/get-client-locale.js +24 -0
- package/dist/{src → react/src}/client/react/contexts/config/context.js +0 -1
- package/dist/{src → react/src}/client/react/contexts/config/hook.js +0 -1
- package/dist/{src → react/src}/client/react/contexts/config/provider.js +5 -2
- package/dist/{src → react/src}/client/react/contexts/intor-provider/intor-provider.js +3 -3
- package/dist/{src → react/src}/client/react/contexts/locale/context.js +0 -1
- package/dist/{src → react/src}/client/react/contexts/locale/hook.js +0 -1
- package/dist/react/src/client/react/contexts/locale/provider.js +38 -0
- package/dist/react/src/client/react/contexts/locale/utils/change-locale.js +26 -0
- package/dist/{src → react/src}/client/react/contexts/messages/context.js +0 -1
- package/dist/{src → react/src}/client/react/contexts/messages/hook.js +0 -1
- package/dist/{src → react/src}/client/react/contexts/messages/provider.js +18 -11
- package/dist/react/src/client/react/contexts/messages/utils/use-refetch-messages.js +70 -0
- package/dist/{src → react/src}/client/react/contexts/translator/context.js +0 -1
- package/dist/{src → react/src}/client/react/contexts/translator/hook.js +0 -1
- package/dist/{src → react/src}/client/react/contexts/translator/provider.js +23 -26
- package/dist/react/src/client/react/contexts/translator-runtime/context.js +5 -0
- package/dist/react/src/client/react/contexts/translator-runtime/hook.js +9 -0
- package/dist/react/src/client/react/contexts/translator-runtime/provider.js +15 -0
- package/dist/react/src/client/react/render/create-react-renderer.js +36 -0
- package/dist/react/src/client/react/render/render-rich-message-react.js +22 -0
- package/dist/react/src/client/react/translator/create-t-rich.js +23 -0
- package/dist/react/src/client/react/translator/t.js +15 -0
- package/dist/{src/client/react/hooks → react/src/client/react/translator}/use-translator.js +7 -10
- package/dist/react/src/client/shared/utils/build-cookie-string.js +30 -0
- package/dist/react/src/client/shared/utils/locale/detect-browser-locale.js +12 -0
- package/dist/react/src/client/shared/utils/locale/get-locale-cookie-browser.js +16 -0
- package/dist/react/src/client/shared/utils/locale/set-document-locale.js +12 -0
- package/dist/react/src/client/shared/utils/locale/set-locale-cookie-browser.js +18 -0
- package/dist/react/src/config/constants/cache.constants.js +7 -0
- package/dist/react/src/server/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.js +55 -0
- package/dist/react/src/server/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +25 -0
- package/dist/react/src/server/messages/load-remote-messages/load-remote-messages.js +110 -0
- package/dist/react/src/server/messages/shared/utils/is-valid-messages.js +36 -0
- package/dist/react/src/server/shared/logger/get-logger.js +39 -0
- package/dist/react/src/server/shared/logger/global-logger-pool.js +8 -0
- package/dist/react/src/server/shared/messages/global-messages-pool.js +10 -0
- package/dist/react/src/shared/utils/deep-merge.js +36 -0
- package/dist/react/src/shared/utils/normalizers/normalize-cache-key.js +45 -0
- package/dist/react/src/shared/utils/normalizers/normalize-locale.js +59 -0
- package/dist/types/export/config/index.d.ts +1 -0
- package/dist/types/export/index.d.ts +4 -0
- package/dist/types/export/internal/index.d.ts +1 -0
- package/dist/types/export/next/index.d.ts +1 -0
- package/dist/types/export/next/proxy/index.d.ts +1 -0
- package/dist/types/export/next/server/index.d.ts +1 -0
- package/dist/types/export/react/index.d.ts +1 -0
- package/dist/types/export/server/index.d.ts +1 -0
- package/dist/types/src/adapters/next/navigation/link.d.ts +26 -0
- package/dist/types/src/adapters/next/navigation/redirect.d.ts +18 -0
- package/dist/{src → types/src}/adapters/next/navigation/use-pathname.d.ts +5 -5
- package/dist/types/src/adapters/next/navigation/use-router.d.ts +25 -0
- package/dist/types/src/adapters/next/proxy/index.d.ts +1 -0
- package/dist/types/src/adapters/next/proxy/intor-proxy.d.ts +13 -0
- package/dist/{src → types/src}/adapters/next/proxy/utils/set-locale-cookie-edge.d.ts +2 -4
- package/dist/types/src/adapters/next/server/get-locale.d.ts +6 -0
- package/dist/{src → types/src}/adapters/next/server/get-translator.d.ts +7 -8
- package/dist/types/src/adapters/next/server/index.d.ts +2 -0
- package/dist/types/src/client/helpers/get-client-locale.d.ts +11 -0
- package/dist/types/src/client/helpers/index.d.ts +1 -0
- package/dist/types/src/client/react/contexts/config/provider.d.ts +2 -0
- package/dist/{src → types/src}/client/react/contexts/config/types.d.ts +6 -5
- package/dist/types/src/client/react/contexts/index.d.ts +6 -0
- package/dist/types/src/client/react/contexts/intor-provider/intor-provider.d.ts +2 -0
- package/dist/{src → types/src}/client/react/contexts/intor-provider/types.d.ts +1 -2
- package/dist/types/src/client/react/contexts/locale/utils/change-locale.d.ts +20 -0
- package/dist/{src → types/src}/client/react/contexts/messages/types.d.ts +4 -7
- package/dist/types/src/client/react/contexts/messages/utils/use-refetch-messages.d.ts +20 -0
- package/dist/types/src/client/react/contexts/translator/hook.d.ts +2 -0
- package/dist/types/src/client/react/contexts/translator/types.d.ts +11 -0
- package/dist/types/src/client/react/contexts/translator-runtime/context.d.ts +3 -0
- package/dist/types/src/client/react/contexts/translator-runtime/hook.d.ts +2 -0
- package/dist/types/src/client/react/contexts/translator-runtime/index.d.ts +3 -0
- package/dist/types/src/client/react/contexts/translator-runtime/provider.d.ts +2 -0
- package/dist/types/src/client/react/contexts/translator-runtime/types.d.ts +13 -0
- package/dist/types/src/client/react/index.d.ts +4 -0
- package/dist/types/src/client/react/navigation/index.d.ts +2 -0
- package/dist/types/src/client/react/navigation/use-navigation-strategy.d.ts +22 -0
- package/dist/types/src/client/react/navigation/use-navigation-target.d.ts +12 -0
- package/dist/types/src/client/react/render/create-react-renderer.d.ts +17 -0
- package/dist/types/src/client/react/render/index.d.ts +2 -0
- package/dist/types/src/client/react/render/render-rich-message-react.d.ts +13 -0
- package/dist/types/src/client/react/render/types.d.ts +17 -0
- package/dist/types/src/client/react/translator/create-t-rich.d.ts +15 -0
- package/dist/types/src/client/react/translator/index.d.ts +2 -0
- package/dist/types/src/client/react/translator/t.d.ts +27 -0
- package/dist/types/src/client/react/translator/translator-instance.d.ts +12 -0
- package/dist/types/src/client/react/translator/use-translator.d.ts +8 -0
- package/dist/types/src/client/shared/types/index.d.ts +1 -0
- package/dist/types/src/client/shared/types/translator-instance.d.ts +11 -0
- package/dist/types/src/client/shared/utils/build-cookie-string.d.ts +5 -0
- package/dist/types/src/client/shared/utils/index.d.ts +1 -0
- package/dist/types/src/client/shared/utils/locale/detect-browser-locale.d.ts +6 -0
- package/dist/types/src/client/shared/utils/locale/get-locale-cookie-browser.d.ts +6 -0
- package/dist/types/src/client/shared/utils/locale/index.d.ts +4 -0
- package/dist/types/src/client/shared/utils/locale/set-document-locale.d.ts +6 -0
- package/dist/types/src/client/shared/utils/locale/set-locale-cookie-browser.d.ts +7 -0
- package/dist/types/src/config/define-intor-config.d.ts +18 -0
- package/dist/types/src/config/index.d.ts +2 -0
- package/dist/types/src/config/resolvers/resolve-cookie-options.d.ts +2 -0
- package/dist/types/src/config/resolvers/resolve-fallback-locales.d.ts +20 -0
- package/dist/types/src/config/resolvers/resolve-routing-options.d.ts +2 -0
- package/dist/{src → types/src}/config/types/cache.types.d.ts +2 -2
- package/dist/types/src/config/types/cookie.types.d.ts +23 -0
- package/dist/{src → types/src}/config/types/intor-config.types.d.ts +2 -0
- package/dist/types/src/config/types/loader.types.d.ts +34 -0
- package/dist/types/src/config/types/logger.types.d.ts +9 -0
- package/dist/types/src/config/types/routing.types.d.ts +39 -0
- package/dist/types/src/config/types/translator.types.d.ts +7 -0
- package/dist/types/src/config/validators/validate-default-locale.d.ts +12 -0
- package/dist/types/src/config/validators/validate-supported-locales.d.ts +12 -0
- package/dist/types/src/routing/index.d.ts +1 -0
- package/dist/types/src/routing/locale/index.d.ts +1 -0
- package/dist/types/src/routing/locale/resolve-locale.d.ts +16 -0
- package/dist/types/src/routing/locale/types.d.ts +36 -0
- package/dist/types/src/routing/pathname/index.d.ts +1 -0
- package/dist/types/src/routing/pathname/resolve-pathname.d.ts +19 -0
- package/dist/types/src/routing/pathname/strategies/all.d.ts +6 -0
- package/dist/types/src/routing/pathname/strategies/except-default.d.ts +6 -0
- package/dist/types/src/routing/pathname/strategies/index.d.ts +3 -0
- package/dist/types/src/routing/pathname/strategies/none.d.ts +5 -0
- package/dist/types/src/routing/pathname/types.d.ts +28 -0
- package/dist/types/src/routing/resolve-navigation-target.d.ts +20 -0
- package/dist/types/src/routing/resolve-routing.d.ts +30 -0
- package/dist/types/src/server/helpers/index.d.ts +1 -0
- package/dist/types/src/server/helpers/local-messages-from-url.d.ts +21 -0
- package/dist/types/src/server/index.d.ts +6 -0
- package/dist/types/src/server/intor/index.d.ts +2 -0
- package/dist/types/src/server/intor/intor.d.ts +20 -0
- package/dist/types/src/server/intor/types.d.ts +9 -0
- package/dist/types/src/server/messages/index.d.ts +3 -0
- package/dist/types/src/server/messages/load-local-messages/index.d.ts +2 -0
- package/dist/types/src/server/messages/load-local-messages/load-local-messages.d.ts +15 -0
- package/dist/{src → types/src}/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.d.ts +5 -14
- package/dist/{src → types/src}/server/messages/load-local-messages/read-locale-messages/collect-file-entries/types.d.ts +1 -1
- package/dist/{src → types/src}/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.d.ts +2 -2
- package/dist/{src → types/src}/server/messages/load-local-messages/read-locale-messages/parse-file-entries/types.d.ts +1 -1
- package/dist/{src → types/src}/server/messages/load-local-messages/read-locale-messages/read-locale-messages.d.ts +2 -2
- package/dist/{src → types/src}/server/messages/load-local-messages/read-locale-messages/types.d.ts +1 -1
- package/dist/types/src/server/messages/load-local-messages/types.d.ts +22 -0
- package/dist/types/src/server/messages/load-messages.d.ts +14 -0
- package/dist/{src → types/src}/server/messages/load-remote-messages/fetch-locale-messages/fetch-locale-messages.d.ts +1 -1
- package/dist/{src → types/src}/server/messages/load-remote-messages/fetch-locale-messages/types.d.ts +1 -0
- package/dist/types/src/server/messages/load-remote-messages/index.d.ts +2 -0
- package/dist/types/src/server/messages/load-remote-messages/load-remote-messages.d.ts +15 -0
- package/dist/{src → types/src}/server/messages/load-remote-messages/types.d.ts +4 -3
- package/dist/{src → types/src}/server/messages/types.d.ts +2 -3
- package/dist/{src → types/src}/server/shared/logger/get-logger.d.ts +1 -1
- package/dist/{src/server/messages/shared → types/src/server/shared/messages}/global-messages-pool.d.ts +8 -1
- package/dist/{src → types/src}/server/translator/get-translator.d.ts +8 -12
- package/dist/types/src/shared/constants/index.d.ts +1 -0
- package/dist/{src → types/src}/shared/error/intor-error.d.ts +4 -4
- package/dist/types/src/shared/types/generated.d.ts +53 -0
- package/dist/types/src/shared/types/index.d.ts +2 -0
- package/dist/types/src/shared/types/routing.d.ts +6 -0
- package/dist/types/src/shared/types/translator-instance.d.ts +27 -0
- package/dist/types/src/shared/utils/deep-merge.d.ts +8 -0
- package/dist/types/src/shared/utils/index.d.ts +4 -0
- package/dist/types/src/shared/utils/is-external-destination.d.ts +7 -0
- package/dist/types/src/shared/utils/locale/get-locale-from-accept-language.d.ts +19 -0
- package/dist/types/src/shared/utils/locale/get-locale-from-host.d.ts +17 -0
- package/dist/types/src/shared/utils/locale/get-locale-from-pathname.d.ts +31 -0
- package/dist/types/src/shared/utils/locale/get-locale-from-query.d.ts +20 -0
- package/dist/types/src/shared/utils/locale/index.d.ts +4 -0
- package/dist/types/src/shared/utils/normalizers/index.d.ts +3 -0
- package/dist/types/src/shared/utils/normalizers/normalize-cache-key.d.ts +14 -0
- package/dist/types/src/shared/utils/normalizers/normalize-locale.d.ts +22 -0
- package/dist/{src/shared/utils/pathname → types/src/shared/utils/normalizers}/normalize-pathname.d.ts +1 -1
- package/dist/types/src/shared/utils/pathname/get-unprefixed-pathname.d.ts +14 -0
- package/dist/types/src/shared/utils/pathname/index.d.ts +1 -0
- package/dist/types/src/shared/utils/pathname/locale-prefix-pathname.d.ts +16 -0
- package/dist/types/src/shared/utils/pathname/localize-pathname.d.ts +23 -0
- package/dist/types/src/shared/utils/pathname/standardize-pathname.d.ts +13 -0
- package/package.json +76 -65
- package/dist/exports/config/index.d.ts +0 -2
- package/dist/exports/config/index.js +0 -4
- package/dist/exports/index.d.ts +0 -5
- package/dist/exports/index.js +0 -11
- package/dist/exports/next/index.d.ts +0 -3
- package/dist/exports/next/index.js +0 -9
- package/dist/exports/next/proxy/index.d.ts +0 -2
- package/dist/exports/next/server/index.d.ts +0 -2
- package/dist/exports/next/server/index.js +0 -2
- package/dist/exports/react/index.d.ts +0 -2
- package/dist/exports/react/index.js +0 -6
- package/dist/exports/server/index.d.ts +0 -2
- package/dist/exports/server/index.js +0 -6
- package/dist/src/adapters/next/navigation/link.d.ts +0 -16
- package/dist/src/adapters/next/navigation/link.js +0 -25
- package/dist/src/adapters/next/navigation/redirect.d.ts +0 -16
- package/dist/src/adapters/next/navigation/redirect.js +0 -36
- package/dist/src/adapters/next/navigation/use-pathname.js +0 -49
- package/dist/src/adapters/next/navigation/use-router.d.ts +0 -20
- package/dist/src/adapters/next/navigation/use-router.js +0 -31
- package/dist/src/adapters/next/navigation/utils/should-full-reload.d.ts +0 -7
- package/dist/src/adapters/next/navigation/utils/should-full-reload.js +0 -19
- package/dist/src/adapters/next/navigation/utils/use-locale-switch.d.ts +0 -16
- package/dist/src/adapters/next/navigation/utils/use-locale-switch.js +0 -58
- package/dist/src/adapters/next/proxy/handle-prefix/handle-prefix-all.d.ts +0 -12
- package/dist/src/adapters/next/proxy/handle-prefix/handle-prefix-all.js +0 -60
- package/dist/src/adapters/next/proxy/handle-prefix/handle-prefix-except-default.d.ts +0 -16
- package/dist/src/adapters/next/proxy/handle-prefix/handle-prefix-except-default.js +0 -81
- package/dist/src/adapters/next/proxy/handle-prefix/handle-prefix-none.d.ts +0 -10
- package/dist/src/adapters/next/proxy/handle-prefix/handle-prefix-none.js +0 -22
- package/dist/src/adapters/next/proxy/index.d.ts +0 -2
- package/dist/src/adapters/next/proxy/intor-proxy.d.ts +0 -6
- package/dist/src/adapters/next/proxy/intor-proxy.js +0 -22
- package/dist/src/adapters/next/proxy/utils/create-response.d.ts +0 -17
- package/dist/src/adapters/next/proxy/utils/create-response.js +0 -42
- package/dist/src/adapters/next/proxy/utils/determine-initial-locale.d.ts +0 -8
- package/dist/src/adapters/next/proxy/utils/determine-initial-locale.js +0 -28
- package/dist/src/adapters/next/proxy/utils/set-pathname-header.d.ts +0 -12
- package/dist/src/adapters/next/proxy/utils/set-pathname-header.js +0 -13
- package/dist/src/adapters/next/server/get-i18n-context.d.ts +0 -9
- package/dist/src/adapters/next/server/get-i18n-context.js +0 -47
- package/dist/src/adapters/next/server/index.d.ts +0 -2
- package/dist/src/adapters/next/shared/constants/pathname-header-name.d.ts +0 -1
- package/dist/src/adapters/next/shared/constants/pathname-header-name.js +0 -4
- package/dist/src/adapters/next/shared/utils/locale-prefix-pathname.d.ts +0 -16
- package/dist/src/adapters/next/shared/utils/localize-pathname.d.ts +0 -18
- package/dist/src/adapters/next/shared/utils/localize-pathname.js +0 -36
- package/dist/src/client/react/contexts/config/provider.d.ts +0 -2
- package/dist/src/client/react/contexts/intor-provider/intor-provider.d.ts +0 -2
- package/dist/src/client/react/contexts/locale/provider.js +0 -48
- package/dist/src/client/react/contexts/locale/utils/change-locale.d.ts +0 -22
- package/dist/src/client/react/contexts/locale/utils/change-locale.js +0 -35
- package/dist/src/client/react/contexts/locale/utils/use-init-locale-cookie.d.ts +0 -8
- package/dist/src/client/react/contexts/locale/utils/use-init-locale-cookie.js +0 -28
- package/dist/src/client/react/contexts/messages/utils/use-refetch-messages.d.ts +0 -16
- package/dist/src/client/react/contexts/messages/utils/use-refetch-messages.js +0 -57
- package/dist/src/client/react/contexts/translate-handlers/context.d.ts +0 -2
- package/dist/src/client/react/contexts/translate-handlers/context.js +0 -6
- package/dist/src/client/react/contexts/translate-handlers/hook.d.ts +0 -2
- package/dist/src/client/react/contexts/translate-handlers/hook.js +0 -10
- package/dist/src/client/react/contexts/translate-handlers/index.d.ts +0 -3
- package/dist/src/client/react/contexts/translate-handlers/provider.d.ts +0 -2
- package/dist/src/client/react/contexts/translate-handlers/provider.js +0 -11
- package/dist/src/client/react/contexts/translate-handlers/types.d.ts +0 -7
- package/dist/src/client/react/contexts/translator/hook.d.ts +0 -3
- package/dist/src/client/react/contexts/translator/types.d.ts +0 -11
- package/dist/src/client/react/hooks/use-translator.d.ts +0 -12
- package/dist/src/client/react/index.d.ts +0 -4
- package/dist/src/client/shared/utils/get-initial-locale.d.ts +0 -11
- package/dist/src/client/shared/utils/get-initial-locale.js +0 -21
- package/dist/src/config/define-intor-config.d.ts +0 -2
- package/dist/src/config/index.d.ts +0 -5
- package/dist/src/config/resolvers/resolve-cookie-options.d.ts +0 -11
- package/dist/src/config/resolvers/resolve-cookie-options.js +0 -19
- package/dist/src/config/resolvers/resolve-fallback-locales.d.ts +0 -3
- package/dist/src/config/resolvers/resolve-routing-options.d.ts +0 -13
- package/dist/src/config/resolvers/resolve-routing-options.js +0 -28
- package/dist/src/config/types/cookie.types.d.ts +0 -23
- package/dist/src/config/types/loader.types.d.ts +0 -38
- package/dist/src/config/types/logger.types.d.ts +0 -7
- package/dist/src/config/types/routing.types.d.ts +0 -15
- package/dist/src/config/types/translator.types.d.ts +0 -4
- package/dist/src/config/validators/validate-default-locale.d.ts +0 -3
- package/dist/src/config/validators/validate-supported-locales.d.ts +0 -7
- package/dist/src/server/index.d.ts +0 -4
- package/dist/src/server/intor/index.d.ts +0 -2
- package/dist/src/server/intor/intor.d.ts +0 -14
- package/dist/src/server/intor/intor.js +0 -67
- package/dist/src/server/intor/types.d.ts +0 -14
- package/dist/src/server/messages/index.d.ts +0 -7
- package/dist/src/server/messages/load-local-messages/index.d.ts +0 -2
- package/dist/src/server/messages/load-local-messages/load-local-messages.d.ts +0 -11
- package/dist/src/server/messages/load-local-messages/load-local-messages.js +0 -85
- package/dist/src/server/messages/load-local-messages/types.d.ts +0 -21
- package/dist/src/server/messages/load-messages.d.ts +0 -11
- package/dist/src/server/messages/load-remote-messages/index.d.ts +0 -2
- package/dist/src/server/messages/load-remote-messages/load-remote-messages.d.ts +0 -9
- package/dist/src/server/messages/load-remote-messages/load-remote-messages.js +0 -79
- package/dist/src/shared/types/generated.types.d.ts +0 -30
- package/dist/src/shared/types/translator-instance.types.d.ts +0 -33
- package/dist/src/shared/utils/client/build-cookie-string.d.ts +0 -9
- package/dist/src/shared/utils/client/build-cookie-string.js +0 -33
- package/dist/src/shared/utils/client/set-locale-cookie-browser.d.ts +0 -13
- package/dist/src/shared/utils/client/set-locale-cookie-browser.js +0 -21
- package/dist/src/shared/utils/index.d.ts +0 -8
- package/dist/src/shared/utils/locale/normalize-locale.d.ts +0 -4
- package/dist/src/shared/utils/locale/resolve-preferred-locale.d.ts +0 -5
- package/dist/src/shared/utils/locale/resolve-preferred-locale.js +0 -26
- package/dist/src/shared/utils/merge-messages.d.ts +0 -6
- package/dist/src/shared/utils/merge-messages.js +0 -13
- package/dist/src/shared/utils/normalize-cache-key.d.ts +0 -3
- package/dist/src/shared/utils/pathname/extract-pathname.d.ts +0 -28
- package/dist/src/shared/utils/pathname/extract-pathname.js +0 -58
- package/dist/src/shared/utils/pathname/standardize-pathname.d.ts +0 -18
- package/dist/src/shared/utils/resolve-namespaces.d.ts +0 -10
- package/dist/src/shared/utils/resolve-namespaces.js +0 -33
- package/dist/{src → core/src}/config/constants/cache.constants.js +0 -0
- package/dist/{src → core/src}/config/resolvers/resolve-cache-options.js +0 -0
- package/dist/{src → core/src}/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/json-reader.js +0 -0
- package/dist/{src → core/src}/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/nest-object-from-path.js +0 -0
- package/dist/{src → core/src}/server/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.js +0 -0
- package/dist/{src → core/src}/server/messages/shared/utils/is-valid-messages.js +0 -0
- package/dist/{src → core/src}/shared/constants/prefix-placeholder.js +0 -0
- package/dist/{src → core/src}/shared/error/intor-error.js +0 -0
- package/dist/{src → next/src}/server/shared/logger/global-logger-pool.js +0 -0
- package/dist/{src/server/messages/shared → next/src/server/shared/messages}/global-messages-pool.js +0 -0
- package/dist/{src → types/src}/adapters/next/navigation/index.d.ts +0 -0
- package/dist/{src → types/src}/client/react/contexts/config/context.d.ts +0 -0
- package/dist/{src → types/src}/client/react/contexts/config/hook.d.ts +0 -0
- package/dist/{src → types/src}/client/react/contexts/config/index.d.ts +0 -0
- package/dist/{src → types/src}/client/react/contexts/intor-provider/index.d.ts +0 -0
- package/dist/{src → types/src}/client/react/contexts/locale/context.d.ts +0 -0
- package/dist/{src → types/src}/client/react/contexts/locale/hook.d.ts +0 -0
- package/dist/{src → types/src}/client/react/contexts/locale/index.d.ts +0 -0
- package/dist/{src → types/src}/client/react/contexts/locale/provider.d.ts +0 -0
- package/dist/{src → types/src}/client/react/contexts/locale/types.d.ts +4 -4
- /package/dist/{src → types/src}/client/react/contexts/messages/context.d.ts +0 -0
- /package/dist/{src → types/src}/client/react/contexts/messages/hook.d.ts +0 -0
- /package/dist/{src → types/src}/client/react/contexts/messages/index.d.ts +0 -0
- /package/dist/{src → types/src}/client/react/contexts/messages/provider.d.ts +0 -0
- /package/dist/{src → types/src}/client/react/contexts/translator/context.d.ts +0 -0
- /package/dist/{src → types/src}/client/react/contexts/translator/index.d.ts +0 -0
- /package/dist/{src → types/src}/client/react/contexts/translator/provider.d.ts +0 -0
- /package/dist/{src → types/src}/config/constants/cache.constants.d.ts +0 -0
- /package/dist/{src → types/src}/config/constants/cookie.constants.d.ts +0 -0
- /package/dist/{src → types/src}/config/constants/routing.constants.d.ts +0 -0
- /package/dist/{src → types/src}/config/resolvers/resolve-cache-options.d.ts +0 -0
- /package/dist/{src → types/src}/server/messages/load-local-messages/read-locale-messages/collect-file-entries/index.d.ts +0 -0
- /package/dist/{src → types/src}/server/messages/load-local-messages/read-locale-messages/index.d.ts +0 -0
- /package/dist/{src → types/src}/server/messages/load-local-messages/read-locale-messages/parse-file-entries/index.d.ts +0 -0
- /package/dist/{src → types/src}/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/json-reader.d.ts +0 -0
- /package/dist/{src → types/src}/server/messages/load-local-messages/read-locale-messages/parse-file-entries/utils/nest-object-from-path.d.ts +0 -0
- /package/dist/{src → types/src}/server/messages/load-remote-messages/fetch-locale-messages/index.d.ts +0 -0
- /package/dist/{src → types/src}/server/messages/load-remote-messages/fetch-locale-messages/utils/build-search-params.d.ts +0 -0
- /package/dist/{src → types/src}/server/messages/shared/types.d.ts +0 -0
- /package/dist/{src → types/src}/server/messages/shared/utils/is-valid-messages.d.ts +0 -0
- /package/dist/{src → types/src}/server/shared/logger/global-logger-pool.d.ts +0 -0
- /package/dist/{src → types/src}/server/translator/index.d.ts +0 -0
- /package/dist/{src → types/src}/shared/constants/prefix-placeholder.d.ts +0 -0
- /package/dist/{src → types/src}/shared/error/index.d.ts +0 -0
|
@@ -1,38 +0,0 @@
|
|
|
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 {};
|
|
@@ -1,15 +0,0 @@
|
|
|
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>;
|
|
@@ -1,7 +0,0 @@
|
|
|
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[];
|
|
@@ -1,4 +0,0 @@
|
|
|
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";
|
|
@@ -1,14 +0,0 @@
|
|
|
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>;
|
|
@@ -1,67 +0,0 @@
|
|
|
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 };
|
|
@@ -1,14 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
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";
|
|
@@ -1,11 +0,0 @@
|
|
|
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>;
|
|
@@ -1,85 +0,0 @@
|
|
|
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 };
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { CacheResolvedOptions } from "../../../config/types/cache.types";
|
|
2
|
-
import type { LoggerOptions } from "../../../config/types/logger.types";
|
|
3
|
-
import type { MessagesPool } from "../../../server/messages/shared/global-messages-pool";
|
|
4
|
-
import type { MessagesReader } from "../../../server/messages/shared/types";
|
|
5
|
-
export interface LoadLocalMessagesOptions {
|
|
6
|
-
pool?: MessagesPool;
|
|
7
|
-
rootDir?: string;
|
|
8
|
-
locale: string;
|
|
9
|
-
fallbackLocales?: string[];
|
|
10
|
-
namespaces?: string[];
|
|
11
|
-
extraOptions?: {
|
|
12
|
-
concurrency?: number;
|
|
13
|
-
cacheOptions?: CacheResolvedOptions;
|
|
14
|
-
loggerOptions?: LoggerOptions & {
|
|
15
|
-
id?: string;
|
|
16
|
-
};
|
|
17
|
-
exts?: string[];
|
|
18
|
-
messagesReader?: MessagesReader;
|
|
19
|
-
};
|
|
20
|
-
allowCacheWrite?: boolean;
|
|
21
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { LoadMessagesOptions, LoadMessagesResult } from "../../server/messages/types";
|
|
2
|
-
import type { GenConfigKeys } from "../../shared/types/generated.types";
|
|
3
|
-
/**
|
|
4
|
-
* Load messages for a given locale and pathname.
|
|
5
|
-
*
|
|
6
|
-
* - Resolve namespaces based on config and pathname.
|
|
7
|
-
* - Support both **local local** and **remote API** loaders.
|
|
8
|
-
* - Apply fallback locales if needed.
|
|
9
|
-
* - Cache messages if enabled (handled by underlying loader, not this function directly).
|
|
10
|
-
*/
|
|
11
|
-
export declare const loadMessages: <C extends GenConfigKeys = "__default__">({ config, locale, pathname, extraOptions: { exts, messagesReader }, allowCacheWrite, }: LoadMessagesOptions) => LoadMessagesResult<C>;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { LoadRemoteMessagesOptions } from "./types";
|
|
2
|
-
import type { LocaleMessages } from "intor-translator";
|
|
3
|
-
/**
|
|
4
|
-
* Load locale messages from a remote API.
|
|
5
|
-
*
|
|
6
|
-
* - Fetch messages for a target locale with optional fallback locales.
|
|
7
|
-
* - Cache messages if enabled.
|
|
8
|
-
*/
|
|
9
|
-
export declare const loadRemoteMessages: ({ pool, rootDir, remoteUrl, remoteHeaders, locale, fallbackLocales, namespaces, extraOptions: { cacheOptions, loggerOptions, }, allowCacheWrite, }: LoadRemoteMessagesOptions) => Promise<LocaleMessages | undefined>;
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { DEFAULT_CACHE_OPTIONS } from '../../../config/constants/cache.constants.js';
|
|
2
|
-
import { fetchLocaleMessages } from './fetch-locale-messages/fetch-locale-messages.js';
|
|
3
|
-
import { buildSearchParams } from './fetch-locale-messages/utils/build-search-params.js';
|
|
4
|
-
import { getGlobalMessagesPool } from '../shared/global-messages-pool.js';
|
|
5
|
-
import { getLogger } from '../../shared/logger/get-logger.js';
|
|
6
|
-
import 'lodash.merge';
|
|
7
|
-
import { normalizeCacheKey } from '../../../shared/utils/normalize-cache-key.js';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Load locale messages from a remote API.
|
|
11
|
-
*
|
|
12
|
-
* - Fetch messages for a target locale with optional fallback locales.
|
|
13
|
-
* - Cache messages if enabled.
|
|
14
|
-
*/
|
|
15
|
-
const loadRemoteMessages = async ({ pool = getGlobalMessagesPool(), rootDir, remoteUrl, remoteHeaders, locale, fallbackLocales = [], namespaces = [], extraOptions: { cacheOptions = DEFAULT_CACHE_OPTIONS, loggerOptions = { id: "default" }, } = {}, allowCacheWrite, }) => {
|
|
16
|
-
const baseLogger = getLogger({ ...loggerOptions });
|
|
17
|
-
const logger = baseLogger.child({ scope: "load-remote-messages" });
|
|
18
|
-
// Start performance measurement
|
|
19
|
-
const start = performance.now();
|
|
20
|
-
logger.debug("Loading remote messages from api.", { remoteUrl });
|
|
21
|
-
//====== Cache lookup ======
|
|
22
|
-
const key = normalizeCacheKey([
|
|
23
|
-
loggerOptions.id,
|
|
24
|
-
"loaderType:remote",
|
|
25
|
-
rootDir,
|
|
26
|
-
locale,
|
|
27
|
-
(fallbackLocales ?? []).toSorted().join(","),
|
|
28
|
-
(namespaces ?? []).toSorted().join(","),
|
|
29
|
-
]);
|
|
30
|
-
if (cacheOptions.enabled && key) {
|
|
31
|
-
const cached = await pool?.get(key);
|
|
32
|
-
if (cached) {
|
|
33
|
-
logger.debug("Messages cache hit.", { key });
|
|
34
|
-
return cached;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
// Build search params
|
|
38
|
-
const searchParams = buildSearchParams({ rootDir, namespaces });
|
|
39
|
-
//============================================================
|
|
40
|
-
// Fetch messages
|
|
41
|
-
//============================================================
|
|
42
|
-
const candidateLocales = [locale, ...(fallbackLocales || [])];
|
|
43
|
-
let messages;
|
|
44
|
-
for (const candidateLocale of candidateLocales) {
|
|
45
|
-
try {
|
|
46
|
-
const result = await fetchLocaleMessages({
|
|
47
|
-
remoteUrl,
|
|
48
|
-
remoteHeaders,
|
|
49
|
-
searchParams,
|
|
50
|
-
locale: candidateLocale,
|
|
51
|
-
extraOptions: { loggerOptions },
|
|
52
|
-
});
|
|
53
|
-
if (result && Object.values(result[candidateLocale] || {}).length > 0) {
|
|
54
|
-
messages = result;
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
logger.error("Failed to fetch locale messages.", {
|
|
60
|
-
locale: candidateLocale,
|
|
61
|
-
error,
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
//====== Cache ======
|
|
66
|
-
if (allowCacheWrite && cacheOptions.enabled && key && messages) {
|
|
67
|
-
await pool?.set(key, messages, cacheOptions.ttl);
|
|
68
|
-
}
|
|
69
|
-
// Log out validnamespaces & performance measurement
|
|
70
|
-
const end = performance.now();
|
|
71
|
-
const duration = Math.round(end - start);
|
|
72
|
-
logger.trace("Finished loading remote messages.", {
|
|
73
|
-
loadedLocale: messages ? Object.keys(messages)[0] : undefined,
|
|
74
|
-
duration: `${duration} ms`,
|
|
75
|
-
});
|
|
76
|
-
return messages;
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
export { loadRemoteMessages };
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { PREFIX_PLACEHOLDER } from "../../shared/constants/prefix-placeholder";
|
|
2
|
-
import type { LocaleMessages } from "intor-translator";
|
|
3
|
-
/**
|
|
4
|
-
* Conditional type for generated types.
|
|
5
|
-
* - Returns `Then` if `IntorGeneratedTypes` exists, otherwise `Else`.
|
|
6
|
-
*/
|
|
7
|
-
export type IfGen<Then, Else = never> = IntorGeneratedTypes extends void ? Else : Then;
|
|
8
|
-
/**
|
|
9
|
-
* Union of all configuration keys.
|
|
10
|
-
* - Defaults to `string` if `IntorGeneratedTypes` does not exist.
|
|
11
|
-
*/
|
|
12
|
-
export type GenConfigKeys = IfGen<keyof IntorGeneratedTypes, string>;
|
|
13
|
-
/**
|
|
14
|
-
* Configuration shape for a given config key.
|
|
15
|
-
* - If `IntorGeneratedTypes` is not defined, falls back to default shape.
|
|
16
|
-
* Otherwise, picks `Locales` and `Messages` according to the key.
|
|
17
|
-
*/
|
|
18
|
-
export type GenConfig<CK extends GenConfigKeys = "__default__"> = IntorGeneratedTypes extends void ? {
|
|
19
|
-
Locales: string;
|
|
20
|
-
Messages: LocaleMessages;
|
|
21
|
-
} : CK extends keyof IntorGeneratedTypes ? {
|
|
22
|
-
Locales: IntorGeneratedTypes[CK]["Locales"];
|
|
23
|
-
Messages: {
|
|
24
|
-
[K in IntorGeneratedTypes[CK]["Locales"]]: IntorGeneratedTypes[CK]["Messages"][typeof PREFIX_PLACEHOLDER];
|
|
25
|
-
};
|
|
26
|
-
} : never;
|
|
27
|
-
/** Extracts messages for a given config key */
|
|
28
|
-
export type GenMessages<CK extends GenConfigKeys = "__default__"> = GenConfig<CK>["Messages"];
|
|
29
|
-
/** Extracts locales for a given config key */
|
|
30
|
-
export type GenLocale<CK extends GenConfigKeys = "__default__"> = GenConfig<CK>["Locales"];
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { IfGen } from "../../shared/types/generated.types";
|
|
2
|
-
import { type Locale, type Replacement, type ScopedLeafKeys, type LocalizedLeafKeys, type LocaleMessages } from "intor-translator";
|
|
3
|
-
/** Base properties shared by all translator instances. */
|
|
4
|
-
export interface TranslatorBaseProps<M = unknown> {
|
|
5
|
-
/** `messages`: The message object containing all translations. */
|
|
6
|
-
messages: M;
|
|
7
|
-
/** Current locale in use. */
|
|
8
|
-
locale: Locale<M>;
|
|
9
|
-
}
|
|
10
|
-
/** Properties specific to client-side translator behavior. */
|
|
11
|
-
export interface TranslatorClientProps<M = unknown> {
|
|
12
|
-
/** `isLoading`: Indicates whether translations are currently loading. */
|
|
13
|
-
isLoading: boolean;
|
|
14
|
-
/** `setLocale`: Function to update the current locale. */
|
|
15
|
-
setLocale: (locale: Locale<M>) => void;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Conditional key type for TranslatorInstance.
|
|
19
|
-
* - Resolves to `ScopedLeafKeys` if a pre-key `PK` is provided,
|
|
20
|
-
* otherwise resolves to `LocalizedLeafKeys`.
|
|
21
|
-
*/
|
|
22
|
-
type Key<M extends LocaleMessages, PK> = IfGen<PK extends string ? ScopedLeafKeys<M, PK> : LocalizedLeafKeys<M>, string>;
|
|
23
|
-
/**
|
|
24
|
-
* Translator instance type.
|
|
25
|
-
* Combines base props, client props, and core translation methods.
|
|
26
|
-
*/
|
|
27
|
-
export type TranslatorInstance<M extends LocaleMessages, PK extends string | undefined = undefined> = {
|
|
28
|
-
/** Check if a given key exists in the messages. */
|
|
29
|
-
hasKey: (key?: Key<M, PK>, targetLocale?: Locale<M>) => boolean;
|
|
30
|
-
/** Translate a given key into its string representation. */
|
|
31
|
-
t: <Result = string>(key?: Key<M, PK>, replacements?: Replacement) => Result;
|
|
32
|
-
} & TranslatorBaseProps<M> & TranslatorClientProps<M>;
|
|
33
|
-
export {};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { CookieResolvedOptions } from "../../../config/types/cookie.types";
|
|
2
|
-
/**
|
|
3
|
-
* Builds a cookie string from given options and locale.
|
|
4
|
-
*
|
|
5
|
-
* @param cookie - Configuration for the cookie (name, path, domain, etc.)
|
|
6
|
-
* @param locale - The locale string to store in the cookie value
|
|
7
|
-
* @returns A formatted cookie string
|
|
8
|
-
*/
|
|
9
|
-
export declare const buildCookieString: (cookie: CookieResolvedOptions, locale: string) => string;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Builds a cookie string from given options and locale.
|
|
3
|
-
*
|
|
4
|
-
* @param cookie - Configuration for the cookie (name, path, domain, etc.)
|
|
5
|
-
* @param locale - The locale string to store in the cookie value
|
|
6
|
-
* @returns A formatted cookie string
|
|
7
|
-
*/
|
|
8
|
-
const buildCookieString = (cookie, locale) => {
|
|
9
|
-
// Cookie name and encoded value
|
|
10
|
-
const parts = [`${cookie.name}=${encodeURIComponent(locale)}`];
|
|
11
|
-
// Add expiration and max-age if provided
|
|
12
|
-
if (cookie.maxAge) {
|
|
13
|
-
const expires = new Date(Date.now() + cookie.maxAge * 1000).toUTCString();
|
|
14
|
-
parts.push(`expires=${expires}`, `max-age=${cookie.maxAge}`);
|
|
15
|
-
}
|
|
16
|
-
// Set path (default to "/")
|
|
17
|
-
parts.push(`path=${cookie.path ?? "/"}`);
|
|
18
|
-
// Add domain if specified
|
|
19
|
-
if (cookie.domain) {
|
|
20
|
-
parts.push(`domain=${cookie.domain}`);
|
|
21
|
-
}
|
|
22
|
-
// Add SameSite policy (e.g., Lax, Strict)
|
|
23
|
-
if (cookie.sameSite) {
|
|
24
|
-
parts.push(`SameSite=${cookie.sameSite[0].toUpperCase()}${cookie.sameSite.slice(1).toLowerCase()}`);
|
|
25
|
-
}
|
|
26
|
-
// Add Secure flag if not explicitly disabled
|
|
27
|
-
if (cookie.secure !== false) {
|
|
28
|
-
parts.push(`Secure`);
|
|
29
|
-
}
|
|
30
|
-
return parts.join("; ");
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export { buildCookieString };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { CookieResolvedOptions } from "../../../config/types/cookie.types";
|
|
2
|
-
interface SetLocaleCookieBrowserOptions {
|
|
3
|
-
cookie: CookieResolvedOptions;
|
|
4
|
-
locale: string;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Sets a locale cookie on the browser only.
|
|
8
|
-
*
|
|
9
|
-
* This function ensures the cookie is not set during SSR,
|
|
10
|
-
* and respects configuration flags such as `disabled` and `autoSetCookie`.
|
|
11
|
-
*/
|
|
12
|
-
export declare const setLocaleCookieBrowser: ({ cookie, locale, }: SetLocaleCookieBrowserOptions) => void;
|
|
13
|
-
export {};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { buildCookieString } from './build-cookie-string.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Sets a locale cookie on the browser only.
|
|
5
|
-
*
|
|
6
|
-
* This function ensures the cookie is not set during SSR,
|
|
7
|
-
* and respects configuration flags such as `disabled` and `autoSetCookie`.
|
|
8
|
-
*/
|
|
9
|
-
const setLocaleCookieBrowser = ({ cookie, locale, }) => {
|
|
10
|
-
if (typeof document === "undefined")
|
|
11
|
-
return;
|
|
12
|
-
// Skip if cookie setting is disabled or auto-set is turned off
|
|
13
|
-
if (!cookie.enabled || !cookie.autoSetCookie)
|
|
14
|
-
return;
|
|
15
|
-
// Build the cookie string using provided options
|
|
16
|
-
const cookieString = buildCookieString(cookie, locale);
|
|
17
|
-
// Set the cookie on the document
|
|
18
|
-
document.cookie = cookieString;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export { setLocaleCookieBrowser };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { mergeMessages } from "./merge-messages";
|
|
2
|
-
export { normalizeCacheKey } from "./normalize-cache-key";
|
|
3
|
-
export { resolveNamespaces } from "./resolve-namespaces";
|
|
4
|
-
export { normalizeLocale } from "./locale/normalize-locale";
|
|
5
|
-
export { resolvePreferredLocale } from "./locale/resolve-preferred-locale";
|
|
6
|
-
export { extractPathname } from "./pathname/extract-pathname";
|
|
7
|
-
export { normalizePathname } from "./pathname/normalize-pathname";
|
|
8
|
-
export { standardizePathname } from "./pathname/standardize-pathname";
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { Locale } from "intor-translator";
|
|
2
|
-
/**
|
|
3
|
-
* Resolves the preferred locale based on the Accept-Language header and supported locales.
|
|
4
|
-
*/
|
|
5
|
-
export declare const resolvePreferredLocale: (acceptLanguageHeader: string | undefined, supportedLocales?: readonly Locale[]) => string | undefined;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolves the preferred locale based on the Accept-Language header and supported locales.
|
|
3
|
-
*/
|
|
4
|
-
const resolvePreferredLocale = (acceptLanguageHeader, supportedLocales) => {
|
|
5
|
-
if (!acceptLanguageHeader ||
|
|
6
|
-
!supportedLocales ||
|
|
7
|
-
supportedLocales.length === 0) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
const supportedLocalesSet = new Set(supportedLocales);
|
|
11
|
-
const preferred = acceptLanguageHeader
|
|
12
|
-
.split(",")
|
|
13
|
-
.map((part) => {
|
|
14
|
-
const [lang, qValue] = part.split(";");
|
|
15
|
-
const q = qValue ? Number.parseFloat(qValue.split("=")[1]) : 1;
|
|
16
|
-
if (Number.isNaN(q)) {
|
|
17
|
-
return { lang: lang.trim(), q: 0 }; // Treat invalid q values as having 0 priority
|
|
18
|
-
}
|
|
19
|
-
return { lang: lang.trim(), q };
|
|
20
|
-
})
|
|
21
|
-
.toSorted((a, b) => b.q - a.q)
|
|
22
|
-
.find(({ lang }) => supportedLocalesSet.has(lang))?.lang;
|
|
23
|
-
return preferred;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export { resolvePreferredLocale };
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { LocaleMessages } from "intor-translator";
|
|
2
|
-
/**
|
|
3
|
-
* Deeply merges loaded messages into static messages by locale.
|
|
4
|
-
* - Loaded messages override static ones on conflict.
|
|
5
|
-
*/
|
|
6
|
-
export declare const mergeMessages: (staticMessages?: LocaleMessages, loadedMessages?: LocaleMessages | undefined) => LocaleMessages;
|