astro-intl 1.0.2 → 1.0.3
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/core.d.ts +1 -1
- package/dist/core.js +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +9 -4
- package/dist/middleware.d.ts +8 -0
- package/dist/middleware.js +16 -0
- package/dist/store.d.ts +3 -1
- package/dist/store.js +19 -2
- package/dist/types/index.d.ts +1 -0
- package/package.json +5 -1
package/dist/core.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { setRequestLocale, runWithLocale, getLocale, getMessages, getDefaultLocale, defineRequestConfig, __setConfigMessages, __resetRequestConfig, __setIntlConfig, } from "./store.js";
|
|
1
|
+
export { setRequestLocale, runWithLocale, getLocale, getLocales, isValidLocale, getMessages, getDefaultLocale, defineRequestConfig, __setConfigMessages, __resetRequestConfig, __setIntlConfig, } from "./store.js";
|
|
2
2
|
export { getTranslations, getTranslationsReact } from "./translations.js";
|
|
3
3
|
export { getNestedValue, type DotPaths } from "./interpolation.js";
|
|
4
4
|
export { sanitizeLocale, sanitizeHtml, escapeRegExp } from "./sanitize.js";
|
package/dist/core.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// ─── Store (request lifecycle) ──────────────────────────────────────
|
|
2
|
-
export { setRequestLocale, runWithLocale, getLocale, getMessages, getDefaultLocale, defineRequestConfig, __setConfigMessages, __resetRequestConfig, __setIntlConfig, } from "./store.js";
|
|
2
|
+
export { setRequestLocale, runWithLocale, getLocale, getLocales, isValidLocale, getMessages, getDefaultLocale, defineRequestConfig, __setConfigMessages, __resetRequestConfig, __setIntlConfig, } from "./store.js";
|
|
3
3
|
// ─── Translations ───────────────────────────────────────────────────
|
|
4
4
|
export { getTranslations, getTranslationsReact } from "./translations.js";
|
|
5
5
|
// ─── Interpolation utilities ────────────────────────────────────────
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import type { AstroIntegration } from "astro";
|
|
2
2
|
import type { MessagesConfig } from "./types/index.js";
|
|
3
|
-
import { setRequestLocale as _setRequestLocale, runWithLocale as _runWithLocale, getLocale as _getLocale, getMessages as _getMessages, getTranslations as _getTranslations, getTranslationsReact as _getTranslationsReact, defineRequestConfig as _defineRequestConfig, __resetRequestConfig as _resetRequestConfig } from "./core.js";
|
|
3
|
+
import { setRequestLocale as _setRequestLocale, runWithLocale as _runWithLocale, getLocale as _getLocale, getLocales as _getLocales, isValidLocale as _isValidLocale, getMessages as _getMessages, getTranslations as _getTranslations, getTranslationsReact as _getTranslationsReact, defineRequestConfig as _defineRequestConfig, __resetRequestConfig as _resetRequestConfig } from "./core.js";
|
|
4
4
|
export type AstroIntlOptions = {
|
|
5
5
|
enabled?: boolean;
|
|
6
6
|
defaultLocale?: string;
|
|
7
|
+
locales?: string[];
|
|
7
8
|
messages?: MessagesConfig;
|
|
8
9
|
};
|
|
9
10
|
export default function astroIntl(options?: AstroIntlOptions): AstroIntegration;
|
|
10
11
|
export declare const setRequestLocale: typeof _setRequestLocale;
|
|
11
12
|
export declare const runWithLocale: typeof _runWithLocale;
|
|
12
13
|
export declare const getLocale: typeof _getLocale;
|
|
14
|
+
export declare const getLocales: typeof _getLocales;
|
|
15
|
+
export declare const isValidLocale: typeof _isValidLocale;
|
|
13
16
|
export declare const getMessages: typeof _getMessages;
|
|
14
17
|
export declare const getTranslations: typeof _getTranslations;
|
|
15
18
|
export declare const getTranslationsReact: typeof _getTranslationsReact;
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { setRequestLocale as _setRequestLocale, runWithLocale as _runWithLocale, getLocale as _getLocale, getMessages as _getMessages, getTranslations as _getTranslations, getTranslationsReact as _getTranslationsReact, defineRequestConfig as _defineRequestConfig, __resetRequestConfig as _resetRequestConfig, __setConfigMessages, __setIntlConfig, } from "./core.js";
|
|
1
|
+
import { setRequestLocale as _setRequestLocale, runWithLocale as _runWithLocale, getLocale as _getLocale, getLocales as _getLocales, isValidLocale as _isValidLocale, getMessages as _getMessages, getTranslations as _getTranslations, getTranslationsReact as _getTranslationsReact, defineRequestConfig as _defineRequestConfig, __resetRequestConfig as _resetRequestConfig, __setConfigMessages, __setIntlConfig, } from "./core.js";
|
|
2
2
|
export default function astroIntl(options = {}) {
|
|
3
|
-
const { enabled = true, defaultLocale, messages } = options;
|
|
4
|
-
if (defaultLocale) {
|
|
5
|
-
__setIntlConfig({
|
|
3
|
+
const { enabled = true, defaultLocale, locales, messages } = options;
|
|
4
|
+
if (defaultLocale || locales) {
|
|
5
|
+
__setIntlConfig({
|
|
6
|
+
...(defaultLocale && { defaultLocale }),
|
|
7
|
+
...(locales && { locales }),
|
|
8
|
+
});
|
|
6
9
|
}
|
|
7
10
|
if (messages) {
|
|
8
11
|
__setConfigMessages(messages);
|
|
@@ -30,6 +33,8 @@ export default function astroIntl(options = {}) {
|
|
|
30
33
|
export const setRequestLocale = _setRequestLocale;
|
|
31
34
|
export const runWithLocale = _runWithLocale;
|
|
32
35
|
export const getLocale = _getLocale;
|
|
36
|
+
export const getLocales = _getLocales;
|
|
37
|
+
export const isValidLocale = _isValidLocale;
|
|
33
38
|
export const getMessages = _getMessages;
|
|
34
39
|
export const getTranslations = _getTranslations;
|
|
35
40
|
export const getTranslationsReact = _getTranslationsReact;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type IntlMiddlewareOptions = {
|
|
2
|
+
locales: readonly string[];
|
|
3
|
+
defaultLocale?: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function createIntlMiddleware(options: IntlMiddlewareOptions): (context: {
|
|
6
|
+
url: URL;
|
|
7
|
+
request: Request;
|
|
8
|
+
}, next: () => Promise<Response>) => Promise<Response>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { setRequestLocale, __setIntlConfig } from "./store.js";
|
|
2
|
+
export function createIntlMiddleware(options) {
|
|
3
|
+
const { locales, defaultLocale } = options;
|
|
4
|
+
__setIntlConfig({
|
|
5
|
+
locales: [...locales],
|
|
6
|
+
...(defaultLocale && { defaultLocale }),
|
|
7
|
+
});
|
|
8
|
+
return async (context, next) => {
|
|
9
|
+
const [, lang] = context.url.pathname.split("/");
|
|
10
|
+
if (!lang || !locales.includes(lang)) {
|
|
11
|
+
return next();
|
|
12
|
+
}
|
|
13
|
+
await setRequestLocale(context.url);
|
|
14
|
+
return next();
|
|
15
|
+
};
|
|
16
|
+
}
|
package/dist/store.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { GetRequestConfigFn, MessagesConfig, IntlConfig, RequestConfig } from "./types/index.js";
|
|
2
2
|
export declare function __setIntlConfig(config: Partial<IntlConfig>): void;
|
|
3
3
|
export declare function getDefaultLocale(): string;
|
|
4
|
+
export declare function getLocales(): string[];
|
|
5
|
+
export declare function isValidLocale(locale: string): boolean;
|
|
4
6
|
export declare function defineRequestConfig(fn: (locale: string) => Promise<RequestConfig> | RequestConfig): GetRequestConfigFn;
|
|
5
7
|
export declare function __setConfigMessages(messages: MessagesConfig): void;
|
|
6
8
|
export declare function __resetRequestConfig(): void;
|
|
7
|
-
export declare function setRequestLocale(url: URL, getConfig?: GetRequestConfigFn): Promise<
|
|
9
|
+
export declare function setRequestLocale(url: URL, getConfig?: GetRequestConfigFn): Promise<boolean>;
|
|
8
10
|
export declare function runWithLocale<R>(url: URL, fn: () => R | Promise<R>, getConfig?: GetRequestConfigFn): Promise<R>;
|
|
9
11
|
export declare function getLocale(): string;
|
|
10
12
|
export declare function getMessages<T extends Record<string, unknown> = Record<string, unknown>>(namespace?: string): T;
|
package/dist/store.js
CHANGED
|
@@ -2,7 +2,7 @@ import { sanitizeLocale } from "./sanitize.js";
|
|
|
2
2
|
// ─── Configuration (set once at startup) ────────────────────────────
|
|
3
3
|
let registeredGetRequestConfig = null;
|
|
4
4
|
let configMessages = null;
|
|
5
|
-
let intlConfig = { defaultLocale: "en" };
|
|
5
|
+
let intlConfig = { defaultLocale: "en", locales: [] };
|
|
6
6
|
let als = null;
|
|
7
7
|
let alsInitialized = false;
|
|
8
8
|
function ensureAls() {
|
|
@@ -34,10 +34,21 @@ export function __setIntlConfig(config) {
|
|
|
34
34
|
if (config.defaultLocale) {
|
|
35
35
|
intlConfig = { ...intlConfig, defaultLocale: config.defaultLocale };
|
|
36
36
|
}
|
|
37
|
+
if (config.locales) {
|
|
38
|
+
intlConfig = { ...intlConfig, locales: config.locales };
|
|
39
|
+
}
|
|
37
40
|
}
|
|
38
41
|
export function getDefaultLocale() {
|
|
39
42
|
return intlConfig.defaultLocale;
|
|
40
43
|
}
|
|
44
|
+
export function getLocales() {
|
|
45
|
+
return intlConfig.locales;
|
|
46
|
+
}
|
|
47
|
+
export function isValidLocale(locale) {
|
|
48
|
+
if (intlConfig.locales.length === 0)
|
|
49
|
+
return true;
|
|
50
|
+
return intlConfig.locales.includes(locale);
|
|
51
|
+
}
|
|
41
52
|
export function defineRequestConfig(fn) {
|
|
42
53
|
registeredGetRequestConfig = fn;
|
|
43
54
|
return fn;
|
|
@@ -49,7 +60,7 @@ export function __resetRequestConfig() {
|
|
|
49
60
|
registeredGetRequestConfig = null;
|
|
50
61
|
configMessages = null;
|
|
51
62
|
fallbackState = null;
|
|
52
|
-
intlConfig = { defaultLocale: "en" };
|
|
63
|
+
intlConfig = { defaultLocale: "en", locales: [] };
|
|
53
64
|
}
|
|
54
65
|
// ─── Resolve messages from MessagesConfig ───────────────────────────
|
|
55
66
|
async function resolveMessages(locale, source) {
|
|
@@ -67,6 +78,11 @@ async function resolveMessages(locale, source) {
|
|
|
67
78
|
// ─── setRequestLocale ───────────────────────────────────────────────
|
|
68
79
|
export async function setRequestLocale(url, getConfig) {
|
|
69
80
|
const [, lang] = url.pathname.split("/");
|
|
81
|
+
if (!lang)
|
|
82
|
+
return false;
|
|
83
|
+
if (intlConfig.locales.length > 0 && !intlConfig.locales.includes(lang)) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
70
86
|
const locale = sanitizeLocale(lang || intlConfig.defaultLocale);
|
|
71
87
|
const resolvedGetConfig = getConfig ?? registeredGetRequestConfig;
|
|
72
88
|
let state;
|
|
@@ -86,6 +102,7 @@ export async function setRequestLocale(url, getConfig) {
|
|
|
86
102
|
"Either pass getConfig to setRequestLocale(), use defineRequestConfig(), or add messages to the integration options.");
|
|
87
103
|
}
|
|
88
104
|
fallbackState = state;
|
|
105
|
+
return true;
|
|
89
106
|
}
|
|
90
107
|
// ─── runWithLocale (concurrency-safe via AsyncLocalStorage) ─────────
|
|
91
108
|
export async function runWithLocale(url, fn, getConfig) {
|
package/dist/types/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "astro-intl",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Sistema de internacionalización simple y type-safe para Astro, inspirado en next-intl",
|
|
6
6
|
"keywords": [
|
|
@@ -37,6 +37,10 @@
|
|
|
37
37
|
".": {
|
|
38
38
|
"types": "./dist/index.d.ts",
|
|
39
39
|
"import": "./dist/index.js"
|
|
40
|
+
},
|
|
41
|
+
"./middleware": {
|
|
42
|
+
"types": "./dist/middleware.d.ts",
|
|
43
|
+
"import": "./dist/middleware.js"
|
|
40
44
|
}
|
|
41
45
|
},
|
|
42
46
|
"peerDependencies": {
|