@sitecore-content-sdk/nextjs 1.4.0-canary.16 → 1.4.0-canary.17

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.
Files changed (55) hide show
  1. package/dist/cjs/client/sitecore-nextjs-client.js +1 -1
  2. package/dist/cjs/editing/feaas-render-middleware.js +1 -1
  3. package/dist/cjs/middleware/index.js +1 -24
  4. package/dist/cjs/{middleware/app-router-multisite-middleware.js → proxy/app-router-multisite-proxy.js} +8 -8
  5. package/dist/cjs/proxy/index.js +26 -0
  6. package/dist/cjs/{middleware/locale-middleware.js → proxy/locale-proxy.js} +13 -13
  7. package/dist/cjs/{middleware/multisite-middleware.js → proxy/multisite-proxy.js} +16 -16
  8. package/dist/cjs/{middleware/personalize-middleware.js → proxy/personalize-proxy.js} +18 -18
  9. package/dist/cjs/{middleware/middleware.js → proxy/proxy.js} +25 -25
  10. package/dist/cjs/{middleware/redirects-middleware.js → proxy/redirects-proxy.js} +32 -26
  11. package/dist/cjs/route-handler/robots-route-handler.js +6 -1
  12. package/dist/cjs/route-handler/sitemap-route-handler.js +6 -1
  13. package/dist/cjs/utils/utils.js +2 -2
  14. package/dist/esm/client/sitecore-nextjs-client.js +1 -1
  15. package/dist/esm/editing/feaas-render-middleware.js +1 -1
  16. package/dist/esm/middleware/index.js +0 -9
  17. package/dist/esm/{middleware/app-router-multisite-middleware.js → proxy/app-router-multisite-proxy.js} +6 -6
  18. package/dist/esm/proxy/index.js +9 -0
  19. package/dist/esm/{middleware/locale-middleware.js → proxy/locale-proxy.js} +10 -10
  20. package/dist/esm/{middleware/multisite-middleware.js → proxy/multisite-proxy.js} +13 -13
  21. package/dist/esm/{middleware/personalize-middleware.js → proxy/personalize-proxy.js} +15 -15
  22. package/dist/esm/{middleware/middleware.js → proxy/proxy.js} +21 -21
  23. package/dist/esm/{middleware/redirects-middleware.js → proxy/redirects-proxy.js} +28 -22
  24. package/dist/esm/route-handler/robots-route-handler.js +6 -1
  25. package/dist/esm/route-handler/sitemap-route-handler.js +6 -1
  26. package/dist/esm/utils/utils.js +1 -1
  27. package/package.json +12 -7
  28. package/proxy.d.ts +1 -0
  29. package/types/editing/editing-config-middleware.d.ts.map +1 -1
  30. package/types/editing/feaas-render-middleware.d.ts +1 -1
  31. package/types/middleware/index.d.ts +0 -9
  32. package/types/middleware/index.d.ts.map +1 -1
  33. package/types/{middleware/app-router-multisite-middleware.d.ts → proxy/app-router-multisite-proxy.d.ts} +6 -6
  34. package/types/proxy/app-router-multisite-proxy.d.ts.map +1 -0
  35. package/types/proxy/index.d.ts +10 -0
  36. package/types/proxy/index.d.ts.map +1 -0
  37. package/types/proxy/locale-proxy.d.ts +35 -0
  38. package/types/proxy/locale-proxy.d.ts.map +1 -0
  39. package/types/{middleware/multisite-middleware.d.ts → proxy/multisite-proxy.d.ts} +11 -11
  40. package/types/proxy/multisite-proxy.d.ts.map +1 -0
  41. package/types/{middleware/personalize-middleware.d.ts → proxy/personalize-proxy.d.ts} +9 -9
  42. package/types/proxy/personalize-proxy.d.ts.map +1 -0
  43. package/types/{middleware/middleware.d.ts → proxy/proxy.d.ts} +22 -24
  44. package/types/proxy/proxy.d.ts.map +1 -0
  45. package/types/{middleware/redirects-middleware.d.ts → proxy/redirects-proxy.d.ts} +10 -10
  46. package/types/proxy/redirects-proxy.d.ts.map +1 -0
  47. package/types/route-handler/robots-route-handler.d.ts.map +1 -1
  48. package/types/route-handler/sitemap-route-handler.d.ts.map +1 -1
  49. package/types/middleware/app-router-multisite-middleware.d.ts.map +0 -1
  50. package/types/middleware/locale-middleware.d.ts +0 -35
  51. package/types/middleware/locale-middleware.d.ts.map +0 -1
  52. package/types/middleware/middleware.d.ts.map +0 -1
  53. package/types/middleware/multisite-middleware.d.ts.map +0 -1
  54. package/types/middleware/personalize-middleware.d.ts.map +0 -1
  55. package/types/middleware/redirects-middleware.d.ts.map +0 -1
@@ -12,31 +12,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.RedirectsMiddleware = void 0;
15
+ exports.RedirectsProxy = void 0;
16
16
  const core_1 = require("@sitecore-content-sdk/core");
17
17
  const site_1 = require("@sitecore-content-sdk/core/site");
18
18
  const utils_1 = require("@sitecore-content-sdk/core/utils");
19
19
  const server_1 = require("next/server");
20
20
  const regex_parser_1 = __importDefault(require("regex-parser"));
21
- const middleware_1 = require("./middleware");
21
+ const proxy_1 = require("./proxy");
22
22
  const REGEXP_CONTEXT_SITE_LANG = new RegExp(/\$siteLang/, 'i');
23
23
  const REGEXP_ABSOLUTE_URL = new RegExp('^(?:[a-z]+:)?//', 'i');
24
24
  /**
25
- * Middleware / handler fetches all redirects from Sitecore instance by grapqhl service
25
+ * Proxy / handler fetches all redirects from Sitecore instance by grapqhl service
26
26
  * compares with current url and redirects to target url
27
27
  * @public
28
28
  */
29
- class RedirectsMiddleware extends middleware_1.MiddlewareBase {
29
+ class RedirectsProxy extends proxy_1.ProxyBase {
30
30
  /**
31
- * @param {RedirectsMiddlewareConfig} [config] redirects middleware config
31
+ * @param {RedirectsProxyConfig} [config] redirects proxy config
32
32
  */
33
33
  constructor(config) {
34
- var _a;
35
34
  super(config);
36
35
  this.config = config;
37
36
  this.handle = (req, res) => __awaiter(this, void 0, void 0, function* () {
38
37
  if (!this.config.enabled) {
39
- core_1.debug.redirects('skipped (redirects middleware is disabled globally)');
38
+ core_1.debug.redirects('skipped (redirects proxy is disabled globally)');
40
39
  return res;
41
40
  }
42
41
  try {
@@ -45,13 +44,13 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
45
44
  const hostname = this.getHostHeader(req) || this.defaultHostname;
46
45
  let site;
47
46
  const startTimestamp = Date.now();
48
- core_1.debug.redirects('redirects middleware start: %o', {
47
+ core_1.debug.redirects('redirects proxy start: %o', {
49
48
  pathname,
50
49
  language,
51
50
  hostname,
52
51
  });
53
52
  if (this.disabled(req, res)) {
54
- core_1.debug.redirects('skipped (redirects middleware is disabled)');
53
+ core_1.debug.redirects('skipped (redirects proxy is disabled)');
55
54
  return res;
56
55
  }
57
56
  const isAppRouterRequest = this.isAppRouter(res);
@@ -61,10 +60,10 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
61
60
  return false;
62
61
  }
63
62
  // Skip prefetch requests from Next.js, which are not original client requests
64
- // as they load unnecessary requests that burden the redirects middleware with meaningless traffic
63
+ // as they load unnecessary requests that burden the redirects proxy with meaningless traffic
65
64
  if (this.isPrefetch(req)) {
66
65
  core_1.debug.redirects('skipped (prefetch)');
67
- res.headers.set('x-middleware-cache', 'no-cache');
66
+ res.headers.set('x-proxy-cache', 'no-cache');
68
67
  res.headers.set('Cache-Control', 'no-store, must-revalidate');
69
68
  return false;
70
69
  }
@@ -141,7 +140,7 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
141
140
  const redirectedResponse = REGEXP_ABSOLUTE_URL.test(existsRedirect.target)
142
141
  ? processAbsoluteUrlTarget(reqUrl, existsRedirect)
143
142
  : processRelativeUrlTarget(reqUrl, existsRedirect);
144
- core_1.debug.redirects('redirects middleware end in %dms: %o', Date.now() - startTimestamp, {
143
+ core_1.debug.redirects('redirects proxy end in %dms: %o', Date.now() - startTimestamp, {
145
144
  redirected: redirectedResponse.redirected,
146
145
  status: redirectedResponse.status,
147
146
  url: redirectedResponse.url,
@@ -150,17 +149,22 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
150
149
  return redirectedResponse;
151
150
  }
152
151
  catch (error) {
153
- console.log('Redirect middleware failed:');
152
+ console.log('Redirect proxy failed:');
154
153
  console.log(error);
155
154
  return res;
156
155
  }
157
156
  });
158
157
  this.locales = config.locales;
158
+ // If redirectsService is provided directly (e.g., for testing), use it
159
+ if (this.config.redirectsService) {
160
+ this.redirectsService = this.config.redirectsService;
161
+ return;
162
+ }
159
163
  // Validate API config is present - redirects requires either Edge or local API configuration
160
164
  const hasEdgeConfig = !!(this.config.contextId || this.config.clientContextId);
161
165
  const hasLocalConfig = !!(this.config.apiHost && this.config.apiKey);
162
166
  if (!hasEdgeConfig && !hasLocalConfig) {
163
- console.warn('[RedirectsMiddleware] Redirects middleware requires either Edge configuration (contextId/clientContextId) or local API configuration (apiHost/apiKey). ' +
167
+ console.warn('[RedirectsProxy] Redirects proxy requires either Edge configuration (contextId/clientContextId) or local API configuration (apiHost/apiKey). ' +
164
168
  'Redirects features will be disabled. This is expected when API configuration is not available.');
165
169
  // Set to null to indicate service is disabled
166
170
  this.redirectsService = null;
@@ -183,16 +187,16 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
183
187
  };
184
188
  // NOTE: we provide native fetch for compatibility on Next.js Edge Runtime
185
189
  // (underlying default 'cross-fetch' is not currently compatible: https://github.com/lquixada/cross-fetch/issues/78)
186
- this.redirectsService =
187
- (_a = this.config.redirectsService) !== null && _a !== void 0 ? _a : new site_1.RedirectsService(Object.assign(Object.assign({}, config), { clientFactory: this.getClientFactory(graphQLOptions), fetch: fetch }));
190
+ this.redirectsService = new site_1.RedirectsService(Object.assign(Object.assign({}, config), { clientFactory: this.getClientFactory(graphQLOptions), fetch: fetch }));
188
191
  }
189
192
  disabled(req, res) {
190
- // Check if API config is missing - if so, disable the middleware
193
+ // Check if API config is missing - if so, disable the proxy
191
194
  if (!this.redirectsService) {
192
195
  core_1.debug.redirects('skipped (redirects service not configured - API config required)');
193
196
  return true;
194
197
  }
195
- return super.disabled(req, res);
198
+ // ignore files
199
+ return req.nextUrl.pathname.includes('.') || super.disabled(req, res);
196
200
  }
197
201
  /**
198
202
  * Method returns RedirectInfo when matches
@@ -281,7 +285,7 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
281
285
  /**
282
286
  * Remove special parameters(Next.JS)
283
287
  * Example: /about/contact/us
284
- * When a user clicks on this link, Next.js should generate a link for the middleware, formatted like this:
288
+ * When a user clicks on this link, Next.js should generate a link for the proxy, formatted like this:
285
289
  * http://host/about/contact/us?path=about&path=contact&path=us
286
290
  */
287
291
  const newQueryString = url.search
@@ -333,7 +337,7 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
333
337
  }
334
338
  // Check if it has a site prefix
335
339
  // If so, preserve it for the redirect target to maintain proper routing
336
- const incomingRewrite = res === null || res === void 0 ? void 0 : res.headers.get(middleware_1.REWRITE_HEADER_NAME);
340
+ const incomingRewrite = res === null || res === void 0 ? void 0 : res.headers.get(proxy_1.REWRITE_HEADER_NAME);
337
341
  if (incomingRewrite && !isExternal) {
338
342
  // Extract locale from target path
339
343
  const targetPathParts = rewritePath.split('/').filter(Boolean);
@@ -355,7 +359,7 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
355
359
  }
356
360
  }
357
361
  /**
358
- * Helper function to create a redirect response and remove the x-middleware-next header.
362
+ * Helper function to create a redirect response and remove the x-proxy-next header.
359
363
  * @param {NextURL | string} url The URL to redirect to.
360
364
  * @param {Response} res The response object.
361
365
  * @param {number} status The HTTP status code of the redirect.
@@ -363,17 +367,19 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
363
367
  * @returns {NextResponse<unknown>} The redirect response.
364
368
  */
365
369
  createRedirectResponse(url, res, status, statusText) {
366
- const redirect = server_1.NextResponse.redirect(url, {
370
+ // Convert NextURL to string if needed - NextResponse.redirect requires a string URL
371
+ const urlString = typeof url === 'string' ? url : url.href;
372
+ const redirect = server_1.NextResponse.redirect(urlString, {
367
373
  status,
368
374
  statusText,
369
375
  headers: res === null || res === void 0 ? void 0 : res.headers,
370
376
  });
371
377
  if (res === null || res === void 0 ? void 0 : res.headers) {
372
- redirect.headers.delete('x-middleware-next');
373
- redirect.headers.delete('x-middleware-rewrite');
374
- redirect.headers.delete(middleware_1.REWRITE_HEADER_NAME);
378
+ redirect.headers.delete('x-proxy-next');
379
+ redirect.headers.delete('x-proxy-rewrite');
380
+ redirect.headers.delete(proxy_1.REWRITE_HEADER_NAME);
375
381
  }
376
382
  return redirect;
377
383
  }
378
384
  }
379
- exports.RedirectsMiddleware = RedirectsMiddleware;
385
+ exports.RedirectsProxy = RedirectsProxy;
@@ -31,11 +31,12 @@ const createRobotsRouteHandler = (options) => {
31
31
  const GET = (req) => __awaiter(void 0, void 0, void 0, function* () {
32
32
  var _a;
33
33
  try {
34
- const startTimestamp = Date.now();
35
34
  const hostName = req.headers.get('x-forwarded-host') ||
36
35
  ((_a = req.headers.get('host')) === null || _a === void 0 ? void 0 : _a.split(':')[0]) ||
37
36
  'localhost';
38
37
  const site = siteResolver.getByHost(hostName);
38
+ // Access request data first, then capture timestamp for Next.js 16 compatibility
39
+ const startTimestamp = Date.now();
39
40
  core_1.debug.robots('robots route handler start: %o', {
40
41
  hostName,
41
42
  siteName: site.name,
@@ -59,6 +60,10 @@ const createRobotsRouteHandler = (options) => {
59
60
  });
60
61
  }
61
62
  catch (error) {
63
+ // Re-throw prerender bail-out errors so Next.js can handle them properly
64
+ if (error instanceof Error && error.digest === 'NEXT_PRERENDER_INTERRUPTED') {
65
+ throw error;
66
+ }
62
67
  console.log('Robots route handler failed:');
63
68
  console.log(error);
64
69
  return new Response('Internal Server Error', {
@@ -38,8 +38,9 @@ function createSitemapRouteHandler(options) {
38
38
  });
39
39
  const GET = (req) => __awaiter(this, void 0, void 0, function* () {
40
40
  try {
41
- const startTimestamp = Date.now();
42
41
  const options = getOptions(req);
42
+ // Access request data first, then capture timestamp for Next.js 16 compatibility
43
+ const startTimestamp = Date.now();
43
44
  core_1.debug.sitemap('sitemap route handler start: %o', {
44
45
  options,
45
46
  });
@@ -52,6 +53,10 @@ function createSitemapRouteHandler(options) {
52
53
  });
53
54
  }
54
55
  catch (error) {
56
+ // Re-throw prerender bail-out errors so Next.js can handle them properly
57
+ if (error instanceof Error && error.digest === 'NEXT_PRERENDER_INTERRUPTED') {
58
+ throw error;
59
+ }
55
60
  console.log('Sitemap route handler failed:');
56
61
  console.log(error);
57
62
  if (error instanceof Error && error.message === 'REDIRECT_404') {
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseRewriteHeader = exports.isServerSidePropsContext = exports.extractPath = exports.getEditingSecret = exports.handleEditorFastRefresh = void 0;
4
4
  const editing_1 = require("@sitecore-content-sdk/core/editing");
5
- const middleware_1 = require("../middleware/middleware");
5
+ const proxy_1 = require("../proxy/proxy");
6
6
  /**
7
7
  * Since Sitecore editors do not support Fast Refresh:
8
8
  * 1. Subscribe on events provided by webpack.
@@ -73,7 +73,7 @@ exports.isServerSidePropsContext = isServerSidePropsContext;
73
73
  * @public
74
74
  */
75
75
  const parseRewriteHeader = (headers) => {
76
- const rewriteHeader = headers.get(middleware_1.REWRITE_HEADER_NAME);
76
+ const rewriteHeader = headers.get(proxy_1.REWRITE_HEADER_NAME);
77
77
  const rewriteSegments = (rewriteHeader === null || rewriteHeader === void 0 ? void 0 : rewriteHeader.split('/').filter((segment) => segment)) || [];
78
78
  const site = rewriteSegments[0];
79
79
  const locale = rewriteSegments[1];
@@ -28,7 +28,7 @@ export class SitecoreNextjsClient extends SitecoreClient {
28
28
  */
29
29
  getSiteNameFromPath(path) {
30
30
  const resolvedPath = super.parsePath(path);
31
- // Get site name (from path rewritten in middleware)
31
+ // Get site name (from path rewritten in proxy)
32
32
  const siteData = getSiteRewriteData(resolvedPath, this.initOptions.defaultSite);
33
33
  return siteData.siteName;
34
34
  }
@@ -19,7 +19,7 @@ import { enforceCors } from '@sitecore-content-sdk/core/utils';
19
19
  */
20
20
  export class FEAASRenderMiddleware extends RenderMiddlewareBase {
21
21
  /**
22
- * @param {EditingRenderMiddlewareConfig} [config] Editing render middleware config
22
+ * @param {FEAASRenderMiddlewareConfig} [config] FEAAS render middleware config
23
23
  */
24
24
  constructor(config) {
25
25
  var _a;
@@ -1,11 +1,2 @@
1
- export { debug } from '@sitecore-content-sdk/core';
2
- export { MiddlewareBase, Middleware, defineMiddleware } from './middleware';
3
- export { RedirectsMiddleware } from './redirects-middleware';
4
- export { PersonalizeMiddleware } from './personalize-middleware';
5
- export { MultisiteMiddleware } from './multisite-middleware';
6
- export { AppRouterMultisiteMiddleware } from './app-router-multisite-middleware';
7
1
  export { SitemapMiddleware } from './sitemap-middleware';
8
2
  export { RobotsMiddleware } from './robots-middleware';
9
- export { LocaleMiddleware } from './locale-middleware';
10
- export { PersonalizeService, } from '@sitecore-content-sdk/core/personalize';
11
- export { RedirectsService, REDIRECT_TYPE_301, REDIRECT_TYPE_302, REDIRECT_TYPE_SERVER_TRANSFER, } from '@sitecore-content-sdk/core/site';
@@ -1,23 +1,23 @@
1
- import { MultisiteMiddleware } from './multisite-middleware';
1
+ import { MultisiteProxy } from './multisite-proxy';
2
2
  /**
3
- * Middleware/handler for enabling multisite support in the Next.js App Router.
3
+ * Proxy/handler for enabling multisite support in the Next.js App Router.
4
4
  * @public
5
5
  */
6
- export class AppRouterMultisiteMiddleware extends MultisiteMiddleware {
6
+ export class AppRouterMultisiteProxy extends MultisiteProxy {
7
7
  /**
8
8
  * Warns when multisite is disabled in App Router.
9
- * The middleware will still run to prevent routing errors.
9
+ * The proxy will still run to prevent routing errors.
10
10
  * @param {NextResponse} _res response (unused, kept for method signature compatibility)
11
11
  */
12
12
  // eslint-disable-next-line no-unused-vars
13
13
  shouldWarnWhenDisabled(_res) {
14
- console.warn('⚠️ Warning: Multisite is disabled in App Router configuration, but the middleware will continue running. ' +
14
+ console.warn('⚠️ Warning: Multisite is disabled in App Router configuration, but the proxy will continue running. ' +
15
15
  'Disabling multisite in App Router would cause 404 errors for regular page requests because the route structure requires the [site] segment. ' +
16
16
  'Preview/Editing modes will still work. ' +
17
17
  'For single-site setups, keep multisite enabled and configure only one site.');
18
18
  }
19
19
  /**
20
- * In App Router, we cannot skip the middleware even if enabled is false,
20
+ * In App Router, we cannot skip the proxy even if enabled is false,
21
21
  * because the route structure requires the [site] segment.
22
22
  * @returns {boolean} always returns false (never skip) for App Router
23
23
  */
@@ -0,0 +1,9 @@
1
+ export { debug } from '@sitecore-content-sdk/core';
2
+ export { ProxyBase, ProxyHandler, defineProxy } from './proxy';
3
+ export { RedirectsProxy } from './redirects-proxy';
4
+ export { PersonalizeProxy } from './personalize-proxy';
5
+ export { MultisiteProxy } from './multisite-proxy';
6
+ export { AppRouterMultisiteProxy } from './app-router-multisite-proxy';
7
+ export { LocaleProxy } from './locale-proxy';
8
+ export { PersonalizeService, } from '@sitecore-content-sdk/core/personalize';
9
+ export { RedirectsService, REDIRECT_TYPE_301, REDIRECT_TYPE_302, REDIRECT_TYPE_SERVER_TRANSFER, } from '@sitecore-content-sdk/core/site';
@@ -10,16 +10,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  import { debug } from '@sitecore-content-sdk/core';
12
12
  import { getLocaleRewrite } from '@sitecore-content-sdk/core/i18n';
13
- import { MiddlewareBase, LOCALE_HEADER_NAME } from './middleware';
13
+ import { ProxyBase, LOCALE_HEADER_NAME } from './proxy';
14
14
  /**
15
- * Middleware/handler for handling locale-based routing in the Next.js App Router.
16
- * This middleware is responsible for extracting the locale from the request path and rewriting it if necessary.
15
+ * Proxy/handler for handling locale-based routing in the Next.js App Router.
16
+ * This proxy is responsible for extracting the locale from the request path and rewriting it if necessary.
17
17
  * It also sets the locale header in the response.
18
18
  * @public
19
19
  */
20
- export class LocaleMiddleware extends MiddlewareBase {
20
+ export class LocaleProxy extends ProxyBase {
21
21
  /**
22
- * @param {LocaleMiddlewareConfig} config Locale middleware config
22
+ * @param {LocaleProxyConfig} config Locale proxy config
23
23
  */
24
24
  constructor(config) {
25
25
  super(config);
@@ -29,12 +29,12 @@ export class LocaleMiddleware extends MiddlewareBase {
29
29
  const { pathname } = req.nextUrl;
30
30
  const localeFromPath = this.getLocaleFromPath(pathname);
31
31
  const locale = localeFromPath || this.getLanguage(req, res);
32
- debug.locale('locale middleware start: %o', {
32
+ debug.locale('locale proxy start: %o', {
33
33
  pathname,
34
34
  locale,
35
35
  });
36
36
  if (this.disabled(req, res)) {
37
- debug.locale('skipped (locale middleware is disabled)');
37
+ debug.locale('skipped (locale proxy is disabled)');
38
38
  return res;
39
39
  }
40
40
  if (!localeFromPath) {
@@ -42,7 +42,7 @@ export class LocaleMiddleware extends MiddlewareBase {
42
42
  const rewritePath = getLocaleRewrite(pathname, locale);
43
43
  const response = this.rewrite(rewritePath, req, res);
44
44
  this.setLocaleHeader(response, locale);
45
- debug.locale('locale middleware end, with rewrite: %o', {
45
+ debug.locale('locale proxy end, with rewrite: %o', {
46
46
  pathname,
47
47
  locale,
48
48
  rewritePath,
@@ -50,14 +50,14 @@ export class LocaleMiddleware extends MiddlewareBase {
50
50
  return response;
51
51
  }
52
52
  this.setLocaleHeader(res, locale);
53
- debug.locale('locale middleware end, no rewrite: %o', {
53
+ debug.locale('locale proxy end, no rewrite: %o', {
54
54
  pathname,
55
55
  locale,
56
56
  });
57
57
  return res;
58
58
  }
59
59
  catch (error) {
60
- console.log('Locale middleware failed:');
60
+ console.log('Locale proxy failed:');
61
61
  console.log(error);
62
62
  return res;
63
63
  }
@@ -10,15 +10,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  import { getSiteRewrite, SITE_KEY } from '@sitecore-content-sdk/core/site';
12
12
  import { debug } from '@sitecore-content-sdk/core';
13
- import { MiddlewareBase, REWRITE_HEADER_NAME } from './middleware';
13
+ import { ProxyBase, REWRITE_HEADER_NAME } from './proxy';
14
14
  import { PREVIEW_KEY } from '@sitecore-content-sdk/core/editing';
15
15
  /**
16
- * Middleware / handler for multisite support
16
+ * Proxy / handler for multisite support
17
17
  * @public
18
18
  */
19
- export class MultisiteMiddleware extends MiddlewareBase {
19
+ export class MultisiteProxy extends ProxyBase {
20
20
  /**
21
- * @param {MultisiteMiddlewareConfig} [config] Multisite middleware config
21
+ * @param {MultisiteProxyConfig} [config] Multisite proxy config
22
22
  */
23
23
  constructor(config) {
24
24
  super(config);
@@ -26,12 +26,12 @@ export class MultisiteMiddleware extends MiddlewareBase {
26
26
  this.handle = (req, res) => __awaiter(this, void 0, void 0, function* () {
27
27
  var _a, _b, _c;
28
28
  try {
29
- // Path can be rewritten by previously executed middleware
29
+ // Path can be rewritten by previously executed proxy
30
30
  const pathname = (res === null || res === void 0 ? void 0 : res.headers.get(REWRITE_HEADER_NAME)) || req.nextUrl.pathname;
31
31
  const language = this.getLanguage(req, res);
32
32
  const hostname = this.getHostHeader(req) || this.defaultHostname;
33
33
  const startTimestamp = Date.now();
34
- debug.multisite('multisite middleware start: %o', {
34
+ debug.multisite('multisite proxy start: %o', {
35
35
  pathname,
36
36
  language,
37
37
  hostname,
@@ -50,13 +50,13 @@ export class MultisiteMiddleware extends MiddlewareBase {
50
50
  if (!this.config.enabled) {
51
51
  this.shouldWarnWhenDisabled(res);
52
52
  if (this.shouldSkipWhenDisabled()) {
53
- debug.multisite('skipped (multisite middleware is disabled globally)');
53
+ debug.multisite('skipped (multisite proxy is disabled globally)');
54
54
  return res;
55
55
  }
56
56
  // Continue execution if shouldSkipWhenDisabled returns false (App Router case)
57
57
  }
58
58
  if (this.disabled(req, res)) {
59
- debug.multisite('skipped (multisite middleware is disabled)');
59
+ debug.multisite('skipped (multisite proxy is disabled)');
60
60
  return res;
61
61
  }
62
62
  }
@@ -86,9 +86,9 @@ export class MultisiteMiddleware extends MiddlewareBase {
86
86
  httpOnly: true,
87
87
  sameSite: 'none',
88
88
  };
89
- // Share site name with the following executed middlewares
89
+ // Share site name with the following executed proxies
90
90
  response.cookies.set(SITE_KEY, siteName, defaultCookieAttributes);
91
- debug.multisite('multisite middleware end in %dms: %o', Date.now() - startTimestamp, {
91
+ debug.multisite('multisite proxy end in %dms: %o', Date.now() - startTimestamp, {
92
92
  rewritePath,
93
93
  siteName,
94
94
  headers: this.extractDebugHeaders(response.headers),
@@ -97,7 +97,7 @@ export class MultisiteMiddleware extends MiddlewareBase {
97
97
  return response;
98
98
  }
99
99
  catch (error) {
100
- console.log('Multisite middleware failed:');
100
+ console.log('Multisite proxy failed:');
101
101
  console.log(error);
102
102
  return res;
103
103
  }
@@ -116,9 +116,9 @@ export class MultisiteMiddleware extends MiddlewareBase {
116
116
  // Base implementation does nothing - subclasses can override to show warnings
117
117
  }
118
118
  /**
119
- * Determines if middleware should be skipped when multisite is disabled.
119
+ * Determines if proxy should be skipped when multisite is disabled.
120
120
  * Override in subclasses to provide router-specific behavior.
121
- * @returns {boolean} true if middleware should be skipped when disabled
121
+ * @returns {boolean} true if proxy should be skipped when disabled
122
122
  */
123
123
  shouldSkipWhenDisabled() {
124
124
  return true; // Base class skips when disabled
@@ -9,16 +9,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { PersonalizeService, getPersonalizedRewrite, CdpHelper, DEFAULT_VARIANT, } from '@sitecore-content-sdk/core/personalize';
11
11
  import { debug } from '@sitecore-content-sdk/core';
12
- import { MiddlewareBase, REWRITE_HEADER_NAME } from './middleware';
12
+ import { ProxyBase, REWRITE_HEADER_NAME } from './proxy';
13
13
  import { CloudSDK } from '@sitecore-cloudsdk/core/server';
14
14
  import { personalize } from '@sitecore-cloudsdk/personalize/server';
15
15
  /**
16
- * Middleware / handler to support Sitecore Personalize
16
+ * Proxy / handler to support Sitecore Personalize
17
17
  * @public
18
18
  */
19
- export class PersonalizeMiddleware extends MiddlewareBase {
19
+ export class PersonalizeProxy extends ProxyBase {
20
20
  /**
21
- * @param {PersonalizeMiddlewareConfig} [config] Personalize middleware config
21
+ * @param {PersonalizeProxyConfig} [config] Personalize proxy config
22
22
  */
23
23
  constructor(config) {
24
24
  var _a;
@@ -26,7 +26,7 @@ export class PersonalizeMiddleware extends MiddlewareBase {
26
26
  this.config = config;
27
27
  this.handle = (req, res) => __awaiter(this, void 0, void 0, function* () {
28
28
  if (!this.config.enabled) {
29
- debug.personalize('skipped (personalize middleware is disabled globally)');
29
+ debug.personalize('skipped (personalize proxy is disabled globally)');
30
30
  return res;
31
31
  }
32
32
  try {
@@ -38,11 +38,11 @@ export class PersonalizeMiddleware extends MiddlewareBase {
38
38
  const geo = this.config.extractGeoDataCb
39
39
  ? yield this.config.extractGeoDataCb(req)
40
40
  : undefined;
41
- debug.personalize('personalize middleware start: %o', Object.assign(Object.assign({ pathname,
41
+ debug.personalize('personalize proxy start: %o', Object.assign(Object.assign({ pathname,
42
42
  language,
43
43
  hostname }, (geo && { geo })), { headers: this.extractDebugHeaders(req.headers) }));
44
44
  if (this.disabled(req, res)) {
45
- debug.personalize('skipped (personalize middleware is disabled)');
45
+ debug.personalize('skipped (personalize proxy is disabled)');
46
46
  return res;
47
47
  }
48
48
  if (res.redirected || // Don't attempt to personalize a redirect
@@ -72,8 +72,8 @@ export class PersonalizeMiddleware extends MiddlewareBase {
72
72
  // Personalized, but this is a prefetch request.
73
73
  // In this case, don't execute a personalize request; otherwise, the metrics for component A/B experiments would be inaccurate.
74
74
  // Disable preflight caching to force revalidation on client-side navigation (personalization WILL be influenced).
75
- // Note the reason we don't move this any earlier in the middleware is that we would then be sacrificing performance for non-personalized pages.
76
- res.headers.set('x-middleware-cache', 'no-cache');
75
+ // Note the reason we don't move this any earlier in the proxy is that we would then be sacrificing performance for non-personalized pages.
76
+ res.headers.set('x-proxy-cache', 'no-cache');
77
77
  res.headers.set('Cache-Control', 'no-store, must-revalidate');
78
78
  return res;
79
79
  }
@@ -102,29 +102,29 @@ export class PersonalizeMiddleware extends MiddlewareBase {
102
102
  debug.personalize('skipped (no variant(s) identified)');
103
103
  return res;
104
104
  }
105
- // Path can be rewritten by previously executed middleware
105
+ // Path can be rewritten by previously executed proxy
106
106
  const basePath = (res === null || res === void 0 ? void 0 : res.headers.get(REWRITE_HEADER_NAME)) || pathname;
107
107
  // Rewrite to persononalized path
108
108
  const rewritePath = getPersonalizedRewrite(basePath, identifiedVariantIds);
109
109
  const response = this.rewrite(rewritePath, req, res);
110
110
  // Disable preflight caching to force revalidation on client-side navigation (personalization MAY be influenced).
111
111
  // See https://github.com/vercel/next.js/pull/32767
112
- response.headers.set('x-middleware-cache', 'no-cache');
113
- debug.personalize('personalize middleware end in %dms: %o', Date.now() - startTimestamp, {
112
+ response.headers.set('x-proxy-cache', 'no-cache');
113
+ debug.personalize('personalize proxy end in %dms: %o', Date.now() - startTimestamp, {
114
114
  rewritePath,
115
115
  headers: this.extractDebugHeaders(response.headers),
116
116
  });
117
117
  return response;
118
118
  }
119
119
  catch (error) {
120
- console.log('Personalize middleware failed:');
120
+ console.log('Personalize proxy failed:');
121
121
  console.log(error);
122
122
  return res;
123
123
  }
124
124
  });
125
125
  // Validate edge config is present - personalize requires Edge platform
126
126
  if (!this.config.contextId && !this.config.clientContextId) {
127
- console.warn('[PersonalizeMiddleware] Personalize middleware requires Edge configuration (contextId/clientContextId). ' +
127
+ console.warn('[PersonalizeProxy] Personalize proxy requires Edge configuration (contextId/clientContextId). ' +
128
128
  'Personalize features will be disabled. This is expected in local container development.');
129
129
  // Set to null to indicate service is disabled
130
130
  this.personalizeService = null;
@@ -150,7 +150,7 @@ export class PersonalizeMiddleware extends MiddlewareBase {
150
150
  });
151
151
  }
152
152
  disabled(req, res) {
153
- // Check if API config is missing - if so, disable the middleware
153
+ // Check if API config is missing - if so, disable the proxy
154
154
  if (!this.personalizeService) {
155
155
  debug.personalize('skipped (personalize service not configured - edge config required)');
156
156
  return true;