@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
@@ -8,15 +8,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.EditingRenderMiddleware = void 0;
13
16
  const core_1 = require("@sitecore-content-sdk/core");
14
- const editing_1 = require("@sitecore-content-sdk/core/editing");
15
- const layout_1 = require("@sitecore-content-sdk/core/layout");
17
+ const editing_1 = require("@sitecore-content-sdk/content/editing");
18
+ const layout_1 = require("@sitecore-content-sdk/content/layout");
16
19
  const utils_1 = require("../utils/utils");
17
20
  const render_middleware_1 = require("./render-middleware");
18
- const utils_2 = require("@sitecore-content-sdk/core/utils");
19
- const utils_3 = require("./utils");
21
+ const tools_1 = require("@sitecore-content-sdk/core/tools");
22
+ const debug_1 = __importDefault(require("../debug"));
23
+ const utils_2 = require("./utils");
20
24
  /**
21
25
  * Middleware / handler for use in the editing render Next.js API route (e.g. '/api/editing/render')
22
26
  * which is required for Sitecore editing support.
@@ -30,22 +34,22 @@ class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
30
34
  super();
31
35
  this.config = config;
32
36
  this.handler = (req, res) => __awaiter(this, void 0, void 0, function* () {
33
- var _a, _b, _c, _d, _e;
37
+ var _a, _b, _c, _d, _e, _f;
34
38
  const { body, method, headers, query } = req;
35
- core_1.debug.editing('editing render middleware start: %o', {
39
+ debug_1.default.editing('editing render middleware start: %o', {
36
40
  method,
37
41
  query,
38
42
  headers,
39
43
  body,
40
44
  });
41
- const corsHeaders = (0, utils_2.getEnforcedCorsHeaders)({
45
+ const corsHeaders = (0, tools_1.getEnforcedCorsHeaders)({
42
46
  requestMethod: req.method,
43
47
  headers: req.headers,
44
48
  presetCorsHeader: headers['Access-Control-Allow-Origin'],
45
49
  allowedOrigins: editing_1.EDITING_ALLOWED_ORIGINS,
46
50
  });
47
51
  if (!corsHeaders) {
48
- core_1.debug.editing('invalid origin host - set allowed origins in JSS_ALLOWED_ORIGINS environment variable');
52
+ debug_1.default.editing('invalid origin host - set allowed origins in JSS_ALLOWED_ORIGINS environment variable');
49
53
  return res.status(401).json({
50
54
  html: `<html><body>Requests from origin ${(_a = req.headers) === null || _a === void 0 ? void 0 : _a.origin} not allowed</body></html>`,
51
55
  });
@@ -56,18 +60,18 @@ class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
56
60
  // Validate secret
57
61
  const secret = query[editing_1.QUERY_PARAM_EDITING_SECRET];
58
62
  if (secret !== (0, utils_1.getEditingSecret)()) {
59
- core_1.debug.editing('invalid editing secret - sent "%s" expected "%s"', secret, (0, utils_1.getEditingSecret)());
63
+ debug_1.default.editing('invalid editing secret - sent "%s" expected "%s"', secret, (0, utils_1.getEditingSecret)());
60
64
  return res.status(401).json({
61
65
  html: editing_1.INVALID_SECRET_HTML_MESSAGE,
62
66
  });
63
67
  }
64
68
  if (req.method === 'OPTIONS') {
65
- core_1.debug.editing('preflight request');
66
- // CORS headers are set by enforceCors
69
+ debug_1.default.editing('preflight request');
70
+ // CORS headers are set by getEnforcedCorsHeaders
67
71
  return res.status(204).send(null);
68
72
  }
69
73
  if (req.method !== 'GET') {
70
- core_1.debug.editing('invalid method - sent %s expected GET', req.method);
74
+ debug_1.default.editing('invalid method - sent %s expected GET', req.method);
71
75
  res.setHeader('Allow', 'GET');
72
76
  return res.status(405).json({
73
77
  html: `<html><body>Invalid request method '${req.method}'</body></html>`,
@@ -75,50 +79,58 @@ class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
75
79
  }
76
80
  const startTimestamp = Date.now();
77
81
  const mode = query.mode;
78
- const requiredQueryParams = (0, utils_3.getRequiredEditingParamsList)(mode);
82
+ const requiredQueryParams = (0, utils_2.getRequiredEditingParamsList)(mode);
79
83
  const missingQueryParams = requiredQueryParams.filter((param) => !query[param]);
84
+ const { allowedQueryParams, missingAllowedParams } = (0, utils_2.getAllowedQueryParams)(query, (_b = this.config) === null || _b === void 0 ? void 0 : _b.allowedQueryParams);
80
85
  // Validate query parameters
81
- if (missingQueryParams.length) {
82
- core_1.debug.editing('missing required query parameters: %o', missingQueryParams);
86
+ if (missingQueryParams.length || missingAllowedParams.length) {
87
+ debug_1.default.editing('missing required query parameters: %o', [
88
+ ...missingQueryParams,
89
+ ...missingAllowedParams,
90
+ ]);
83
91
  return res.status(400).json({
84
- html: `<html><body>Missing required query parameters: ${missingQueryParams.join(', ')}</body></html>`,
92
+ html: `<html><body>Missing required query parameters: ${[
93
+ ...missingQueryParams,
94
+ ...missingAllowedParams,
95
+ ].join(', ')}</body></html>`,
85
96
  });
86
97
  }
87
- const previewDataParams = (0, utils_3.mapEditingParams)(query);
88
- res.setPreviewData(Object.assign(Object.assign({}, previewDataParams), { variantIds: (_b = previewDataParams.variantIds) === null || _b === void 0 ? void 0 : _b.split(',') }), {
98
+ const previewDataParams = (0, utils_2.mapEditingParams)(query);
99
+ res.setPreviewData(Object.assign(Object.assign(Object.assign({}, previewDataParams), allowedQueryParams), { variantIds: (_c = previewDataParams.variantIds) === null || _c === void 0 ? void 0 : _c.split(',') }), {
89
100
  maxAge: 3,
90
101
  });
91
102
  // Set Preview mode identifier cookie, if the page is rendered in Sitecore Preview mode
92
103
  if (mode === layout_1.LayoutServicePageState.Preview) {
93
104
  const cookies = res.getHeader('Set-Cookie');
94
- const previewCookies = (0, utils_3.getPreviewCookies)(query.sc_site);
105
+ const previewCookies = (0, utils_2.getPreviewCookies)(query.sc_site);
95
106
  res.setHeader('Set-Cookie', [...cookies, ...previewCookies]);
96
107
  }
97
108
  // Restrict the page to be rendered only within the allowed origins
98
- res.setHeader('Content-Security-Policy', (0, utils_3.getCSPHeader)());
109
+ res.setHeader('Content-Security-Policy', (0, utils_2.getCSPHeader)());
99
110
  const encodedRoute = encodeURI(query.route);
100
- const route = ((_d = (_c = this.config) === null || _c === void 0 ? void 0 : _c.resolvePageUrl) === null || _d === void 0 ? void 0 : _d.call(_c, encodedRoute)) || encodedRoute;
101
- const base = ((_e = this.config) === null || _e === void 0 ? void 0 : _e.sitecoreInternalEditingHostUrl) || (0, utils_3.resolveServerUrl)(req);
111
+ const route = ((_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.resolvePageUrl) === null || _e === void 0 ? void 0 : _e.call(_d, encodedRoute)) || encodedRoute;
112
+ const base = ((_f = this.config) === null || _f === void 0 ? void 0 : _f.sitecoreInternalEditingHostUrl) || (0, utils_2.resolveServerUrl)(req);
102
113
  const requestUrl = new URL(route, base);
103
114
  const cookies = res.getHeader('Set-Cookie');
104
115
  // Make actual render request for page route, passing on preview cookies as well as any approved query string parameters.
105
116
  // Note timestamp effectively disables caching the request (no amount of cache headers seemed to do it)
106
117
  try {
107
- core_1.debug.editing('fetching page route for %s', query.route);
118
+ debug_1.default.editing('fetching page route for %s', query.route);
108
119
  // Get query string parameters to propagate on subsequent requests (e.g. for deployment protection bypass)
109
- const propagatedQsParams = (0, utils_3.getQueryParamsForPropagation)(query);
120
+ const propagatedQsParams = (0, utils_2.getQueryParamsForPropagation)(query);
110
121
  // Get headers to propagate on subsequent requests
111
- const propagatedHeaders = (0, utils_3.getHeadersForPropagation)(headers);
112
- const html = yield (0, utils_3.getEditingRequestHtml)(requestUrl, propagatedQsParams, propagatedHeaders, cookies, this.dataFetcher);
122
+ const propagatedHeaders = (0, utils_2.getHeadersForPropagation)(headers);
123
+ const html = yield (0, utils_2.getEditingRequestHtml)(requestUrl, propagatedQsParams, propagatedHeaders, cookies, this.dataFetcher);
113
124
  // remove preview cookies to not leak them to the browser
114
125
  if (cookies && Array.isArray(cookies)) {
115
- const filteredCookies = (0, utils_3.cleanupNextPreviewCookies)(cookies);
126
+ const filteredCookies = (0, utils_2.cleanupNextPreviewCookies)(cookies);
116
127
  filteredCookies && res.setHeader('Set-Cookie', filteredCookies);
117
128
  }
118
- core_1.debug.editing('editing render middleware end in %dms: %o', Date.now() - startTimestamp, {
129
+ debug_1.default.editing('editing render middleware end in %dms: %o', Date.now() - startTimestamp, {
119
130
  status: 200,
120
131
  route,
121
132
  });
133
+ res.setHeader('Content-Type', 'text/html; charset=utf-8');
122
134
  res.status(200).send(html);
123
135
  }
124
136
  catch (err) {
@@ -132,7 +144,7 @@ class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
132
144
  res.status(500).send(`<html><body>${error}</body></html>`);
133
145
  }
134
146
  });
135
- this.dataFetcher = new core_1.NativeDataFetcher({ debugger: core_1.debug.editing });
147
+ this.dataFetcher = new core_1.NativeDataFetcher({ debugger: debug_1.default.editing });
136
148
  }
137
149
  /**
138
150
  * Gets the Next.js API route handler
@@ -8,13 +8,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.FEAASRenderMiddleware = void 0;
13
- const core_1 = require("@sitecore-content-sdk/core");
14
- const editing_1 = require("@sitecore-content-sdk/core/editing");
16
+ const editing_1 = require("@sitecore-content-sdk/content/editing");
15
17
  const utils_1 = require("../utils/utils");
16
18
  const render_middleware_1 = require("./render-middleware");
17
- const utils_2 = require("@sitecore-content-sdk/core/utils");
19
+ const tools_1 = require("@sitecore-content-sdk/core/tools");
20
+ const debug_1 = __importDefault(require("../debug"));
18
21
  /**
19
22
  * Middleware / handler for use in the feaas render Next.js API route (e.g. '/api/editing/feaas/render')
20
23
  * which is required for Sitecore editing support.
@@ -22,7 +25,7 @@ const utils_2 = require("@sitecore-content-sdk/core/utils");
22
25
  */
23
26
  class FEAASRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
24
27
  /**
25
- * @param {EditingRenderMiddlewareConfig} [config] Editing render middleware config
28
+ * @param {FEAASRenderMiddlewareConfig} [config] FEAAS render middleware config
26
29
  */
27
30
  constructor(config) {
28
31
  var _a;
@@ -33,32 +36,40 @@ class FEAASRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
33
36
  var _a;
34
37
  const { method, query, headers } = req;
35
38
  const startTimestamp = Date.now();
36
- core_1.debug.editing('feaas render middleware start: %o', {
39
+ debug_1.default.editing('feaas render middleware start: %o', {
37
40
  method,
38
41
  query,
39
42
  headers,
40
43
  });
41
- if (!(0, utils_2.enforceCors)(req, res, editing_1.EDITING_ALLOWED_ORIGINS)) {
42
- core_1.debug.editing('invalid origin host - set allowed origins in JSS_ALLOWED_ORIGINS environment variable');
44
+ const corsHeaders = (0, tools_1.getEnforcedCorsHeaders)({
45
+ requestMethod: method,
46
+ headers: headers,
47
+ presetCorsHeader: headers['Access-Control-Allow-Origin'],
48
+ allowedOrigins: editing_1.EDITING_ALLOWED_ORIGINS,
49
+ });
50
+ if (!corsHeaders) {
51
+ debug_1.default.editing('invalid origin host - set allowed origins in JSS_ALLOWED_ORIGINS environment variable');
43
52
  return res
44
53
  .status(401)
45
54
  .send(`<html><body>Requests from origin ${(_a = req.headers) === null || _a === void 0 ? void 0 : _a.origin} are not allowed</body></html>`);
46
55
  }
56
+ Object.keys(corsHeaders).forEach((key) => {
57
+ res.setHeader(key, corsHeaders[key]);
58
+ });
47
59
  if (!method || !['GET', 'OPTIONS'].includes(method)) {
48
- core_1.debug.editing('invalid method - sent %s expected GET,OPTIONS', method);
60
+ debug_1.default.editing('invalid method - sent %s expected GET,OPTIONS', method);
49
61
  res.setHeader('Allow', 'GET, OPTIONS');
50
62
  return res.status(405).send(`<html><body>Invalid request method '${method}'</body></html>`);
51
63
  }
52
64
  // Validate secret
53
65
  const secret = query[editing_1.QUERY_PARAM_EDITING_SECRET];
54
66
  if (secret !== (0, utils_1.getEditingSecret)()) {
55
- core_1.debug.editing('invalid editing secret - sent "%s" expected "%s"', secret, (0, utils_1.getEditingSecret)());
67
+ debug_1.default.editing('invalid editing secret - sent "%s" expected "%s"', secret, (0, utils_1.getEditingSecret)());
56
68
  return res.status(401).send(editing_1.INVALID_SECRET_HTML_MESSAGE);
57
69
  }
58
70
  // Handle preflight request
59
71
  if (method === 'OPTIONS') {
60
- core_1.debug.editing('preflight request');
61
- // CORS headers are set by enforceCors
72
+ debug_1.default.editing('preflight request');
62
73
  return res.status(204).send(null);
63
74
  }
64
75
  try {
@@ -77,8 +88,8 @@ class FEAASRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
77
88
  queryParams.append('feaasSrc', query.feaasSrc);
78
89
  }
79
90
  const redirectUrl = this.pageUrl + (queryParams.toString() ? `?${queryParams.toString()}` : '');
80
- core_1.debug.editing('redirecting to page route %s', redirectUrl);
81
- core_1.debug.editing('feaas render middleware end in %dms', Date.now() - startTimestamp);
91
+ debug_1.default.editing('redirecting to page route %s', redirectUrl);
92
+ debug_1.default.editing('feaas render middleware end in %dms', Date.now() - startTimestamp);
82
93
  res.redirect(redirectUrl);
83
94
  }
84
95
  catch (err) {
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EDITING_COMPONENT_ID = exports.EDITING_COMPONENT_PLACEHOLDER = exports.RenderingType = exports.EditingConfigMiddleware = exports.FEAASRenderMiddleware = exports.getHeadersForPropagation = exports.getQueryParamsForPropagation = exports.isDesignLibraryPreviewData = exports.EditingRenderMiddleware = exports.EditingService = void 0;
4
- var editing_1 = require("@sitecore-content-sdk/core/editing");
4
+ var editing_1 = require("@sitecore-content-sdk/content/editing");
5
5
  Object.defineProperty(exports, "EditingService", { enumerable: true, get: function () { return editing_1.EditingService; } });
6
6
  var editing_render_middleware_1 = require("./editing-render-middleware");
7
7
  Object.defineProperty(exports, "EditingRenderMiddleware", { enumerable: true, get: function () { return editing_render_middleware_1.EditingRenderMiddleware; } });
@@ -13,7 +13,7 @@ var feaas_render_middleware_1 = require("./feaas-render-middleware");
13
13
  Object.defineProperty(exports, "FEAASRenderMiddleware", { enumerable: true, get: function () { return feaas_render_middleware_1.FEAASRenderMiddleware; } });
14
14
  var editing_config_middleware_1 = require("./editing-config-middleware");
15
15
  Object.defineProperty(exports, "EditingConfigMiddleware", { enumerable: true, get: function () { return editing_config_middleware_1.EditingConfigMiddleware; } });
16
- var layout_1 = require("@sitecore-content-sdk/core/layout");
16
+ var layout_1 = require("@sitecore-content-sdk/content/layout");
17
17
  Object.defineProperty(exports, "RenderingType", { enumerable: true, get: function () { return layout_1.RenderingType; } });
18
18
  Object.defineProperty(exports, "EDITING_COMPONENT_PLACEHOLDER", { enumerable: true, get: function () { return layout_1.EDITING_COMPONENT_PLACEHOLDER; } });
19
19
  Object.defineProperty(exports, "EDITING_COMPONENT_ID", { enumerable: true, get: function () { return layout_1.EDITING_COMPONENT_ID; } });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -9,13 +9,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.getCSPHeader = exports.resolveServerUrl = exports.isDesignLibraryPreviewData = exports.getEditingRequestHtml = exports.getHeadersForPropagation = exports.getQueryParamsForPropagation = exports.getRequiredEditingParamsList = exports.getPreviewCookies = exports.cleanupNextPreviewCookies = exports.mapEditingParams = exports.getEditingSecretFromRequest = void 0;
13
- const editing_1 = require("@sitecore-content-sdk/core/editing");
14
- const personalize_1 = require("@sitecore-content-sdk/core/personalize");
15
- const site_1 = require("@sitecore-content-sdk/core/site");
12
+ exports.getCSPHeader = exports.resolveServerUrl = exports.isDesignLibraryPreviewData = exports.getEditingRequestHtml = exports.getHeadersForPropagation = exports.getQueryParamsForPropagation = exports.getRequiredEditingParamsList = exports.getPreviewCookies = exports.cleanupNextPreviewCookies = exports.getAllowedQueryParams = exports.mapEditingParams = exports.getEditingSecretFromRequest = void 0;
13
+ const editing_1 = require("@sitecore-content-sdk/content/editing");
14
+ const personalize_1 = require("@sitecore-content-sdk/content/personalize");
15
+ const site_1 = require("@sitecore-content-sdk/content/site");
16
16
  const constants_1 = require("./constants");
17
17
  const constants_2 = require("next/constants");
18
- const utils_1 = require("@sitecore-content-sdk/core/utils");
18
+ const tools_1 = require("@sitecore-content-sdk/core/tools");
19
19
  /**
20
20
  * Gets editing secret value from request
21
21
  * @param {NextApiRequest | NextRequest} req incoming request
@@ -69,6 +69,35 @@ const mapEditingParams = (query) => {
69
69
  return params;
70
70
  };
71
71
  exports.mapEditingParams = mapEditingParams;
72
+ /**
73
+ * Parses the query parameters based on the provided allowed parameters or a resolver function, to extract additional parameters that should be allowed.
74
+ * @param {{ [key: string]: string | undefined }} queryParams Object of query parameters from incoming URL.
75
+ * @param {AllowedQueryParams} allowedParams Allowed parameters to map.
76
+ * @returns Object containing the list of missing required parameters and the allowed query parameters that were extracted.
77
+ * @internal
78
+ */
79
+ const getAllowedQueryParams = (queryParams, allowedParams) => {
80
+ const allowedQueryParamsList = typeof allowedParams === 'function'
81
+ ? allowedParams(Object.keys(queryParams))
82
+ : Array.isArray(allowedParams)
83
+ ? allowedParams
84
+ : [];
85
+ if (!allowedQueryParamsList.length)
86
+ return { missingAllowedParams: [], allowedQueryParams: {} };
87
+ return allowedQueryParamsList.reduce((acc, param) => {
88
+ const name = typeof param === 'string' ? param : param.name;
89
+ const required = typeof param === 'string' ? false : param.required;
90
+ const value = queryParams[name];
91
+ if (value !== undefined) {
92
+ acc.allowedQueryParams[name] = value;
93
+ return acc;
94
+ }
95
+ if (required)
96
+ acc.missingAllowedParams.push(name);
97
+ return acc;
98
+ }, { missingAllowedParams: [], allowedQueryParams: {} });
99
+ };
100
+ exports.getAllowedQueryParams = getAllowedQueryParams;
72
101
  /**
73
102
  * Filters out Next.js preview cookies from a cookie string or array
74
103
  * @param {string | string[] | null} cookies cookie header value
@@ -255,6 +284,6 @@ exports.resolveServerUrl = resolveServerUrl;
255
284
  * @returns Content-Security-Policy header value
256
285
  */
257
286
  const getCSPHeader = () => {
258
- return `frame-ancestors 'self' ${[...(0, utils_1.getAllowedOriginsFromEnv)(), ...editing_1.EDITING_ALLOWED_ORIGINS].join(' ')}`;
287
+ return `frame-ancestors 'self' ${[...(0, tools_1.getAllowedOriginsFromEnv)(), ...editing_1.EDITING_ALLOWED_ORIGINS].join(' ')}`;
259
288
  };
260
289
  exports.getCSPHeader = getCSPHeader;
package/dist/cjs/index.js CHANGED
@@ -32,17 +32,21 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
35
38
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.BYOCWrapper = exports.FEaaSWrapper = exports.BYOCServerWrapper = exports.BYOCClientWrapper = exports.FEaaSServerWrapper = exports.FEaaSClientWrapper = exports.NextImage = exports.Placeholder = exports.RichText = exports.Link = exports.useComponentProps = exports.ComponentPropsContext = exports.ComponentPropsReactContext = exports.ComponentPropsService = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.SiteInfoService = exports.SiteResolver = exports.RobotsService = exports.ErrorPagesService = exports.SitemapXmlService = exports.REDIRECT_TYPE_SERVER_TRANSFER = exports.REDIRECT_TYPE_302 = exports.REDIRECT_TYPE_301 = exports.RedirectsService = exports.SitePathService = exports.PersonalizeService = exports.CdpHelper = exports.normalizePersonalizedRewrite = exports.getGroomedVariantIds = exports.getPersonalizedRewriteData = exports.getPersonalizedRewrite = exports.personalizeLayout = exports.DictionaryService = exports.mediaApi = exports.ComponentLayoutService = exports.ErrorPage = exports.RenderingType = exports.EditMode = exports.getContentStylesheetLink = exports.getFieldValue = exports.getChildPlaceholder = exports.LayoutService = exports.LayoutServicePageState = exports.MemoryCacheClient = exports.debug = exports.enableDebug = exports.NativeDataFetcher = exports.constants = void 0;
37
- exports.AppPlaceholder = exports.ClientEditingChromesUpdate = exports.Form = exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecore = exports.withSitecore = exports.SitecoreProviderReactContext = exports.SitecoreProvider = exports.DefaultEmptyFieldEditingComponentText = exports.DefaultEmptyFieldEditingComponentImage = exports.DesignLibraryApp = exports.DesignLibrary = exports.File = exports.getDesignLibraryStylesheetLinks = exports.BYOCComponent = exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.DateField = exports.Text = exports.Image = void 0;
39
+ exports.BYOCWrapper = exports.FEaaSWrapper = exports.BYOCServerWrapper = exports.BYOCClientWrapper = exports.FEaaSServerWrapper = exports.FEaaSClientWrapper = exports.NextImage = exports.Placeholder = exports.RichText = exports.Link = exports.useComponentProps = exports.ComponentPropsContext = exports.ComponentPropsReactContext = exports.ComponentPropsService = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.SiteInfoService = exports.SiteResolver = exports.RobotsService = exports.ErrorPagesService = exports.SitemapXmlService = exports.REDIRECT_TYPE_SERVER_TRANSFER = exports.REDIRECT_TYPE_302 = exports.REDIRECT_TYPE_301 = exports.RedirectsService = exports.SitePathService = exports.PersonalizeService = exports.CdpHelper = exports.normalizePersonalizedRewrite = exports.getGroomedVariantIds = exports.getPersonalizedRewriteData = exports.getPersonalizedRewrite = exports.personalizeLayout = exports.DictionaryService = exports.mediaApi = exports.ComponentLayoutService = exports.ErrorPage = exports.RenderingType = exports.EditMode = exports.getContentStylesheetLink = exports.getFieldValue = exports.getChildPlaceholder = exports.LayoutService = exports.LayoutServicePageState = exports.MemoryCacheClient = exports.enableDebug = exports.NativeDataFetcher = exports.constants = exports.debug = void 0;
40
+ exports.renderEmptyPlaceholder = exports.AppPlaceholder = exports.ClientEditingChromesUpdate = exports.Form = exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.withDatasourceCheck = exports.withPlaceholder = exports.withAppPlaceholder = exports.withEditorChromes = exports.useSitecore = exports.withSitecore = exports.SitecoreProviderReactContext = exports.SitecoreProvider = exports.DefaultEmptyFieldEditingComponentText = exports.DefaultEmptyFieldEditingComponentImage = exports.DesignLibraryApp = exports.DesignLibrary = exports.File = exports.getDesignLibraryStylesheetLinks = exports.BYOCComponent = exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.DateField = exports.Text = exports.Image = void 0;
41
+ var debug_1 = require("./debug");
42
+ Object.defineProperty(exports, "debug", { enumerable: true, get: function () { return __importDefault(debug_1).default; } });
38
43
  var core_1 = require("@sitecore-content-sdk/core");
39
44
  Object.defineProperty(exports, "constants", { enumerable: true, get: function () { return core_1.constants; } });
40
45
  // generic data access
41
46
  Object.defineProperty(exports, "NativeDataFetcher", { enumerable: true, get: function () { return core_1.NativeDataFetcher; } });
42
47
  Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return core_1.enableDebug; } });
43
- Object.defineProperty(exports, "debug", { enumerable: true, get: function () { return core_1.debug; } });
44
48
  Object.defineProperty(exports, "MemoryCacheClient", { enumerable: true, get: function () { return core_1.MemoryCacheClient; } });
45
- var layout_1 = require("@sitecore-content-sdk/core/layout");
49
+ var layout_1 = require("@sitecore-content-sdk/content/layout");
46
50
  Object.defineProperty(exports, "LayoutServicePageState", { enumerable: true, get: function () { return layout_1.LayoutServicePageState; } });
47
51
  Object.defineProperty(exports, "LayoutService", { enumerable: true, get: function () { return layout_1.LayoutService; } });
48
52
  Object.defineProperty(exports, "getChildPlaceholder", { enumerable: true, get: function () { return layout_1.getChildPlaceholder; } });
@@ -50,15 +54,15 @@ Object.defineProperty(exports, "getFieldValue", { enumerable: true, get: functio
50
54
  Object.defineProperty(exports, "getContentStylesheetLink", { enumerable: true, get: function () { return layout_1.getContentStylesheetLink; } });
51
55
  Object.defineProperty(exports, "EditMode", { enumerable: true, get: function () { return layout_1.EditMode; } });
52
56
  Object.defineProperty(exports, "RenderingType", { enumerable: true, get: function () { return layout_1.RenderingType; } });
53
- var client_1 = require("@sitecore-content-sdk/core/client");
57
+ var client_1 = require("@sitecore-content-sdk/content/client");
54
58
  Object.defineProperty(exports, "ErrorPage", { enumerable: true, get: function () { return client_1.ErrorPage; } });
55
- var editing_1 = require("@sitecore-content-sdk/core/editing");
59
+ var editing_1 = require("@sitecore-content-sdk/content/editing");
56
60
  Object.defineProperty(exports, "ComponentLayoutService", { enumerable: true, get: function () { return editing_1.ComponentLayoutService; } });
57
- var media_1 = require("@sitecore-content-sdk/core/media");
61
+ var media_1 = require("@sitecore-content-sdk/content/media");
58
62
  Object.defineProperty(exports, "mediaApi", { enumerable: true, get: function () { return media_1.mediaApi; } });
59
- var i18n_1 = require("@sitecore-content-sdk/core/i18n");
63
+ var i18n_1 = require("@sitecore-content-sdk/content/i18n");
60
64
  Object.defineProperty(exports, "DictionaryService", { enumerable: true, get: function () { return i18n_1.DictionaryService; } });
61
- var personalize_1 = require("@sitecore-content-sdk/core/personalize");
65
+ var personalize_1 = require("@sitecore-content-sdk/content/personalize");
62
66
  Object.defineProperty(exports, "personalizeLayout", { enumerable: true, get: function () { return personalize_1.personalizeLayout; } });
63
67
  Object.defineProperty(exports, "getPersonalizedRewrite", { enumerable: true, get: function () { return personalize_1.getPersonalizedRewrite; } });
64
68
  Object.defineProperty(exports, "getPersonalizedRewriteData", { enumerable: true, get: function () { return personalize_1.getPersonalizedRewriteData; } });
@@ -66,13 +70,13 @@ Object.defineProperty(exports, "getGroomedVariantIds", { enumerable: true, get:
66
70
  Object.defineProperty(exports, "normalizePersonalizedRewrite", { enumerable: true, get: function () { return personalize_1.normalizePersonalizedRewrite; } });
67
71
  Object.defineProperty(exports, "CdpHelper", { enumerable: true, get: function () { return personalize_1.CdpHelper; } });
68
72
  Object.defineProperty(exports, "PersonalizeService", { enumerable: true, get: function () { return personalize_1.PersonalizeService; } });
69
- var site_1 = require("@sitecore-content-sdk/core/site");
73
+ var site_1 = require("@sitecore-content-sdk/content/site");
70
74
  Object.defineProperty(exports, "SitePathService", { enumerable: true, get: function () { return site_1.SitePathService; } });
71
75
  Object.defineProperty(exports, "RedirectsService", { enumerable: true, get: function () { return site_1.RedirectsService; } });
72
76
  Object.defineProperty(exports, "REDIRECT_TYPE_301", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_301; } });
73
77
  Object.defineProperty(exports, "REDIRECT_TYPE_302", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_302; } });
74
78
  Object.defineProperty(exports, "REDIRECT_TYPE_SERVER_TRANSFER", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_SERVER_TRANSFER; } });
75
- var site_2 = require("@sitecore-content-sdk/core/site");
79
+ var site_2 = require("@sitecore-content-sdk/content/site");
76
80
  Object.defineProperty(exports, "SitemapXmlService", { enumerable: true, get: function () { return site_2.SitemapXmlService; } });
77
81
  Object.defineProperty(exports, "ErrorPagesService", { enumerable: true, get: function () { return site_2.ErrorPagesService; } });
78
82
  Object.defineProperty(exports, "RobotsService", { enumerable: true, get: function () { return site_2.RobotsService; } });
@@ -122,6 +126,7 @@ Object.defineProperty(exports, "SitecoreProviderReactContext", { enumerable: tru
122
126
  Object.defineProperty(exports, "withSitecore", { enumerable: true, get: function () { return react_2.withSitecore; } });
123
127
  Object.defineProperty(exports, "useSitecore", { enumerable: true, get: function () { return react_2.useSitecore; } });
124
128
  Object.defineProperty(exports, "withEditorChromes", { enumerable: true, get: function () { return react_2.withEditorChromes; } });
129
+ Object.defineProperty(exports, "withAppPlaceholder", { enumerable: true, get: function () { return react_2.withAppPlaceholder; } });
125
130
  Object.defineProperty(exports, "withPlaceholder", { enumerable: true, get: function () { return react_2.withPlaceholder; } });
126
131
  Object.defineProperty(exports, "withDatasourceCheck", { enumerable: true, get: function () { return react_2.withDatasourceCheck; } });
127
132
  Object.defineProperty(exports, "withFieldMetadata", { enumerable: true, get: function () { return react_2.withFieldMetadata; } });
@@ -130,3 +135,4 @@ Object.defineProperty(exports, "EditingScripts", { enumerable: true, get: functi
130
135
  Object.defineProperty(exports, "Form", { enumerable: true, get: function () { return react_2.Form; } });
131
136
  Object.defineProperty(exports, "ClientEditingChromesUpdate", { enumerable: true, get: function () { return react_2.ClientEditingChromesUpdate; } });
132
137
  Object.defineProperty(exports, "AppPlaceholder", { enumerable: true, get: function () { return react_2.AppPlaceholder; } });
138
+ Object.defineProperty(exports, "renderEmptyPlaceholder", { enumerable: true, get: function () { return react_2.renderEmptyPlaceholder; } });
@@ -1,30 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.REDIRECT_TYPE_SERVER_TRANSFER = exports.REDIRECT_TYPE_302 = exports.REDIRECT_TYPE_301 = exports.RedirectsService = exports.PersonalizeService = exports.LocaleMiddleware = exports.RobotsMiddleware = exports.SitemapMiddleware = exports.AppRouterMultisiteMiddleware = exports.MultisiteMiddleware = exports.PersonalizeMiddleware = exports.RedirectsMiddleware = exports.defineMiddleware = exports.Middleware = exports.MiddlewareBase = exports.debug = void 0;
4
- var core_1 = require("@sitecore-content-sdk/core");
5
- Object.defineProperty(exports, "debug", { enumerable: true, get: function () { return core_1.debug; } });
6
- var middleware_1 = require("./middleware");
7
- Object.defineProperty(exports, "MiddlewareBase", { enumerable: true, get: function () { return middleware_1.MiddlewareBase; } });
8
- Object.defineProperty(exports, "Middleware", { enumerable: true, get: function () { return middleware_1.Middleware; } });
9
- Object.defineProperty(exports, "defineMiddleware", { enumerable: true, get: function () { return middleware_1.defineMiddleware; } });
10
- var redirects_middleware_1 = require("./redirects-middleware");
11
- Object.defineProperty(exports, "RedirectsMiddleware", { enumerable: true, get: function () { return redirects_middleware_1.RedirectsMiddleware; } });
12
- var personalize_middleware_1 = require("./personalize-middleware");
13
- Object.defineProperty(exports, "PersonalizeMiddleware", { enumerable: true, get: function () { return personalize_middleware_1.PersonalizeMiddleware; } });
14
- var multisite_middleware_1 = require("./multisite-middleware");
15
- Object.defineProperty(exports, "MultisiteMiddleware", { enumerable: true, get: function () { return multisite_middleware_1.MultisiteMiddleware; } });
16
- var app_router_multisite_middleware_1 = require("./app-router-multisite-middleware");
17
- Object.defineProperty(exports, "AppRouterMultisiteMiddleware", { enumerable: true, get: function () { return app_router_multisite_middleware_1.AppRouterMultisiteMiddleware; } });
3
+ exports.RobotsMiddleware = exports.SitemapMiddleware = void 0;
18
4
  var sitemap_middleware_1 = require("./sitemap-middleware");
19
5
  Object.defineProperty(exports, "SitemapMiddleware", { enumerable: true, get: function () { return sitemap_middleware_1.SitemapMiddleware; } });
20
6
  var robots_middleware_1 = require("./robots-middleware");
21
7
  Object.defineProperty(exports, "RobotsMiddleware", { enumerable: true, get: function () { return robots_middleware_1.RobotsMiddleware; } });
22
- var locale_middleware_1 = require("./locale-middleware");
23
- Object.defineProperty(exports, "LocaleMiddleware", { enumerable: true, get: function () { return locale_middleware_1.LocaleMiddleware; } });
24
- var personalize_1 = require("@sitecore-content-sdk/core/personalize");
25
- Object.defineProperty(exports, "PersonalizeService", { enumerable: true, get: function () { return personalize_1.PersonalizeService; } });
26
- var site_1 = require("@sitecore-content-sdk/core/site");
27
- Object.defineProperty(exports, "RedirectsService", { enumerable: true, get: function () { return site_1.RedirectsService; } });
28
- Object.defineProperty(exports, "REDIRECT_TYPE_301", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_301; } });
29
- Object.defineProperty(exports, "REDIRECT_TYPE_302", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_302; } });
30
- Object.defineProperty(exports, "REDIRECT_TYPE_SERVER_TRANSFER", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_SERVER_TRANSFER; } });
@@ -1,26 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AppRouterMultisiteMiddleware = void 0;
4
- const multisite_middleware_1 = require("./multisite-middleware");
3
+ exports.AppRouterMultisiteProxy = void 0;
4
+ const multisite_proxy_1 = require("./multisite-proxy");
5
5
  /**
6
- * Middleware/handler for enabling multisite support in the Next.js App Router.
6
+ * Proxy/handler for enabling multisite support in the Next.js App Router.
7
7
  * @public
8
8
  */
9
- class AppRouterMultisiteMiddleware extends multisite_middleware_1.MultisiteMiddleware {
9
+ class AppRouterMultisiteProxy extends multisite_proxy_1.MultisiteProxy {
10
10
  /**
11
11
  * Warns when multisite is disabled in App Router.
12
- * The middleware will still run to prevent routing errors.
12
+ * The proxy will still run to prevent routing errors.
13
13
  * @param {NextResponse} _res response (unused, kept for method signature compatibility)
14
14
  */
15
15
  // eslint-disable-next-line no-unused-vars
16
16
  shouldWarnWhenDisabled(_res) {
17
- console.warn('⚠️ Warning: Multisite is disabled in App Router configuration, but the middleware will continue running. ' +
17
+ console.warn('⚠️ Warning: Multisite is disabled in App Router configuration, but the proxy will continue running. ' +
18
18
  'Disabling multisite in App Router would cause 404 errors for regular page requests because the route structure requires the [site] segment. ' +
19
19
  'Preview/Editing modes will still work. ' +
20
20
  'For single-site setups, keep multisite enabled and configure only one site.');
21
21
  }
22
22
  /**
23
- * In App Router, we cannot skip the middleware even if enabled is false,
23
+ * In App Router, we cannot skip the proxy even if enabled is false,
24
24
  * because the route structure requires the [site] segment.
25
25
  * @returns {boolean} always returns false (never skip) for App Router
26
26
  */
@@ -38,4 +38,4 @@ class AppRouterMultisiteMiddleware extends multisite_middleware_1.MultisiteMiddl
38
38
  return `/${siteName}${path}`;
39
39
  }
40
40
  }
41
- exports.AppRouterMultisiteMiddleware = AppRouterMultisiteMiddleware;
41
+ exports.AppRouterMultisiteProxy = AppRouterMultisiteProxy;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.debug = exports.REDIRECT_TYPE_SERVER_TRANSFER = exports.REDIRECT_TYPE_302 = exports.REDIRECT_TYPE_301 = exports.RedirectsService = exports.PersonalizeService = exports.LocaleProxy = exports.AppRouterMultisiteProxy = exports.MultisiteProxy = exports.PersonalizeProxy = exports.RedirectsProxy = exports.defineProxy = exports.ProxyHandler = exports.ProxyBase = void 0;
7
+ var proxy_1 = require("./proxy");
8
+ Object.defineProperty(exports, "ProxyBase", { enumerable: true, get: function () { return proxy_1.ProxyBase; } });
9
+ Object.defineProperty(exports, "ProxyHandler", { enumerable: true, get: function () { return proxy_1.ProxyHandler; } });
10
+ Object.defineProperty(exports, "defineProxy", { enumerable: true, get: function () { return proxy_1.defineProxy; } });
11
+ var redirects_proxy_1 = require("./redirects-proxy");
12
+ Object.defineProperty(exports, "RedirectsProxy", { enumerable: true, get: function () { return redirects_proxy_1.RedirectsProxy; } });
13
+ var personalize_proxy_1 = require("./personalize-proxy");
14
+ Object.defineProperty(exports, "PersonalizeProxy", { enumerable: true, get: function () { return personalize_proxy_1.PersonalizeProxy; } });
15
+ var multisite_proxy_1 = require("./multisite-proxy");
16
+ Object.defineProperty(exports, "MultisiteProxy", { enumerable: true, get: function () { return multisite_proxy_1.MultisiteProxy; } });
17
+ var app_router_multisite_proxy_1 = require("./app-router-multisite-proxy");
18
+ Object.defineProperty(exports, "AppRouterMultisiteProxy", { enumerable: true, get: function () { return app_router_multisite_proxy_1.AppRouterMultisiteProxy; } });
19
+ var locale_proxy_1 = require("./locale-proxy");
20
+ Object.defineProperty(exports, "LocaleProxy", { enumerable: true, get: function () { return locale_proxy_1.LocaleProxy; } });
21
+ var personalize_1 = require("@sitecore-content-sdk/content/personalize");
22
+ Object.defineProperty(exports, "PersonalizeService", { enumerable: true, get: function () { return personalize_1.PersonalizeService; } });
23
+ var site_1 = require("@sitecore-content-sdk/content/site");
24
+ Object.defineProperty(exports, "RedirectsService", { enumerable: true, get: function () { return site_1.RedirectsService; } });
25
+ Object.defineProperty(exports, "REDIRECT_TYPE_301", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_301; } });
26
+ Object.defineProperty(exports, "REDIRECT_TYPE_302", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_302; } });
27
+ Object.defineProperty(exports, "REDIRECT_TYPE_SERVER_TRANSFER", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_SERVER_TRANSFER; } });
28
+ var debug_1 = require("../debug");
29
+ Object.defineProperty(exports, "debug", { enumerable: true, get: function () { return __importDefault(debug_1).default; } });
@@ -9,20 +9,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  step((generator = generator.apply(thisArg, _arguments || [])).next());
10
10
  });
11
11
  };
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
12
15
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.LocaleMiddleware = void 0;
14
- const core_1 = require("@sitecore-content-sdk/core");
15
- const i18n_1 = require("@sitecore-content-sdk/core/i18n");
16
- const middleware_1 = require("./middleware");
16
+ exports.LocaleProxy = void 0;
17
+ const i18n_1 = require("@sitecore-content-sdk/content/i18n");
18
+ const proxy_1 = require("./proxy");
19
+ const debug_1 = __importDefault(require("../debug"));
17
20
  /**
18
- * Middleware/handler for handling locale-based routing in the Next.js App Router.
19
- * This middleware is responsible for extracting the locale from the request path and rewriting it if necessary.
21
+ * Proxy/handler for handling locale-based routing in the Next.js App Router.
22
+ * This proxy is responsible for extracting the locale from the request path and rewriting it if necessary.
20
23
  * It also sets the locale header in the response.
21
24
  * @public
22
25
  */
23
- class LocaleMiddleware extends middleware_1.MiddlewareBase {
26
+ class LocaleProxy extends proxy_1.ProxyBase {
24
27
  /**
25
- * @param {LocaleMiddlewareConfig} config Locale middleware config
28
+ * @param {LocaleProxyConfig} config Locale proxy config
26
29
  */
27
30
  constructor(config) {
28
31
  super(config);
@@ -32,12 +35,12 @@ class LocaleMiddleware extends middleware_1.MiddlewareBase {
32
35
  const { pathname } = req.nextUrl;
33
36
  const localeFromPath = this.getLocaleFromPath(pathname);
34
37
  const locale = localeFromPath || this.getLanguage(req, res);
35
- core_1.debug.locale('locale middleware start: %o', {
38
+ debug_1.default.locale('locale proxy start: %o', {
36
39
  pathname,
37
40
  locale,
38
41
  });
39
42
  if (this.disabled(req, res)) {
40
- core_1.debug.locale('skipped (locale middleware is disabled)');
43
+ debug_1.default.locale('skipped (locale proxy is disabled)');
41
44
  return res;
42
45
  }
43
46
  if (!localeFromPath) {
@@ -45,7 +48,7 @@ class LocaleMiddleware extends middleware_1.MiddlewareBase {
45
48
  const rewritePath = (0, i18n_1.getLocaleRewrite)(pathname, locale);
46
49
  const response = this.rewrite(rewritePath, req, res);
47
50
  this.setLocaleHeader(response, locale);
48
- core_1.debug.locale('locale middleware end, with rewrite: %o', {
51
+ debug_1.default.locale('locale proxy end, with rewrite: %o', {
49
52
  pathname,
50
53
  locale,
51
54
  rewritePath,
@@ -53,14 +56,14 @@ class LocaleMiddleware extends middleware_1.MiddlewareBase {
53
56
  return response;
54
57
  }
55
58
  this.setLocaleHeader(res, locale);
56
- core_1.debug.locale('locale middleware end, no rewrite: %o', {
59
+ debug_1.default.locale('locale proxy end, no rewrite: %o', {
57
60
  pathname,
58
61
  locale,
59
62
  });
60
63
  return res;
61
64
  }
62
65
  catch (error) {
63
- console.log('Locale middleware failed:');
66
+ console.log('Locale proxy failed:');
64
67
  console.log(error);
65
68
  return res;
66
69
  }
@@ -79,7 +82,7 @@ class LocaleMiddleware extends middleware_1.MiddlewareBase {
79
82
  return this.config.locales.find((locale) => path.includes(`/${locale}/`) || path.endsWith(`/${locale}`));
80
83
  }
81
84
  setLocaleHeader(res, locale) {
82
- res.headers.set(middleware_1.LOCALE_HEADER_NAME, locale);
85
+ res.headers.set(proxy_1.LOCALE_HEADER_NAME, locale);
83
86
  }
84
87
  }
85
- exports.LocaleMiddleware = LocaleMiddleware;
88
+ exports.LocaleProxy = LocaleProxy;