@better-i18n/next 0.6.2 → 0.7.0

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=server-locale-resolution.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-locale-resolution.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/server-locale-resolution.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ import { describe, it, expect, vi } from "vitest";
2
+ // Mock modules not available in test environment
3
+ vi.mock("react", () => ({ cache: (fn) => fn }));
4
+ vi.mock("next-intl/server", () => ({ getRequestConfig: (fn) => fn }));
5
+ vi.mock("next/headers", () => ({}));
6
+ // Import after mocks
7
+ const { resolveLocaleFromRequest } = await import("../server.js");
8
+ // ─── Test fixtures ──────────────────────────────────────────────────
9
+ const LOCALES = ["en", "tr", "de"];
10
+ const DEFAULT_LOCALE = "en";
11
+ // ─── URL-based modes ("always" / "as-needed") ───────────────────────
12
+ describe("resolveLocaleFromRequest — URL-based modes", () => {
13
+ it.each(["always", "as-needed"])("%s: requestLocale valid → uses requestLocale (ignores header & cookie)", (mode) => {
14
+ const result = resolveLocaleFromRequest("de", "tr", // cookie
15
+ "tr", // header
16
+ LOCALES, DEFAULT_LOCALE, mode);
17
+ expect(result).toBe("de");
18
+ });
19
+ it.each(["always", "as-needed"])("%s: requestLocale undefined + header valid → uses header (not cookie)", (mode) => {
20
+ const result = resolveLocaleFromRequest(undefined, "de", // cookie — should be ignored
21
+ "tr", // header — should be used
22
+ LOCALES, DEFAULT_LOCALE, mode);
23
+ expect(result).toBe("tr");
24
+ });
25
+ it.each(["always", "as-needed"])("%s: requestLocale undefined + no header + cookie → defaultLocale (cookie ignored)", (mode) => {
26
+ const result = resolveLocaleFromRequest(undefined, "tr", // cookie — should be ignored
27
+ null, // no header
28
+ LOCALES, DEFAULT_LOCALE, mode);
29
+ expect(result).toBe("en");
30
+ });
31
+ it.each(["always", "as-needed"])("%s: requestLocale undefined + no header + no cookie → defaultLocale", (mode) => {
32
+ const result = resolveLocaleFromRequest(undefined, null, null, LOCALES, DEFAULT_LOCALE, mode);
33
+ expect(result).toBe("en");
34
+ });
35
+ it.each(["always", "as-needed"])("%s: requestLocale invalid + header valid → defaultLocale (requestLocale truthy)", (mode) => {
36
+ const result = resolveLocaleFromRequest("fr", null, "tr", LOCALES, DEFAULT_LOCALE, mode);
37
+ expect(result).toBe("en");
38
+ });
39
+ });
40
+ // ─── "never" mode (cookie is source of truth) ───────────────────────
41
+ describe('resolveLocaleFromRequest — "never" mode', () => {
42
+ it("requestLocale undefined + cookie valid → cookie fallback", () => {
43
+ const result = resolveLocaleFromRequest(undefined, "tr", // cookie
44
+ null, // header (not used in "never")
45
+ LOCALES, DEFAULT_LOCALE, "never");
46
+ expect(result).toBe("tr");
47
+ });
48
+ it("requestLocale undefined + no cookie → defaultLocale", () => {
49
+ const result = resolveLocaleFromRequest(undefined, null, null, LOCALES, DEFAULT_LOCALE, "never");
50
+ expect(result).toBe("en");
51
+ });
52
+ it("requestLocale undefined + cookie invalid → defaultLocale", () => {
53
+ const result = resolveLocaleFromRequest(undefined, "fr", null, LOCALES, DEFAULT_LOCALE, "never");
54
+ expect(result).toBe("en");
55
+ });
56
+ it("requestLocale valid + cookie valid → requestLocale takes priority", () => {
57
+ const result = resolveLocaleFromRequest("de", "tr", null, LOCALES, DEFAULT_LOCALE, "never");
58
+ expect(result).toBe("de");
59
+ });
60
+ it("requestLocale invalid + cookie valid → defaultLocale (requestLocale truthy, cookie not checked)", () => {
61
+ const result = resolveLocaleFromRequest("fr", "tr", null, LOCALES, DEFAULT_LOCALE, "never");
62
+ expect(result).toBe("en");
63
+ });
64
+ it("cookie is used over header in never mode", () => {
65
+ const result = resolveLocaleFromRequest(undefined, "tr", // cookie — used in "never"
66
+ "de", // header — ignored in "never"
67
+ LOCALES, DEFAULT_LOCALE, "never");
68
+ expect(result).toBe("tr");
69
+ });
70
+ });
71
+ //# sourceMappingURL=server-locale-resolution.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-locale-resolution.test.js","sourceRoot":"","sources":["../../src/__tests__/server-locale-resolution.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAU7C,MAAM,WAAW,uBAAuB;IACtC,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,EAAE,QAAQ,CAAC;IACnB,gEAAgE;IAChE,MAAM,EAAE,UAAU,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,eAAe,EACzB,MAAM,EACN,QAAQ,EAAE,YAAY,EACtB,QAAQ,GACT,EAAE,uBAAuB,2CAmEzB;AAID,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC;AAcF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,UAAU,KAAG,0BAoFzD,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAiB1E;AAuBD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAkC7C,MAAM,WAAW,uBAAuB;IACtC,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,EAAE,QAAQ,CAAC;IACnB,gEAAgE;IAChE,MAAM,EAAE,UAAU,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,eAAe,EACzB,MAAM,EACN,QAAQ,EAAE,YAAY,EACtB,QAAQ,GACT,EAAE,uBAAuB,2CA8EzB;AAID,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC;AAcF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,UAAU,KAAG,0BAoFzD,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAiB1E;AAmCD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,iCAAiC,CAAC"}
package/dist/client.js CHANGED
@@ -1,10 +1,26 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { createContext, useCallback, useContext, useEffect, useMemo, useState, } from "react";
4
- import { useRouter } from "next/navigation";
4
+ import { useRouter, usePathname } from "next/navigation";
5
5
  import { NextIntlClientProvider } from "next-intl";
6
6
  import { createI18nCore } from "@better-i18n/core";
7
7
  import { normalizeConfig } from "./config.js";
8
+ // ─── Helpers ─────────────────────────────────────────────────────────
9
+ function buildLocalePath(pathname, currentLocale, newLocale, defaultLocale, localePrefix) {
10
+ if (localePrefix === "always") {
11
+ const rest = pathname.replace(new RegExp(`^/${currentLocale}(/|$)`), "/");
12
+ return `/${newLocale}${rest === "/" ? "" : rest}`;
13
+ }
14
+ // "as-needed": default locale has no prefix, others do
15
+ const currentIsDefault = currentLocale === defaultLocale;
16
+ const newIsDefault = newLocale === defaultLocale;
17
+ if (currentIsDefault) {
18
+ return newIsDefault ? pathname : `/${newLocale}${pathname}`;
19
+ }
20
+ const rest = pathname.replace(new RegExp(`^/${currentLocale}(/|$)`), "/");
21
+ const clean = rest === "/" ? "" : rest;
22
+ return newIsDefault ? (clean || "/") : `/${newLocale}${clean}`;
23
+ }
8
24
  const BetterI18nContext = createContext(null);
9
25
  /**
10
26
  * Provider that wraps `NextIntlClientProvider` and enables instant locale
@@ -51,9 +67,12 @@ export function BetterI18nProvider({ locale: initialLocale, messages: initialMes
51
67
  config.staticData,
52
68
  config.fetchTimeout,
53
69
  config.retryCount,
70
+ config.localePrefix,
54
71
  ]);
55
72
  // Provider-level memoized core instance — reused by setLocale
56
73
  const i18nCore = useMemo(() => createI18nCore(normalized), [normalized]);
74
+ const router = useRouter();
75
+ const pathname = usePathname();
57
76
  const [locale, setLocaleState] = useState(initialLocale);
58
77
  const [messages, setMessages] = useState(initialMessages);
59
78
  // Sync with server-provided values when they change (e.g. navigation to a new page)
@@ -72,13 +91,20 @@ export function BetterI18nProvider({ locale: initialLocale, messages: initialMes
72
91
  // 3. Instant client-side update — no server round-trip
73
92
  setLocaleState(newLocale);
74
93
  setMessages(newMessages);
94
+ // 4. Sync server components via navigation or refresh
95
+ if (normalized.localePrefix === "never") {
96
+ router.refresh();
97
+ }
98
+ else {
99
+ const newPath = buildLocalePath(pathname, locale, newLocale, normalized.defaultLocale, normalized.localePrefix);
100
+ router.replace(newPath);
101
+ }
75
102
  }
76
103
  catch (err) {
77
- console.error("[better-i18n] Client-side locale switch failed, falling back to refresh:", err);
78
- // Fallback: let the server handle it
104
+ console.error("[better-i18n] Client-side locale switch failed:", err);
79
105
  window.location.reload();
80
106
  }
81
- }, [locale, normalized.cookieName, i18nCore]);
107
+ }, [locale, normalized.cookieName, normalized.localePrefix, normalized.defaultLocale, i18nCore, router, pathname]);
82
108
  return (_jsx(BetterI18nContext.Provider, { value: { setLocale }, children: _jsx(NextIntlClientProvider, { locale: locale, messages: messages, timeZone: timeZone, children: children }) }));
83
109
  }
84
110
  // Client-side request deduplication cache
@@ -216,18 +242,30 @@ export function useSetLocale(config) {
216
242
  }
217
243
  return useStandaloneSetLocale(config);
218
244
  }
219
- /** Internal standalone hook — cookie + router.refresh() */
245
+ /** Internal standalone hook — cookie + URL navigation (or refresh for "never") */
220
246
  function useStandaloneSetLocale(config) {
221
247
  const normalized = useMemo(() => normalizeConfig(config), [
222
248
  config.project,
223
249
  config.defaultLocale,
224
250
  config.cookieName,
251
+ config.localePrefix,
225
252
  ]);
226
253
  const router = useRouter();
227
- return useCallback((locale) => {
228
- document.cookie = `${normalized.cookieName}=${locale}; path=/; max-age=31536000; samesite=lax`;
229
- router.refresh();
230
- }, [normalized.cookieName, router]);
254
+ const pathname = usePathname();
255
+ return useCallback((newLocale) => {
256
+ document.cookie = `${normalized.cookieName}=${newLocale}; path=/; max-age=31536000; samesite=lax`;
257
+ if (normalized.localePrefix === "never") {
258
+ router.refresh();
259
+ }
260
+ else {
261
+ // Detect current locale from URL segment
262
+ const segment = pathname.split("/")[1] || "";
263
+ const currentLocale = /^[a-z]{2,3}(-[a-z]{2,4})?$/i.test(segment)
264
+ ? segment : normalized.defaultLocale;
265
+ const newPath = buildLocalePath(pathname, currentLocale, newLocale, normalized.defaultLocale, normalized.localePrefix);
266
+ router.replace(newPath);
267
+ }
268
+ }, [normalized.cookieName, normalized.localePrefix, normalized.defaultLocale, router, pathname]);
231
269
  }
232
270
  // ─── LocaleDropdown ──────────────────────────────────────────────────
233
271
  export { LocaleDropdown } from "./components/locale-dropdown.js";
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -66,6 +66,5 @@ export { BetterI18nProvider, useManifestLanguages, useSetLocale } from "./client
66
66
  export type { BetterI18nProviderProps } from "./client.js";
67
67
  export type { I18nConfig, LanguageOption, Locale, LocalePrefix, LogLevel, ManifestLanguage, ManifestResponse, Messages, } from "./types.js";
68
68
  export type { I18nMiddlewareConfig } from "@better-i18n/core";
69
- export { createRevalidateHandler } from "./revalidate.js";
70
69
  export type { RevalidateHandlerOptions, WebhookPayload } from "./revalidate.js";
71
70
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C,OAAO,EAGL,0BAA0B,EAC1B,iBAAiB,EACjB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,UAAU;;;IAOzC,0EAA0E;;;;oBAuEq9B,CAAC;;;;IAhEhiC;;;;;;;;;;;;;;;;;OAiBG;kCAC2B,kBAAkB;CAgBnD,CAAC;AAGF,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrF,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG3D,YAAY,EACV,UAAU,EACV,cAAc,EACd,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,GACT,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C,OAAO,EAGL,0BAA0B,EAC1B,iBAAiB,EACjB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,UAAU;;;IAOzC,0EAA0E;;;;oBAuE84B,CAAC;;;;IAhEz9B;;;;;;;;;;;;;;;;;OAiBG;kCAC2B,kBAAkB;CAgBnD,CAAC;AAGF,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrF,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG3D,YAAY,EACV,UAAU,EACV,cAAc,EACd,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,GACT,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,YAAY,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -79,6 +79,4 @@ export { createBetterI18nMiddleware, composeMiddleware };
79
79
  export { createNextI18nCore } from "./server.js";
80
80
  // Client hooks & provider
81
81
  export { BetterI18nProvider, useManifestLanguages, useSetLocale } from "./client.js";
82
- // Webhook revalidation handler
83
- export { createRevalidateHandler } from "./revalidate.js";
84
82
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAkB,EAAE,EAAE;IAC/C,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAE5C,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,2BAA2B,CAAC,UAAU,CAAC;QACtD,0EAA0E;QAC1E,UAAU,EAAE,oBAAoB,CAAC,UAAU,CAAC;QAC5C,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC;QAClC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;QAE7B;;;;;;;;;;;;;;;;;WAiBG;QACH,gBAAgB,EAAE,CAAC,QAA6B,EAAE,EAAE;YAClD,OAAO,0BAA0B,CAC/B;gBACE,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,YAAY,EAAE,UAAU,CAAC,YAAY;gBACrC,SAAS,EAAE;oBACT,MAAM,EAAE,IAAI;oBACZ,eAAe,EAAE,IAAI;oBACrB,UAAU,EAAE,UAAU,CAAC,UAAU;iBAClC;aACF,EACD,QAAQ,CACT,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,uCAAuC;AACvC,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,CAAC;AAGzD,wBAAwB;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,0BAA0B;AAC1B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiBrF,+BAA+B;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAkB,EAAE,EAAE;IAC/C,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAE5C,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,2BAA2B,CAAC,UAAU,CAAC;QACtD,0EAA0E;QAC1E,UAAU,EAAE,oBAAoB,CAAC,UAAU,CAAC;QAC5C,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC;QAClC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;QAE7B;;;;;;;;;;;;;;;;;WAiBG;QACH,gBAAgB,EAAE,CAAC,QAA6B,EAAE,EAAE;YAClD,OAAO,0BAA0B,CAC/B;gBACE,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,YAAY,EAAE,UAAU,CAAC,YAAY;gBACrC,SAAS,EAAE;oBACT,MAAM,EAAE,IAAI;oBACZ,eAAe,EAAE,IAAI;oBACrB,UAAU,EAAE,UAAU,CAAC,UAAU;iBAClC;aACF,EACD,QAAQ,CACT,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,uCAAuC;AACvC,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,CAAC;AAGzD,wBAAwB;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,0BAA0B;AAC1B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,iBAAiB,KACvB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,UAAU,MAIpB,SAAS,WAAW,mCAYtD,CAAC;AAEF,eAAO,MAAM,eAAe,WAlBiB,UAAU,MAIpB,SAAS,WAAW,mCAcJ,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,CAAC,EAAE,kBAAkB,IAkBf,SAAS,WAAW,KAAG,OAAO,CAAC,YAAY,CAAC,CA+E3D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,IAUpD,SAAS,WAAW,KAAG,OAAO,CAAC,YAAY,CAAC,CA0B3D"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,iBAAiB,KACvB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,UAAU,MAIpB,SAAS,WAAW,mCAYtD,CAAC;AAEF,eAAO,MAAM,eAAe,WAlBiB,UAAU,MAIpB,SAAS,WAAW,mCAcJ,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,CAAC,EAAE,kBAAkB,IAkBf,SAAS,WAAW,KAAG,OAAO,CAAC,YAAY,CAAC,CAoH3D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,IAUpD,SAAS,WAAW,KAAG,OAAO,CAAC,YAAY,CAAC,CA0B3D"}
@@ -83,14 +83,27 @@ export function createBetterI18nMiddleware(config, callback) {
83
83
  const detectedLocale = result.locale;
84
84
  let response;
85
85
  if (localePrefix === "never") {
86
- // 3a. "never" mode: bypass next-intl middleware entirely.
87
- // next-intl's createMiddleware tries URL rewriting which breaks cookie-only locale.
88
- // We create a plain response and set the header that next-intl's getRequestConfig reads.
89
- response = NextResponse.next();
90
- response.headers.set("x-middleware-request-x-next-intl-locale", detectedLocale);
86
+ // 3a. "never" mode: replicate next-intl's exact rewrite mechanism.
87
+ // - new URL() instead of nextUrl.clone() — NextURL internal state breaks rewrite
88
+ // - Headers via { request: { headers } } response.headers don't reach page handler
89
+ // - X-NEXT-INTL-LOCALE header — getRequestConfig reads this to determine locale
90
+ let pathname = request.nextUrl.pathname;
91
+ // Guard: if URL accidentally contains a locale prefix (e.g. /tr/about),
92
+ // strip it and redirect — prevents double-prefix rewrite bug
93
+ const firstSegment = pathname.split("/")[1];
94
+ if (firstSegment && availableLocales.includes(firstSegment)) {
95
+ const strippedPath = pathname.slice(firstSegment.length + 1) || "/";
96
+ return NextResponse.redirect(new URL(`${strippedPath}${request.nextUrl.search}`, request.url));
97
+ }
98
+ const rewriteUrl = new URL(`/${detectedLocale}${pathname}${request.nextUrl.search}`, request.url);
99
+ const headers = new Headers(request.headers);
100
+ headers.set("X-NEXT-INTL-LOCALE", detectedLocale);
101
+ response = NextResponse.rewrite(rewriteUrl, { request: { headers } });
91
102
  }
92
103
  else {
93
- // 3b. URL-based modes: delegate to next-intl middleware as before
104
+ // 3b. URL-based modes: delegate to next-intl middleware for routing,
105
+ // then inject x-better-i18n-locale as a REQUEST header so it's available
106
+ // via headers() in server components (getRequestConfig fallback).
94
107
  const localesKey = availableLocales.join(",");
95
108
  if (!cachedMiddleware || cachedLocalesKey !== localesKey) {
96
109
  cachedMiddleware = createMiddleware({
@@ -100,9 +113,27 @@ export function createBetterI18nMiddleware(config, callback) {
100
113
  });
101
114
  cachedLocalesKey = localesKey;
102
115
  }
103
- response = cachedMiddleware(request);
116
+ const intlResponse = cachedMiddleware(request);
117
+ if (intlResponse.status >= 300) {
118
+ // Redirect — pass through as-is, no header injection needed
119
+ response = intlResponse;
120
+ }
121
+ else {
122
+ // Non-redirect: wrap with request headers so server components can
123
+ // read the locale via headers() when requestLocale is undefined
124
+ const requestHeaders = new Headers(request.headers);
125
+ requestHeaders.set("x-better-i18n-locale", detectedLocale);
126
+ response = NextResponse.next({ request: { headers: requestHeaders } });
127
+ // Preserve response headers and cookies from next-intl middleware
128
+ intlResponse.headers.forEach((value, key) => {
129
+ response.headers.set(key, value);
130
+ });
131
+ intlResponse.cookies.getAll().forEach((c) => {
132
+ response.cookies.set(c.name, c.value);
133
+ });
134
+ }
104
135
  }
105
- // 4. Add x-locale header for backwards compatibility
136
+ // 4. Add x-locale response header for backwards compatibility
106
137
  response.headers.set("x-locale", detectedLocale);
107
138
  // 5. Set our custom cookie if needed
108
139
  if (cookie && result.shouldSetCookie) {
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -30,6 +30,17 @@ export interface NextI18nCore extends I18nCore {
30
30
  * ```
31
31
  */
32
32
  export declare const createNextI18nCore: (config: I18nConfig) => NextI18nCore;
33
+ /**
34
+ * Resolve the active locale from request context.
35
+ *
36
+ * Pure helper — no Next.js runtime deps, easy to unit-test.
37
+ *
38
+ * Cookie fallback is ONLY used in "never" mode where cookie is the source of
39
+ * truth. In URL-based modes ("always" / "as-needed") requestLocale undefined
40
+ * (ISR revalidation, build-time static generation) must NOT fall back to cookie
41
+ * — otherwise a stale cookie overrides the URL locale.
42
+ */
43
+ export declare function resolveLocaleFromRequest(requestLocale: string | undefined, cookieLocale: string | null | undefined, cachedLocale: string | null | undefined, locales: string[], defaultLocale: string, localePrefix: "always" | "as-needed" | "never"): string;
33
44
  /**
34
45
  * Create next-intl request config for App Router
35
46
  *
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C;;OAEG;IACH,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACpD;AAeD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,UAAU,KAAG,YA0CvD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,2BAA2B,GAAI,QAAQ,UAAU,gKAuC1D,CAAC;AAIL;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,UAAU,0DACN,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,UAAU,EAAE,UAAU;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,0DACnC,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,UAAU,sBACJ,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,UAAU,EAAE,QAAQ,MAAM,sBACd,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,UAAU,0DACZ,CAAC;AAG5C,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAC;AASnE;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C;;OAEG;IACH,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACpD;AAeD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,UAAU,KAAG,YA0CvD,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,OAAO,EAAE,MAAM,EAAE,EACjB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,GAC7C,MAAM,CA0BR;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,2BAA2B,GAAI,QAAQ,UAAU,gKAkD1D,CAAC;AAIL;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,UAAU,0DACN,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,UAAU,EAAE,UAAU;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,0DACnC,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,UAAU,sBACJ,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,UAAU,EAAE,QAAQ,MAAM,sBACd,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,UAAU,0DACZ,CAAC;AAG5C,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/server.js CHANGED
@@ -1,7 +1,13 @@
1
+ import { cache } from "react";
1
2
  import { getRequestConfig } from "next-intl/server";
2
- import { cookies } from "next/headers";
3
3
  import { createI18nCore } from "@better-i18n/core";
4
4
  import { normalizeConfig } from "./config.js";
5
+ /**
6
+ * Per-request locale cache using React's `cache()`.
7
+ * The first getRequestConfig call resolves requestLocale (e.g. "tr" from middleware).
8
+ * The second call in the same request may receive undefined — this cache bridges them.
9
+ */
10
+ const getRequestLocaleCache = cache(() => ({ locale: undefined }));
5
11
  /**
6
12
  * Create a fetch function with Next.js ISR revalidation
7
13
  */
@@ -72,6 +78,41 @@ export const createNextI18nCore = (config) => {
72
78
  getMessages: (locale) => messagesCore.getMessages(locale),
73
79
  };
74
80
  };
81
+ /**
82
+ * Resolve the active locale from request context.
83
+ *
84
+ * Pure helper — no Next.js runtime deps, easy to unit-test.
85
+ *
86
+ * Cookie fallback is ONLY used in "never" mode where cookie is the source of
87
+ * truth. In URL-based modes ("always" / "as-needed") requestLocale undefined
88
+ * (ISR revalidation, build-time static generation) must NOT fall back to cookie
89
+ * — otherwise a stale cookie overrides the URL locale.
90
+ */
91
+ export function resolveLocaleFromRequest(requestLocale, cookieLocale, cachedLocale, locales, defaultLocale, localePrefix) {
92
+ let locale = requestLocale;
93
+ if (!locale) {
94
+ if (localePrefix === "never") {
95
+ // "never" mode: cookie is source of truth
96
+ if (cookieLocale && locales.includes(cookieLocale)) {
97
+ locale = cookieLocale;
98
+ }
99
+ }
100
+ else {
101
+ // URL-based modes ("always" / "as-needed"): use per-request cached locale
102
+ // from the first getRequestConfig call. This covers cases where requestLocale
103
+ // is undefined (secondary render passes) without falling back to cookie
104
+ // — which could differ from the URL locale.
105
+ if (cachedLocale && locales.includes(cachedLocale)) {
106
+ locale = cachedLocale;
107
+ }
108
+ }
109
+ }
110
+ // Final fallback to defaultLocale
111
+ if (!locale || !locales.includes(locale)) {
112
+ locale = defaultLocale;
113
+ }
114
+ return locale;
115
+ }
75
116
  /**
76
117
  * Create next-intl request config for App Router
77
118
  *
@@ -90,26 +131,28 @@ export const createNextIntlRequestConfig = (config) => getRequestConfig(async ({
90
131
  const i18n = createNextI18nCore(config);
91
132
  const normalized = normalizeConfig(config);
92
133
  const locales = await i18n.getLocales();
93
- // 1. Middleware header (set by next-intl or our middleware)
94
- let locale = await requestLocale;
95
- // 2. Cookie fallback critical for localePrefix: "never" where
96
- // requestLocale may be undefined if middleware header isn't forwarded
97
- if (!locale) {
134
+ const resolvedRequestLocale = await requestLocale;
135
+ // Per-request cache: the first getRequestConfig call receives requestLocale
136
+ // from middleware (e.g. "tr"). The second call in the same request may
137
+ // receive undefined. Cache bridges them so both resolve to the same locale.
138
+ const localeCache = getRequestLocaleCache();
139
+ if (resolvedRequestLocale && locales.includes(resolvedRequestLocale)) {
140
+ localeCache.locale = resolvedRequestLocale;
141
+ }
142
+ const cachedLocale = localeCache.locale;
143
+ let cookieLocale = null;
144
+ if (normalized.localePrefix === "never") {
145
+ // "never" mode: cookie is the source of truth
98
146
  try {
147
+ const { cookies } = await import("next/headers");
99
148
  const cookieStore = await cookies();
100
- const cookieLocale = cookieStore.get(normalized.cookieName)?.value;
101
- if (cookieLocale && locales.includes(cookieLocale)) {
102
- locale = cookieLocale;
103
- }
149
+ cookieLocale = cookieStore.get(normalized.cookieName)?.value ?? null;
104
150
  }
105
151
  catch {
106
152
  // cookies() throws in non-request contexts (e.g. build time)
107
153
  }
108
154
  }
109
- // 3. Final fallback to defaultLocale
110
- if (!locale || !locales.includes(locale)) {
111
- locale = normalized.defaultLocale;
112
- }
155
+ const locale = resolveLocaleFromRequest(resolvedRequestLocale, cookieLocale, cachedLocale, locales, normalized.defaultLocale, normalized.localePrefix);
113
156
  // Resolve timeZone: explicit config > runtime auto-detection.
114
157
  // Setting this explicitly avoids next-intl's ENVIRONMENT_FALLBACK warning
115
158
  // and prevents server/client hydration mismatches for date/time formatting.
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-i18n/next",
3
- "version": "0.6.2",
3
+ "version": "0.7.0",
4
4
  "description": "Better-i18n Next.js integration",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -41,6 +41,11 @@
41
41
  "bun": "./src/proxy.ts",
42
42
  "default": "./dist/proxy.js"
43
43
  },
44
+ "./revalidate": {
45
+ "types": "./dist/revalidate.d.ts",
46
+ "bun": "./src/revalidate.ts",
47
+ "default": "./dist/revalidate.js"
48
+ },
44
49
  "./package.json": "./package.json"
45
50
  },
46
51
  "files": [