@better-i18n/core 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.
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export { createLogger } from "./logger.js";
6
6
  export { detectLocale, buildCountryLocaleMap } from "./i18n/detection.js";
7
7
  export { TtlCache, buildCacheKey } from "./cache.js";
8
8
  export { LANGUAGE_TO_COUNTRY, getCountryCodeFromLocale, getFlagEmoji, getLanguageLabel, resolveFlag, type ResolvedFlag, } from "./utils/locale-ui.js";
9
+ export { getLocaleCookie } from "./utils/cookie.js";
9
10
  export { normalizeLocale, extractLocale, getLocaleFromPath, hasLocalePrefix, removeLocalePrefix, addLocalePrefix, replaceLocaleInPath, createLocalePath, type LocaleConfig, } from "./utils/locale.js";
10
11
  export type { I18nCoreConfig, NormalizedConfig, ParsedProject, ManifestResponse, ManifestLanguage, ManifestFile, LanguageOption, Messages, Locale, I18nCore, TranslationStorage, Logger, LogLevel, CacheEntry, } from "./types.js";
11
12
  export type { I18nMiddlewareConfig, LocaleDetectionOptions, LocaleDetectionResult, LocalePrefix, } from "./i18n/types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGlF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGhG,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAG/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG1E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGrD,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAEV,cAAc,EACd,gBAAgB,EAChB,aAAa,EAGb,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EAGd,QAAQ,EACR,MAAM,EAGN,QAAQ,EAGR,kBAAkB,EAGlB,MAAM,EACN,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,GACb,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGlF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGhG,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAG/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG1E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGrD,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EACL,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAEV,cAAc,EACd,gBAAgB,EAChB,aAAa,EAGb,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EAGd,QAAQ,EACR,MAAM,EAGN,QAAQ,EAGR,kBAAkB,EAGlB,MAAM,EACN,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,GACb,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -14,6 +14,8 @@ export { detectLocale, buildCountryLocaleMap } from "./i18n/detection.js";
14
14
  export { TtlCache, buildCacheKey } from "./cache.js";
15
15
  // Locale UI utilities (flags, labels, country codes)
16
16
  export { LANGUAGE_TO_COUNTRY, getCountryCodeFromLocale, getFlagEmoji, getLanguageLabel, resolveFlag, } from "./utils/locale-ui.js";
17
+ // Cookie utilities
18
+ export { getLocaleCookie } from "./utils/cookie.js";
17
19
  // Locale utilities
18
20
  export { normalizeLocale, extractLocale, getLocaleFromPath, hasLocalePrefix, removeLocalePrefix, addLocalePrefix, replaceLocaleInPath, createLocalePath, } from "./utils/locale.js";
19
21
  //# 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":"AAAA,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAElF,mBAAmB;AACnB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEhG,0BAA0B;AAC1B,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE/E,qBAAqB;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,kBAAkB;AAClB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAErD,qDAAqD;AACrD,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,gBAAgB,EAChB,WAAW,GAEZ,MAAM,sBAAsB,CAAC;AAE9B,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GAEjB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAElF,mBAAmB;AACnB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEhG,0BAA0B;AAC1B,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE/E,qBAAqB;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,kBAAkB;AAClB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAErD,qDAAqD;AACrD,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,gBAAgB,EAChB,WAAW,GAEZ,MAAM,sBAAsB,CAAC;AAE9B,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GAEjB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Read the locale cookie from the browser.
3
+ *
4
+ * Designed for non-React contexts where `useLocale()` isn't available —
5
+ * auth clients, analytics, third-party SDK config, module-level singletons.
6
+ *
7
+ * Pairs with `@better-i18n/use-intl`'s `localeCookie` prop:
8
+ * the provider writes the cookie, this function reads it back.
9
+ *
10
+ * Returns `null` on the server, when the cookie is missing, or when the
11
+ * value doesn't look like a valid BCP 47 locale tag.
12
+ *
13
+ * @param cookieName - Cookie name to read (must match the provider's `localeCookie` value)
14
+ * @returns The locale string (e.g. `"tr"`, `"pt-BR"`) or `null`
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * // auth-client.ts (module-level, no React)
19
+ * import { getLocaleCookie } from "@better-i18n/core";
20
+ *
21
+ * export const authClient = createAuthClient({
22
+ * fetchOptions: {
23
+ * headers: {
24
+ * get "Accept-Language"() {
25
+ * return getLocaleCookie("preferred-locale") ?? "en";
26
+ * },
27
+ * },
28
+ * },
29
+ * });
30
+ * ```
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * // analytics.ts
35
+ * import { getLocaleCookie } from "@better-i18n/core";
36
+ *
37
+ * analytics.identify({ locale: getLocaleCookie("preferred-locale") });
38
+ * ```
39
+ */
40
+ export declare function getLocaleCookie(cookieName: string): string | null;
41
+ //# sourceMappingURL=cookie.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie.d.ts","sourceRoot":"","sources":["../../src/utils/cookie.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASjE"}
@@ -0,0 +1,52 @@
1
+ /** BCP 47 locale tag: 2–8 alpha, optional subtags separated by hyphens. */
2
+ const LOCALE_RE = /^[a-zA-Z]{2,8}(?:-[a-zA-Z0-9]{1,8})*$/;
3
+ /**
4
+ * Read the locale cookie from the browser.
5
+ *
6
+ * Designed for non-React contexts where `useLocale()` isn't available —
7
+ * auth clients, analytics, third-party SDK config, module-level singletons.
8
+ *
9
+ * Pairs with `@better-i18n/use-intl`'s `localeCookie` prop:
10
+ * the provider writes the cookie, this function reads it back.
11
+ *
12
+ * Returns `null` on the server, when the cookie is missing, or when the
13
+ * value doesn't look like a valid BCP 47 locale tag.
14
+ *
15
+ * @param cookieName - Cookie name to read (must match the provider's `localeCookie` value)
16
+ * @returns The locale string (e.g. `"tr"`, `"pt-BR"`) or `null`
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * // auth-client.ts (module-level, no React)
21
+ * import { getLocaleCookie } from "@better-i18n/core";
22
+ *
23
+ * export const authClient = createAuthClient({
24
+ * fetchOptions: {
25
+ * headers: {
26
+ * get "Accept-Language"() {
27
+ * return getLocaleCookie("preferred-locale") ?? "en";
28
+ * },
29
+ * },
30
+ * },
31
+ * });
32
+ * ```
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * // analytics.ts
37
+ * import { getLocaleCookie } from "@better-i18n/core";
38
+ *
39
+ * analytics.identify({ locale: getLocaleCookie("preferred-locale") });
40
+ * ```
41
+ */
42
+ export function getLocaleCookie(cookieName) {
43
+ if (typeof document === "undefined")
44
+ return null;
45
+ const safeName = cookieName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
46
+ const match = document.cookie.match(new RegExp(`(?:^|;\\s*)${safeName}=([^;]*)`));
47
+ const value = match?.[1]?.trim() ?? null;
48
+ if (!value || !LOCALE_RE.test(value))
49
+ return null;
50
+ return value;
51
+ }
52
+ //# sourceMappingURL=cookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie.js","sourceRoot":"","sources":["../../src/utils/cookie.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,SAAS,GAAG,uCAAuC,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CACjC,IAAI,MAAM,CAAC,cAAc,QAAQ,UAAU,CAAC,CAC7C,CAAC;IACF,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IACzC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-i18n/core",
3
- "version": "0.6.2",
3
+ "version": "0.7.0",
4
4
  "description": "Framework-agnostic core utilities for Better i18n",
5
5
  "license": "MIT",
6
6
  "repository": {