@sitecore-jss/sitecore-jss-nextjs 22.4.0-canary.9 → 22.4.1-canary.1

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.
@@ -90,7 +90,7 @@ class ServerlessEditingDataService {
90
90
  if (!this.apiRoute.includes('[key]')) {
91
91
  throw new Error(`The specified apiRoute '${this.apiRoute}' is missing '[key]'.`);
92
92
  }
93
- this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new sitecore_jss_1.AxiosDataFetcher({ debugger: sitecore_jss_1.debug.editing });
93
+ this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new sitecore_jss_1.NativeDataFetcher({ debugger: sitecore_jss_1.debug.editing });
94
94
  }
95
95
  /**
96
96
  * Stores Sitecore editor payload data for later retrieval by key
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.EditingRenderMiddleware = exports.MetadataHandler = exports.isComponentLibraryPreviewData = exports.isEditingMetadataPreviewData = exports.ChromesHandler = void 0;
12
+ exports.EditingRenderMiddleware = exports.MetadataHandler = exports.isEditingMetadataPreviewData = exports.ChromesHandler = void 0;
13
13
  const constants_1 = require("next/constants");
14
14
  const sitecore_jss_1 = require("@sitecore-jss/sitecore-jss");
15
15
  const layout_1 = require("@sitecore-jss/sitecore-jss/layout");
@@ -52,7 +52,7 @@ class ChromesHandler extends render_middleware_1.RenderMiddlewareBase {
52
52
  return `${process.env.VERCEL ? 'https' : 'http'}://${req.headers.host}`;
53
53
  };
54
54
  this.editingDataService = (_a = config === null || config === void 0 ? void 0 : config.editingDataService) !== null && _a !== void 0 ? _a : editing_data_service_1.editingDataService;
55
- this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new sitecore_jss_1.AxiosDataFetcher({ debugger: sitecore_jss_1.debug.editing });
55
+ this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new sitecore_jss_1.NativeDataFetcher({ debugger: sitecore_jss_1.debug.editing });
56
56
  this.resolvePageUrl = (_c = config === null || config === void 0 ? void 0 : config.resolvePageUrl) !== null && _c !== void 0 ? _c : this.defaultResolvePageUrl;
57
57
  this.resolveServerUrl = (_d = config === null || config === void 0 ? void 0 : config.resolveServerUrl) !== null && _d !== void 0 ? _d : this.defaultResolveServerUrl;
58
58
  }
@@ -79,7 +79,7 @@ class ChromesHandler extends render_middleware_1.RenderMiddlewareBase {
79
79
  const cookies = res.getHeader('Set-Cookie');
80
80
  headers.cookie = `${headers.cookie ? headers.cookie + ';' : ''}${cookies.join(';')}`;
81
81
  // Make actual render request for page route, passing on preview cookies as well as any approved query string parameters.
82
- // Note timestamp effectively disables caching the request in Axios (no amount of cache headers seemed to do it)
82
+ // Note timestamp effectively disables caching the request (no amount of cache headers seemed to do it)
83
83
  sitecore_jss_1.debug.editing('fetching page route for %s', editingData.path);
84
84
  const requestUrl = new URL(this.resolvePageUrl({ serverUrl, itemPath: editingData.path }));
85
85
  for (const key in params) {
@@ -125,8 +125,7 @@ class ChromesHandler extends render_middleware_1.RenderMiddlewareBase {
125
125
  catch (err) {
126
126
  const error = err;
127
127
  console.error(error);
128
- if (error.response || error.request) {
129
- // Axios error, which could mean the server or page URL isn't quite right, so provide a more helpful hint
128
+ if (error.response) {
130
129
  console.info(
131
130
  // eslint-disable-next-line quotes
132
131
  "Hint: for non-standard server or Next.js route configurations, you may need to override the 'resolveServerUrl' or 'resolvePageUrl' available on the 'EditingRenderMiddleware' config.");
@@ -184,19 +183,6 @@ const isEditingMetadataPreviewData = (data) => {
184
183
  data.editMode === layout_1.EditMode.Metadata);
185
184
  };
186
185
  exports.isEditingMetadataPreviewData = isEditingMetadataPreviewData;
187
- /**
188
- * Type guard for Component Library mode
189
- * @param {object} data preview data to check
190
- * @returns true if the data is EditingMetadataPreviewData
191
- * @see EditingMetadataPreviewData
192
- */
193
- const isComponentLibraryPreviewData = (data) => {
194
- return (typeof data === 'object' &&
195
- data !== null &&
196
- 'mode' in data &&
197
- data.mode === 'library');
198
- };
199
- exports.isComponentLibraryPreviewData = isComponentLibraryPreviewData;
200
186
  /**
201
187
  * Handler for the Editing Metadata GET requests.
202
188
  * This handler is responsible for redirecting the request to the page route.
@@ -210,17 +196,13 @@ class MetadataHandler {
210
196
  var _a, _b, _c;
211
197
  const { query } = req;
212
198
  const startTimestamp = Date.now();
213
- const mode = query.mode;
214
- const metadataDefaultRequiredParams = ['sc_site', 'sc_itemid', 'sc_lang', 'route', 'mode'];
215
- const metadataComponentRequiredParams = [
199
+ const requiredQueryParams = [
216
200
  'sc_site',
217
201
  'sc_itemid',
218
- 'sc_renderingId',
219
- 'sc_uid',
220
202
  'sc_lang',
203
+ 'route',
221
204
  'mode',
222
205
  ];
223
- const requiredQueryParams = mode === 'library' ? metadataComponentRequiredParams : metadataDefaultRequiredParams;
224
206
  const missingQueryParams = requiredQueryParams.filter((param) => !query[param]);
225
207
  // Validate query parameters
226
208
  if (missingQueryParams.length) {
@@ -229,40 +211,21 @@ class MetadataHandler {
229
211
  html: `<html><body>Missing required query parameters: ${missingQueryParams.join(', ')}</body></html>`,
230
212
  });
231
213
  }
232
- if (mode === 'library') {
233
- // dedicated route and layout to SSR component library
234
- query.route = '/component-library/render';
235
- res.setPreviewData({
236
- itemId: query.sc_itemid,
237
- componentUid: query.sc_uid,
238
- renderingId: query.sc_renderingId,
239
- language: query.sc_lang,
240
- site: query.sc_site,
241
- pageState: layout_1.LayoutServicePageState.Normal,
242
- mode: 'library',
243
- dataSourceId: query.sc_datasourceId,
244
- version: query.sc_version,
245
- }, {
246
- maxAge: 3,
247
- });
248
- }
249
- else {
250
- res.setPreviewData({
251
- site: query.sc_site,
252
- itemId: query.sc_itemid,
253
- language: query.sc_lang,
254
- // for sc_variantId we may employ multiple variants (page-layout + component level)
255
- variantIds: ((_a = query.sc_variant) === null || _a === void 0 ? void 0 : _a.split(',')) || [personalize_1.DEFAULT_VARIANT],
256
- version: query.sc_version,
257
- editMode: layout_1.EditMode.Metadata,
258
- pageState: query.mode,
259
- layoutKind: query.sc_layoutKind,
260
- },
261
- // Cache the preview data for 3 seconds to ensure the page is rendered with the correct preview data not the cached one
262
- {
263
- maxAge: 3,
264
- });
265
- }
214
+ res.setPreviewData({
215
+ site: query.sc_site,
216
+ itemId: query.sc_itemid,
217
+ language: query.sc_lang,
218
+ // for sc_variantId we may employ multiple variants (page-layout + component level)
219
+ variantIds: ((_a = query.sc_variant) === null || _a === void 0 ? void 0 : _a.split(',')) || [personalize_1.DEFAULT_VARIANT],
220
+ version: query.sc_version,
221
+ editMode: layout_1.EditMode.Metadata,
222
+ pageState: query.mode,
223
+ layoutKind: query.sc_layoutKind,
224
+ },
225
+ // Cache the preview data for 3 seconds to ensure the page is rendered with the correct preview data not the cached one
226
+ {
227
+ maxAge: 3,
228
+ });
266
229
  // Cookies with the SameSite=Lax policy set by Next.js setPreviewData function causes CORS issue
267
230
  // when Next.js preview mode is activated, resulting the page to render in normal mode instead.
268
231
  // By replacing it with "SameSite=None; Secure", we ensure cookies are correctly sent with
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EDITING_COMPONENT_ID = exports.EDITING_COMPONENT_PLACEHOLDER = exports.RenderingType = exports.EditingConfigMiddleware = exports.FEAASRenderMiddleware = exports.VercelEditingDataCache = exports.editingDataService = exports.ServerlessEditingDataService = exports.BasicEditingDataService = exports.isComponentLibraryPreviewData = exports.isEditingMetadataPreviewData = exports.EditingRenderMiddleware = exports.EditingDataMiddleware = exports.EditingDataDiskCache = exports.GraphQLEditingService = void 0;
3
+ exports.EditingConfigMiddleware = exports.FEAASRenderMiddleware = exports.VercelEditingDataCache = exports.editingDataService = exports.ServerlessEditingDataService = exports.BasicEditingDataService = exports.isEditingMetadataPreviewData = exports.EditingRenderMiddleware = exports.EditingDataMiddleware = exports.EditingDataDiskCache = exports.GraphQLEditingService = void 0;
4
4
  var editing_1 = require("@sitecore-jss/sitecore-jss/editing");
5
5
  Object.defineProperty(exports, "GraphQLEditingService", { enumerable: true, get: function () { return editing_1.GraphQLEditingService; } });
6
6
  var editing_data_cache_1 = require("./editing-data-cache");
@@ -10,7 +10,6 @@ Object.defineProperty(exports, "EditingDataMiddleware", { enumerable: true, get:
10
10
  var editing_render_middleware_1 = require("./editing-render-middleware");
11
11
  Object.defineProperty(exports, "EditingRenderMiddleware", { enumerable: true, get: function () { return editing_render_middleware_1.EditingRenderMiddleware; } });
12
12
  Object.defineProperty(exports, "isEditingMetadataPreviewData", { enumerable: true, get: function () { return editing_render_middleware_1.isEditingMetadataPreviewData; } });
13
- Object.defineProperty(exports, "isComponentLibraryPreviewData", { enumerable: true, get: function () { return editing_render_middleware_1.isComponentLibraryPreviewData; } });
14
13
  var editing_data_service_1 = require("./editing-data-service");
15
14
  Object.defineProperty(exports, "BasicEditingDataService", { enumerable: true, get: function () { return editing_data_service_1.BasicEditingDataService; } });
16
15
  Object.defineProperty(exports, "ServerlessEditingDataService", { enumerable: true, get: function () { return editing_data_service_1.ServerlessEditingDataService; } });
@@ -21,7 +20,3 @@ var feaas_render_middleware_1 = require("./feaas-render-middleware");
21
20
  Object.defineProperty(exports, "FEAASRenderMiddleware", { enumerable: true, get: function () { return feaas_render_middleware_1.FEAASRenderMiddleware; } });
22
21
  var editing_config_middleware_1 = require("./editing-config-middleware");
23
22
  Object.defineProperty(exports, "EditingConfigMiddleware", { enumerable: true, get: function () { return editing_config_middleware_1.EditingConfigMiddleware; } });
24
- var layout_1 = require("@sitecore-jss/sitecore-jss/layout");
25
- Object.defineProperty(exports, "RenderingType", { enumerable: true, get: function () { return layout_1.RenderingType; } });
26
- Object.defineProperty(exports, "EDITING_COMPONENT_PLACEHOLDER", { enumerable: true, get: function () { return layout_1.EDITING_COMPONENT_PLACEHOLDER; } });
27
- Object.defineProperty(exports, "EDITING_COMPONENT_ID", { enumerable: true, get: function () { return layout_1.EDITING_COMPONENT_ID; } });
@@ -28,13 +28,15 @@ class RenderMiddlewareBase {
28
28
  * @returns Object of approved headers
29
29
  */
30
30
  this.getHeadersForPropagation = (headers) => {
31
- const result = {};
32
- constants_1.EDITING_PASS_THROUGH_HEADERS.forEach((header) => {
33
- if (headers[header]) {
34
- result[header] = headers[header];
31
+ // Filter and normalize headers
32
+ const filteredHeaders = constants_1.EDITING_PASS_THROUGH_HEADERS.reduce((acc, header) => {
33
+ const value = headers[header];
34
+ if (value) {
35
+ acc[header] = Array.isArray(value) ? value.join(', ') : value;
35
36
  }
36
- });
37
- return result;
37
+ return acc;
38
+ }, {});
39
+ return filteredHeaders;
38
40
  };
39
41
  }
40
42
  }
package/dist/cjs/index.js CHANGED
@@ -23,11 +23,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.EditFrame = exports.DateField = exports.Text = exports.Image = exports.ComponentBuilder = exports.BYOCWrapper = exports.FEaaSWrapper = exports.NextImage = exports.Placeholder = exports.RichText = exports.Link = exports.useComponentProps = exports.ComponentPropsContext = exports.ComponentPropsReactContext = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.GraphQLSiteInfoService = exports.SiteResolver = exports.GraphQLRobotsService = exports.GraphQLErrorPagesService = exports.GraphQLSitemapXmlService = exports.MultisiteGraphQLSitemapService = exports.GraphQLSitemapService = exports.DisconnectedSitemapService = exports.ComponentPropsService = exports.CdpHelper = exports.normalizePersonalizedRewrite = exports.getGroomedVariantIds = exports.getPersonalizedRewriteData = exports.getPersonalizedRewrite = exports.personalizeLayout = exports.RestDictionaryService = exports.GraphQLDictionaryService = exports.trackingApi = exports.mediaApi = exports.RestComponentLayoutService = exports.EditMode = exports.getContentStylesheetLink = exports.getFieldValue = exports.getChildPlaceholder = exports.RestLayoutService = exports.GraphQLLayoutService = exports.LayoutServicePageState = exports.MemoryCacheClient = exports.debug = exports.enableDebug = exports.NativeDataFetcher = exports.AxiosDataFetcher = exports.constants = void 0;
27
- exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.VisitorIdentification = exports.DefaultEmptyFieldEditingComponentText = exports.DefaultEmptyFieldEditingComponentImage = exports.ComponentLibraryLayout = exports.File = exports.getComponentLibraryStylesheetLinks = exports.BYOCComponent = exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = void 0;
26
+ exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.EditFrame = exports.DateField = exports.Text = exports.Image = exports.ComponentBuilder = exports.BYOCWrapper = exports.FEaaSWrapper = exports.NextImage = exports.Placeholder = exports.RichText = exports.Link = exports.useComponentProps = exports.ComponentPropsContext = exports.ComponentPropsReactContext = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.GraphQLSiteInfoService = exports.SiteResolver = exports.GraphQLRobotsService = exports.GraphQLErrorPagesService = exports.GraphQLSitemapXmlService = exports.MultisiteGraphQLSitemapService = exports.GraphQLSitemapService = exports.DisconnectedSitemapService = exports.ComponentPropsService = exports.CdpHelper = exports.normalizePersonalizedRewrite = exports.getGroomedVariantIds = exports.getPersonalizedRewriteData = exports.getPersonalizedRewrite = exports.personalizeLayout = exports.RestDictionaryService = exports.GraphQLDictionaryService = exports.trackingApi = exports.mediaApi = exports.EditMode = exports.getContentStylesheetLink = exports.getFieldValue = exports.getChildPlaceholder = exports.RestLayoutService = exports.GraphQLLayoutService = exports.LayoutServicePageState = exports.MemoryCacheClient = exports.debug = exports.enableDebug = exports.NativeDataFetcher = exports.constants = void 0;
27
+ exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.VisitorIdentification = exports.DefaultEmptyFieldEditingComponentText = exports.DefaultEmptyFieldEditingComponentImage = exports.File = exports.getComponentLibraryStylesheetLinks = exports.BYOCComponent = void 0;
28
28
  var sitecore_jss_1 = require("@sitecore-jss/sitecore-jss");
29
29
  Object.defineProperty(exports, "constants", { enumerable: true, get: function () { return sitecore_jss_1.constants; } });
30
- Object.defineProperty(exports, "AxiosDataFetcher", { enumerable: true, get: function () { return sitecore_jss_1.AxiosDataFetcher; } });
31
30
  Object.defineProperty(exports, "NativeDataFetcher", { enumerable: true, get: function () { return sitecore_jss_1.NativeDataFetcher; } });
32
31
  Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return sitecore_jss_1.enableDebug; } });
33
32
  Object.defineProperty(exports, "debug", { enumerable: true, get: function () { return sitecore_jss_1.debug; } });
@@ -40,8 +39,6 @@ Object.defineProperty(exports, "getChildPlaceholder", { enumerable: true, get: f
40
39
  Object.defineProperty(exports, "getFieldValue", { enumerable: true, get: function () { return layout_1.getFieldValue; } });
41
40
  Object.defineProperty(exports, "getContentStylesheetLink", { enumerable: true, get: function () { return layout_1.getContentStylesheetLink; } });
42
41
  Object.defineProperty(exports, "EditMode", { enumerable: true, get: function () { return layout_1.EditMode; } });
43
- var editing_1 = require("@sitecore-jss/sitecore-jss/editing");
44
- Object.defineProperty(exports, "RestComponentLayoutService", { enumerable: true, get: function () { return editing_1.RestComponentLayoutService; } });
45
42
  var media_1 = require("@sitecore-jss/sitecore-jss/media");
46
43
  Object.defineProperty(exports, "mediaApi", { enumerable: true, get: function () { return media_1.mediaApi; } });
47
44
  var tracking_1 = require("@sitecore-jss/sitecore-jss/tracking");
@@ -101,7 +98,6 @@ Object.defineProperty(exports, "fetchFEaaSComponentServerProps", { enumerable: t
101
98
  Object.defineProperty(exports, "BYOCComponent", { enumerable: true, get: function () { return sitecore_jss_react_1.BYOCComponent; } });
102
99
  Object.defineProperty(exports, "getComponentLibraryStylesheetLinks", { enumerable: true, get: function () { return sitecore_jss_react_1.getComponentLibraryStylesheetLinks; } });
103
100
  Object.defineProperty(exports, "File", { enumerable: true, get: function () { return sitecore_jss_react_1.File; } });
104
- Object.defineProperty(exports, "ComponentLibraryLayout", { enumerable: true, get: function () { return sitecore_jss_react_1.ComponentLibraryLayout; } });
105
101
  Object.defineProperty(exports, "DefaultEmptyFieldEditingComponentImage", { enumerable: true, get: function () { return sitecore_jss_react_1.DefaultEmptyFieldEditingComponentImage; } });
106
102
  Object.defineProperty(exports, "DefaultEmptyFieldEditingComponentText", { enumerable: true, get: function () { return sitecore_jss_react_1.DefaultEmptyFieldEditingComponentText; } });
107
103
  Object.defineProperty(exports, "VisitorIdentification", { enumerable: true, get: function () { return sitecore_jss_react_1.VisitorIdentification; } });
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { QUERY_PARAM_EDITING_SECRET } from '@sitecore-jss/sitecore-jss/editing';
11
- import { AxiosDataFetcher, debug } from '@sitecore-jss/sitecore-jss';
11
+ import { NativeDataFetcher, debug } from '@sitecore-jss/sitecore-jss';
12
12
  import { editingDataDiskCache } from './editing-data-cache';
13
13
  import { getJssEditingSecret } from '../utils/utils';
14
14
  /**
@@ -85,7 +85,7 @@ export class ServerlessEditingDataService {
85
85
  if (!this.apiRoute.includes('[key]')) {
86
86
  throw new Error(`The specified apiRoute '${this.apiRoute}' is missing '[key]'.`);
87
87
  }
88
- this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new AxiosDataFetcher({ debugger: debug.editing });
88
+ this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new NativeDataFetcher({ debugger: debug.editing });
89
89
  }
90
90
  /**
91
91
  * Stores Sitecore editor payload data for later retrieval by key
@@ -8,8 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { STATIC_PROPS_ID, SERVER_PROPS_ID } from 'next/constants';
11
- import { AxiosDataFetcher, debug } from '@sitecore-jss/sitecore-jss';
12
- import { EditMode, LayoutServicePageState } from '@sitecore-jss/sitecore-jss/layout';
11
+ import { NativeDataFetcher, debug } from '@sitecore-jss/sitecore-jss';
12
+ import { EditMode } from '@sitecore-jss/sitecore-jss/layout';
13
13
  import { QUERY_PARAM_EDITING_SECRET, EDITING_ALLOWED_ORIGINS, } from '@sitecore-jss/sitecore-jss/editing';
14
14
  import { editingDataService } from './editing-data-service';
15
15
  import { getJssEditingSecret } from '../utils/utils';
@@ -49,7 +49,7 @@ export class ChromesHandler extends RenderMiddlewareBase {
49
49
  return `${process.env.VERCEL ? 'https' : 'http'}://${req.headers.host}`;
50
50
  };
51
51
  this.editingDataService = (_a = config === null || config === void 0 ? void 0 : config.editingDataService) !== null && _a !== void 0 ? _a : editingDataService;
52
- this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new AxiosDataFetcher({ debugger: debug.editing });
52
+ this.dataFetcher = (_b = config === null || config === void 0 ? void 0 : config.dataFetcher) !== null && _b !== void 0 ? _b : new NativeDataFetcher({ debugger: debug.editing });
53
53
  this.resolvePageUrl = (_c = config === null || config === void 0 ? void 0 : config.resolvePageUrl) !== null && _c !== void 0 ? _c : this.defaultResolvePageUrl;
54
54
  this.resolveServerUrl = (_d = config === null || config === void 0 ? void 0 : config.resolveServerUrl) !== null && _d !== void 0 ? _d : this.defaultResolveServerUrl;
55
55
  }
@@ -76,7 +76,7 @@ export class ChromesHandler extends RenderMiddlewareBase {
76
76
  const cookies = res.getHeader('Set-Cookie');
77
77
  headers.cookie = `${headers.cookie ? headers.cookie + ';' : ''}${cookies.join(';')}`;
78
78
  // Make actual render request for page route, passing on preview cookies as well as any approved query string parameters.
79
- // Note timestamp effectively disables caching the request in Axios (no amount of cache headers seemed to do it)
79
+ // Note timestamp effectively disables caching the request (no amount of cache headers seemed to do it)
80
80
  debug.editing('fetching page route for %s', editingData.path);
81
81
  const requestUrl = new URL(this.resolvePageUrl({ serverUrl, itemPath: editingData.path }));
82
82
  for (const key in params) {
@@ -122,8 +122,7 @@ export class ChromesHandler extends RenderMiddlewareBase {
122
122
  catch (err) {
123
123
  const error = err;
124
124
  console.error(error);
125
- if (error.response || error.request) {
126
- // Axios error, which could mean the server or page URL isn't quite right, so provide a more helpful hint
125
+ if (error.response) {
127
126
  console.info(
128
127
  // eslint-disable-next-line quotes
129
128
  "Hint: for non-standard server or Next.js route configurations, you may need to override the 'resolveServerUrl' or 'resolvePageUrl' available on the 'EditingRenderMiddleware' config.");
@@ -179,18 +178,6 @@ export const isEditingMetadataPreviewData = (data) => {
179
178
  'editMode' in data &&
180
179
  data.editMode === EditMode.Metadata);
181
180
  };
182
- /**
183
- * Type guard for Component Library mode
184
- * @param {object} data preview data to check
185
- * @returns true if the data is EditingMetadataPreviewData
186
- * @see EditingMetadataPreviewData
187
- */
188
- export const isComponentLibraryPreviewData = (data) => {
189
- return (typeof data === 'object' &&
190
- data !== null &&
191
- 'mode' in data &&
192
- data.mode === 'library');
193
- };
194
181
  /**
195
182
  * Handler for the Editing Metadata GET requests.
196
183
  * This handler is responsible for redirecting the request to the page route.
@@ -204,17 +191,13 @@ export class MetadataHandler {
204
191
  var _a, _b, _c;
205
192
  const { query } = req;
206
193
  const startTimestamp = Date.now();
207
- const mode = query.mode;
208
- const metadataDefaultRequiredParams = ['sc_site', 'sc_itemid', 'sc_lang', 'route', 'mode'];
209
- const metadataComponentRequiredParams = [
194
+ const requiredQueryParams = [
210
195
  'sc_site',
211
196
  'sc_itemid',
212
- 'sc_renderingId',
213
- 'sc_uid',
214
197
  'sc_lang',
198
+ 'route',
215
199
  'mode',
216
200
  ];
217
- const requiredQueryParams = mode === 'library' ? metadataComponentRequiredParams : metadataDefaultRequiredParams;
218
201
  const missingQueryParams = requiredQueryParams.filter((param) => !query[param]);
219
202
  // Validate query parameters
220
203
  if (missingQueryParams.length) {
@@ -223,40 +206,21 @@ export class MetadataHandler {
223
206
  html: `<html><body>Missing required query parameters: ${missingQueryParams.join(', ')}</body></html>`,
224
207
  });
225
208
  }
226
- if (mode === 'library') {
227
- // dedicated route and layout to SSR component library
228
- query.route = '/component-library/render';
229
- res.setPreviewData({
230
- itemId: query.sc_itemid,
231
- componentUid: query.sc_uid,
232
- renderingId: query.sc_renderingId,
233
- language: query.sc_lang,
234
- site: query.sc_site,
235
- pageState: LayoutServicePageState.Normal,
236
- mode: 'library',
237
- dataSourceId: query.sc_datasourceId,
238
- version: query.sc_version,
239
- }, {
240
- maxAge: 3,
241
- });
242
- }
243
- else {
244
- res.setPreviewData({
245
- site: query.sc_site,
246
- itemId: query.sc_itemid,
247
- language: query.sc_lang,
248
- // for sc_variantId we may employ multiple variants (page-layout + component level)
249
- variantIds: ((_a = query.sc_variant) === null || _a === void 0 ? void 0 : _a.split(',')) || [DEFAULT_VARIANT],
250
- version: query.sc_version,
251
- editMode: EditMode.Metadata,
252
- pageState: query.mode,
253
- layoutKind: query.sc_layoutKind,
254
- },
255
- // Cache the preview data for 3 seconds to ensure the page is rendered with the correct preview data not the cached one
256
- {
257
- maxAge: 3,
258
- });
259
- }
209
+ res.setPreviewData({
210
+ site: query.sc_site,
211
+ itemId: query.sc_itemid,
212
+ language: query.sc_lang,
213
+ // for sc_variantId we may employ multiple variants (page-layout + component level)
214
+ variantIds: ((_a = query.sc_variant) === null || _a === void 0 ? void 0 : _a.split(',')) || [DEFAULT_VARIANT],
215
+ version: query.sc_version,
216
+ editMode: EditMode.Metadata,
217
+ pageState: query.mode,
218
+ layoutKind: query.sc_layoutKind,
219
+ },
220
+ // Cache the preview data for 3 seconds to ensure the page is rendered with the correct preview data not the cached one
221
+ {
222
+ maxAge: 3,
223
+ });
260
224
  // Cookies with the SameSite=Lax policy set by Next.js setPreviewData function causes CORS issue
261
225
  // when Next.js preview mode is activated, resulting the page to render in normal mode instead.
262
226
  // By replacing it with "SameSite=None; Secure", we ensure cookies are correctly sent with
@@ -1,9 +1,8 @@
1
1
  export { GraphQLEditingService } from '@sitecore-jss/sitecore-jss/editing';
2
2
  export { EditingDataDiskCache } from './editing-data-cache';
3
3
  export { EditingDataMiddleware } from './editing-data-middleware';
4
- export { EditingRenderMiddleware, isEditingMetadataPreviewData, isComponentLibraryPreviewData, } from './editing-render-middleware';
4
+ export { EditingRenderMiddleware, isEditingMetadataPreviewData, } from './editing-render-middleware';
5
5
  export { BasicEditingDataService, ServerlessEditingDataService, editingDataService, } from './editing-data-service';
6
6
  export { VercelEditingDataCache } from './vercel-editing-data-cache';
7
7
  export { FEAASRenderMiddleware } from './feaas-render-middleware';
8
8
  export { EditingConfigMiddleware, } from './editing-config-middleware';
9
- export { RenderingType, EDITING_COMPONENT_PLACEHOLDER, EDITING_COMPONENT_ID, } from '@sitecore-jss/sitecore-jss/layout';
@@ -25,13 +25,15 @@ export class RenderMiddlewareBase {
25
25
  * @returns Object of approved headers
26
26
  */
27
27
  this.getHeadersForPropagation = (headers) => {
28
- const result = {};
29
- EDITING_PASS_THROUGH_HEADERS.forEach((header) => {
30
- if (headers[header]) {
31
- result[header] = headers[header];
28
+ // Filter and normalize headers
29
+ const filteredHeaders = EDITING_PASS_THROUGH_HEADERS.reduce((acc, header) => {
30
+ const value = headers[header];
31
+ if (value) {
32
+ acc[header] = Array.isArray(value) ? value.join(', ') : value;
32
33
  }
33
- });
34
- return result;
34
+ return acc;
35
+ }, {});
36
+ return filteredHeaders;
35
37
  };
36
38
  }
37
39
  }
package/dist/esm/index.js CHANGED
@@ -1,6 +1,5 @@
1
- export { constants, AxiosDataFetcher, NativeDataFetcher, enableDebug, debug, MemoryCacheClient, } from '@sitecore-jss/sitecore-jss';
1
+ export { constants, NativeDataFetcher, enableDebug, debug, MemoryCacheClient, } from '@sitecore-jss/sitecore-jss';
2
2
  export { LayoutServicePageState, GraphQLLayoutService, RestLayoutService, getChildPlaceholder, getFieldValue, getContentStylesheetLink, EditMode, } from '@sitecore-jss/sitecore-jss/layout';
3
- export { RestComponentLayoutService } from '@sitecore-jss/sitecore-jss/editing';
4
3
  export { mediaApi } from '@sitecore-jss/sitecore-jss/media';
5
4
  export { trackingApi, } from '@sitecore-jss/sitecore-jss/tracking';
6
5
  export { GraphQLDictionaryService, RestDictionaryService, } from '@sitecore-jss/sitecore-jss/i18n';
@@ -20,4 +19,4 @@ import * as BYOCWrapper from './components/BYOCWrapper';
20
19
  export { FEaaSWrapper };
21
20
  export { BYOCWrapper };
22
21
  export { ComponentBuilder } from './ComponentBuilder';
23
- export { Image, Text, DateField, EditFrame, FEaaSComponent, fetchFEaaSComponentServerProps, BYOCComponent, getComponentLibraryStylesheetLinks, File, ComponentLibraryLayout, DefaultEmptyFieldEditingComponentImage, DefaultEmptyFieldEditingComponentText, VisitorIdentification, SitecoreContext, SitecoreContextReactContext, withSitecoreContext, useSitecoreContext, withEditorChromes, withPlaceholder, withDatasourceCheck, withFieldMetadata, withEmptyFieldEditingComponent, EditingScripts, } from '@sitecore-jss/sitecore-jss-react';
22
+ export { Image, Text, DateField, EditFrame, FEaaSComponent, fetchFEaaSComponentServerProps, BYOCComponent, getComponentLibraryStylesheetLinks, File, DefaultEmptyFieldEditingComponentImage, DefaultEmptyFieldEditingComponentText, VisitorIdentification, SitecoreContext, SitecoreContextReactContext, withSitecoreContext, useSitecoreContext, withEditorChromes, withPlaceholder, withDatasourceCheck, withFieldMetadata, withEmptyFieldEditingComponent, EditingScripts, } from '@sitecore-jss/sitecore-jss-react';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sitecore-jss/sitecore-jss-nextjs",
3
- "version": "22.4.0-canary.9",
3
+ "version": "22.4.1-canary.1",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "sideEffects": false,
@@ -73,9 +73,9 @@
73
73
  "react-dom": "^18.2.0"
74
74
  },
75
75
  "dependencies": {
76
- "@sitecore-jss/sitecore-jss": "^22.4.0-canary.9",
77
- "@sitecore-jss/sitecore-jss-dev-tools": "^22.4.0-canary.9",
78
- "@sitecore-jss/sitecore-jss-react": "^22.4.0-canary.9",
76
+ "@sitecore-jss/sitecore-jss": "^22.4.1-canary.1",
77
+ "@sitecore-jss/sitecore-jss-dev-tools": "^22.4.1-canary.1",
78
+ "@sitecore-jss/sitecore-jss-react": "^22.4.1-canary.1",
79
79
  "@vercel/kv": "^0.2.1",
80
80
  "prop-types": "^15.8.1",
81
81
  "regex-parser": "^2.2.11",
@@ -83,7 +83,7 @@
83
83
  },
84
84
  "description": "",
85
85
  "types": "types/index.d.ts",
86
- "gitHead": "5d94e2017b872ca4c798162ff0392da0628ce69d",
86
+ "gitHead": "1f486f82cb985e9a78f94d58d3c5fa9ed55216dc",
87
87
  "files": [
88
88
  "dist",
89
89
  "types",
@@ -1,4 +1,4 @@
1
- import { AxiosDataFetcher } from '@sitecore-jss/sitecore-jss';
1
+ import { NativeDataFetcher } from '@sitecore-jss/sitecore-jss';
2
2
  import { EditingData } from './editing-data';
3
3
  import { EditingDataCache } from './editing-data-cache';
4
4
  import { PreviewData } from 'next';
@@ -87,11 +87,11 @@ export interface ServerlessEditingDataServiceConfig {
87
87
  */
88
88
  apiRoute?: string;
89
89
  /**
90
- * The `AxiosDataFetcher` instance to use for API requests.
91
- * @default new AxiosDataFetcher()
92
- * @see AxiosDataFetcher
90
+ * The `NativeDataFetcher` instance to use for API requests.
91
+ * @default new NativeDataFetcher()
92
+ * @see NativeDataFetcher
93
93
  */
94
- dataFetcher?: AxiosDataFetcher;
94
+ dataFetcher?: NativeDataFetcher;
95
95
  }
96
96
  /**
97
97
  * Service responsible for maintaining Sitecore editor data between requests
@@ -1,5 +1,5 @@
1
1
  import { NextApiRequest, NextApiResponse } from 'next';
2
- import { AxiosDataFetcher } from '@sitecore-jss/sitecore-jss';
2
+ import { NativeDataFetcher } from '@sitecore-jss/sitecore-jss';
3
3
  import { EditMode, LayoutServicePageState } from '@sitecore-jss/sitecore-jss/layout';
4
4
  import { RenderMetadataQueryParams, LayoutKind } from '@sitecore-jss/sitecore-jss/editing';
5
5
  import { EditingDataService } from './editing-data-service';
@@ -11,11 +11,11 @@ export type EditingRenderMiddlewareConfig = {
11
11
  /**
12
12
  * -- Edit Mode Chromes --
13
13
  *
14
- * The `AxiosDataFetcher` instance to use for API requests.
15
- * @default new AxiosDataFetcher()
16
- * @see AxiosDataFetcher
14
+ * The `NativeDataFetcher` instance to use for API requests.
15
+ * @default new NativeDataFetcher()
16
+ * @see NativeDataFetcher
17
17
  */
18
- dataFetcher?: AxiosDataFetcher;
18
+ dataFetcher?: NativeDataFetcher;
19
19
  /**
20
20
  * -- Edit Mode Chromes --
21
21
  *
@@ -99,7 +99,7 @@ export type EditingRenderMiddlewareMetadataConfig = Pick<EditingRenderMiddleware
99
99
  /**
100
100
  * Next.js API request with Metadata query parameters.
101
101
  */
102
- export type MetadataNextApiRequest = NextApiRequest & {
102
+ type MetadataNextApiRequest = NextApiRequest & {
103
103
  query: RenderMetadataQueryParams;
104
104
  };
105
105
  /**
@@ -115,21 +115,6 @@ export type EditingMetadataPreviewData = {
115
115
  version?: string;
116
116
  layoutKind?: LayoutKind;
117
117
  };
118
- /**
119
- * Data for Component Library rendering mode
120
- */
121
- export interface ComponentLibraryRenderPreviewData {
122
- site: string;
123
- itemId: string;
124
- renderingId: string;
125
- componentUid: string;
126
- language: string;
127
- pageState: LayoutServicePageState;
128
- mode?: 'library';
129
- variant?: string;
130
- version?: string;
131
- dataSourceId?: string;
132
- }
133
118
  /**
134
119
  * Type guard for EditingMetadataPreviewData
135
120
  * @param {object} data preview data to check
@@ -137,13 +122,6 @@ export interface ComponentLibraryRenderPreviewData {
137
122
  * @see EditingMetadataPreviewData
138
123
  */
139
124
  export declare const isEditingMetadataPreviewData: (data: unknown) => data is EditingMetadataPreviewData;
140
- /**
141
- * Type guard for Component Library mode
142
- * @param {object} data preview data to check
143
- * @returns true if the data is EditingMetadataPreviewData
144
- * @see EditingMetadataPreviewData
145
- */
146
- export declare const isComponentLibraryPreviewData: (data: unknown) => data is ComponentLibraryRenderPreviewData;
147
125
  /**
148
126
  * Handler for the Editing Metadata GET requests.
149
127
  * This handler is responsible for redirecting the request to the page route.
@@ -176,3 +154,4 @@ export declare class EditingRenderMiddleware extends RenderMiddlewareBase {
176
154
  getHandler(): (req: NextApiRequest, res: NextApiResponse) => Promise<void>;
177
155
  private handler;
178
156
  }
157
+ export {};
@@ -2,9 +2,8 @@ export { GraphQLEditingService } from '@sitecore-jss/sitecore-jss/editing';
2
2
  export { EditingData } from './editing-data';
3
3
  export { EditingDataCache, EditingDataDiskCache } from './editing-data-cache';
4
4
  export { EditingDataMiddleware, EditingDataMiddlewareConfig } from './editing-data-middleware';
5
- export { EditingRenderMiddleware, EditingRenderMiddlewareConfig, EditingMetadataPreviewData, isEditingMetadataPreviewData, isComponentLibraryPreviewData, } from './editing-render-middleware';
5
+ export { EditingRenderMiddleware, EditingRenderMiddlewareConfig, EditingMetadataPreviewData, isEditingMetadataPreviewData, } from './editing-render-middleware';
6
6
  export { EditingPreviewData, EditingDataService, BasicEditingDataService, BasicEditingDataServiceConfig, ServerlessEditingDataService, ServerlessEditingDataServiceConfig, editingDataService, } from './editing-data-service';
7
7
  export { VercelEditingDataCache } from './vercel-editing-data-cache';
8
8
  export { FEAASRenderMiddleware, FEAASRenderMiddlewareConfig } from './feaas-render-middleware';
9
9
  export { EditingConfigMiddleware, EditingConfigMiddlewareConfig, } from './editing-config-middleware';
10
- export { RenderingType, EDITING_COMPONENT_PLACEHOLDER, EDITING_COMPONENT_ID, } from '@sitecore-jss/sitecore-jss/layout';
@@ -20,6 +20,6 @@ export declare abstract class RenderMiddlewareBase {
20
20
  * @returns Object of approved headers
21
21
  */
22
22
  protected getHeadersForPropagation: (headers: IncomingHttpHeaders) => {
23
- [key: string]: string | string[];
23
+ [key: string]: string;
24
24
  };
25
25
  }
package/types/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- export { constants, HttpDataFetcher, HttpResponse, AxiosResponse, AxiosDataFetcher, AxiosDataFetcherConfig, NativeDataFetcher, NativeDataFetcherConfig, HTMLLink, enableDebug, debug, CacheClient, CacheOptions, MemoryCacheClient, } from '@sitecore-jss/sitecore-jss';
1
+ export { constants, HttpDataFetcher, NativeDataFetcher, NativeDataFetcherConfig, NativeDataFetcherResponse, NativeDataFetcherError, HTMLLink, enableDebug, debug, CacheClient, CacheOptions, MemoryCacheClient, } from '@sitecore-jss/sitecore-jss';
2
2
  export { LayoutService, LayoutServiceData, LayoutServicePageState, LayoutServiceContext, LayoutServiceContextData, GraphQLLayoutService, GraphQLLayoutServiceConfig, RestLayoutService, RestLayoutServiceConfig, PlaceholderData, PlaceholdersData, RouteData, Field, Item, HtmlElementRendering, getChildPlaceholder, getFieldValue, ComponentRendering, ComponentFields, ComponentParams, getContentStylesheetLink, EditMode, } from '@sitecore-jss/sitecore-jss/layout';
3
- export { RestComponentLayoutService } from '@sitecore-jss/sitecore-jss/editing';
4
3
  export { mediaApi } from '@sitecore-jss/sitecore-jss/media';
5
4
  export { trackingApi, TrackingRequestOptions, CampaignInstance, GoalInstance, OutcomeInstance, EventInstance, PageViewInstance, } from '@sitecore-jss/sitecore-jss/tracking';
6
5
  export { DictionaryPhrases, DictionaryService, GraphQLDictionaryService, GraphQLDictionaryServiceConfig, RestDictionaryService, RestDictionaryServiceConfig, } from '@sitecore-jss/sitecore-jss/i18n';
@@ -23,4 +22,4 @@ import * as BYOCWrapper from './components/BYOCWrapper';
23
22
  export { FEaaSWrapper };
24
23
  export { BYOCWrapper };
25
24
  export { ComponentBuilder, ComponentBuilderConfig } from './ComponentBuilder';
26
- export { ComponentFactory, Image, ImageField, ImageFieldValue, ImageProps, LinkField, LinkFieldValue, Text, TextField, DateField, EditFrame, FEaaSComponent, FEaaSComponentProps, FEaaSComponentParams, fetchFEaaSComponentServerProps, BYOCComponentParams, BYOCComponent, BYOCComponentProps, getComponentLibraryStylesheetLinks, File, FileField, RichTextField, ComponentLibraryLayout, DefaultEmptyFieldEditingComponentImage, DefaultEmptyFieldEditingComponentText, VisitorIdentification, PlaceholderComponentProps, SitecoreContext, SitecoreContextState, SitecoreContextValue, SitecoreContextReactContext, withSitecoreContext, useSitecoreContext, withEditorChromes, withPlaceholder, withDatasourceCheck, ImageSizeParameters, WithSitecoreContextOptions, WithSitecoreContextProps, WithSitecoreContextHocProps, withFieldMetadata, withEmptyFieldEditingComponent, EditingScripts, } from '@sitecore-jss/sitecore-jss-react';
25
+ export { ComponentFactory, Image, ImageField, ImageFieldValue, ImageProps, LinkField, LinkFieldValue, Text, TextField, DateField, EditFrame, FEaaSComponent, FEaaSComponentProps, FEaaSComponentParams, fetchFEaaSComponentServerProps, BYOCComponentParams, BYOCComponent, BYOCComponentProps, getComponentLibraryStylesheetLinks, File, FileField, RichTextField, DefaultEmptyFieldEditingComponentImage, DefaultEmptyFieldEditingComponentText, VisitorIdentification, PlaceholderComponentProps, SitecoreContext, SitecoreContextState, SitecoreContextValue, SitecoreContextReactContext, withSitecoreContext, useSitecoreContext, withEditorChromes, withPlaceholder, withDatasourceCheck, ImageSizeParameters, WithSitecoreContextOptions, WithSitecoreContextProps, WithSitecoreContextHocProps, withFieldMetadata, withEmptyFieldEditingComponent, EditingScripts, } from '@sitecore-jss/sitecore-jss-react';