intor 2.3.13 → 2.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/core/export/index.js +1 -2
  2. package/dist/core/src/config/define-intor-config.js +0 -3
  3. package/dist/core/src/config/resolvers/resolve-cookie-options.js +0 -1
  4. package/dist/core/src/config/resolvers/resolve-fallback-locales.js +0 -1
  5. package/dist/core/src/config/resolvers/resolve-routing-options.js +0 -2
  6. package/dist/core/src/config/validators/validate-default-locale.js +0 -1
  7. package/dist/core/src/config/validators/validate-id.js +0 -1
  8. package/dist/core/src/config/validators/validate-supported-locales.js +0 -1
  9. package/dist/core/src/core/messages/global-messages-pool.js +11 -17
  10. package/dist/core/src/core/messages/load-remote-messages/load-remote-messages.js +1 -40
  11. package/dist/core/src/routing/pathname/get-unprefixed-pathname.js +0 -1
  12. package/dist/core/src/routing/pathname/locale-prefix-pathname.js +0 -1
  13. package/dist/core/src/routing/pathname/standardize-pathname.js +0 -1
  14. package/dist/core/src/server/intor/intor.js +0 -1
  15. package/dist/core/src/server/messages/load-local-messages/load-local-messages.js +9 -10
  16. package/dist/core/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.js +0 -1
  17. package/dist/core/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.js +0 -1
  18. package/dist/core/src/server/messages/load-messages.js +4 -8
  19. package/dist/core/src/server/runtime/create-intor-runtime.js +0 -1
  20. package/dist/express/src/adapters/express/helpers/get-translator.js +0 -1
  21. package/dist/express/src/adapters/express/middleware/create-intor.js +0 -1
  22. package/dist/express/src/core/messages/global-messages-pool.js +9 -3
  23. package/dist/express/src/core/messages/load-remote-messages/load-remote-messages.js +1 -40
  24. package/dist/express/src/routing/inbound/resolve-inbound.js +0 -1
  25. package/dist/express/src/routing/locale/get-locale-from-accept-language.js +0 -1
  26. package/dist/express/src/routing/locale/get-locale-from-host.js +0 -1
  27. package/dist/express/src/routing/locale/get-locale-from-pathname.js +0 -1
  28. package/dist/express/src/routing/locale/get-locale-from-query.js +0 -1
  29. package/dist/express/src/routing/pathname/get-unprefixed-pathname.js +0 -1
  30. package/dist/express/src/routing/pathname/locale-prefix-pathname.js +0 -1
  31. package/dist/express/src/routing/pathname/standardize-pathname.js +0 -1
  32. package/dist/express/src/server/messages/load-local-messages/load-local-messages.js +9 -10
  33. package/dist/express/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.js +0 -1
  34. package/dist/express/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.js +0 -1
  35. package/dist/express/src/server/messages/load-messages.js +4 -8
  36. package/dist/express/src/server/runtime/create-intor-runtime.js +0 -1
  37. package/dist/next/src/adapters/next/navigation/redirect.js +0 -1
  38. package/dist/next/src/adapters/next/navigation/use-pathname.js +0 -1
  39. package/dist/next/src/adapters/next/proxy/intor-proxy.js +0 -1
  40. package/dist/next/src/adapters/next/server/get-locale.js +0 -1
  41. package/dist/next/src/adapters/next/server/get-pathname.js +0 -1
  42. package/dist/next/src/adapters/next/server/get-translator.js +0 -1
  43. package/dist/next/src/adapters/next/server/intor.js +0 -1
  44. package/dist/next/src/core/messages/global-messages-pool.js +9 -3
  45. package/dist/next/src/core/messages/load-remote-messages/load-remote-messages.js +1 -40
  46. package/dist/next/src/policies/shoud-full-reload.js +0 -1
  47. package/dist/next/src/routing/inbound/resolve-inbound.js +0 -1
  48. package/dist/next/src/routing/locale/get-locale-from-accept-language.js +0 -1
  49. package/dist/next/src/routing/locale/get-locale-from-host.js +0 -1
  50. package/dist/next/src/routing/locale/get-locale-from-pathname.js +0 -1
  51. package/dist/next/src/routing/locale/get-locale-from-query.js +0 -1
  52. package/dist/next/src/routing/pathname/get-unprefixed-pathname.js +0 -1
  53. package/dist/next/src/routing/pathname/locale-prefix-pathname.js +0 -1
  54. package/dist/next/src/routing/pathname/standardize-pathname.js +0 -1
  55. package/dist/next/src/server/intor/intor.js +0 -1
  56. package/dist/next/src/server/messages/load-local-messages/load-local-messages.js +9 -10
  57. package/dist/next/src/server/messages/load-local-messages/read-locale-messages/collect-file-entries/collect-file-entries.js +0 -1
  58. package/dist/next/src/server/messages/load-local-messages/read-locale-messages/parse-file-entries/parse-file-entries.js +0 -1
  59. package/dist/next/src/server/messages/load-messages.js +4 -8
  60. package/dist/next/src/server/runtime/create-intor-runtime.js +0 -1
  61. package/dist/react/src/client/react/helpers/use-runtime-state.js +0 -1
  62. package/dist/react/src/client/react/navigation/use-execute-navigation.js +0 -1
  63. package/dist/react/src/client/react/navigation/use-resolve-navigation.js +0 -1
  64. package/dist/react/src/client/react/provider/effects/use-locale-effects.js +0 -1
  65. package/dist/react/src/client/shared/helpers/get-client-locale.js +0 -1
  66. package/dist/react/src/client/shared/messages/create-refetch-messages.js +0 -3
  67. package/dist/react/src/core/messages/load-remote-messages/load-remote-messages.js +1 -40
  68. package/dist/react/src/policies/shoud-full-reload.js +0 -1
  69. package/dist/react/src/routing/pathname/get-unprefixed-pathname.js +0 -1
  70. package/dist/react/src/routing/pathname/locale-prefix-pathname.js +0 -1
  71. package/dist/react/src/routing/pathname/standardize-pathname.js +0 -1
  72. package/dist/svelte/src/client/shared/helpers/get-client-locale.js +0 -1
  73. package/dist/svelte/src/client/shared/messages/create-refetch-messages.js +0 -3
  74. package/dist/svelte/src/client/svelte/helpers/create-runtime-state.js +0 -1
  75. package/dist/svelte/src/client/svelte/runtime/effects/locale-effects.js +0 -1
  76. package/dist/svelte/src/core/messages/load-remote-messages/load-remote-messages.js +1 -40
  77. package/dist/types/export/index.d.ts +1 -1
  78. package/dist/types/src/config/constants/index.d.ts +0 -1
  79. package/dist/types/src/config/index.d.ts +2 -2
  80. package/dist/types/src/config/types/index.d.ts +0 -1
  81. package/dist/types/src/config/types/intor-config.d.ts +0 -4
  82. package/dist/types/src/core/index.d.ts +1 -1
  83. package/dist/types/src/core/messages/global-messages-pool.d.ts +15 -12
  84. package/dist/types/src/core/messages/index.d.ts +1 -1
  85. package/dist/types/src/core/messages/load-remote-messages/load-remote-messages.d.ts +1 -2
  86. package/dist/types/src/core/messages/load-remote-messages/types.d.ts +1 -6
  87. package/dist/types/src/server/messages/load-local-messages/load-local-messages.d.ts +1 -1
  88. package/dist/vue/src/client/shared/helpers/get-client-locale.js +0 -1
  89. package/dist/vue/src/client/shared/messages/create-refetch-messages.js +0 -3
  90. package/dist/vue/src/client/vue/helpers/use-runtime-state.js +0 -1
  91. package/dist/vue/src/client/vue/provider/effects/use-locale-effects.js +0 -1
  92. package/dist/vue/src/core/messages/load-remote-messages/load-remote-messages.js +1 -40
  93. package/package.json +2 -3
  94. package/dist/core/src/config/constants/cache.js +0 -7
  95. package/dist/core/src/config/resolvers/resolve-cache-options.js +0 -11
  96. package/dist/react/src/core/utils/normalizers/normalize-cache-key.js +0 -45
  97. package/dist/svelte/src/core/utils/normalizers/normalize-cache-key.js +0 -45
  98. package/dist/types/src/config/constants/cache.d.ts +0 -2
  99. package/dist/types/src/config/resolvers/resolve-cache-options.d.ts +0 -2
  100. package/dist/types/src/config/types/cache.d.ts +0 -7
  101. package/dist/vue/src/core/utils/normalizers/normalize-cache-key.js +0 -45
@@ -2,7 +2,6 @@ import '../../core/error/intor-error.js';
2
2
  import { resolveLoaderOptions } from '../../core/utils/resolve-loader-options.js';
3
3
  import { getLogger } from '../../core/logger/get-logger.js';
4
4
  import { loadRemoteMessages } from '../../core/messages/load-remote-messages/load-remote-messages.js';
5
- import 'keyv';
6
5
  import { loadLocalMessages } from './load-local-messages/load-local-messages.js';
7
6
 
8
7
  /**
@@ -29,15 +28,15 @@ const loadMessages = async ({ config, locale, readOptions, allowCacheWrite = fal
29
28
  logger.warn("No loader options have been configured in the current config.");
30
29
  return;
31
30
  }
32
- const { type, namespaces } = loader;
31
+ const { type, namespaces, rootDir } = loader;
33
32
  const fallbackLocales = config.fallbackLocales[locale] || [];
34
33
  logger.info(`Loading messages for locale "${locale}".`);
35
34
  logger.trace("Starting to load messages with runtime context.", {
36
35
  loaderType: type,
36
+ rootDir,
37
37
  locale,
38
38
  fallbackLocales,
39
39
  namespaces: namespaces && namespaces.length > 0 ? [...namespaces] : ["*"],
40
- cache: config.cache,
41
40
  });
42
41
  // ---------------------------------------------------------------------------
43
42
  // Dispatch to loader implementation
@@ -49,7 +48,7 @@ const loadMessages = async ({ config, locale, readOptions, allowCacheWrite = fal
49
48
  locale,
50
49
  fallbackLocales,
51
50
  namespaces,
52
- rootDir: loader.rootDir,
51
+ rootDir,
53
52
  concurrency: loader.concurrency,
54
53
  readOptions,
55
54
  allowCacheWrite,
@@ -58,15 +57,12 @@ const loadMessages = async ({ config, locale, readOptions, allowCacheWrite = fal
58
57
  }
59
58
  else if (type === "remote") {
60
59
  loadedMessages = await loadRemoteMessages({
61
- id: config.id,
62
60
  locale,
63
61
  fallbackLocales,
64
62
  namespaces,
65
- rootDir: loader.rootDir,
63
+ rootDir,
66
64
  url: loader.url,
67
65
  headers: loader.headers,
68
- allowCacheWrite,
69
- cacheOptions: config.cache,
70
66
  loggerOptions: config.logger,
71
67
  });
72
68
  }
@@ -1,6 +1,5 @@
1
1
  import { IntorError, IntorErrorCode } from '../../core/error/intor-error.js';
2
2
  import 'logry';
3
- import 'keyv';
4
3
  import { loadMessages } from '../messages/load-messages.js';
5
4
  import { createTranslator } from '../translator/create-translator.js';
6
5
 
@@ -1,7 +1,6 @@
1
1
  import { redirect as redirect$1 } from 'next/navigation';
2
2
  import '../../../core/error/intor-error.js';
3
3
  import 'logry';
4
- import 'keyv';
5
4
  import { resolveNavigation } from '../../../routing/navigation/resolve-navigation.js';
6
5
  import { getLocale } from '../server/get-locale.js';
7
6
 
@@ -2,7 +2,6 @@ import { usePathname as usePathname$1 } from 'next/navigation';
2
2
  import { useIntor } from 'intor/react';
3
3
  import '../../../core/error/intor-error.js';
4
4
  import 'logry';
5
- import 'keyv';
6
5
  import { localizePathname } from '../../../routing/pathname/localize-pathname.js';
7
6
 
8
7
  /**
@@ -3,7 +3,6 @@ import { INTOR_HEADERS } from '../../../core/constants/headers.js';
3
3
  import '../../../core/error/intor-error.js';
4
4
  import { normalizeQuery } from '../../../core/utils/normalizers/normalize-query.js';
5
5
  import 'logry';
6
- import 'keyv';
7
6
  import { resolveInbound } from '../../../routing/inbound/resolve-inbound.js';
8
7
  import { getLocaleFromAcceptLanguage } from '../../../routing/locale/get-locale-from-accept-language.js';
9
8
 
@@ -2,7 +2,6 @@ import { headers } from 'next/headers';
2
2
  import { INTOR_HEADERS } from '../../../core/constants/headers.js';
3
3
  import '../../../core/error/intor-error.js';
4
4
  import 'logry';
5
- import 'keyv';
6
5
 
7
6
  /**
8
7
  * Get the locale for the current execution context.
@@ -2,7 +2,6 @@ import { headers } from 'next/headers';
2
2
  import { INTOR_HEADERS } from '../../../core/constants/headers.js';
3
3
  import '../../../core/error/intor-error.js';
4
4
  import 'logry';
5
- import 'keyv';
6
5
  import { localizePathname } from '../../../routing/pathname/localize-pathname.js';
7
6
 
8
7
  /**
@@ -1,6 +1,5 @@
1
1
  import '../../../core/error/intor-error.js';
2
2
  import 'logry';
3
- import 'keyv';
4
3
  import 'node:path';
5
4
  import 'p-limit';
6
5
  import 'node:fs/promises';
@@ -1,6 +1,5 @@
1
1
  import '../../../core/error/intor-error.js';
2
2
  import 'logry';
3
- import 'keyv';
4
3
  import { intor as intor$1 } from '../../../server/intor/intor.js';
5
4
  import 'node:path';
6
5
  import 'p-limit';
@@ -1,8 +1,14 @@
1
- import Keyv from 'keyv';
2
-
1
+ /**
2
+ * Get the global messages pool.
3
+ *
4
+ * Lazily initialized to ensure:
5
+ * - Cross-module sharing
6
+ * - Dev / HMR safety
7
+ */
3
8
  function getGlobalMessagesPool() {
4
9
  if (!globalThis.__INTOR_MESSAGES_POOL__) {
5
- globalThis.__INTOR_MESSAGES_POOL__ = new Keyv();
10
+ const pool = new Map();
11
+ globalThis.__INTOR_MESSAGES_POOL__ = pool;
6
12
  }
7
13
  return globalThis.__INTOR_MESSAGES_POOL__;
8
14
  }
@@ -1,5 +1,4 @@
1
1
  import { getLogger } from '../../logger/get-logger.js';
2
- import { normalizeCacheKey } from '../../utils/normalizers/normalize-cache-key.js';
3
2
  import { fetchLocaleMessages } from './fetch-locale-messages/fetch-locale-messages.js';
4
3
 
5
4
  /**
@@ -9,12 +8,11 @@ import { fetchLocaleMessages } from './fetch-locale-messages/fetch-locale-messag
9
8
  * It coordinates:
10
9
  *
11
10
  * - Locale resolution with fallbacks
12
- * - Cache read / write behavior
13
11
  * - Respecting abort signals across the entire async flow
14
12
  *
15
13
  * Network fetching and data validation are delegated to lower-level utilities.
16
14
  */
17
- const loadRemoteMessages = async ({ id, locale, fallbackLocales, namespaces, rootDir, url, headers, signal, pool, cacheOptions, allowCacheWrite = false, loggerOptions, }) => {
15
+ const loadRemoteMessages = async ({ locale, fallbackLocales, namespaces, rootDir, url, headers, signal, loggerOptions, }) => {
18
16
  const baseLogger = getLogger(loggerOptions);
19
17
  const logger = baseLogger.child({ scope: "load-remote-messages" });
20
18
  // Abort early if the request has already been cancelled
@@ -25,31 +23,6 @@ const loadRemoteMessages = async ({ id, locale, fallbackLocales, namespaces, roo
25
23
  const start = performance.now();
26
24
  logger.debug("Loading remote messages.", { url });
27
25
  // ---------------------------------------------------------------------------
28
- // Cache key resolution
29
- // ---------------------------------------------------------------------------
30
- const cacheKey = normalizeCacheKey([
31
- id,
32
- "loaderType:remote",
33
- rootDir,
34
- locale,
35
- (fallbackLocales || []).toSorted().join(","),
36
- (namespaces || []).toSorted().join(","),
37
- ]);
38
- // ---------------------------------------------------------------------------
39
- // Cache read
40
- // ---------------------------------------------------------------------------
41
- if (cacheOptions.enabled && cacheKey) {
42
- const cached = await pool?.get(cacheKey);
43
- if (signal?.aborted) {
44
- logger.debug("Remote message loading aborted after cache read.");
45
- return;
46
- }
47
- if (cached) {
48
- logger.debug("Messages cache hit.", { key: cacheKey });
49
- return cached;
50
- }
51
- }
52
- // ---------------------------------------------------------------------------
53
26
  // Resolve locale messages with ordered fallback strategy
54
27
  // ---------------------------------------------------------------------------
55
28
  const candidateLocales = [locale, ...(fallbackLocales || [])];
@@ -93,18 +66,6 @@ const loadRemoteMessages = async ({ id, locale, fallbackLocales, namespaces, roo
93
66
  });
94
67
  }
95
68
  }
96
- // ---------------------------------------------------------------------------
97
- // Cache write (explicitly permitted)
98
- // ---------------------------------------------------------------------------
99
- if (cacheOptions.enabled && allowCacheWrite) {
100
- if (signal?.aborted) {
101
- logger.debug("Remote message loading aborted before cache write.");
102
- return;
103
- }
104
- if (cacheKey && messages) {
105
- await pool?.set(cacheKey, messages, cacheOptions.ttl);
106
- }
107
- }
108
69
  // Final success log with resolved locale and timing
109
70
  if (messages) {
110
71
  logger.trace("Finished loading remote messages.", {
@@ -1,7 +1,6 @@
1
1
  import '../core/error/intor-error.js';
2
2
  import { resolveLoaderOptions } from '../core/utils/resolve-loader-options.js';
3
3
  import 'logry';
4
- import 'keyv';
5
4
 
6
5
  /**
7
6
  * Determine whether client-side navigation must be forced to reload.
@@ -1,6 +1,5 @@
1
1
  import '../../core/error/intor-error.js';
2
2
  import 'logry';
3
- import 'keyv';
4
3
  import { getLocaleFromPathname } from '../locale/get-locale-from-pathname.js';
5
4
  import { getLocaleFromHost } from '../locale/get-locale-from-host.js';
6
5
  import { getLocaleFromQuery } from '../locale/get-locale-from-query.js';
@@ -1,7 +1,6 @@
1
1
  import '../../core/error/intor-error.js';
2
2
  import { normalizeLocale } from '../../core/utils/normalizers/normalize-locale.js';
3
3
  import 'logry';
4
- import 'keyv';
5
4
 
6
5
  /**
7
6
  * Resolve locale from the `Accept-Language` header.
@@ -1,7 +1,6 @@
1
1
  import '../../core/error/intor-error.js';
2
2
  import { normalizeLocale } from '../../core/utils/normalizers/normalize-locale.js';
3
3
  import 'logry';
4
- import 'keyv';
5
4
 
6
5
  /**
7
6
  * Extract locale from hostname.
@@ -1,7 +1,6 @@
1
1
  import '../../core/error/intor-error.js';
2
2
  import { normalizePathname } from '../../core/utils/normalizers/normalize-pathname.js';
3
3
  import 'logry';
4
- import 'keyv';
5
4
 
6
5
  /**
7
6
  * Extracts the locale from a pathname, if present.
@@ -1,7 +1,6 @@
1
1
  import '../../core/error/intor-error.js';
2
2
  import { normalizeLocale } from '../../core/utils/normalizers/normalize-locale.js';
3
3
  import 'logry';
4
- import 'keyv';
5
4
 
6
5
  /**
7
6
  * Extracts locale from URL query parameters.
@@ -1,7 +1,6 @@
1
1
  import '../../core/error/intor-error.js';
2
2
  import { normalizePathname } from '../../core/utils/normalizers/normalize-pathname.js';
3
3
  import 'logry';
4
- import 'keyv';
5
4
 
6
5
  /**
7
6
  * Returns a canonical, locale-agnostic pathname.
@@ -2,7 +2,6 @@ import { PREFIX_PLACEHOLDER } from '../../core/constants/prefix-placeholder.js';
2
2
  import '../../core/error/intor-error.js';
3
3
  import { normalizePathname } from '../../core/utils/normalizers/normalize-pathname.js';
4
4
  import 'logry';
5
- import 'keyv';
6
5
 
7
6
  /**
8
7
  * Applies the configured locale prefix behavior to a standardized pathname.
@@ -2,7 +2,6 @@ import { PREFIX_PLACEHOLDER } from '../../core/constants/prefix-placeholder.js';
2
2
  import '../../core/error/intor-error.js';
3
3
  import { normalizePathname } from '../../core/utils/normalizers/normalize-pathname.js';
4
4
  import 'logry';
5
- import 'keyv';
6
5
 
7
6
  /**
8
7
  * Standardizes a canonical pathname by applying the base path
@@ -1,6 +1,5 @@
1
1
  import '../../core/error/intor-error.js';
2
2
  import { getLogger } from '../../core/logger/get-logger.js';
3
- import 'keyv';
4
3
  import { createIntorRuntime } from '../runtime/create-intor-runtime.js';
5
4
 
6
5
  /**
@@ -13,8 +13,8 @@ import { readLocaleMessages } from './read-locale-messages/read-locale-messages.
13
13
  * It coordinates:
14
14
  *
15
15
  * - Locale resolution with fallbacks
16
- * - Process-level memoization (read by default, write by ownership)
17
16
  * - Concurrency control for file system access
17
+ * - Process-level memoization (read by default, write by ownership)
18
18
  *
19
19
  * Local messages are cached for the lifetime of the process.
20
20
  * Cache writes are restricted to the primary initialization flow.
@@ -22,7 +22,6 @@ import { readLocaleMessages } from './read-locale-messages/read-locale-messages.
22
22
  * File traversal, parsing, and validation are delegated to lower-level utilities.
23
23
  */
24
24
  const loadLocalMessages = async ({ id, locale, fallbackLocales, namespaces, rootDir = "messages", concurrency = 10, readOptions, pool = getGlobalMessagesPool(), allowCacheWrite = false, loggerOptions, }) => {
25
- const isProd = process.env.NODE_ENV === "production";
26
25
  const baseLogger = getLogger(loggerOptions);
27
26
  const logger = baseLogger.child({ scope: "load-local-messages" });
28
27
  const start = performance.now();
@@ -38,14 +37,14 @@ const loadLocalMessages = async ({ id, locale, fallbackLocales, namespaces, root
38
37
  "loaderType:local",
39
38
  rootDir,
40
39
  locale,
41
- (fallbackLocales || []).toSorted().join(","),
42
- (namespaces || []).toSorted().join(","),
43
- ]);
40
+ fallbackLocales?.toSorted().join(","),
41
+ namespaces?.toSorted().join(","),
42
+ ].filter(Boolean));
44
43
  // ---------------------------------------------------------------------------
45
44
  // Cache read
46
45
  // ---------------------------------------------------------------------------
47
46
  if (cacheKey) {
48
- const cached = await pool?.get(cacheKey);
47
+ const cached = pool.get(cacheKey);
49
48
  if (cached) {
50
49
  logger.debug("Messages cache hit.", { key: cacheKey });
51
50
  return cached;
@@ -90,10 +89,10 @@ const loadLocalMessages = async ({ id, locale, fallbackLocales, namespaces, root
90
89
  // ---------------------------------------------------------------------------
91
90
  // Cache write (explicitly permitted)
92
91
  // ---------------------------------------------------------------------------
93
- if (allowCacheWrite && isProd) {
94
- if (cacheKey && messages) {
95
- await pool?.set(cacheKey, messages);
96
- }
92
+ const isProd = process.env.NODE_ENV === "production";
93
+ const canWriteCache = isProd && allowCacheWrite;
94
+ if (canWriteCache && cacheKey && messages) {
95
+ pool.set(cacheKey, messages);
97
96
  }
98
97
  // Final success log with resolved locale and timing
99
98
  if (messages) {
@@ -2,7 +2,6 @@ import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import '../../../../../core/error/intor-error.js';
4
4
  import { getLogger } from '../../../../../core/logger/get-logger.js';
5
- import 'keyv';
6
5
 
7
6
  /**
8
7
  * Recursively collects message file metadata under a given locale root.
@@ -3,7 +3,6 @@ import '../../../../../core/error/intor-error.js';
3
3
  import { deepMerge } from '../../../../../core/utils/deep-merge.js';
4
4
  import { getLogger } from '../../../../../core/logger/get-logger.js';
5
5
  import { isValidMessages } from '../../../../../core/messages/utils/is-valid-messages.js';
6
- import 'keyv';
7
6
  import { jsonReader } from './utils/json-reader.js';
8
7
  import { nestObjectFromPath } from './utils/nest-object-from-path.js';
9
8
 
@@ -2,7 +2,6 @@ import '../../core/error/intor-error.js';
2
2
  import { resolveLoaderOptions } from '../../core/utils/resolve-loader-options.js';
3
3
  import { getLogger } from '../../core/logger/get-logger.js';
4
4
  import { loadRemoteMessages } from '../../core/messages/load-remote-messages/load-remote-messages.js';
5
- import 'keyv';
6
5
  import { loadLocalMessages } from './load-local-messages/load-local-messages.js';
7
6
 
8
7
  /**
@@ -29,15 +28,15 @@ const loadMessages = async ({ config, locale, readOptions, allowCacheWrite = fal
29
28
  logger.warn("No loader options have been configured in the current config.");
30
29
  return;
31
30
  }
32
- const { type, namespaces } = loader;
31
+ const { type, namespaces, rootDir } = loader;
33
32
  const fallbackLocales = config.fallbackLocales[locale] || [];
34
33
  logger.info(`Loading messages for locale "${locale}".`);
35
34
  logger.trace("Starting to load messages with runtime context.", {
36
35
  loaderType: type,
36
+ rootDir,
37
37
  locale,
38
38
  fallbackLocales,
39
39
  namespaces: namespaces && namespaces.length > 0 ? [...namespaces] : ["*"],
40
- cache: config.cache,
41
40
  });
42
41
  // ---------------------------------------------------------------------------
43
42
  // Dispatch to loader implementation
@@ -49,7 +48,7 @@ const loadMessages = async ({ config, locale, readOptions, allowCacheWrite = fal
49
48
  locale,
50
49
  fallbackLocales,
51
50
  namespaces,
52
- rootDir: loader.rootDir,
51
+ rootDir,
53
52
  concurrency: loader.concurrency,
54
53
  readOptions,
55
54
  allowCacheWrite,
@@ -58,15 +57,12 @@ const loadMessages = async ({ config, locale, readOptions, allowCacheWrite = fal
58
57
  }
59
58
  else if (type === "remote") {
60
59
  loadedMessages = await loadRemoteMessages({
61
- id: config.id,
62
60
  locale,
63
61
  fallbackLocales,
64
62
  namespaces,
65
- rootDir: loader.rootDir,
63
+ rootDir,
66
64
  url: loader.url,
67
65
  headers: loader.headers,
68
- allowCacheWrite,
69
- cacheOptions: config.cache,
70
66
  loggerOptions: config.logger,
71
67
  });
72
68
  }
@@ -1,6 +1,5 @@
1
1
  import { IntorError, IntorErrorCode } from '../../core/error/intor-error.js';
2
2
  import 'logry';
3
- import 'keyv';
4
3
  import { loadMessages } from '../messages/load-messages.js';
5
4
  import { createTranslator } from '../translator/create-translator.js';
6
5
 
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import '../../../core/error/intor-error.js';
3
3
  import 'logry';
4
- import 'keyv';
5
4
  import { mergeMessages } from '../../../core/messages/merge-messages.js';
6
5
  import { getClientLocale } from '../../shared/helpers/get-client-locale.js';
7
6
 
@@ -2,7 +2,6 @@ import { setLocaleCookieBrowser } from '../../shared/utils/locale/set-locale-coo
2
2
  import { shouldPersist } from '../../../policies/should-persist.js';
3
3
  import '../../../core/error/intor-error.js';
4
4
  import 'logry';
5
- import 'keyv';
6
5
  import { shouldSyncLocale } from '../../../policies/should-sync-locale.js';
7
6
  import '../provider/intor-provider.js';
8
7
  import { useIntor } from '../provider/use-intor.js';
@@ -1,6 +1,5 @@
1
1
  import '../../../core/error/intor-error.js';
2
2
  import 'logry';
3
- import 'keyv';
4
3
  import { resolveNavigation } from '../../../routing/navigation/resolve-navigation.js';
5
4
  import '../provider/intor-provider.js';
6
5
  import { useIntor } from '../provider/use-intor.js';
@@ -4,7 +4,6 @@ import { shouldPersist } from '../../../../policies/should-persist.js';
4
4
  import { shouldPersistOnFirstVisit } from '../../../../policies/should-persist-on-first-visit.js';
5
5
  import '../../../../core/error/intor-error.js';
6
6
  import 'logry';
7
- import 'keyv';
8
7
  import { getLocaleCookieBrowser } from '../../../shared/utils/locale/get-locale-cookie-browser.js';
9
8
  import { setLocaleCookieBrowser } from '../../../shared/utils/locale/set-locale-cookie-browser.js';
10
9
  import { setDocumentLocale } from '../../../shared/utils/locale/set-document-locale.js';
@@ -1,7 +1,6 @@
1
1
  import '../../../core/error/intor-error.js';
2
2
  import { normalizeLocale } from '../../../core/utils/normalizers/normalize-locale.js';
3
3
  import 'logry';
4
- import 'keyv';
5
4
  import { detectBrowserLocale } from '../utils/locale/detect-browser-locale.js';
6
5
  import { getLocaleCookieBrowser } from '../utils/locale/get-locale-cookie-browser.js';
7
6
 
@@ -2,7 +2,6 @@ import '../../../core/error/intor-error.js';
2
2
  import { resolveLoaderOptions } from '../../../core/utils/resolve-loader-options.js';
3
3
  import 'logry';
4
4
  import { loadRemoteMessages } from '../../../core/messages/load-remote-messages/load-remote-messages.js';
5
- import 'keyv';
6
5
  import { mergeMessages } from '../../../core/messages/merge-messages.js';
7
6
 
8
7
  /**
@@ -27,7 +26,6 @@ const createRefetchMessages = ({ config, onLoadingStart, onLoadingEnd, onMessage
27
26
  onLoadingStart?.();
28
27
  try {
29
28
  const loadedMessages = await loadRemoteMessages({
30
- id: config.id,
31
29
  locale: newLocale,
32
30
  fallbackLocales: config.fallbackLocales[newLocale] || [],
33
31
  namespaces: loader.namespaces,
@@ -35,7 +33,6 @@ const createRefetchMessages = ({ config, onLoadingStart, onLoadingEnd, onMessage
35
33
  url: loader.url,
36
34
  headers: loader.headers,
37
35
  signal: currentController.signal,
38
- cacheOptions: config.cache,
39
36
  loggerOptions: config.logger,
40
37
  });
41
38
  // Apply state updates only when this request is still the active one
@@ -1,5 +1,4 @@
1
1
  import { getLogger } from '../../logger/get-logger.js';
2
- import { normalizeCacheKey } from '../../utils/normalizers/normalize-cache-key.js';
3
2
  import { fetchLocaleMessages } from './fetch-locale-messages/fetch-locale-messages.js';
4
3
 
5
4
  /**
@@ -9,12 +8,11 @@ import { fetchLocaleMessages } from './fetch-locale-messages/fetch-locale-messag
9
8
  * It coordinates:
10
9
  *
11
10
  * - Locale resolution with fallbacks
12
- * - Cache read / write behavior
13
11
  * - Respecting abort signals across the entire async flow
14
12
  *
15
13
  * Network fetching and data validation are delegated to lower-level utilities.
16
14
  */
17
- const loadRemoteMessages = async ({ id, locale, fallbackLocales, namespaces, rootDir, url, headers, signal, pool, cacheOptions, allowCacheWrite = false, loggerOptions, }) => {
15
+ const loadRemoteMessages = async ({ locale, fallbackLocales, namespaces, rootDir, url, headers, signal, loggerOptions, }) => {
18
16
  const baseLogger = getLogger(loggerOptions);
19
17
  const logger = baseLogger.child({ scope: "load-remote-messages" });
20
18
  // Abort early if the request has already been cancelled
@@ -25,31 +23,6 @@ const loadRemoteMessages = async ({ id, locale, fallbackLocales, namespaces, roo
25
23
  const start = performance.now();
26
24
  logger.debug("Loading remote messages.", { url });
27
25
  // ---------------------------------------------------------------------------
28
- // Cache key resolution
29
- // ---------------------------------------------------------------------------
30
- const cacheKey = normalizeCacheKey([
31
- id,
32
- "loaderType:remote",
33
- rootDir,
34
- locale,
35
- (fallbackLocales || []).toSorted().join(","),
36
- (namespaces || []).toSorted().join(","),
37
- ]);
38
- // ---------------------------------------------------------------------------
39
- // Cache read
40
- // ---------------------------------------------------------------------------
41
- if (cacheOptions.enabled && cacheKey) {
42
- const cached = await pool?.get(cacheKey);
43
- if (signal?.aborted) {
44
- logger.debug("Remote message loading aborted after cache read.");
45
- return;
46
- }
47
- if (cached) {
48
- logger.debug("Messages cache hit.", { key: cacheKey });
49
- return cached;
50
- }
51
- }
52
- // ---------------------------------------------------------------------------
53
26
  // Resolve locale messages with ordered fallback strategy
54
27
  // ---------------------------------------------------------------------------
55
28
  const candidateLocales = [locale, ...(fallbackLocales || [])];
@@ -93,18 +66,6 @@ const loadRemoteMessages = async ({ id, locale, fallbackLocales, namespaces, roo
93
66
  });
94
67
  }
95
68
  }
96
- // ---------------------------------------------------------------------------
97
- // Cache write (explicitly permitted)
98
- // ---------------------------------------------------------------------------
99
- if (cacheOptions.enabled && allowCacheWrite) {
100
- if (signal?.aborted) {
101
- logger.debug("Remote message loading aborted before cache write.");
102
- return;
103
- }
104
- if (cacheKey && messages) {
105
- await pool?.set(cacheKey, messages, cacheOptions.ttl);
106
- }
107
- }
108
69
  // Final success log with resolved locale and timing
109
70
  if (messages) {
110
71
  logger.trace("Finished loading remote messages.", {
@@ -1,7 +1,6 @@
1
1
  import '../core/error/intor-error.js';
2
2
  import { resolveLoaderOptions } from '../core/utils/resolve-loader-options.js';
3
3
  import 'logry';
4
- import 'keyv';
5
4
 
6
5
  /**
7
6
  * Determine whether client-side navigation must be forced to reload.
@@ -1,7 +1,6 @@
1
1
  import '../../core/error/intor-error.js';
2
2
  import { normalizePathname } from '../../core/utils/normalizers/normalize-pathname.js';
3
3
  import 'logry';
4
- import 'keyv';
5
4
 
6
5
  /**
7
6
  * Returns a canonical, locale-agnostic pathname.
@@ -2,7 +2,6 @@ import { PREFIX_PLACEHOLDER } from '../../core/constants/prefix-placeholder.js';
2
2
  import '../../core/error/intor-error.js';
3
3
  import { normalizePathname } from '../../core/utils/normalizers/normalize-pathname.js';
4
4
  import 'logry';
5
- import 'keyv';
6
5
 
7
6
  /**
8
7
  * Applies the configured locale prefix behavior to a standardized pathname.
@@ -2,7 +2,6 @@ import { PREFIX_PLACEHOLDER } from '../../core/constants/prefix-placeholder.js';
2
2
  import '../../core/error/intor-error.js';
3
3
  import { normalizePathname } from '../../core/utils/normalizers/normalize-pathname.js';
4
4
  import 'logry';
5
- import 'keyv';
6
5
 
7
6
  /**
8
7
  * Standardizes a canonical pathname by applying the base path
@@ -1,7 +1,6 @@
1
1
  import '../../../core/error/intor-error.js';
2
2
  import { normalizeLocale } from '../../../core/utils/normalizers/normalize-locale.js';
3
3
  import 'logry';
4
- import 'keyv';
5
4
  import { detectBrowserLocale } from '../utils/locale/detect-browser-locale.js';
6
5
  import { getLocaleCookieBrowser } from '../utils/locale/get-locale-cookie-browser.js';
7
6