next-intlayer 6.1.6 → 7.0.0-canary.2
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/cjs/_virtual/rolldown_runtime.cjs +25 -0
- package/dist/cjs/client/IntlayerClientProvider.cjs +19 -33
- package/dist/cjs/client/IntlayerClientProvider.cjs.map +1 -1
- package/dist/cjs/client/format/index.cjs +50 -41
- package/dist/cjs/client/index.cjs +7 -35
- package/dist/cjs/client/useLocale.cjs +39 -54
- package/dist/cjs/client/useLocale.cjs.map +1 -1
- package/dist/cjs/client/useLocalePageRouter.cjs +26 -52
- package/dist/cjs/client/useLocalePageRouter.cjs.map +1 -1
- package/dist/cjs/generateStaticParams.cjs +9 -39
- package/dist/cjs/generateStaticParams.cjs.map +1 -1
- package/dist/cjs/index.cjs +102 -57
- package/dist/cjs/middleware/index.cjs +7 -27
- package/dist/cjs/middleware/intlayerMiddleware.cjs +206 -188
- package/dist/cjs/middleware/intlayerMiddleware.cjs.map +1 -1
- package/dist/cjs/middleware/localeDetector.cjs +18 -32
- package/dist/cjs/middleware/localeDetector.cjs.map +1 -1
- package/dist/cjs/middleware/multipleMiddlewares.cjs +55 -67
- package/dist/cjs/middleware/multipleMiddlewares.cjs.map +1 -1
- package/dist/cjs/proxy/index.cjs +9 -0
- package/dist/cjs/proxy/intlayerProxy.cjs +252 -0
- package/dist/cjs/proxy/intlayerProxy.cjs.map +1 -0
- package/dist/cjs/proxy/localeDetector.cjs +21 -0
- package/dist/cjs/proxy/localeDetector.cjs.map +1 -0
- package/dist/cjs/proxy/multipleProxies.cjs +60 -0
- package/dist/cjs/proxy/multipleProxies.cjs.map +1 -0
- package/dist/cjs/proxy/multipleProxy.cjs +60 -0
- package/dist/cjs/proxy/multipleProxy.cjs.map +1 -0
- package/dist/cjs/server/compareVersion.cjs +35 -54
- package/dist/cjs/server/compareVersion.cjs.map +1 -1
- package/dist/cjs/server/format/index.cjs +50 -41
- package/dist/cjs/server/getLocale.cjs +31 -53
- package/dist/cjs/server/getLocale.cjs.map +1 -1
- package/dist/cjs/server/index.cjs +69 -53
- package/dist/cjs/server/withIntlayer.cjs +181 -247
- package/dist/cjs/server/withIntlayer.cjs.map +1 -1
- package/dist/cjs/types/NextPage.cjs +0 -17
- package/dist/cjs/types/index.cjs +0 -17
- package/dist/esm/client/IntlayerClientProvider.mjs +15 -8
- package/dist/esm/client/IntlayerClientProvider.mjs.map +1 -1
- package/dist/esm/client/format/index.mjs +3 -21
- package/dist/esm/client/index.mjs +3 -9
- package/dist/esm/client/useLocale.mjs +31 -27
- package/dist/esm/client/useLocale.mjs.map +1 -1
- package/dist/esm/client/useLocalePageRouter.mjs +19 -26
- package/dist/esm/client/useLocalePageRouter.mjs.map +1 -1
- package/dist/esm/generateStaticParams.mjs +5 -3
- package/dist/esm/generateStaticParams.mjs.map +1 -1
- package/dist/esm/index.mjs +6 -34
- package/dist/esm/middleware/index.mjs +5 -4
- package/dist/esm/middleware/intlayerMiddleware.mjs +201 -155
- package/dist/esm/middleware/intlayerMiddleware.mjs.map +1 -1
- package/dist/esm/middleware/localeDetector.mjs +16 -8
- package/dist/esm/middleware/localeDetector.mjs.map +1 -1
- package/dist/esm/middleware/multipleMiddlewares.mjs +53 -45
- package/dist/esm/middleware/multipleMiddlewares.mjs.map +1 -1
- package/dist/esm/proxy/index.mjs +5 -0
- package/dist/esm/proxy/intlayerProxy.mjs +247 -0
- package/dist/esm/proxy/intlayerProxy.mjs.map +1 -0
- package/dist/esm/proxy/localeDetector.mjs +19 -0
- package/dist/esm/proxy/localeDetector.mjs.map +1 -0
- package/dist/esm/proxy/multipleProxies.mjs +57 -0
- package/dist/esm/proxy/multipleProxies.mjs.map +1 -0
- package/dist/esm/proxy/multipleProxy.mjs +57 -0
- package/dist/esm/proxy/multipleProxy.mjs.map +1 -0
- package/dist/esm/server/compareVersion.mjs +34 -30
- package/dist/esm/server/compareVersion.mjs.map +1 -1
- package/dist/esm/server/format/index.mjs +3 -21
- package/dist/esm/server/getLocale.mjs +23 -17
- package/dist/esm/server/getLocale.mjs.map +1 -1
- package/dist/esm/server/index.mjs +4 -28
- package/dist/esm/server/withIntlayer.mjs +166 -214
- package/dist/esm/server/withIntlayer.mjs.map +1 -1
- package/dist/esm/types/NextPage.mjs +0 -1
- package/dist/esm/types/index.mjs +0 -1
- package/dist/types/client/IntlayerClientProvider.d.ts +8 -4
- package/dist/types/client/IntlayerClientProvider.d.ts.map +1 -1
- package/dist/types/client/format/index.d.ts +2 -2
- package/dist/types/client/index.d.ts +4 -4
- package/dist/types/client/useLocale.d.ts +17 -7
- package/dist/types/client/useLocale.d.ts.map +1 -1
- package/dist/types/client/useLocalePageRouter.d.ts +12 -7
- package/dist/types/client/useLocalePageRouter.d.ts.map +1 -1
- package/dist/types/generateStaticParams.d.ts +7 -2
- package/dist/types/generateStaticParams.d.ts.map +1 -1
- package/dist/types/index.d.ts +7 -5
- package/dist/types/middleware/index.d.ts +4 -4
- package/dist/types/middleware/intlayerMiddleware.d.ts +7 -2
- package/dist/types/middleware/intlayerMiddleware.d.ts.map +1 -1
- package/dist/types/middleware/localeDetector.d.ts +8 -3
- package/dist/types/middleware/localeDetector.d.ts.map +1 -1
- package/dist/types/middleware/multipleMiddlewares.d.ts +7 -2
- package/dist/types/middleware/multipleMiddlewares.d.ts.map +1 -1
- package/dist/types/proxy/index.d.ts +4 -0
- package/dist/types/proxy/intlayerProxy.d.ts +55 -0
- package/dist/types/proxy/intlayerProxy.d.ts.map +1 -0
- package/dist/types/proxy/localeDetector.d.ts +14 -0
- package/dist/types/proxy/localeDetector.d.ts.map +1 -0
- package/dist/types/proxy/multipleProxies.d.ts +34 -0
- package/dist/types/proxy/multipleProxies.d.ts.map +1 -0
- package/dist/types/proxy/multipleProxy.d.ts +34 -0
- package/dist/types/proxy/multipleProxy.d.ts.map +1 -0
- package/dist/types/server/compareVersion.d.ts +4 -1
- package/dist/types/server/compareVersion.d.ts.map +1 -1
- package/dist/types/server/format/index.d.ts +2 -2
- package/dist/types/server/getLocale.d.ts +6 -2
- package/dist/types/server/getLocale.d.ts.map +1 -1
- package/dist/types/server/index.d.ts +4 -4
- package/dist/types/server/withIntlayer.d.ts +25 -3
- package/dist/types/server/withIntlayer.d.ts.map +1 -1
- package/dist/types/types/NextPage.d.ts +21 -17
- package/dist/types/types/NextPage.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +2 -2
- package/package.json +48 -50
- package/LICENSE +0 -202
- package/dist/cjs/client/format/index.cjs.map +0 -1
- package/dist/cjs/client/index.cjs.map +0 -1
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/middleware/index.cjs.map +0 -1
- package/dist/cjs/server/format/index.cjs.map +0 -1
- package/dist/cjs/server/getNextVertion.cjs +0 -39
- package/dist/cjs/server/getNextVertion.cjs.map +0 -1
- package/dist/cjs/server/index.cjs.map +0 -1
- package/dist/cjs/types/NextPage.cjs.map +0 -1
- package/dist/cjs/types/index.cjs.map +0 -1
- package/dist/esm/client/format/index.mjs.map +0 -1
- package/dist/esm/client/index.mjs.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/middleware/index.mjs.map +0 -1
- package/dist/esm/server/format/index.mjs.map +0 -1
- package/dist/esm/server/getNextVertion.mjs +0 -15
- package/dist/esm/server/getNextVertion.mjs.map +0 -1
- package/dist/esm/server/index.mjs.map +0 -1
- package/dist/esm/types/NextPage.mjs.map +0 -1
- package/dist/esm/types/index.mjs.map +0 -1
- package/dist/types/client/format/index.d.ts.map +0 -1
- package/dist/types/client/index.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/middleware/index.d.ts.map +0 -1
- package/dist/types/server/format/index.d.ts.map +0 -1
- package/dist/types/server/getNextVertion.d.ts +0 -2
- package/dist/types/server/getNextVertion.d.ts.map +0 -1
- package/dist/types/server/index.d.ts.map +0 -1
- package/dist/types/types/index.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multipleProxies.mjs","names":["proxyHeader: Headers[]"],"sources":["../../../src/proxy/multipleProxies.ts"],"sourcesContent":["import {\n type NextFetchEvent,\n type NextRequest,\n NextResponse,\n} from 'next/server';\n\n/**\n * Utility to combine multiple Next.js proxies into one.\n *\n * It executes proxies in order, merges headers, and correctly handles\n * redirects and rewrites.\n *\n * @example\n * import { multipleProxies, intlayerProxy } from \"next-intlayer/proxy\";\n * import { NextResponse } from \"next/server\";\n *\n * const authMiddleware = (req: NextRequest) => {\n * if (!req.cookies.get(\"token\")) {\n * return NextResponse.redirect(new URL(\"/login\", req.url));\n * }\n * return NextResponse.next();\n * };\n *\n * export default multipleProxies([\n * intlayerProxy,\n * authMiddleware,\n * ]);\n *\n * @param proxies - An array of proxy functions to execute in order.\n * @returns A single proxy function that runs all provided proxies.\n */\nexport const multipleProxies =\n (\n proxies: ((\n req: NextRequest,\n event?: NextFetchEvent,\n response?: NextResponse\n ) => NextResponse | Promise<NextResponse>)[]\n ) =>\n async (req: NextRequest, event?: NextFetchEvent, response?: NextResponse) => {\n // Array to store proxy headers\n const proxyHeader: Headers[] = [];\n\n // Loop through proxy functions\n for (const proxy of proxies) {\n // Execute proxy function and await the result\n const result = await proxy(req, event, response);\n\n // Check if the result is not okay and return it\n if (!result.ok) {\n return result;\n }\n\n // Push proxy headers to the array\n proxyHeader.push(result.headers);\n }\n\n // Merge all the headers to check if there is a redirection or rewrite\n const mergedHeaders = new Headers();\n\n // Merge all the custom headers added by the proxies\n const transmittedHeaders = new Headers();\n\n // Merge headers\n proxyHeader.forEach((header) => {\n for (const [key, value] of header.entries()) {\n mergedHeaders.append(key, value);\n\n // check if it's a custom header added by one of the proxies\n if (key.startsWith('x-proxy-request-')) {\n // remove the prefix to get the original key\n const fixedKey = key.replace('x-proxy-request-', '');\n\n // add the original key to the transmitted headers\n transmittedHeaders.append(fixedKey, value);\n }\n }\n });\n\n // Look for the 'x-proxy-request-redirect' header\n const redirect = mergedHeaders.get('x-proxy-request-redirect');\n\n // If a redirection is required based on the proxy headers\n if (redirect) {\n // Perform the redirection\n return NextResponse.redirect(new URL(redirect, req.url), {\n status: 307, // Temporary redirect\n });\n }\n\n // Look for the 'x-proxy-rewrite' header\n const rewrite = mergedHeaders.get('x-proxy-rewrite');\n if (rewrite) {\n // Perform the rewrite\n return NextResponse.rewrite(new URL(rewrite, req.url), {\n request: {\n headers: transmittedHeaders,\n },\n });\n }\n\n // Default: continue to next proxy\n return NextResponse.next({\n request: {\n headers: transmittedHeaders,\n },\n });\n };\n\nexport const multipleMiddlewares = multipleProxies;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAa,mBAET,YAMF,OAAO,KAAkB,OAAwB,aAA4B;CAE3E,MAAMA,cAAyB,EAAE;AAGjC,MAAK,MAAM,SAAS,SAAS;EAE3B,MAAM,SAAS,MAAM,MAAM,KAAK,OAAO,SAAS;AAGhD,MAAI,CAAC,OAAO,GACV,QAAO;AAIT,cAAY,KAAK,OAAO,QAAQ;;CAIlC,MAAM,gBAAgB,IAAI,SAAS;CAGnC,MAAM,qBAAqB,IAAI,SAAS;AAGxC,aAAY,SAAS,WAAW;AAC9B,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,SAAS,EAAE;AAC3C,iBAAc,OAAO,KAAK,MAAM;AAGhC,OAAI,IAAI,WAAW,mBAAmB,EAAE;IAEtC,MAAM,WAAW,IAAI,QAAQ,oBAAoB,GAAG;AAGpD,uBAAmB,OAAO,UAAU,MAAM;;;GAG9C;CAGF,MAAM,WAAW,cAAc,IAAI,2BAA2B;AAG9D,KAAI,SAEF,QAAO,aAAa,SAAS,IAAI,IAAI,UAAU,IAAI,IAAI,EAAE,EACvD,QAAQ,KACT,CAAC;CAIJ,MAAM,UAAU,cAAc,IAAI,kBAAkB;AACpD,KAAI,QAEF,QAAO,aAAa,QAAQ,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,EACrD,SAAS,EACP,SAAS,oBACV,EACF,CAAC;AAIJ,QAAO,aAAa,KAAK,EACvB,SAAS,EACP,SAAS,oBACV,EACF,CAAC;;AAGN,MAAa,sBAAsB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
|
|
3
|
+
//#region src/proxy/multipleProxy.ts
|
|
4
|
+
/**
|
|
5
|
+
* Utility to combine multiple Next.js middlewares into one.
|
|
6
|
+
*
|
|
7
|
+
* It executes middlewares in order, merges headers, and correctly handles
|
|
8
|
+
* redirects and rewrites.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* import { multipleProxy, intlayerMiddleware } from "next-intlayer/middleware";
|
|
12
|
+
* import { NextResponse } from "next/server";
|
|
13
|
+
*
|
|
14
|
+
* const authMiddleware = (req: NextRequest) => {
|
|
15
|
+
* if (!req.cookies.get("token")) {
|
|
16
|
+
* return NextResponse.redirect(new URL("/login", req.url));
|
|
17
|
+
* }
|
|
18
|
+
* return NextResponse.next();
|
|
19
|
+
* };
|
|
20
|
+
*
|
|
21
|
+
* export default multipleProxy([
|
|
22
|
+
* intlayerMiddleware,
|
|
23
|
+
* authMiddleware,
|
|
24
|
+
* ]);
|
|
25
|
+
*
|
|
26
|
+
* @param middlewares - An array of middleware functions to execute in order.
|
|
27
|
+
* @returns A single middleware function that runs all provided middlewares.
|
|
28
|
+
*/
|
|
29
|
+
const multipleProxy = (middlewares) => async (req, event, response) => {
|
|
30
|
+
const middlewareHeader = [];
|
|
31
|
+
for (const middleware of middlewares) {
|
|
32
|
+
const result = await middleware(req, event, response);
|
|
33
|
+
if (!result.ok) return result;
|
|
34
|
+
middlewareHeader.push(result.headers);
|
|
35
|
+
}
|
|
36
|
+
const mergedHeaders = new Headers();
|
|
37
|
+
const transmittedHeaders = new Headers();
|
|
38
|
+
middlewareHeader.forEach((header) => {
|
|
39
|
+
for (const [key, value] of header.entries()) {
|
|
40
|
+
mergedHeaders.append(key, value);
|
|
41
|
+
if (key.startsWith("x-middleware-request-")) {
|
|
42
|
+
const fixedKey = key.replace("x-middleware-request-", "");
|
|
43
|
+
transmittedHeaders.append(fixedKey, value);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
const redirect = mergedHeaders.get("x-middleware-request-redirect");
|
|
48
|
+
if (redirect) return NextResponse.redirect(new URL(redirect, req.url), { status: 307 });
|
|
49
|
+
const rewrite = mergedHeaders.get("x-middleware-rewrite");
|
|
50
|
+
if (rewrite) return NextResponse.rewrite(new URL(rewrite, req.url), { request: { headers: transmittedHeaders } });
|
|
51
|
+
return NextResponse.next({ request: { headers: transmittedHeaders } });
|
|
52
|
+
};
|
|
53
|
+
const multipleMiddlewares = multipleProxy;
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
export { multipleMiddlewares, multipleProxy };
|
|
57
|
+
//# sourceMappingURL=multipleProxy.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multipleProxy.mjs","names":["middlewareHeader: Headers[]"],"sources":["../../../src/proxy/multipleProxy.ts"],"sourcesContent":["import {\n type NextFetchEvent,\n type NextRequest,\n NextResponse,\n} from 'next/server';\n\n/**\n * Utility to combine multiple Next.js middlewares into one.\n *\n * It executes middlewares in order, merges headers, and correctly handles\n * redirects and rewrites.\n *\n * @example\n * import { multipleProxy, intlayerMiddleware } from \"next-intlayer/middleware\";\n * import { NextResponse } from \"next/server\";\n *\n * const authMiddleware = (req: NextRequest) => {\n * if (!req.cookies.get(\"token\")) {\n * return NextResponse.redirect(new URL(\"/login\", req.url));\n * }\n * return NextResponse.next();\n * };\n *\n * export default multipleProxy([\n * intlayerMiddleware,\n * authMiddleware,\n * ]);\n *\n * @param middlewares - An array of middleware functions to execute in order.\n * @returns A single middleware function that runs all provided middlewares.\n */\nexport const multipleProxy =\n (\n middlewares: ((\n req: NextRequest,\n event?: NextFetchEvent,\n response?: NextResponse\n ) => NextResponse | Promise<NextResponse>)[]\n ) =>\n async (req: NextRequest, event?: NextFetchEvent, response?: NextResponse) => {\n // Array to store middleware headers\n const middlewareHeader: Headers[] = [];\n\n // Loop through middleware functions\n for (const middleware of middlewares) {\n // Execute middleware function and await the result\n const result = await middleware(req, event, response);\n\n // Check if the result is not okay and return it\n if (!result.ok) {\n return result;\n }\n\n // Push middleware headers to the array\n middlewareHeader.push(result.headers);\n }\n\n // Merge all the headers to check if there is a redirection or rewrite\n const mergedHeaders = new Headers();\n\n // Merge all the custom headers added by the middlewares\n const transmittedHeaders = new Headers();\n\n // Merge headers\n middlewareHeader.forEach((header) => {\n for (const [key, value] of header.entries()) {\n mergedHeaders.append(key, value);\n\n // check if it's a custom header added by one of the middlewares\n if (key.startsWith('x-middleware-request-')) {\n // remove the prefix to get the original key\n const fixedKey = key.replace('x-middleware-request-', '');\n\n // add the original key to the transmitted headers\n transmittedHeaders.append(fixedKey, value);\n }\n }\n });\n\n // Look for the 'x-middleware-request-redirect' header\n const redirect = mergedHeaders.get('x-middleware-request-redirect');\n\n // If a redirection is required based on the middleware headers\n if (redirect) {\n // Perform the redirection\n return NextResponse.redirect(new URL(redirect, req.url), {\n status: 307, // Temporary redirect\n });\n }\n\n // Look for the 'x-middleware-rewrite' header\n const rewrite = mergedHeaders.get('x-middleware-rewrite');\n if (rewrite) {\n // Perform the rewrite\n return NextResponse.rewrite(new URL(rewrite, req.url), {\n request: {\n headers: transmittedHeaders,\n },\n });\n }\n\n // Default: continue to next middleware\n return NextResponse.next({\n request: {\n headers: transmittedHeaders,\n },\n });\n };\n\nexport const multipleMiddlewares = multipleProxy;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAa,iBAET,gBAMF,OAAO,KAAkB,OAAwB,aAA4B;CAE3E,MAAMA,mBAA8B,EAAE;AAGtC,MAAK,MAAM,cAAc,aAAa;EAEpC,MAAM,SAAS,MAAM,WAAW,KAAK,OAAO,SAAS;AAGrD,MAAI,CAAC,OAAO,GACV,QAAO;AAIT,mBAAiB,KAAK,OAAO,QAAQ;;CAIvC,MAAM,gBAAgB,IAAI,SAAS;CAGnC,MAAM,qBAAqB,IAAI,SAAS;AAGxC,kBAAiB,SAAS,WAAW;AACnC,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,SAAS,EAAE;AAC3C,iBAAc,OAAO,KAAK,MAAM;AAGhC,OAAI,IAAI,WAAW,wBAAwB,EAAE;IAE3C,MAAM,WAAW,IAAI,QAAQ,yBAAyB,GAAG;AAGzD,uBAAmB,OAAO,UAAU,MAAM;;;GAG9C;CAGF,MAAM,WAAW,cAAc,IAAI,gCAAgC;AAGnE,KAAI,SAEF,QAAO,aAAa,SAAS,IAAI,IAAI,UAAU,IAAI,IAAI,EAAE,EACvD,QAAQ,KACT,CAAC;CAIJ,MAAM,UAAU,cAAc,IAAI,uBAAuB;AACzD,KAAI,QAEF,QAAO,aAAa,QAAQ,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,EACrD,SAAS,EACP,SAAS,oBACV,EACF,CAAC;AAIJ,QAAO,aAAa,KAAK,EACvB,SAAS,EACP,SAAS,oBACV,EACF,CAAC;;AAGN,MAAa,sBAAsB"}
|
|
@@ -1,33 +1,37 @@
|
|
|
1
|
+
//#region src/server/compareVersion.ts
|
|
2
|
+
/**
|
|
3
|
+
* Compare two semver-like version strings (e.g. "15.10.4" vs "15.3.5").
|
|
4
|
+
*
|
|
5
|
+
* @param version1 - first version string
|
|
6
|
+
* @param version2 - second version string
|
|
7
|
+
* @param comparison - type of comparison: 'gt', 'lt', 'eq', 'gte', 'lte'
|
|
8
|
+
* @returns boolean indicating if version1 meets the specified comparison condition vs version2
|
|
9
|
+
*/
|
|
1
10
|
const compareVersions = (version1, comparison, version2) => {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
case "\u2265":
|
|
25
|
-
return result === 0 || result === 1;
|
|
26
|
-
case "\u2264":
|
|
27
|
-
return result === 0 || result === -1;
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
export {
|
|
31
|
-
compareVersions
|
|
11
|
+
const v1Parts = version1.split(".").map(Number);
|
|
12
|
+
const v2Parts = version2.split(".").map(Number);
|
|
13
|
+
const maxLen = Math.max(v1Parts.length, v2Parts.length);
|
|
14
|
+
let result = 0;
|
|
15
|
+
for (let i = 0; i < maxLen; i++) {
|
|
16
|
+
const part1 = v1Parts[i] || 0;
|
|
17
|
+
const part2 = v2Parts[i] || 0;
|
|
18
|
+
if (part1 > part2) {
|
|
19
|
+
result = 1;
|
|
20
|
+
break;
|
|
21
|
+
} else if (part1 < part2) {
|
|
22
|
+
result = -1;
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
switch (comparison) {
|
|
27
|
+
case ">": return result === 1;
|
|
28
|
+
case "<": return result === -1;
|
|
29
|
+
case "=": return result === 0;
|
|
30
|
+
case "≥": return result === 0 || result === 1;
|
|
31
|
+
case "≤": return result === 0 || result === -1;
|
|
32
|
+
}
|
|
32
33
|
};
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
export { compareVersions };
|
|
33
37
|
//# sourceMappingURL=compareVersion.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/server/compareVersion.ts"],"sourcesContent":["/**\n * Compare two semver-like version strings (e.g. \"15.10.4\" vs \"15.3.5\").\n *\n * @param version1 - first version string\n * @param version2 - second version string\n * @param comparison - type of comparison: 'gt', 'lt', 'eq', 'gte', 'lte'\n * @returns boolean indicating if version1 meets the specified comparison condition vs version2\n */\nexport const compareVersions = (\n version1: string,\n comparison: '>' | '<' | '=' | '≥' | '≤',\n version2: string\n): boolean => {\n const v1Parts = version1.split('.').map(Number);\n const v2Parts = version2.split('.').map(Number);\n const maxLen = Math.max(v1Parts.length, v2Parts.length);\n\n // Compute a basic -1, 0, or 1 comparison\n let result = 0;\n for (let i = 0; i < maxLen; i++) {\n const part1 = v1Parts[i] || 0;\n const part2 = v2Parts[i] || 0;\n if (part1 > part2) {\n result = 1;\n break;\n } else if (part1 < part2) {\n result = -1;\n break;\n }\n }\n\n switch (comparison) {\n case '>':\n return result === 1;\n case '<':\n return result === -1;\n case '=':\n return result === 0;\n case '≥':\n return result === 0 || result === 1;\n case '≤':\n return result === 0 || result === -1;\n }\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"compareVersion.mjs","names":[],"sources":["../../../src/server/compareVersion.ts"],"sourcesContent":["/**\n * Compare two semver-like version strings (e.g. \"15.10.4\" vs \"15.3.5\").\n *\n * @param version1 - first version string\n * @param version2 - second version string\n * @param comparison - type of comparison: 'gt', 'lt', 'eq', 'gte', 'lte'\n * @returns boolean indicating if version1 meets the specified comparison condition vs version2\n */\nexport const compareVersions = (\n version1: string,\n comparison: '>' | '<' | '=' | '≥' | '≤',\n version2: string\n): boolean => {\n const v1Parts = version1.split('.').map(Number);\n const v2Parts = version2.split('.').map(Number);\n const maxLen = Math.max(v1Parts.length, v2Parts.length);\n\n // Compute a basic -1, 0, or 1 comparison\n let result = 0;\n for (let i = 0; i < maxLen; i++) {\n const part1 = v1Parts[i] || 0;\n const part2 = v2Parts[i] || 0;\n if (part1 > part2) {\n result = 1;\n break;\n } else if (part1 < part2) {\n result = -1;\n break;\n }\n }\n\n switch (comparison) {\n case '>':\n return result === 1;\n case '<':\n return result === -1;\n case '=':\n return result === 0;\n case '≥':\n return result === 0 || result === 1;\n case '≤':\n return result === 0 || result === -1;\n }\n};\n"],"mappings":";;;;;;;;;AAQA,MAAa,mBACX,UACA,YACA,aACY;CACZ,MAAM,UAAU,SAAS,MAAM,IAAI,CAAC,IAAI,OAAO;CAC/C,MAAM,UAAU,SAAS,MAAM,IAAI,CAAC,IAAI,OAAO;CAC/C,MAAM,SAAS,KAAK,IAAI,QAAQ,QAAQ,QAAQ,OAAO;CAGvD,IAAI,SAAS;AACb,MAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,KAAK;EAC/B,MAAM,QAAQ,QAAQ,MAAM;EAC5B,MAAM,QAAQ,QAAQ,MAAM;AAC5B,MAAI,QAAQ,OAAO;AACjB,YAAS;AACT;aACS,QAAQ,OAAO;AACxB,YAAS;AACT;;;AAIJ,SAAQ,YAAR;EACE,KAAK,IACH,QAAO,WAAW;EACpB,KAAK,IACH,QAAO,WAAW;EACpB,KAAK,IACH,QAAO,WAAW;EACpB,KAAK,IACH,QAAO,WAAW,KAAK,WAAW;EACpC,KAAK,IACH,QAAO,WAAW,KAAK,WAAW"}
|
|
@@ -1,21 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
useDate,
|
|
5
|
-
useList,
|
|
6
|
-
useNumber,
|
|
7
|
-
usePercentage,
|
|
8
|
-
useRelativeTime,
|
|
9
|
-
useUnit
|
|
10
|
-
} from "react-intlayer/server/format";
|
|
11
|
-
export {
|
|
12
|
-
useCompact,
|
|
13
|
-
useCurrency,
|
|
14
|
-
useDate,
|
|
15
|
-
useList,
|
|
16
|
-
useNumber,
|
|
17
|
-
usePercentage,
|
|
18
|
-
useRelativeTime,
|
|
19
|
-
useUnit
|
|
20
|
-
};
|
|
21
|
-
//# sourceMappingURL=index.mjs.map
|
|
1
|
+
import { useCompact, useCurrency, useDate, useList, useNumber, usePercentage, useRelativeTime, useUnit } from "react-intlayer/server/format";
|
|
2
|
+
|
|
3
|
+
export { useCompact, useCurrency, useDate, useList, useNumber, usePercentage, useRelativeTime, useUnit };
|
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
import configuration from "@intlayer/config/built";
|
|
2
|
-
import { localeDetector } from "@intlayer/core";
|
|
2
|
+
import { getLocaleFromStorage, localeDetector } from "@intlayer/core";
|
|
3
|
+
import { DefaultValues } from "@intlayer/config";
|
|
4
|
+
import { Locales } from "@intlayer/types";
|
|
3
5
|
import { cookies, headers } from "next/headers.js";
|
|
6
|
+
|
|
7
|
+
//#region src/server/getLocale.ts
|
|
4
8
|
const getLocale = async () => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
getLocale
|
|
9
|
+
const defaultLocale = configuration?.internationalization?.defaultLocale ?? Locales.ENGLISH;
|
|
10
|
+
const headerName = configuration?.routing?.headerName ?? DefaultValues.Routing.HEADER_NAME;
|
|
11
|
+
const headersList = await headers();
|
|
12
|
+
const headerLocale = headersList.get(headerName);
|
|
13
|
+
if (headerLocale) return headerLocale;
|
|
14
|
+
const cookiesList = await cookies();
|
|
15
|
+
const cookieLocale = getLocaleFromStorage({ getCookie: (name) => cookiesList.get(name)?.value ?? null });
|
|
16
|
+
if (cookieLocale) return cookieLocale;
|
|
17
|
+
const negotiatorHeaders = {};
|
|
18
|
+
headersList.forEach((value, key) => {
|
|
19
|
+
negotiatorHeaders[key] = value;
|
|
20
|
+
});
|
|
21
|
+
const userFallbackLocale = localeDetector(negotiatorHeaders);
|
|
22
|
+
if (userFallbackLocale) return userFallbackLocale;
|
|
23
|
+
return defaultLocale;
|
|
21
24
|
};
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
export { getLocale };
|
|
22
28
|
//# sourceMappingURL=getLocale.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/server/getLocale.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"getLocale.mjs","names":["negotiatorHeaders: Record<string, string>"],"sources":["../../../src/server/getLocale.ts"],"sourcesContent":["import { DefaultValues } from '@intlayer/config';\nimport configuration from '@intlayer/config/built';\nimport { getLocaleFromStorage, localeDetector } from '@intlayer/core';\nimport { type Locale, Locales } from '@intlayer/types';\nimport { cookies, headers } from 'next/headers.js';\n\n// Helper function to extract locale from headers/cookies\nexport const getLocale = async (): Promise<Locale> => {\n const defaultLocale =\n configuration?.internationalization?.defaultLocale ?? Locales.ENGLISH;\n const headerName =\n configuration?.routing?.headerName ?? DefaultValues.Routing.HEADER_NAME;\n\n // 1 - Try locale from header\n const headersList = await headers();\n const headerLocale = headersList.get(headerName) as Locale | undefined;\n if (headerLocale) return headerLocale;\n\n // 2 - Try locale from cookie via universal storage\n const cookiesList = await cookies();\n\n const cookieLocale = getLocaleFromStorage({\n getCookie: (name: string) => cookiesList.get(name)?.value ?? null,\n });\n\n if (cookieLocale) return cookieLocale as Locale;\n\n // 3 - Fallback to Accept-Language negotiation\n const negotiatorHeaders: Record<string, string> = {};\n headersList.forEach((value, key) => {\n negotiatorHeaders[key] = value;\n });\n\n const userFallbackLocale = localeDetector(negotiatorHeaders);\n if (userFallbackLocale) return userFallbackLocale as Locale;\n\n // 4 - Default locale\n return defaultLocale;\n};\n"],"mappings":";;;;;;;AAOA,MAAa,YAAY,YAA6B;CACpD,MAAM,gBACJ,eAAe,sBAAsB,iBAAiB,QAAQ;CAChE,MAAM,aACJ,eAAe,SAAS,cAAc,cAAc,QAAQ;CAG9D,MAAM,cAAc,MAAM,SAAS;CACnC,MAAM,eAAe,YAAY,IAAI,WAAW;AAChD,KAAI,aAAc,QAAO;CAGzB,MAAM,cAAc,MAAM,SAAS;CAEnC,MAAM,eAAe,qBAAqB,EACxC,YAAY,SAAiB,YAAY,IAAI,KAAK,EAAE,SAAS,MAC9D,CAAC;AAEF,KAAI,aAAc,QAAO;CAGzB,MAAMA,oBAA4C,EAAE;AACpD,aAAY,SAAS,OAAO,QAAQ;AAClC,oBAAkB,OAAO;GACzB;CAEF,MAAM,qBAAqB,eAAe,kBAAkB;AAC5D,KAAI,mBAAoB,QAAO;AAG/B,QAAO"}
|
|
@@ -1,29 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
IntlayerServer,
|
|
3
|
-
IntlayerServerProvider,
|
|
4
|
-
locale,
|
|
5
|
-
t,
|
|
6
|
-
useDictionary,
|
|
7
|
-
useDictionaryDynamic,
|
|
8
|
-
useI18n,
|
|
9
|
-
useIntlayer,
|
|
10
|
-
useLoadDynamic,
|
|
11
|
-
useLocale
|
|
12
|
-
} from "react-intlayer/server";
|
|
13
1
|
import { getLocale } from "./getLocale.mjs";
|
|
14
|
-
import { withIntlayer } from "./withIntlayer.mjs";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
getLocale,
|
|
19
|
-
locale,
|
|
20
|
-
t,
|
|
21
|
-
useDictionary,
|
|
22
|
-
useDictionaryDynamic,
|
|
23
|
-
useI18n,
|
|
24
|
-
useIntlayer,
|
|
25
|
-
useLoadDynamic,
|
|
26
|
-
useLocale,
|
|
27
|
-
withIntlayer
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=index.mjs.map
|
|
2
|
+
import { withIntlayer, withIntlayerSync } from "./withIntlayer.mjs";
|
|
3
|
+
import { IntlayerServer, IntlayerServerProvider, locale, t, useDictionary, useDictionaryDynamic, useI18n, useIntlayer, useLoadDynamic, useLocale } from "react-intlayer/server";
|
|
4
|
+
|
|
5
|
+
export { IntlayerServer, IntlayerServerProvider, getLocale, locale, t, useDictionary, useDictionaryDynamic, useI18n, useIntlayer, useLoadDynamic, useLocale, withIntlayer, withIntlayerSync };
|