next-intlayer 8.9.4 → 8.9.5
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/proxy/multipleProxies.cjs +32 -15
- package/dist/cjs/proxy/multipleProxies.cjs.map +1 -1
- package/dist/esm/proxy/multipleProxies.mjs +32 -15
- package/dist/esm/proxy/multipleProxies.mjs.map +1 -1
- package/dist/types/index.d.ts +4 -4
- package/dist/types/proxy/middleware.d.ts.map +1 -1
- package/dist/types/proxy/multipleProxies.d.ts +5 -2
- package/dist/types/proxy/multipleProxies.d.ts.map +1 -1
- package/package.json +10 -10
|
@@ -6,8 +6,11 @@ let next_server = require("next/server");
|
|
|
6
6
|
/**
|
|
7
7
|
* Utility to combine multiple Next.js proxies into one.
|
|
8
8
|
*
|
|
9
|
-
* It executes proxies in order,
|
|
10
|
-
* redirects and
|
|
9
|
+
* It executes proxies in order, passing each result as the `response` argument
|
|
10
|
+
* to the next proxy. Routing instructions (redirects / rewrites) and custom
|
|
11
|
+
* response headers are merged across the entire chain, so a later proxy that
|
|
12
|
+
* returns `NextResponse.next()` does not accidentally discard a rewrite set by
|
|
13
|
+
* an earlier proxy.
|
|
11
14
|
*
|
|
12
15
|
* @example
|
|
13
16
|
* import { multipleProxies, intlayerProxy } from "next-intlayer/proxy";
|
|
@@ -29,29 +32,43 @@ let next_server = require("next/server");
|
|
|
29
32
|
* @returns A single proxy function that runs all provided proxies.
|
|
30
33
|
*/
|
|
31
34
|
const multipleProxies = (proxies) => async (req, event, response) => {
|
|
32
|
-
const
|
|
35
|
+
const proxyHeaders = [];
|
|
36
|
+
let finalStatus = 200;
|
|
37
|
+
let redirectLocation = null;
|
|
38
|
+
let currentResponse = response ?? next_server.NextResponse.next();
|
|
33
39
|
for (const proxy of proxies) {
|
|
34
|
-
const result = await proxy(req, event,
|
|
35
|
-
if (
|
|
36
|
-
|
|
40
|
+
const result = await proxy(req, event, currentResponse);
|
|
41
|
+
if (result.status >= 500) return result;
|
|
42
|
+
if (result.status >= 300 && result.status < 400) {
|
|
43
|
+
finalStatus = result.status;
|
|
44
|
+
const location = result.headers.get("location");
|
|
45
|
+
if (location) redirectLocation = location;
|
|
46
|
+
}
|
|
47
|
+
proxyHeaders.push(new Headers(result.headers));
|
|
48
|
+
currentResponse = result;
|
|
37
49
|
}
|
|
38
50
|
const mergedHeaders = new Headers();
|
|
39
51
|
const transmittedHeaders = new Headers(req.headers);
|
|
40
|
-
|
|
41
|
-
for (const [key, value] of
|
|
52
|
+
proxyHeaders.forEach((headers) => {
|
|
53
|
+
for (const [key, value] of headers.entries()) {
|
|
42
54
|
if (key === "x-middleware-rewrite" || key === "x-middleware-request-redirect") mergedHeaders.set(key, value);
|
|
43
55
|
else mergedHeaders.append(key, value);
|
|
44
56
|
if (key.startsWith("x-middleware-request-")) {
|
|
45
|
-
const
|
|
46
|
-
transmittedHeaders.set(
|
|
57
|
+
const stripped = key.slice(21);
|
|
58
|
+
transmittedHeaders.set(stripped, value);
|
|
47
59
|
}
|
|
48
60
|
}
|
|
49
61
|
});
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (
|
|
54
|
-
|
|
62
|
+
const redirectHeader = mergedHeaders.get("x-middleware-request-redirect");
|
|
63
|
+
const rewriteHeader = mergedHeaders.get("x-middleware-rewrite");
|
|
64
|
+
let finalResponse;
|
|
65
|
+
if (redirectHeader || redirectLocation) finalResponse = next_server.NextResponse.redirect(new URL(redirectHeader ?? redirectLocation, req.url), { status: finalStatus >= 300 ? finalStatus : 307 });
|
|
66
|
+
else if (rewriteHeader) finalResponse = next_server.NextResponse.rewrite(new URL(rewriteHeader, req.url), { request: { headers: transmittedHeaders } });
|
|
67
|
+
else finalResponse = next_server.NextResponse.next({ request: { headers: transmittedHeaders } });
|
|
68
|
+
mergedHeaders.forEach((value, key) => {
|
|
69
|
+
if (key !== "x-middleware-rewrite" && key !== "x-middleware-request-redirect" && !key.startsWith("x-middleware-request-") && key !== "location") finalResponse.headers.set(key, value);
|
|
70
|
+
});
|
|
71
|
+
return finalResponse;
|
|
55
72
|
};
|
|
56
73
|
|
|
57
74
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multipleProxies.cjs","names":["NextResponse"],"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,
|
|
1
|
+
{"version":3,"file":"multipleProxies.cjs","names":["NextResponse"],"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, passing each result as the `response` argument\n * to the next proxy. Routing instructions (redirects / rewrites) and custom\n * response headers are merged across the entire chain, so a later proxy that\n * returns `NextResponse.next()` does not accidentally discard a rewrite set by\n * an earlier proxy.\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 // Snapshots of each proxy's response headers, collected in order.\n const proxyHeaders: Headers[] = [];\n let finalStatus = 200;\n let redirectLocation: string | null = null;\n\n // Each proxy receives the previous proxy's result so it can inspect or\n // augment it. Start with the caller-supplied response (or a plain next()).\n let currentResponse: NextResponse = response ?? NextResponse.next();\n\n for (const proxy of proxies) {\n const result = await proxy(req, event, currentResponse);\n\n // Bail immediately on server errors.\n if (result.status >= 500) {\n return result;\n }\n\n // Track the strongest redirect in the chain.\n if (result.status >= 300 && result.status < 400) {\n finalStatus = result.status;\n const location = result.headers.get('location');\n if (location) redirectLocation = location;\n }\n\n // Snapshot headers *now* to avoid later mutations to the same object\n // corrupting already-recorded entries from earlier proxies.\n proxyHeaders.push(new Headers(result.headers));\n currentResponse = result;\n }\n\n // ── Merge all collected headers ───────────────────────────────────────────\n\n // mergedHeaders: response headers visible to the browser / Next.js routing.\n const mergedHeaders = new Headers();\n // transmittedHeaders: request headers forwarded to the next route handler.\n const transmittedHeaders = new Headers(req.headers);\n\n proxyHeaders.forEach((headers) => {\n for (const [key, value] of headers.entries()) {\n // Routing headers must not be concatenated — last writer wins.\n if (\n key === 'x-middleware-rewrite' ||\n key === 'x-middleware-request-redirect'\n ) {\n mergedHeaders.set(key, value);\n } else {\n mergedHeaders.append(key, value);\n }\n\n // x-middleware-request-<name> → forwarded as <name> to route handlers.\n if (key.startsWith('x-middleware-request-')) {\n const stripped = key.slice('x-middleware-request-'.length);\n transmittedHeaders.set(stripped, value);\n }\n }\n });\n\n // ── Construct the final response ──────────────────────────────────────────\n\n const redirectHeader = mergedHeaders.get('x-middleware-request-redirect');\n const rewriteHeader = mergedHeaders.get('x-middleware-rewrite');\n\n let finalResponse: NextResponse;\n\n if (redirectHeader || redirectLocation) {\n finalResponse = NextResponse.redirect(\n new URL((redirectHeader ?? redirectLocation) as string, req.url),\n { status: finalStatus >= 300 ? finalStatus : 307 }\n );\n } else if (rewriteHeader) {\n finalResponse = NextResponse.rewrite(new URL(rewriteHeader, req.url), {\n request: { headers: transmittedHeaders },\n });\n } else {\n finalResponse = NextResponse.next({\n request: { headers: transmittedHeaders },\n });\n }\n\n // Copy all accumulated custom response headers onto the final response,\n // skipping internal Next.js routing headers (already handled above).\n mergedHeaders.forEach((value, key) => {\n if (\n key !== 'x-middleware-rewrite' &&\n key !== 'x-middleware-request-redirect' &&\n !key.startsWith('x-middleware-request-') &&\n key !== 'location'\n ) {\n finalResponse.headers.set(key, value);\n }\n });\n\n return finalResponse;\n };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAa,mBAET,YAMF,OAAO,KAAkB,OAAwB,aAA4B;CAE3E,MAAM,eAA0B,EAAE;CAClC,IAAI,cAAc;CAClB,IAAI,mBAAkC;CAItC,IAAI,kBAAgC,YAAYA,yBAAa,MAAM;CAEnE,KAAK,MAAM,SAAS,SAAS;EAC3B,MAAM,SAAS,MAAM,MAAM,KAAK,OAAO,gBAAgB;EAGvD,IAAI,OAAO,UAAU,KACnB,OAAO;EAIT,IAAI,OAAO,UAAU,OAAO,OAAO,SAAS,KAAK;GAC/C,cAAc,OAAO;GACrB,MAAM,WAAW,OAAO,QAAQ,IAAI,WAAW;GAC/C,IAAI,UAAU,mBAAmB;;EAKnC,aAAa,KAAK,IAAI,QAAQ,OAAO,QAAQ,CAAC;EAC9C,kBAAkB;;CAMpB,MAAM,gBAAgB,IAAI,SAAS;CAEnC,MAAM,qBAAqB,IAAI,QAAQ,IAAI,QAAQ;CAEnD,aAAa,SAAS,YAAY;EAChC,KAAK,MAAM,CAAC,KAAK,UAAU,QAAQ,SAAS,EAAE;GAE5C,IACE,QAAQ,0BACR,QAAQ,iCAER,cAAc,IAAI,KAAK,MAAM;QAE7B,cAAc,OAAO,KAAK,MAAM;GAIlC,IAAI,IAAI,WAAW,wBAAwB,EAAE;IAC3C,MAAM,WAAW,IAAI,MAAM,GAA+B;IAC1D,mBAAmB,IAAI,UAAU,MAAM;;;GAG3C;CAIF,MAAM,iBAAiB,cAAc,IAAI,gCAAgC;CACzE,MAAM,gBAAgB,cAAc,IAAI,uBAAuB;CAE/D,IAAI;CAEJ,IAAI,kBAAkB,kBACpB,gBAAgBA,yBAAa,SAC3B,IAAI,IAAK,kBAAkB,kBAA6B,IAAI,IAAI,EAChE,EAAE,QAAQ,eAAe,MAAM,cAAc,KAAK,CACnD;MACI,IAAI,eACT,gBAAgBA,yBAAa,QAAQ,IAAI,IAAI,eAAe,IAAI,IAAI,EAAE,EACpE,SAAS,EAAE,SAAS,oBAAoB,EACzC,CAAC;MAEF,gBAAgBA,yBAAa,KAAK,EAChC,SAAS,EAAE,SAAS,oBAAoB,EACzC,CAAC;CAKJ,cAAc,SAAS,OAAO,QAAQ;EACpC,IACE,QAAQ,0BACR,QAAQ,mCACR,CAAC,IAAI,WAAW,wBAAwB,IACxC,QAAQ,YAER,cAAc,QAAQ,IAAI,KAAK,MAAM;GAEvC;CAEF,OAAO"}
|
|
@@ -4,8 +4,11 @@ import { NextResponse } from "next/server";
|
|
|
4
4
|
/**
|
|
5
5
|
* Utility to combine multiple Next.js proxies into one.
|
|
6
6
|
*
|
|
7
|
-
* It executes proxies in order,
|
|
8
|
-
* redirects and
|
|
7
|
+
* It executes proxies in order, passing each result as the `response` argument
|
|
8
|
+
* to the next proxy. Routing instructions (redirects / rewrites) and custom
|
|
9
|
+
* response headers are merged across the entire chain, so a later proxy that
|
|
10
|
+
* returns `NextResponse.next()` does not accidentally discard a rewrite set by
|
|
11
|
+
* an earlier proxy.
|
|
9
12
|
*
|
|
10
13
|
* @example
|
|
11
14
|
* import { multipleProxies, intlayerProxy } from "next-intlayer/proxy";
|
|
@@ -27,29 +30,43 @@ import { NextResponse } from "next/server";
|
|
|
27
30
|
* @returns A single proxy function that runs all provided proxies.
|
|
28
31
|
*/
|
|
29
32
|
const multipleProxies = (proxies) => async (req, event, response) => {
|
|
30
|
-
const
|
|
33
|
+
const proxyHeaders = [];
|
|
34
|
+
let finalStatus = 200;
|
|
35
|
+
let redirectLocation = null;
|
|
36
|
+
let currentResponse = response ?? NextResponse.next();
|
|
31
37
|
for (const proxy of proxies) {
|
|
32
|
-
const result = await proxy(req, event,
|
|
33
|
-
if (
|
|
34
|
-
|
|
38
|
+
const result = await proxy(req, event, currentResponse);
|
|
39
|
+
if (result.status >= 500) return result;
|
|
40
|
+
if (result.status >= 300 && result.status < 400) {
|
|
41
|
+
finalStatus = result.status;
|
|
42
|
+
const location = result.headers.get("location");
|
|
43
|
+
if (location) redirectLocation = location;
|
|
44
|
+
}
|
|
45
|
+
proxyHeaders.push(new Headers(result.headers));
|
|
46
|
+
currentResponse = result;
|
|
35
47
|
}
|
|
36
48
|
const mergedHeaders = new Headers();
|
|
37
49
|
const transmittedHeaders = new Headers(req.headers);
|
|
38
|
-
|
|
39
|
-
for (const [key, value] of
|
|
50
|
+
proxyHeaders.forEach((headers) => {
|
|
51
|
+
for (const [key, value] of headers.entries()) {
|
|
40
52
|
if (key === "x-middleware-rewrite" || key === "x-middleware-request-redirect") mergedHeaders.set(key, value);
|
|
41
53
|
else mergedHeaders.append(key, value);
|
|
42
54
|
if (key.startsWith("x-middleware-request-")) {
|
|
43
|
-
const
|
|
44
|
-
transmittedHeaders.set(
|
|
55
|
+
const stripped = key.slice(21);
|
|
56
|
+
transmittedHeaders.set(stripped, value);
|
|
45
57
|
}
|
|
46
58
|
}
|
|
47
59
|
});
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (
|
|
52
|
-
|
|
60
|
+
const redirectHeader = mergedHeaders.get("x-middleware-request-redirect");
|
|
61
|
+
const rewriteHeader = mergedHeaders.get("x-middleware-rewrite");
|
|
62
|
+
let finalResponse;
|
|
63
|
+
if (redirectHeader || redirectLocation) finalResponse = NextResponse.redirect(new URL(redirectHeader ?? redirectLocation, req.url), { status: finalStatus >= 300 ? finalStatus : 307 });
|
|
64
|
+
else if (rewriteHeader) finalResponse = NextResponse.rewrite(new URL(rewriteHeader, req.url), { request: { headers: transmittedHeaders } });
|
|
65
|
+
else finalResponse = NextResponse.next({ request: { headers: transmittedHeaders } });
|
|
66
|
+
mergedHeaders.forEach((value, key) => {
|
|
67
|
+
if (key !== "x-middleware-rewrite" && key !== "x-middleware-request-redirect" && !key.startsWith("x-middleware-request-") && key !== "location") finalResponse.headers.set(key, value);
|
|
68
|
+
});
|
|
69
|
+
return finalResponse;
|
|
53
70
|
};
|
|
54
71
|
|
|
55
72
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multipleProxies.mjs","names":[],"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,
|
|
1
|
+
{"version":3,"file":"multipleProxies.mjs","names":[],"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, passing each result as the `response` argument\n * to the next proxy. Routing instructions (redirects / rewrites) and custom\n * response headers are merged across the entire chain, so a later proxy that\n * returns `NextResponse.next()` does not accidentally discard a rewrite set by\n * an earlier proxy.\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 // Snapshots of each proxy's response headers, collected in order.\n const proxyHeaders: Headers[] = [];\n let finalStatus = 200;\n let redirectLocation: string | null = null;\n\n // Each proxy receives the previous proxy's result so it can inspect or\n // augment it. Start with the caller-supplied response (or a plain next()).\n let currentResponse: NextResponse = response ?? NextResponse.next();\n\n for (const proxy of proxies) {\n const result = await proxy(req, event, currentResponse);\n\n // Bail immediately on server errors.\n if (result.status >= 500) {\n return result;\n }\n\n // Track the strongest redirect in the chain.\n if (result.status >= 300 && result.status < 400) {\n finalStatus = result.status;\n const location = result.headers.get('location');\n if (location) redirectLocation = location;\n }\n\n // Snapshot headers *now* to avoid later mutations to the same object\n // corrupting already-recorded entries from earlier proxies.\n proxyHeaders.push(new Headers(result.headers));\n currentResponse = result;\n }\n\n // ── Merge all collected headers ───────────────────────────────────────────\n\n // mergedHeaders: response headers visible to the browser / Next.js routing.\n const mergedHeaders = new Headers();\n // transmittedHeaders: request headers forwarded to the next route handler.\n const transmittedHeaders = new Headers(req.headers);\n\n proxyHeaders.forEach((headers) => {\n for (const [key, value] of headers.entries()) {\n // Routing headers must not be concatenated — last writer wins.\n if (\n key === 'x-middleware-rewrite' ||\n key === 'x-middleware-request-redirect'\n ) {\n mergedHeaders.set(key, value);\n } else {\n mergedHeaders.append(key, value);\n }\n\n // x-middleware-request-<name> → forwarded as <name> to route handlers.\n if (key.startsWith('x-middleware-request-')) {\n const stripped = key.slice('x-middleware-request-'.length);\n transmittedHeaders.set(stripped, value);\n }\n }\n });\n\n // ── Construct the final response ──────────────────────────────────────────\n\n const redirectHeader = mergedHeaders.get('x-middleware-request-redirect');\n const rewriteHeader = mergedHeaders.get('x-middleware-rewrite');\n\n let finalResponse: NextResponse;\n\n if (redirectHeader || redirectLocation) {\n finalResponse = NextResponse.redirect(\n new URL((redirectHeader ?? redirectLocation) as string, req.url),\n { status: finalStatus >= 300 ? finalStatus : 307 }\n );\n } else if (rewriteHeader) {\n finalResponse = NextResponse.rewrite(new URL(rewriteHeader, req.url), {\n request: { headers: transmittedHeaders },\n });\n } else {\n finalResponse = NextResponse.next({\n request: { headers: transmittedHeaders },\n });\n }\n\n // Copy all accumulated custom response headers onto the final response,\n // skipping internal Next.js routing headers (already handled above).\n mergedHeaders.forEach((value, key) => {\n if (\n key !== 'x-middleware-rewrite' &&\n key !== 'x-middleware-request-redirect' &&\n !key.startsWith('x-middleware-request-') &&\n key !== 'location'\n ) {\n finalResponse.headers.set(key, value);\n }\n });\n\n return finalResponse;\n };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAa,mBAET,YAMF,OAAO,KAAkB,OAAwB,aAA4B;CAE3E,MAAM,eAA0B,EAAE;CAClC,IAAI,cAAc;CAClB,IAAI,mBAAkC;CAItC,IAAI,kBAAgC,YAAY,aAAa,MAAM;CAEnE,KAAK,MAAM,SAAS,SAAS;EAC3B,MAAM,SAAS,MAAM,MAAM,KAAK,OAAO,gBAAgB;EAGvD,IAAI,OAAO,UAAU,KACnB,OAAO;EAIT,IAAI,OAAO,UAAU,OAAO,OAAO,SAAS,KAAK;GAC/C,cAAc,OAAO;GACrB,MAAM,WAAW,OAAO,QAAQ,IAAI,WAAW;GAC/C,IAAI,UAAU,mBAAmB;;EAKnC,aAAa,KAAK,IAAI,QAAQ,OAAO,QAAQ,CAAC;EAC9C,kBAAkB;;CAMpB,MAAM,gBAAgB,IAAI,SAAS;CAEnC,MAAM,qBAAqB,IAAI,QAAQ,IAAI,QAAQ;CAEnD,aAAa,SAAS,YAAY;EAChC,KAAK,MAAM,CAAC,KAAK,UAAU,QAAQ,SAAS,EAAE;GAE5C,IACE,QAAQ,0BACR,QAAQ,iCAER,cAAc,IAAI,KAAK,MAAM;QAE7B,cAAc,OAAO,KAAK,MAAM;GAIlC,IAAI,IAAI,WAAW,wBAAwB,EAAE;IAC3C,MAAM,WAAW,IAAI,MAAM,GAA+B;IAC1D,mBAAmB,IAAI,UAAU,MAAM;;;GAG3C;CAIF,MAAM,iBAAiB,cAAc,IAAI,gCAAgC;CACzE,MAAM,gBAAgB,cAAc,IAAI,uBAAuB;CAE/D,IAAI;CAEJ,IAAI,kBAAkB,kBACpB,gBAAgB,aAAa,SAC3B,IAAI,IAAK,kBAAkB,kBAA6B,IAAI,IAAI,EAChE,EAAE,QAAQ,eAAe,MAAM,cAAc,KAAK,CACnD;MACI,IAAI,eACT,gBAAgB,aAAa,QAAQ,IAAI,IAAI,eAAe,IAAI,IAAI,EAAE,EACpE,SAAS,EAAE,SAAS,oBAAoB,EACzC,CAAC;MAEF,gBAAgB,aAAa,KAAK,EAChC,SAAS,EAAE,SAAS,oBAAoB,EACzC,CAAC;CAKJ,cAAc,SAAS,OAAO,QAAQ;EACpC,IACE,QAAQ,0BACR,QAAQ,mCACR,CAAC,IAAI,WAAW,wBAAwB,IACxC,QAAQ,YAER,cAAc,QAAQ,IAAI,KAAK,MAAM;GAEvC;CAEF,OAAO"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ declare const MarkdownProvider: _$react.FC<index_d_exports.MarkdownProviderOptio
|
|
|
18
18
|
hr?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLHRElement>, HTMLHRElement>>;
|
|
19
19
|
th?: _$react.FC<_$react.DetailedHTMLProps<_$react.ThHTMLAttributes<HTMLTableHeaderCellElement>, HTMLTableHeaderCellElement>>;
|
|
20
20
|
tr?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLTableRowElement>, HTMLTableRowElement>>;
|
|
21
|
+
output?: _$react.FC<_$react.DetailedHTMLProps<_$react.OutputHTMLAttributes<HTMLOutputElement>, HTMLOutputElement>>;
|
|
21
22
|
html?: _$react.FC<_$react.DetailedHTMLProps<_$react.HtmlHTMLAttributes<HTMLHtmlElement>, HTMLHtmlElement>>;
|
|
22
23
|
head?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLHeadElement>, HTMLHeadElement>>;
|
|
23
24
|
body?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLBodyElement>, HTMLBodyElement>>;
|
|
@@ -86,7 +87,6 @@ declare const MarkdownProvider: _$react.FC<index_d_exports.MarkdownProviderOptio
|
|
|
86
87
|
fieldset?: _$react.FC<_$react.DetailedHTMLProps<_$react.FieldsetHTMLAttributes<HTMLFieldSetElement>, HTMLFieldSetElement>>;
|
|
87
88
|
legend?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLLegendElement>, HTMLLegendElement>>;
|
|
88
89
|
datalist?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLDataListElement>, HTMLDataListElement>>;
|
|
89
|
-
output?: _$react.FC<_$react.DetailedHTMLProps<_$react.OutputHTMLAttributes<HTMLOutputElement>, HTMLOutputElement>>;
|
|
90
90
|
progress?: _$react.FC<_$react.DetailedHTMLProps<_$react.ProgressHTMLAttributes<HTMLProgressElement>, HTMLProgressElement>>;
|
|
91
91
|
meter?: _$react.FC<_$react.DetailedHTMLProps<_$react.MeterHTMLAttributes<HTMLMeterElement>, HTMLMeterElement>>;
|
|
92
92
|
img?: _$react.FC<_$react.DetailedHTMLProps<_$react.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>>;
|
|
@@ -123,6 +123,7 @@ declare const MarkdownProvider: _$react.FC<index_d_exports.MarkdownProviderOptio
|
|
|
123
123
|
hr?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLHRElement>, HTMLHRElement>>;
|
|
124
124
|
th?: _$react.FC<_$react.DetailedHTMLProps<_$react.ThHTMLAttributes<HTMLTableHeaderCellElement>, HTMLTableHeaderCellElement>>;
|
|
125
125
|
tr?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLTableRowElement>, HTMLTableRowElement>>;
|
|
126
|
+
output?: _$react.FC<_$react.DetailedHTMLProps<_$react.OutputHTMLAttributes<HTMLOutputElement>, HTMLOutputElement>>;
|
|
126
127
|
html?: _$react.FC<_$react.DetailedHTMLProps<_$react.HtmlHTMLAttributes<HTMLHtmlElement>, HTMLHtmlElement>>;
|
|
127
128
|
head?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLHeadElement>, HTMLHeadElement>>;
|
|
128
129
|
body?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLBodyElement>, HTMLBodyElement>>;
|
|
@@ -191,7 +192,6 @@ declare const MarkdownProvider: _$react.FC<index_d_exports.MarkdownProviderOptio
|
|
|
191
192
|
fieldset?: _$react.FC<_$react.DetailedHTMLProps<_$react.FieldsetHTMLAttributes<HTMLFieldSetElement>, HTMLFieldSetElement>>;
|
|
192
193
|
legend?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLLegendElement>, HTMLLegendElement>>;
|
|
193
194
|
datalist?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLDataListElement>, HTMLDataListElement>>;
|
|
194
|
-
output?: _$react.FC<_$react.DetailedHTMLProps<_$react.OutputHTMLAttributes<HTMLOutputElement>, HTMLOutputElement>>;
|
|
195
195
|
progress?: _$react.FC<_$react.DetailedHTMLProps<_$react.ProgressHTMLAttributes<HTMLProgressElement>, HTMLProgressElement>>;
|
|
196
196
|
meter?: _$react.FC<_$react.DetailedHTMLProps<_$react.MeterHTMLAttributes<HTMLMeterElement>, HTMLMeterElement>>;
|
|
197
197
|
img?: _$react.FC<_$react.DetailedHTMLProps<_$react.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>>;
|
|
@@ -234,6 +234,7 @@ declare const useMarkdownContext: () => {
|
|
|
234
234
|
hr?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLHRElement>, HTMLHRElement>>;
|
|
235
235
|
th?: _$react.FC<_$react.DetailedHTMLProps<_$react.ThHTMLAttributes<HTMLTableHeaderCellElement>, HTMLTableHeaderCellElement>>;
|
|
236
236
|
tr?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLTableRowElement>, HTMLTableRowElement>>;
|
|
237
|
+
output?: _$react.FC<_$react.DetailedHTMLProps<_$react.OutputHTMLAttributes<HTMLOutputElement>, HTMLOutputElement>>;
|
|
237
238
|
html?: _$react.FC<_$react.DetailedHTMLProps<_$react.HtmlHTMLAttributes<HTMLHtmlElement>, HTMLHtmlElement>>;
|
|
238
239
|
head?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLHeadElement>, HTMLHeadElement>>;
|
|
239
240
|
body?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLBodyElement>, HTMLBodyElement>>;
|
|
@@ -302,7 +303,6 @@ declare const useMarkdownContext: () => {
|
|
|
302
303
|
fieldset?: _$react.FC<_$react.DetailedHTMLProps<_$react.FieldsetHTMLAttributes<HTMLFieldSetElement>, HTMLFieldSetElement>>;
|
|
303
304
|
legend?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLLegendElement>, HTMLLegendElement>>;
|
|
304
305
|
datalist?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLDataListElement>, HTMLDataListElement>>;
|
|
305
|
-
output?: _$react.FC<_$react.DetailedHTMLProps<_$react.OutputHTMLAttributes<HTMLOutputElement>, HTMLOutputElement>>;
|
|
306
306
|
progress?: _$react.FC<_$react.DetailedHTMLProps<_$react.ProgressHTMLAttributes<HTMLProgressElement>, HTMLProgressElement>>;
|
|
307
307
|
meter?: _$react.FC<_$react.DetailedHTMLProps<_$react.MeterHTMLAttributes<HTMLMeterElement>, HTMLMeterElement>>;
|
|
308
308
|
img?: _$react.FC<_$react.DetailedHTMLProps<_$react.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>>;
|
|
@@ -338,6 +338,7 @@ declare const useMarkdownContext: () => {
|
|
|
338
338
|
hr?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLHRElement>, HTMLHRElement>>;
|
|
339
339
|
th?: _$react.FC<_$react.DetailedHTMLProps<_$react.ThHTMLAttributes<HTMLTableHeaderCellElement>, HTMLTableHeaderCellElement>>;
|
|
340
340
|
tr?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLTableRowElement>, HTMLTableRowElement>>;
|
|
341
|
+
output?: _$react.FC<_$react.DetailedHTMLProps<_$react.OutputHTMLAttributes<HTMLOutputElement>, HTMLOutputElement>>;
|
|
341
342
|
html?: _$react.FC<_$react.DetailedHTMLProps<_$react.HtmlHTMLAttributes<HTMLHtmlElement>, HTMLHtmlElement>>;
|
|
342
343
|
head?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLHeadElement>, HTMLHeadElement>>;
|
|
343
344
|
body?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLBodyElement>, HTMLBodyElement>>;
|
|
@@ -406,7 +407,6 @@ declare const useMarkdownContext: () => {
|
|
|
406
407
|
fieldset?: _$react.FC<_$react.DetailedHTMLProps<_$react.FieldsetHTMLAttributes<HTMLFieldSetElement>, HTMLFieldSetElement>>;
|
|
407
408
|
legend?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLLegendElement>, HTMLLegendElement>>;
|
|
408
409
|
datalist?: _$react.FC<_$react.DetailedHTMLProps<_$react.HTMLAttributes<HTMLDataListElement>, HTMLDataListElement>>;
|
|
409
|
-
output?: _$react.FC<_$react.DetailedHTMLProps<_$react.OutputHTMLAttributes<HTMLOutputElement>, HTMLOutputElement>>;
|
|
410
410
|
progress?: _$react.FC<_$react.DetailedHTMLProps<_$react.ProgressHTMLAttributes<HTMLProgressElement>, HTMLProgressElement>>;
|
|
411
411
|
meter?: _$react.FC<_$react.DetailedHTMLProps<_$react.MeterHTMLAttributes<HTMLMeterElement>, HTMLMeterElement>>;
|
|
412
412
|
img?: _$react.FC<_$react.DetailedHTMLProps<_$react.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","names":[],"sources":["../../../src/proxy/middleware.ts"],"mappings":";;;;;;AA8BA;;;;;;;;;;;;;;;;;;AAEA;;;;;AAFA,cAAa,kBAAA,GAAkB,OAAA,EAAgB,cAAA,CAAhB,WAAA,EAAA,MAAA,GAAA,cAAA,CAAA,cAAA,EAAA,SAAA,GAAA,cAAA,CAAA,YAAA,KAAA,cAAA,CAAA,YAAA;AAAA,cAElB,mBAAA,GAAmB,OAAA,IAAA,GAAA,EAAkB,cAAA,CAAlB,WAAA,EAAA,KAAA,GAAA,cAAA,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","names":[],"sources":["../../../src/proxy/middleware.ts"],"mappings":";;;;;;AA8BA;;;;;;;;;;;;;;;;;;AAEA;;;;;AAFA,cAAa,kBAAA,GAAkB,OAAA,EAAgB,cAAA,CAAhB,WAAA,EAAA,MAAA,GAAA,cAAA,CAAA,cAAA,EAAA,SAAA,GAAA,cAAA,CAAA,YAAA,KAAA,cAAA,CAAA,YAAA;AAAA,cAElB,mBAAA,GAAmB,OAAA,IAAA,GAAA,EAAkB,cAAA,CAAlB,WAAA,EAAA,KAAA,GAAA,cAAA,CACsN,cAAA,EAAA,QAAA,GAAA,cAAA,CAAiC,YAAA,KAAA,cAAA,CAAA,YAAA,GAAA,OAAA,CAAA,cAAA,CAAA,YAAA,UAAgF,GAAA,EAAhF,cAAA,CAAgF,WAAA,EAAiB,KAAA,GAAD,cAAA,CAAC,cAAA,EAAwB,QAAA,GAAD,cAAA,CAAC,YAAA,KAAwB,OAAA,CAAA,cAAA,CAAA,YAAA"}
|
|
@@ -4,8 +4,11 @@ import { NextFetchEvent, NextRequest, NextResponse } from "next/server";
|
|
|
4
4
|
/**
|
|
5
5
|
* Utility to combine multiple Next.js proxies into one.
|
|
6
6
|
*
|
|
7
|
-
* It executes proxies in order,
|
|
8
|
-
* redirects and
|
|
7
|
+
* It executes proxies in order, passing each result as the `response` argument
|
|
8
|
+
* to the next proxy. Routing instructions (redirects / rewrites) and custom
|
|
9
|
+
* response headers are merged across the entire chain, so a later proxy that
|
|
10
|
+
* returns `NextResponse.next()` does not accidentally discard a rewrite set by
|
|
11
|
+
* an earlier proxy.
|
|
9
12
|
*
|
|
10
13
|
* @example
|
|
11
14
|
* import { multipleProxies, intlayerProxy } from "next-intlayer/proxy";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multipleProxies.d.ts","names":[],"sources":["../../../src/proxy/multipleProxies.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"multipleProxies.d.ts","names":[],"sources":["../../../src/proxy/multipleProxies.ts"],"mappings":";;;;;AAkCA;;;;;;;;;;;;;;;;;;;;;;;;;;cAAa,eAAA,GAET,OAAA,IACE,GAAA,EAAK,WAAA,EACL,KAAA,GAAQ,cAAA,EACR,QAAA,GAAW,YAAA,KACR,YAAA,GAAe,OAAA,CAAQ,YAAA,UAEvB,GAAA,EAAK,WAAA,EAAa,KAAA,GAAQ,cAAA,EAAgB,QAAA,GAAW,YAAA,KAAY,OAAA,CAAA,YAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "next-intlayer",
|
|
3
|
-
"version": "8.9.
|
|
3
|
+
"version": "8.9.5",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Simplify internationalization i18n in Next.js with context providers, hooks, locale detection, and multilingual content integration.",
|
|
6
6
|
"keywords": [
|
|
@@ -128,18 +128,18 @@
|
|
|
128
128
|
"typecheck": "tsc --noEmit --project tsconfig.types.json"
|
|
129
129
|
},
|
|
130
130
|
"dependencies": {
|
|
131
|
-
"@intlayer/chokidar": "8.9.
|
|
132
|
-
"@intlayer/config": "8.9.
|
|
133
|
-
"@intlayer/core": "8.9.
|
|
134
|
-
"@intlayer/dictionaries-entry": "8.9.
|
|
135
|
-
"@intlayer/types": "8.9.
|
|
136
|
-
"@intlayer/webpack": "8.9.
|
|
131
|
+
"@intlayer/chokidar": "8.9.5",
|
|
132
|
+
"@intlayer/config": "8.9.5",
|
|
133
|
+
"@intlayer/core": "8.9.5",
|
|
134
|
+
"@intlayer/dictionaries-entry": "8.9.5",
|
|
135
|
+
"@intlayer/types": "8.9.5",
|
|
136
|
+
"@intlayer/webpack": "8.9.5",
|
|
137
137
|
"defu": "6.1.7",
|
|
138
138
|
"node-loader": "2.1.0",
|
|
139
|
-
"react-intlayer": "8.9.
|
|
139
|
+
"react-intlayer": "8.9.5"
|
|
140
140
|
},
|
|
141
141
|
"devDependencies": {
|
|
142
|
-
"@types/node": "25.
|
|
142
|
+
"@types/node": "25.7.0",
|
|
143
143
|
"@types/react": ">=16.0.0",
|
|
144
144
|
"@types/react-dom": ">=16.0.0",
|
|
145
145
|
"@utils/ts-config": "1.0.4",
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
"rimraf": "6.1.3",
|
|
149
149
|
"tsdown": "0.22.00",
|
|
150
150
|
"typescript": "6.0.3",
|
|
151
|
-
"vitest": "4.1.
|
|
151
|
+
"vitest": "4.1.6"
|
|
152
152
|
},
|
|
153
153
|
"peerDependencies": {
|
|
154
154
|
"next": ">=14.0.0",
|