@sitecore-content-sdk/nextjs 1.5.0 → 2.0.0-canary.10

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 (172) hide show
  1. package/LICENSE.txt +202 -202
  2. package/dist/cjs/client/index.js +1 -1
  3. package/dist/cjs/client/sitecore-nextjs-client.js +4 -4
  4. package/dist/cjs/components/BYOCWrapper.js +0 -5
  5. package/dist/cjs/components/FEaaSWrapper.js +0 -5
  6. package/dist/cjs/components/NextImage.js +2 -2
  7. package/dist/cjs/config/define-config.js +7 -4
  8. package/dist/cjs/config-cli/define-cli-config.js +1 -1
  9. package/dist/cjs/debug.js +11 -0
  10. package/dist/cjs/editing/codegen/import-map-server.js +1 -1
  11. package/dist/cjs/editing/editing-config-middleware.js +13 -11
  12. package/dist/cjs/editing/editing-render-middleware.js +41 -29
  13. package/dist/cjs/editing/feaas-render-middleware.js +24 -13
  14. package/dist/cjs/editing/index.js +2 -2
  15. package/dist/cjs/editing/types.js +2 -0
  16. package/dist/cjs/editing/utils.js +35 -6
  17. package/dist/cjs/index.js +17 -11
  18. package/dist/cjs/middleware/index.js +1 -24
  19. package/dist/cjs/{middleware/app-router-multisite-middleware.js → proxy/app-router-multisite-proxy.js} +8 -8
  20. package/dist/cjs/proxy/index.js +29 -0
  21. package/dist/cjs/{middleware/locale-middleware.js → proxy/locale-proxy.js} +18 -15
  22. package/dist/cjs/{middleware/multisite-middleware.js → proxy/multisite-proxy.js} +23 -20
  23. package/dist/cjs/{middleware/personalize-middleware.js → proxy/personalize-proxy.js} +31 -28
  24. package/dist/cjs/{middleware/middleware.js → proxy/proxy.js} +31 -28
  25. package/dist/cjs/{middleware/redirects-middleware.js → proxy/redirects-proxy.js} +121 -111
  26. package/dist/cjs/route-handler/editing-config-route-handler.js +16 -13
  27. package/dist/cjs/route-handler/editing-render-route-handler.js +43 -32
  28. package/dist/cjs/route-handler/robots-route-handler.js +14 -6
  29. package/dist/cjs/route-handler/sitemap-route-handler.js +13 -5
  30. package/dist/cjs/site/index.js +1 -1
  31. package/dist/cjs/tools/codegen/import-map.js +2 -2
  32. package/dist/cjs/tools/generate-map.js +1 -1
  33. package/dist/cjs/tools/index.js +7 -8
  34. package/dist/cjs/tools/templating/byoc-component.js +1 -1
  35. package/dist/cjs/tools/templating/default-component.js +1 -1
  36. package/dist/cjs/tools/templating/utils.js +5 -6
  37. package/dist/cjs/utils/index.js +4 -5
  38. package/dist/cjs/utils/utils.js +3 -3
  39. package/dist/esm/client/index.js +1 -1
  40. package/dist/esm/client/sitecore-nextjs-client.js +4 -4
  41. package/dist/esm/components/BYOCWrapper.js +0 -5
  42. package/dist/esm/components/FEaaSWrapper.js +0 -5
  43. package/dist/esm/components/NextImage.js +2 -2
  44. package/dist/esm/config/define-config.js +7 -4
  45. package/dist/esm/config-cli/define-cli-config.js +1 -1
  46. package/dist/esm/debug.js +9 -0
  47. package/dist/esm/editing/codegen/import-map-server.js +1 -1
  48. package/dist/esm/editing/editing-config-middleware.js +4 -5
  49. package/dist/esm/editing/editing-render-middleware.js +22 -13
  50. package/dist/esm/editing/feaas-render-middleware.js +14 -6
  51. package/dist/esm/editing/index.js +2 -2
  52. package/dist/esm/editing/types.js +1 -0
  53. package/dist/esm/editing/utils.js +32 -4
  54. package/dist/esm/index.js +11 -12
  55. package/dist/esm/middleware/index.js +0 -9
  56. package/dist/esm/{middleware/app-router-multisite-middleware.js → proxy/app-router-multisite-proxy.js} +6 -6
  57. package/dist/esm/proxy/index.js +9 -0
  58. package/dist/esm/{middleware/locale-middleware.js → proxy/locale-proxy.js} +12 -12
  59. package/dist/esm/{middleware/multisite-middleware.js → proxy/multisite-proxy.js} +16 -16
  60. package/dist/esm/{middleware/personalize-middleware.js → proxy/personalize-proxy.js} +17 -17
  61. package/dist/esm/{middleware/middleware.js → proxy/proxy.js} +24 -24
  62. package/dist/esm/{middleware/redirects-middleware.js → proxy/redirects-proxy.js} +112 -102
  63. package/dist/esm/route-handler/editing-config-route-handler.js +4 -4
  64. package/dist/esm/route-handler/editing-render-route-handler.js +19 -11
  65. package/dist/esm/route-handler/robots-route-handler.js +8 -3
  66. package/dist/esm/route-handler/sitemap-route-handler.js +8 -3
  67. package/dist/esm/site/index.js +1 -1
  68. package/dist/esm/tools/codegen/import-map.js +1 -1
  69. package/dist/esm/tools/generate-map.js +1 -1
  70. package/dist/esm/tools/index.js +2 -1
  71. package/dist/esm/tools/templating/byoc-component.js +1 -1
  72. package/dist/esm/tools/templating/default-component.js +1 -1
  73. package/dist/esm/tools/templating/utils.js +1 -2
  74. package/dist/esm/utils/index.js +2 -2
  75. package/dist/esm/utils/utils.js +2 -2
  76. package/package.json +187 -181
  77. package/proxy.d.ts +1 -0
  78. package/types/client/index.d.ts +1 -1
  79. package/types/client/index.d.ts.map +1 -1
  80. package/types/client/sitecore-nextjs-client.d.ts +3 -3
  81. package/types/client/sitecore-nextjs-client.d.ts.map +1 -1
  82. package/types/components/BYOCWrapper.d.ts +0 -5
  83. package/types/components/BYOCWrapper.d.ts.map +1 -1
  84. package/types/components/FEaaSWrapper.d.ts +0 -5
  85. package/types/components/FEaaSWrapper.d.ts.map +1 -1
  86. package/types/components/Placeholder.d.ts +2 -2
  87. package/types/components/Placeholder.d.ts.map +1 -1
  88. package/types/config/define-config.d.ts +1 -1
  89. package/types/config/define-config.d.ts.map +1 -1
  90. package/types/config-cli/define-cli-config.d.ts +1 -1
  91. package/types/config-cli/define-cli-config.d.ts.map +1 -1
  92. package/types/debug.d.ts +7 -0
  93. package/types/debug.d.ts.map +1 -0
  94. package/types/editing/codegen/import-map-server.d.ts +1 -1
  95. package/types/editing/codegen/import-map-server.d.ts.map +1 -1
  96. package/types/editing/codegen/import-map-utils.d.ts +1 -1
  97. package/types/editing/codegen/import-map-utils.d.ts.map +1 -1
  98. package/types/editing/codegen/import-map.d.ts +1 -1
  99. package/types/editing/codegen/import-map.d.ts.map +1 -1
  100. package/types/editing/codegen/index.d.ts +1 -1
  101. package/types/editing/codegen/index.d.ts.map +1 -1
  102. package/types/editing/editing-config-middleware.d.ts +1 -1
  103. package/types/editing/editing-config-middleware.d.ts.map +1 -1
  104. package/types/editing/editing-render-middleware.d.ts +8 -1
  105. package/types/editing/editing-render-middleware.d.ts.map +1 -1
  106. package/types/editing/feaas-render-middleware.d.ts +1 -1
  107. package/types/editing/feaas-render-middleware.d.ts.map +1 -1
  108. package/types/editing/index.d.ts +3 -2
  109. package/types/editing/index.d.ts.map +1 -1
  110. package/types/editing/types.d.ts +37 -0
  111. package/types/editing/types.d.ts.map +1 -0
  112. package/types/editing/utils.d.ts +12 -1
  113. package/types/editing/utils.d.ts.map +1 -1
  114. package/types/index.d.ts +13 -11
  115. package/types/index.d.ts.map +1 -1
  116. package/types/middleware/index.d.ts +0 -9
  117. package/types/middleware/index.d.ts.map +1 -1
  118. package/types/middleware/robots-middleware.d.ts +1 -1
  119. package/types/middleware/robots-middleware.d.ts.map +1 -1
  120. package/types/middleware/sitemap-middleware.d.ts +1 -1
  121. package/types/middleware/sitemap-middleware.d.ts.map +1 -1
  122. package/types/{middleware/app-router-multisite-middleware.d.ts → proxy/app-router-multisite-proxy.d.ts} +6 -6
  123. package/types/proxy/app-router-multisite-proxy.d.ts.map +1 -0
  124. package/types/proxy/index.d.ts +10 -0
  125. package/types/proxy/index.d.ts.map +1 -0
  126. package/types/proxy/locale-proxy.d.ts +35 -0
  127. package/types/proxy/locale-proxy.d.ts.map +1 -0
  128. package/types/{middleware/multisite-middleware.d.ts → proxy/multisite-proxy.d.ts} +11 -11
  129. package/types/proxy/multisite-proxy.d.ts.map +1 -0
  130. package/types/{middleware/personalize-middleware.d.ts → proxy/personalize-proxy.d.ts} +10 -10
  131. package/types/proxy/personalize-proxy.d.ts.map +1 -0
  132. package/types/{middleware/middleware.d.ts → proxy/proxy.d.ts} +24 -26
  133. package/types/proxy/proxy.d.ts.map +1 -0
  134. package/types/{middleware/redirects-middleware.d.ts → proxy/redirects-proxy.d.ts} +11 -11
  135. package/types/proxy/redirects-proxy.d.ts.map +1 -0
  136. package/types/route-handler/editing-config-route-handler.d.ts +1 -1
  137. package/types/route-handler/editing-config-route-handler.d.ts.map +1 -1
  138. package/types/route-handler/editing-render-route-handler.d.ts +7 -0
  139. package/types/route-handler/editing-render-route-handler.d.ts.map +1 -1
  140. package/types/route-handler/robots-route-handler.d.ts +2 -2
  141. package/types/route-handler/robots-route-handler.d.ts.map +1 -1
  142. package/types/route-handler/sitemap-route-handler.d.ts +2 -2
  143. package/types/route-handler/sitemap-route-handler.d.ts.map +1 -1
  144. package/types/services/component-props-service.d.ts +1 -1
  145. package/types/services/component-props-service.d.ts.map +1 -1
  146. package/types/sharedTypes/component-props.d.ts +1 -1
  147. package/types/sharedTypes/component-props.d.ts.map +1 -1
  148. package/types/sharedTypes/sitecore-page-props.d.ts +2 -2
  149. package/types/sharedTypes/sitecore-page-props.d.ts.map +1 -1
  150. package/types/site/index.d.ts +1 -1
  151. package/types/site/index.d.ts.map +1 -1
  152. package/types/tools/codegen/import-map.d.ts +3 -3
  153. package/types/tools/codegen/import-map.d.ts.map +1 -1
  154. package/types/tools/generate-map.d.ts +1 -1
  155. package/types/tools/generate-map.d.ts.map +1 -1
  156. package/types/tools/index.d.ts +3 -1
  157. package/types/tools/index.d.ts.map +1 -1
  158. package/types/tools/templating/byoc-component.d.ts +1 -1
  159. package/types/tools/templating/byoc-component.d.ts.map +1 -1
  160. package/types/tools/templating/default-component.d.ts +1 -1
  161. package/types/tools/templating/default-component.d.ts.map +1 -1
  162. package/types/tools/templating/utils.d.ts +2 -2
  163. package/types/tools/templating/utils.d.ts.map +1 -1
  164. package/types/utils/index.d.ts +2 -2
  165. package/types/utils/index.d.ts.map +1 -1
  166. package/types/middleware/app-router-multisite-middleware.d.ts.map +0 -1
  167. package/types/middleware/locale-middleware.d.ts +0 -35
  168. package/types/middleware/locale-middleware.d.ts.map +0 -1
  169. package/types/middleware/middleware.d.ts.map +0 -1
  170. package/types/middleware/multisite-middleware.d.ts.map +0 -1
  171. package/types/middleware/personalize-middleware.d.ts.map +0 -1
  172. package/types/middleware/redirects-middleware.d.ts.map +0 -1
@@ -7,12 +7,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { EDITING_ALLOWED_ORIGINS, isDesignLibraryMode, PREVIEW_KEY, QUERY_PARAM_EDITING_SECRET, } from '@sitecore-content-sdk/core/editing';
11
- import { DEFAULT_VARIANT } from '@sitecore-content-sdk/core/personalize';
12
- import { SITE_KEY } from '@sitecore-content-sdk/core/site';
10
+ import { EDITING_ALLOWED_ORIGINS, isDesignLibraryMode, PREVIEW_KEY, QUERY_PARAM_EDITING_SECRET, } from '@sitecore-content-sdk/content/editing';
11
+ import { DEFAULT_VARIANT } from '@sitecore-content-sdk/content/personalize';
12
+ import { SITE_KEY } from '@sitecore-content-sdk/content/site';
13
13
  import { EDITING_PASS_THROUGH_HEADERS, QUERY_PARAM_VERCEL_PROTECTION_BYPASS, QUERY_PARAM_VERCEL_SET_BYPASS_COOKIE, } from './constants';
14
14
  import { SERVER_PROPS_ID, STATIC_PROPS_ID } from 'next/constants';
15
- import { getAllowedOriginsFromEnv } from '@sitecore-content-sdk/core/utils';
15
+ import { getAllowedOriginsFromEnv } from '@sitecore-content-sdk/core/tools';
16
16
  /**
17
17
  * Gets editing secret value from request
18
18
  * @param {NextApiRequest | NextRequest} req incoming request
@@ -64,6 +64,34 @@ export const mapEditingParams = (query) => {
64
64
  };
65
65
  return params;
66
66
  };
67
+ /**
68
+ * Parses the query parameters based on the provided allowed parameters or a resolver function, to extract additional parameters that should be allowed.
69
+ * @param {{ [key: string]: string | undefined }} queryParams Object of query parameters from incoming URL.
70
+ * @param {AllowedQueryParams} allowedParams Allowed parameters to map.
71
+ * @returns Object containing the list of missing required parameters and the allowed query parameters that were extracted.
72
+ * @internal
73
+ */
74
+ export const getAllowedQueryParams = (queryParams, allowedParams) => {
75
+ const allowedQueryParamsList = typeof allowedParams === 'function'
76
+ ? allowedParams(Object.keys(queryParams))
77
+ : Array.isArray(allowedParams)
78
+ ? allowedParams
79
+ : [];
80
+ if (!allowedQueryParamsList.length)
81
+ return { missingAllowedParams: [], allowedQueryParams: {} };
82
+ return allowedQueryParamsList.reduce((acc, param) => {
83
+ const name = typeof param === 'string' ? param : param.name;
84
+ const required = typeof param === 'string' ? false : param.required;
85
+ const value = queryParams[name];
86
+ if (value !== undefined) {
87
+ acc.allowedQueryParams[name] = value;
88
+ return acc;
89
+ }
90
+ if (required)
91
+ acc.missingAllowedParams.push(name);
92
+ return acc;
93
+ }, { missingAllowedParams: [], allowedQueryParams: {} });
94
+ };
67
95
  /**
68
96
  * Filters out Next.js preview cookies from a cookie string or array
69
97
  * @param {string | string[] | null} cookies cookie header value
package/dist/esm/index.js CHANGED
@@ -1,14 +1,15 @@
1
+ export { default as debug } from './debug';
1
2
  export { constants,
2
3
  // generic data access
3
- NativeDataFetcher, enableDebug, debug, MemoryCacheClient, } from '@sitecore-content-sdk/core';
4
- export { LayoutServicePageState, LayoutService, getChildPlaceholder, getFieldValue, getContentStylesheetLink, EditMode, RenderingType, } from '@sitecore-content-sdk/core/layout';
5
- export { ErrorPage } from '@sitecore-content-sdk/core/client';
6
- export { ComponentLayoutService } from '@sitecore-content-sdk/core/editing';
7
- export { mediaApi } from '@sitecore-content-sdk/core/media';
8
- export { DictionaryService, } from '@sitecore-content-sdk/core/i18n';
9
- export { personalizeLayout, getPersonalizedRewrite, getPersonalizedRewriteData, getGroomedVariantIds, normalizePersonalizedRewrite, CdpHelper, PersonalizeService, } from '@sitecore-content-sdk/core/personalize';
10
- export { SitePathService, RedirectsService, REDIRECT_TYPE_301, REDIRECT_TYPE_302, REDIRECT_TYPE_SERVER_TRANSFER, } from '@sitecore-content-sdk/core/site';
11
- export { SitemapXmlService, ErrorPagesService, RobotsService, SiteResolver, SiteInfoService, getSiteRewrite, getSiteRewriteData, normalizeSiteRewrite, } from '@sitecore-content-sdk/core/site';
4
+ NativeDataFetcher, enableDebug, MemoryCacheClient, } from '@sitecore-content-sdk/core';
5
+ export { LayoutServicePageState, LayoutService, getChildPlaceholder, getFieldValue, getContentStylesheetLink, EditMode, RenderingType, } from '@sitecore-content-sdk/content/layout';
6
+ export { ErrorPage } from '@sitecore-content-sdk/content/client';
7
+ export { ComponentLayoutService } from '@sitecore-content-sdk/content/editing';
8
+ export { mediaApi } from '@sitecore-content-sdk/content/media';
9
+ export { DictionaryService, } from '@sitecore-content-sdk/content/i18n';
10
+ export { personalizeLayout, getPersonalizedRewrite, getPersonalizedRewriteData, getGroomedVariantIds, normalizePersonalizedRewrite, CdpHelper, PersonalizeService, } from '@sitecore-content-sdk/content/personalize';
11
+ export { SitePathService, RedirectsService, REDIRECT_TYPE_301, REDIRECT_TYPE_302, REDIRECT_TYPE_SERVER_TRANSFER, } from '@sitecore-content-sdk/content/site';
12
+ export { SitemapXmlService, ErrorPagesService, RobotsService, SiteResolver, SiteInfoService, getSiteRewrite, getSiteRewriteData, normalizeSiteRewrite, } from '@sitecore-content-sdk/content/site';
12
13
  export { ComponentPropsService } from './services/component-props-service';
13
14
  export { ComponentPropsReactContext, ComponentPropsContext, useComponentProps, } from './components/ComponentPropsContext';
14
15
  export { Link } from './components/Link';
@@ -18,8 +19,6 @@ export { NextImage } from './components/NextImage';
18
19
  import * as FEaaSWrapper from './components/FEaaSWrapper';
19
20
  import * as BYOCWrapper from './components/BYOCWrapper';
20
21
  export { FEaaSClientWrapper, FEaaSServerWrapper, BYOCClientWrapper, BYOCServerWrapper, } from '@sitecore-content-sdk/react';
21
- // Preserving original FEaaSWrapper export name for backward compatibility
22
- // TODO: remove in future major release
23
22
  export { FEaaSWrapper };
24
23
  export { BYOCWrapper };
25
- export { Image, Text, DateField, FEaaSComponent, fetchFEaaSComponentServerProps, BYOCComponent, getDesignLibraryStylesheetLinks, File, DesignLibrary, DesignLibraryApp, DefaultEmptyFieldEditingComponentImage, DefaultEmptyFieldEditingComponentText, SitecoreProvider, SitecoreProviderReactContext, withSitecore, useSitecore, withEditorChromes, withPlaceholder, withDatasourceCheck, withFieldMetadata, withEmptyFieldEditingComponent, EditingScripts, Form, ClientEditingChromesUpdate, AppPlaceholder, } from '@sitecore-content-sdk/react';
24
+ export { Image, Text, DateField, FEaaSComponent, fetchFEaaSComponentServerProps, BYOCComponent, getDesignLibraryStylesheetLinks, File, DesignLibrary, DesignLibraryApp, DefaultEmptyFieldEditingComponentImage, DefaultEmptyFieldEditingComponentText, SitecoreProvider, SitecoreProviderReactContext, withSitecore, useSitecore, withEditorChromes, withAppPlaceholder, withPlaceholder, withDatasourceCheck, withFieldMetadata, withEmptyFieldEditingComponent, EditingScripts, Form, ClientEditingChromesUpdate, AppPlaceholder, renderEmptyPlaceholder, } from '@sitecore-content-sdk/react';
@@ -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 { ProxyBase, ProxyHandler, defineProxy } from './proxy';
2
+ export { RedirectsProxy } from './redirects-proxy';
3
+ export { PersonalizeProxy } from './personalize-proxy';
4
+ export { MultisiteProxy } from './multisite-proxy';
5
+ export { AppRouterMultisiteProxy } from './app-router-multisite-proxy';
6
+ export { LocaleProxy } from './locale-proxy';
7
+ export { PersonalizeService, } from '@sitecore-content-sdk/content/personalize';
8
+ export { RedirectsService, REDIRECT_TYPE_301, REDIRECT_TYPE_302, REDIRECT_TYPE_SERVER_TRANSFER, } from '@sitecore-content-sdk/content/site';
9
+ export { default as debug } from '../debug';
@@ -8,18 +8,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- import { debug } from '@sitecore-content-sdk/core';
12
- import { getLocaleRewrite } from '@sitecore-content-sdk/core/i18n';
13
- import { MiddlewareBase, LOCALE_HEADER_NAME } from './middleware';
11
+ import { getLocaleRewrite } from '@sitecore-content-sdk/content/i18n';
12
+ import { ProxyBase, LOCALE_HEADER_NAME } from './proxy';
13
+ import debug from '../debug';
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
  }
@@ -8,17 +8,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- import { getSiteRewrite, SITE_KEY } from '@sitecore-content-sdk/core/site';
12
- import { debug } from '@sitecore-content-sdk/core';
13
- import { MiddlewareBase, REWRITE_HEADER_NAME } from './middleware';
14
- import { PREVIEW_KEY } from '@sitecore-content-sdk/core/editing';
11
+ import { getSiteRewrite, SITE_KEY } from '@sitecore-content-sdk/content/site';
12
+ import { ProxyBase, REWRITE_HEADER_NAME } from './proxy';
13
+ import { PREVIEW_KEY } from '@sitecore-content-sdk/content/editing';
14
+ import debug from '../debug';
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
@@ -7,18 +7,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { PersonalizeService, getPersonalizedRewrite, CdpHelper, DEFAULT_VARIANT, } from '@sitecore-content-sdk/core/personalize';
11
- import { debug } from '@sitecore-content-sdk/core';
12
- import { MiddlewareBase, REWRITE_HEADER_NAME } from './middleware';
10
+ import { PersonalizeService, getPersonalizedRewrite, CdpHelper, DEFAULT_VARIANT, } from '@sitecore-content-sdk/content/personalize';
11
+ import { ProxyBase, REWRITE_HEADER_NAME } from './proxy';
13
12
  import { CloudSDK } from '@sitecore-cloudsdk/core/server';
14
13
  import { personalize } from '@sitecore-cloudsdk/personalize/server';
14
+ import debug from '../debug';
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;
@@ -7,23 +7,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { SITE_KEY, SiteResolver } from '@sitecore-content-sdk/core/site';
11
- import { debug } from '@sitecore-content-sdk/core';
10
+ import { SITE_KEY, SiteResolver } from '@sitecore-content-sdk/content/site';
12
11
  import { NextResponse } from 'next/server';
13
- import { createGraphQLClientFactory, } from '@sitecore-content-sdk/core/client';
12
+ import { createGraphQLClientFactory, } from '@sitecore-content-sdk/content/client';
13
+ import debug from '../debug';
14
14
  export const REWRITE_HEADER_NAME = 'x-sc-rewrite';
15
15
  export const LOCALE_HEADER_NAME = 'x-sc-locale';
16
16
  /**
17
- * Middleware class to be extended by all middleware implementations
17
+ * Proxy handler class to be extended by all proxy implementations
18
18
  * @public
19
19
  */
20
- export class Middleware {
20
+ export class ProxyHandler {
21
21
  }
22
22
  /**
23
- * Base middleware class with common methods
23
+ * Base proxy class with common methods
24
24
  * @public
25
25
  */
26
- export class MiddlewareBase extends Middleware {
26
+ export class ProxyBase extends ProxyHandler {
27
27
  constructor(config) {
28
28
  super();
29
29
  this.config = config;
@@ -60,14 +60,14 @@ export class MiddlewareBase extends Middleware {
60
60
  const isKnownDevice = isMobile || isKnownPlatform;
61
61
  const purpose = req.headers.get('purpose');
62
62
  const nextRouterPrefetch = req.headers.get('Next-Router-Prefetch');
63
- const middlewarePrefetch = req.headers.get('x-middleware-prefetch');
63
+ const proxyPrefetch = req.headers.get('x-middleware-prefetch');
64
64
  // Some real navigations on different devices may incorrectly include 'prefetch' headers.
65
65
  // To avoid skipping personalization in such cases, we treat 'x-middleware-prefetch' as a more reliable signal of true prefetch behavior.
66
- if (isKnownDevice && middlewarePrefetch === '1') {
66
+ if (isKnownDevice && proxyPrefetch === '1') {
67
67
  return false;
68
68
  }
69
69
  // Otherwise, standard prefetch detection
70
- return purpose === 'prefetch' || nextRouterPrefetch === '1' || middlewarePrefetch === '1';
70
+ return purpose === 'prefetch' || nextRouterPrefetch === '1' || proxyPrefetch === '1';
71
71
  }
72
72
  disabled(req, res) {
73
73
  const { pathname } = req.nextUrl;
@@ -78,7 +78,7 @@ export class MiddlewareBase extends Middleware {
78
78
  }
79
79
  /**
80
80
  * Safely extract all headers for debug logging
81
- * Necessary to avoid middleware issue https://github.com/vercel/next.js/issues/39765
81
+ * Necessary to avoid proxy issue https://github.com/vercel/next.js/issues/39765
82
82
  * @param {Headers} incomingHeaders Incoming headers
83
83
  * @returns Object with headers as key/value pairs
84
84
  */
@@ -102,7 +102,7 @@ export class MiddlewareBase extends Middleware {
102
102
  }
103
103
  /**
104
104
  * Extract language from locale header of the response
105
- * set by LocaleMiddleware for app router application
105
+ * set by LocaleProxy for app router application
106
106
  * @param {NextResponse} res response
107
107
  * @returns {string | undefined} language or undefined if not found
108
108
  */
@@ -156,8 +156,9 @@ export class MiddlewareBase extends Middleware {
156
156
  // Note an absolute URL is required: https://nextjs.org/docs/messages/middleware-relative-urls
157
157
  const rewriteUrl = req.nextUrl.clone();
158
158
  rewriteUrl.pathname = rewritePath;
159
- const response = NextResponse.rewrite(rewriteUrl, res);
160
- // Share rewrite path with following executed middlewares
159
+ // NextResponse.rewrite requires a string URL, not a NextURL object
160
+ const response = NextResponse.rewrite(rewriteUrl.href, res);
161
+ // Share rewrite path with following executed proxies
161
162
  if (!skipHeader) {
162
163
  response.headers.set(REWRITE_HEADER_NAME, rewritePath);
163
164
  }
@@ -165,25 +166,24 @@ export class MiddlewareBase extends Middleware {
165
166
  }
166
167
  }
167
168
  /**
168
- * Define a middleware with a list of middlewares
169
- * @param {Middleware[]} middlewares List of middlewares to execute
169
+ * Define a proxy with a list of proxy handlers
170
+ * @param {ProxyHandler[]} proxies List of proxy handlers to execute
170
171
  * @public
171
172
  */
172
- export const defineMiddleware = (...middlewares) => {
173
+ export const defineProxy = (...proxies) => {
173
174
  return {
174
175
  /**
175
- * Execute all middlewares
176
+ * Execute all proxies
176
177
  * @param {NextRequest} req request
177
- * @param {NextFetchEvent} ev fetch event
178
178
  * @param {NextResponse} [res] response
179
179
  */
180
- exec: (req, ev, res) => __awaiter(void 0, void 0, void 0, function* () {
180
+ exec: (req, res) => __awaiter(void 0, void 0, void 0, function* () {
181
181
  const response = res || NextResponse.next();
182
- debug.common('middleware start');
182
+ debug.common('proxy start');
183
183
  const start = Date.now();
184
- const middlewareResponse = yield middlewares.reduce((p, middleware) => p.then((res) => middleware.handle(req, res, ev)), Promise.resolve(response));
185
- debug.common('middleware end in %dms', Date.now() - start);
186
- return middlewareResponse;
184
+ const proxyResponse = yield proxies.reduce((p, proxy) => p.then((res) => proxy.handle(req, res)), Promise.resolve(response));
185
+ debug.common('proxy end in %dms', Date.now() - start);
186
+ return proxyResponse;
187
187
  }),
188
188
  };
189
189
  };