@blaze-cms/nextjs-tools 0.131.0-admin-updates.1 → 0.131.0-admin-updates.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,25 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.131.0-admin-updates.3](https://github.com/thebyte9/blaze/compare/v0.131.0-admin-updates.2...v0.131.0-admin-updates.3) (2023-07-12)
7
+
8
+
9
+ ### Features
10
+
11
+ * redirect with query string in the frontend ([#3985](https://github.com/thebyte9/blaze/issues/3985)) ([aff6272](https://github.com/thebyte9/blaze/commit/aff6272bec9d7fb67d75edd044488826c52c15b2))
12
+
13
+
14
+
15
+
16
+
17
+ # [0.131.0-admin-updates.2](https://github.com/thebyte9/blaze/compare/v0.131.0-admin-updates.1...v0.131.0-admin-updates.2) (2023-07-11)
18
+
19
+ **Note:** Version bump only for package @blaze-cms/nextjs-tools
20
+
21
+
22
+
23
+
24
+
6
25
  # [0.131.0-admin-updates.1](https://github.com/thebyte9/blaze/compare/v0.131.0-admin-updates.0...v0.131.0-admin-updates.1) (2023-07-10)
7
26
 
8
27
  **Note:** Version bump only for package @blaze-cms/nextjs-tools
package/README.md CHANGED
@@ -91,7 +91,7 @@ This example will also allow the path to contain **.** characters
91
91
 
92
92
  ## Environment variables
93
93
 
94
- | Name | Description | Default |
94
+ | Name | Description | Type | Default |
95
95
  |---|---|---|
96
96
  | BLAZE_FRONTEND_HOST | Frontend host (used to identify host) | String | |
97
97
  | BLAZE_ROUTE_REGEX | Override default route regex | /^\/[a-z0-9€_\/]+(?:[-\/\.]{1,2}[a-z0-9\/€_\/]+)*$|^\/$/ |
@@ -102,6 +102,7 @@ This example will also allow the path to contain **.** characters
102
102
  | BLAZE_ROOT_SELECTOR_CLASSES_LIMIT | The number of root-selector classes to display. 0 or unset will show noe | String | |
103
103
  | BLAZE_BUILD_ENV_PREFIX_REGEX | '\|' separated list of allowed environment variable prefixes. Any environment variable that matches this prefix pattern will be dynamically added to the next environment config and will be available in code for use. If the environment variable has a "BUILD_" prefix, then this prefix will be removed from the next environment variable name before assigning it. i.e. BUILD_THIRD_PARTY_ENV will become THIRD_PARTY_ENV in the build. Prefixes BLAZE\|GOOGLE\|JWPLAYER\|DFP are added for backward compatibility and will be deprecated. We recommend to use new and change existing environment variables with "BUILD_" prefix. | BLAZE\|GOOGLE\|JWPLAYER\|DFP\|BUILD |
104
104
  | BLAZE_CONTENT_SITEMAP_URL_PREFIX | Prefix for sitemap URL, used in frontend static route e.g. /sitemap/sitemap-0.xml. This needs to match value set in API app. | String | |
105
+ | BLAZE_DISABLE_REDIRECT_WITH_QUERY | Do not add query string to redirects | String | |
105
106
 
106
107
 
107
108
  ## Events emitted
package/example.env CHANGED
@@ -5,3 +5,4 @@ BLAZE_CONTENT_SITEMAP_URL_PREFIX="sitemap"
5
5
  #BLAZE_ROUTE_REGEX="^\/[a-z0-9€_\/]+(?:[-\/]{1,2}[a-z0-9\/€_\/]+)*$|^\/$"
6
6
  BLAZE_ROOT_SELECTOR_CLASSES_LIMIT="2"
7
7
  BLAZE_CACHE_CONTROL_HEADER="max-age=0"
8
+ BLAZE_DISABLE_REDIRECT_WITH_QUERY=""
@@ -160,11 +160,11 @@ var getFullUrl = function getFullUrl(req, asPath) {
160
160
  };
161
161
  var doUrlCheck = /*#__PURE__*/function () {
162
162
  var _ref5 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(_ref4) {
163
- var url, apolloClient, res, handle404Error, blazeApp, _yield$apolloClient$q, _yield$apolloClient$q2, itemId, itemEntity, urlTo, _yield$apolloClient$q3, pageData, _ref6, _ref6$cacheControlMax, cacheControlMaxAge, rootSelectorClasses, parentPATH;
163
+ var asPath, url, apolloClient, res, handle404Error, blazeApp, _yield$apolloClient$q, _yield$apolloClient$q2, itemId, itemEntity, urlTo, _yield$apolloClient$q3, pageData, _ref6, _ref6$cacheControlMax, cacheControlMaxAge, redirectUrl, queryString, rootSelectorClasses, parentPATH;
164
164
  return _regenerator["default"].wrap(function _callee3$(_context3) {
165
165
  while (1) switch (_context3.prev = _context3.next) {
166
166
  case 0:
167
- url = _ref4.url, apolloClient = _ref4.apolloClient, res = _ref4.res, handle404Error = _ref4.handle404Error, blazeApp = _ref4.blazeApp;
167
+ asPath = _ref4.asPath, url = _ref4.url, apolloClient = _ref4.apolloClient, res = _ref4.res, handle404Error = _ref4.handle404Error, blazeApp = _ref4.blazeApp;
168
168
  _context3.prev = 1;
169
169
  _context3.next = 4;
170
170
  return apolloClient.query({
@@ -186,19 +186,24 @@ var doUrlCheck = /*#__PURE__*/function () {
186
186
  res.setHeader('Cache-Control', "max-age=".concat(cacheControlMaxAge));
187
187
  }
188
188
  if (!(urlTo && urlTo !== url)) {
189
- _context3.next = 16;
189
+ _context3.next = 18;
190
190
  break;
191
191
  }
192
+ redirectUrl = urlTo;
193
+ if (process.env.BLAZE_DISABLE_REDIRECT_WITH_QUERY !== 'true') {
194
+ queryString = asPath.split('?')[1];
195
+ redirectUrl = queryString ? "".concat(urlTo, "?").concat(queryString) : urlTo;
196
+ }
192
197
  if (res) {
193
198
  res.writeHead(301, {
194
- Location: urlTo
199
+ Location: redirectUrl
195
200
  });
196
201
  res.end();
197
202
  } else {
198
- window.location.href = urlTo;
203
+ window.location.href = redirectUrl;
199
204
  }
200
205
  return _context3.abrupt("return", {});
201
- case 16:
206
+ case 18:
202
207
  rootSelectorClasses = (0, _getRootSelectorClasses["default"])(url, getRootClassesLimit());
203
208
  return _context3.abrupt("return", {
204
209
  pageData: pageData,
@@ -206,29 +211,29 @@ var doUrlCheck = /*#__PURE__*/function () {
206
211
  itemId: itemId,
207
212
  itemEntity: (0, _reactPageBuilder.getUnpublishedEntityName)(itemEntity)
208
213
  });
209
- case 20:
210
- _context3.prev = 20;
214
+ case 22:
215
+ _context3.prev = 22;
211
216
  _context3.t0 = _context3["catch"](1);
212
217
  parentPATH = (0, _checkParent["default"])(url);
213
218
  if (!(handle404Error && parentPATH && res)) {
214
- _context3.next = 28;
219
+ _context3.next = 30;
215
220
  break;
216
221
  }
217
222
  res.writeHead(301, {
218
223
  Location: parentPATH
219
224
  });
220
225
  res.end();
221
- _context3.next = 29;
226
+ _context3.next = 31;
222
227
  break;
223
- case 28:
228
+ case 30:
224
229
  return _context3.abrupt("return", handleError(_context3.t0, res, handle404Error, blazeApp));
225
- case 29:
230
+ case 31:
226
231
  return _context3.abrupt("return", handle404Error ? {} : null);
227
- case 30:
232
+ case 32:
228
233
  case "end":
229
234
  return _context3.stop();
230
235
  }
231
- }, _callee3, null, [[1, 20]]);
236
+ }, _callee3, null, [[1, 22]]);
232
237
  }));
233
238
  return function doUrlCheck(_x4) {
234
239
  return _ref5.apply(this, arguments);
@@ -1 +1 @@
1
- {"version":3,"file":"check-url.js","names":["_queryString","require","_reactPageBuilder","_coreAuthUi","_constants","_query","_checkParent","_interopRequireDefault","_checkPreviewUrl","_handleStaticRoutes","_getPageData","_getRootSelectorClasses","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","getRootClassesLimit","Number","process","env","BLAZE_ROOT_SELECTOR_CLASSES_LIMIT","checkUrl","_ref","_asyncToGenerator2","_regenerator","mark","_callee","props","asPath","apolloClient","res","req","query","blazeApp","disableSsr","fullUrl","_parseUrl","url","handler","previewData","urlCheckOptions","result","wrap","_callee$","_context","prev","next","getFullUrl","parseUrl","BLAZE_STATUS_URL","abrupt","isStatusPage","handleStaticRoutes","getHandler","getHeader","setHeader","BLAZE_CACHE_CONTROL_HEADER","checkPreviewUrl","checkAccessToken","cache","extract","getPreviewData","doUrlCheck","handle404Error","sent","stop","_x","_ref2","_callee2","_result$pageData","_result$pageData2","rootSelectorClasses","_callee2$","_context2","getPageData","pageData","getRootSelectorClasses","isPreview","_x2","_x3","getHost","_ref3","_ref3$headers","headers","BLAZE_FRONTEND_HOST","host","concat","HTTPS","_window","window","_window$location","location","protocol","hostname","port","urlPort","COLON","DOUBLE_SLASH","_ref5","_callee3","_ref4","_yield$apolloClient$q","_yield$apolloClient$q2","itemId","itemEntity","urlTo","_yield$apolloClient$q3","_ref6","_ref6$cacheControlMax","cacheControlMaxAge","parentPATH","_callee3$","_context3","checkUrlQuery","variables","data","writeHead","Location","end","href","getUnpublishedEntityName","t0","checkParent","handleError","_x4","err","events","emit","error","networkError","write","graphQLErrors","statusCode","NOT_FOUND_STATUS_CODE","errorCode","_default","exports"],"sources":["../../src/helpers/check-url.js"],"sourcesContent":["import { parseUrl } from 'query-string';\nimport { getUnpublishedEntityName } from '@blaze-cms/react-page-builder';\nimport { checkAccessToken } from '@blaze-cms/core-auth-ui';\nimport { HTTPS, DOUBLE_SLASH, COLON, NOT_FOUND_STATUS_CODE } from '../constants';\nimport { checkUrlQuery } from '../application/query';\nimport checkParent from './check-parent';\nimport checkPreviewUrl from './check-preview-url';\nimport handleStaticRoutes from './handle-static-routes';\nimport getPageData from './get-page-data';\nimport getRootSelectorClasses from './get-root-selector-classes';\n\nconst getRootClassesLimit = () => Number(process.env.BLAZE_ROOT_SELECTOR_CLASSES_LIMIT);\n\nconst checkUrl = async props => {\n const { asPath, apolloClient, res, req, query, blazeApp, disableSsr } = props;\n const fullUrl = getFullUrl(req, asPath);\n const { url } = parseUrl(asPath);\n\n if (process.env.BLAZE_STATUS_URL && url === process.env.BLAZE_STATUS_URL) {\n return { isStatusPage: true };\n }\n\n if (res) {\n const handler = handleStaticRoutes.getHandler(asPath);\n\n if (!res.getHeader('Cache-Control')) {\n res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');\n }\n\n if (handler) {\n return handler(props);\n }\n }\n\n const previewData = checkPreviewUrl(url, query);\n\n if (!previewData && disableSsr) return { disableSsr: true };\n\n await checkAccessToken(apolloClient, {\n ...props,\n disableSsr: !Object.keys(apolloClient.cache.extract()).length // empty cache means SSR was disabled\n });\n\n if (previewData) return getPreviewData(previewData, apolloClient);\n const urlCheckOptions = { asPath, url, apolloClient, res };\n const result = await doUrlCheck({\n ...urlCheckOptions,\n handle404Error: true,\n blazeApp\n });\n return { ...result, fullUrl } || {};\n};\n\nconst getPreviewData = async (previewData, apolloClient) => {\n const result = await getPageData({ ...previewData, apolloClient });\n const { pageData: { url } = {} } = result;\n const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());\n return { ...previewData, rootSelectorClasses, ...result, isPreview: true };\n};\n\nconst getHost = ({ headers = {} }) =>\n process.env.BLAZE_FRONTEND_HOST ||\n headers['x-request-host'] ||\n headers['x-forwarded-host'] ||\n headers.host;\n\nconst getFullUrl = (req, asPath) => {\n if (req) {\n return `${HTTPS}${getHost(req)}${asPath}`;\n }\n const {\n location: { protocol, hostname, port }\n } = window;\n const urlPort = port ? `${COLON}${port}` : '';\n\n return `${protocol}${DOUBLE_SLASH}${hostname}${urlPort}${asPath}`;\n};\n\nconst doUrlCheck = async ({ url, apolloClient, res, handle404Error, blazeApp }) => {\n try {\n const {\n data: {\n checkUrl: { itemId, itemEntity, urlTo, pageData = {} }\n }\n } = await apolloClient.query({\n query: checkUrlQuery,\n variables: {\n url\n }\n });\n\n const { cacheControlMaxAge = null } = pageData || {}; // pageData can be null when there is no page\n if (res && cacheControlMaxAge !== null && cacheControlMaxAge >= 0) {\n res.setHeader('Cache-Control', `max-age=${cacheControlMaxAge}`);\n }\n\n if (urlTo && urlTo !== url) {\n if (res) {\n res.writeHead(301, { Location: urlTo });\n res.end();\n } else {\n window.location.href = urlTo;\n }\n return {};\n }\n const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());\n return {\n pageData,\n rootSelectorClasses,\n itemId,\n itemEntity: getUnpublishedEntityName(itemEntity)\n };\n } catch (err) {\n const parentPATH = checkParent(url);\n if (handle404Error && parentPATH && res) {\n res.writeHead(301, { Location: parentPATH });\n res.end();\n } else {\n return handleError(err, res, handle404Error, blazeApp);\n }\n\n return handle404Error ? {} : null;\n }\n};\n\nconst handleError = (err, res, handle404Error, blazeApp) => {\n blazeApp.events.emit('monitor:log', { error: err });\n\n if (!res) return {};\n if (err.networkError) {\n res.writeHead(500, { 'Content-Type': 'text/plain' });\n res.write('500 Internal Server Error\\n');\n res.end();\n } else if (handle404Error && err.graphQLErrors && err.graphQLErrors.length) {\n res.statusCode = NOT_FOUND_STATUS_CODE;\n return { errorCode: NOT_FOUND_STATUS_CODE };\n }\n\n return {};\n};\nexport default checkUrl;\n"],"mappings":"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"}
1
+ {"version":3,"file":"check-url.js","names":["_queryString","require","_reactPageBuilder","_coreAuthUi","_constants","_query","_checkParent","_interopRequireDefault","_checkPreviewUrl","_handleStaticRoutes","_getPageData","_getRootSelectorClasses","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","getRootClassesLimit","Number","process","env","BLAZE_ROOT_SELECTOR_CLASSES_LIMIT","checkUrl","_ref","_asyncToGenerator2","_regenerator","mark","_callee","props","asPath","apolloClient","res","req","query","blazeApp","disableSsr","fullUrl","_parseUrl","url","handler","previewData","urlCheckOptions","result","wrap","_callee$","_context","prev","next","getFullUrl","parseUrl","BLAZE_STATUS_URL","abrupt","isStatusPage","handleStaticRoutes","getHandler","getHeader","setHeader","BLAZE_CACHE_CONTROL_HEADER","checkPreviewUrl","checkAccessToken","cache","extract","getPreviewData","doUrlCheck","handle404Error","sent","stop","_x","_ref2","_callee2","_result$pageData","_result$pageData2","rootSelectorClasses","_callee2$","_context2","getPageData","pageData","getRootSelectorClasses","isPreview","_x2","_x3","getHost","_ref3","_ref3$headers","headers","BLAZE_FRONTEND_HOST","host","concat","HTTPS","_window","window","_window$location","location","protocol","hostname","port","urlPort","COLON","DOUBLE_SLASH","_ref5","_callee3","_ref4","_yield$apolloClient$q","_yield$apolloClient$q2","itemId","itemEntity","urlTo","_yield$apolloClient$q3","_ref6","_ref6$cacheControlMax","cacheControlMaxAge","redirectUrl","queryString","parentPATH","_callee3$","_context3","checkUrlQuery","variables","data","BLAZE_DISABLE_REDIRECT_WITH_QUERY","split","writeHead","Location","end","href","getUnpublishedEntityName","t0","checkParent","handleError","_x4","err","events","emit","error","networkError","write","graphQLErrors","statusCode","NOT_FOUND_STATUS_CODE","errorCode","_default","exports"],"sources":["../../src/helpers/check-url.js"],"sourcesContent":["import { parseUrl } from 'query-string';\nimport { getUnpublishedEntityName } from '@blaze-cms/react-page-builder';\nimport { checkAccessToken } from '@blaze-cms/core-auth-ui';\nimport { HTTPS, DOUBLE_SLASH, COLON, NOT_FOUND_STATUS_CODE } from '../constants';\nimport { checkUrlQuery } from '../application/query';\nimport checkParent from './check-parent';\nimport checkPreviewUrl from './check-preview-url';\nimport handleStaticRoutes from './handle-static-routes';\nimport getPageData from './get-page-data';\nimport getRootSelectorClasses from './get-root-selector-classes';\n\nconst getRootClassesLimit = () => Number(process.env.BLAZE_ROOT_SELECTOR_CLASSES_LIMIT);\n\nconst checkUrl = async props => {\n const { asPath, apolloClient, res, req, query, blazeApp, disableSsr } = props;\n const fullUrl = getFullUrl(req, asPath);\n const { url } = parseUrl(asPath);\n\n if (process.env.BLAZE_STATUS_URL && url === process.env.BLAZE_STATUS_URL) {\n return { isStatusPage: true };\n }\n\n if (res) {\n const handler = handleStaticRoutes.getHandler(asPath);\n\n if (!res.getHeader('Cache-Control')) {\n res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');\n }\n\n if (handler) {\n return handler(props);\n }\n }\n\n const previewData = checkPreviewUrl(url, query);\n\n if (!previewData && disableSsr) return { disableSsr: true };\n\n await checkAccessToken(apolloClient, {\n ...props,\n disableSsr: !Object.keys(apolloClient.cache.extract()).length // empty cache means SSR was disabled\n });\n\n if (previewData) return getPreviewData(previewData, apolloClient);\n const urlCheckOptions = { asPath, url, apolloClient, res };\n const result = await doUrlCheck({\n ...urlCheckOptions,\n handle404Error: true,\n blazeApp\n });\n return { ...result, fullUrl } || {};\n};\n\nconst getPreviewData = async (previewData, apolloClient) => {\n const result = await getPageData({ ...previewData, apolloClient });\n const { pageData: { url } = {} } = result;\n const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());\n return { ...previewData, rootSelectorClasses, ...result, isPreview: true };\n};\n\nconst getHost = ({ headers = {} }) =>\n process.env.BLAZE_FRONTEND_HOST ||\n headers['x-request-host'] ||\n headers['x-forwarded-host'] ||\n headers.host;\n\nconst getFullUrl = (req, asPath) => {\n if (req) {\n return `${HTTPS}${getHost(req)}${asPath}`;\n }\n const {\n location: { protocol, hostname, port }\n } = window;\n const urlPort = port ? `${COLON}${port}` : '';\n\n return `${protocol}${DOUBLE_SLASH}${hostname}${urlPort}${asPath}`;\n};\n\nconst doUrlCheck = async ({ asPath, url, apolloClient, res, handle404Error, blazeApp }) => {\n try {\n const {\n data: {\n checkUrl: { itemId, itemEntity, urlTo, pageData = {} }\n }\n } = await apolloClient.query({\n query: checkUrlQuery,\n variables: {\n url\n }\n });\n\n const { cacheControlMaxAge = null } = pageData || {}; // pageData can be null when there is no page\n if (res && cacheControlMaxAge !== null && cacheControlMaxAge >= 0) {\n res.setHeader('Cache-Control', `max-age=${cacheControlMaxAge}`);\n }\n\n if (urlTo && urlTo !== url) {\n let redirectUrl = urlTo;\n if (process.env.BLAZE_DISABLE_REDIRECT_WITH_QUERY !== 'true') {\n const queryString = asPath.split('?')[1];\n redirectUrl = queryString ? `${urlTo}?${queryString}` : urlTo;\n }\n\n if (res) {\n res.writeHead(301, { Location: redirectUrl });\n res.end();\n } else {\n window.location.href = redirectUrl;\n }\n return {};\n }\n const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());\n return {\n pageData,\n rootSelectorClasses,\n itemId,\n itemEntity: getUnpublishedEntityName(itemEntity)\n };\n } catch (err) {\n const parentPATH = checkParent(url);\n if (handle404Error && parentPATH && res) {\n res.writeHead(301, { Location: parentPATH });\n res.end();\n } else {\n return handleError(err, res, handle404Error, blazeApp);\n }\n\n return handle404Error ? {} : null;\n }\n};\n\nconst handleError = (err, res, handle404Error, blazeApp) => {\n blazeApp.events.emit('monitor:log', { error: err });\n\n if (!res) return {};\n if (err.networkError) {\n res.writeHead(500, { 'Content-Type': 'text/plain' });\n res.write('500 Internal Server Error\\n');\n res.end();\n } else if (handle404Error && err.graphQLErrors && err.graphQLErrors.length) {\n res.statusCode = NOT_FOUND_STATUS_CODE;\n return { errorCode: NOT_FOUND_STATUS_CODE };\n }\n\n return {};\n};\nexport default checkUrl;\n"],"mappings":"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"}
@@ -97,6 +97,7 @@ const getFullUrl = (req, asPath) => {
97
97
  return `${protocol}${DOUBLE_SLASH}${hostname}${urlPort}${asPath}`;
98
98
  };
99
99
  const doUrlCheck = async ({
100
+ asPath,
100
101
  url,
101
102
  apolloClient,
102
103
  res,
@@ -126,13 +127,18 @@ const doUrlCheck = async ({
126
127
  res.setHeader('Cache-Control', `max-age=${cacheControlMaxAge}`);
127
128
  }
128
129
  if (urlTo && urlTo !== url) {
130
+ let redirectUrl = urlTo;
131
+ if (process.env.BLAZE_DISABLE_REDIRECT_WITH_QUERY !== 'true') {
132
+ const queryString = asPath.split('?')[1];
133
+ redirectUrl = queryString ? `${urlTo}?${queryString}` : urlTo;
134
+ }
129
135
  if (res) {
130
136
  res.writeHead(301, {
131
- Location: urlTo
137
+ Location: redirectUrl
132
138
  });
133
139
  res.end();
134
140
  } else {
135
- window.location.href = urlTo;
141
+ window.location.href = redirectUrl;
136
142
  }
137
143
  return {};
138
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"check-url.js","names":["parseUrl","getUnpublishedEntityName","checkAccessToken","HTTPS","DOUBLE_SLASH","COLON","NOT_FOUND_STATUS_CODE","checkUrlQuery","checkParent","checkPreviewUrl","handleStaticRoutes","getPageData","getRootSelectorClasses","getRootClassesLimit","Number","process","env","BLAZE_ROOT_SELECTOR_CLASSES_LIMIT","checkUrl","props","asPath","apolloClient","res","req","query","blazeApp","disableSsr","fullUrl","getFullUrl","url","BLAZE_STATUS_URL","isStatusPage","handler","getHandler","getHeader","setHeader","BLAZE_CACHE_CONTROL_HEADER","previewData","_objectSpread","Object","keys","cache","extract","length","getPreviewData","urlCheckOptions","result","doUrlCheck","handle404Error","pageData","rootSelectorClasses","isPreview","getHost","headers","BLAZE_FRONTEND_HOST","host","location","protocol","hostname","port","window","urlPort","data","itemId","itemEntity","urlTo","variables","cacheControlMaxAge","writeHead","Location","end","href","err","parentPATH","handleError","events","emit","error","networkError","write","graphQLErrors","statusCode","errorCode"],"sources":["../../src/helpers/check-url.js"],"sourcesContent":["import { parseUrl } from 'query-string';\nimport { getUnpublishedEntityName } from '@blaze-cms/react-page-builder';\nimport { checkAccessToken } from '@blaze-cms/core-auth-ui';\nimport { HTTPS, DOUBLE_SLASH, COLON, NOT_FOUND_STATUS_CODE } from '../constants';\nimport { checkUrlQuery } from '../application/query';\nimport checkParent from './check-parent';\nimport checkPreviewUrl from './check-preview-url';\nimport handleStaticRoutes from './handle-static-routes';\nimport getPageData from './get-page-data';\nimport getRootSelectorClasses from './get-root-selector-classes';\n\nconst getRootClassesLimit = () => Number(process.env.BLAZE_ROOT_SELECTOR_CLASSES_LIMIT);\n\nconst checkUrl = async props => {\n const { asPath, apolloClient, res, req, query, blazeApp, disableSsr } = props;\n const fullUrl = getFullUrl(req, asPath);\n const { url } = parseUrl(asPath);\n\n if (process.env.BLAZE_STATUS_URL && url === process.env.BLAZE_STATUS_URL) {\n return { isStatusPage: true };\n }\n\n if (res) {\n const handler = handleStaticRoutes.getHandler(asPath);\n\n if (!res.getHeader('Cache-Control')) {\n res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');\n }\n\n if (handler) {\n return handler(props);\n }\n }\n\n const previewData = checkPreviewUrl(url, query);\n\n if (!previewData && disableSsr) return { disableSsr: true };\n\n await checkAccessToken(apolloClient, {\n ...props,\n disableSsr: !Object.keys(apolloClient.cache.extract()).length // empty cache means SSR was disabled\n });\n\n if (previewData) return getPreviewData(previewData, apolloClient);\n const urlCheckOptions = { asPath, url, apolloClient, res };\n const result = await doUrlCheck({\n ...urlCheckOptions,\n handle404Error: true,\n blazeApp\n });\n return { ...result, fullUrl } || {};\n};\n\nconst getPreviewData = async (previewData, apolloClient) => {\n const result = await getPageData({ ...previewData, apolloClient });\n const { pageData: { url } = {} } = result;\n const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());\n return { ...previewData, rootSelectorClasses, ...result, isPreview: true };\n};\n\nconst getHost = ({ headers = {} }) =>\n process.env.BLAZE_FRONTEND_HOST ||\n headers['x-request-host'] ||\n headers['x-forwarded-host'] ||\n headers.host;\n\nconst getFullUrl = (req, asPath) => {\n if (req) {\n return `${HTTPS}${getHost(req)}${asPath}`;\n }\n const {\n location: { protocol, hostname, port }\n } = window;\n const urlPort = port ? `${COLON}${port}` : '';\n\n return `${protocol}${DOUBLE_SLASH}${hostname}${urlPort}${asPath}`;\n};\n\nconst doUrlCheck = async ({ url, apolloClient, res, handle404Error, blazeApp }) => {\n try {\n const {\n data: {\n checkUrl: { itemId, itemEntity, urlTo, pageData = {} }\n }\n } = await apolloClient.query({\n query: checkUrlQuery,\n variables: {\n url\n }\n });\n\n const { cacheControlMaxAge = null } = pageData || {}; // pageData can be null when there is no page\n if (res && cacheControlMaxAge !== null && cacheControlMaxAge >= 0) {\n res.setHeader('Cache-Control', `max-age=${cacheControlMaxAge}`);\n }\n\n if (urlTo && urlTo !== url) {\n if (res) {\n res.writeHead(301, { Location: urlTo });\n res.end();\n } else {\n window.location.href = urlTo;\n }\n return {};\n }\n const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());\n return {\n pageData,\n rootSelectorClasses,\n itemId,\n itemEntity: getUnpublishedEntityName(itemEntity)\n };\n } catch (err) {\n const parentPATH = checkParent(url);\n if (handle404Error && parentPATH && res) {\n res.writeHead(301, { Location: parentPATH });\n res.end();\n } else {\n return handleError(err, res, handle404Error, blazeApp);\n }\n\n return handle404Error ? {} : null;\n }\n};\n\nconst handleError = (err, res, handle404Error, blazeApp) => {\n blazeApp.events.emit('monitor:log', { error: err });\n\n if (!res) return {};\n if (err.networkError) {\n res.writeHead(500, { 'Content-Type': 'text/plain' });\n res.write('500 Internal Server Error\\n');\n res.end();\n } else if (handle404Error && err.graphQLErrors && err.graphQLErrors.length) {\n res.statusCode = NOT_FOUND_STATUS_CODE;\n return { errorCode: NOT_FOUND_STATUS_CODE };\n }\n\n return {};\n};\nexport default checkUrl;\n"],"mappings":"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"}
1
+ {"version":3,"file":"check-url.js","names":["parseUrl","getUnpublishedEntityName","checkAccessToken","HTTPS","DOUBLE_SLASH","COLON","NOT_FOUND_STATUS_CODE","checkUrlQuery","checkParent","checkPreviewUrl","handleStaticRoutes","getPageData","getRootSelectorClasses","getRootClassesLimit","Number","process","env","BLAZE_ROOT_SELECTOR_CLASSES_LIMIT","checkUrl","props","asPath","apolloClient","res","req","query","blazeApp","disableSsr","fullUrl","getFullUrl","url","BLAZE_STATUS_URL","isStatusPage","handler","getHandler","getHeader","setHeader","BLAZE_CACHE_CONTROL_HEADER","previewData","_objectSpread","Object","keys","cache","extract","length","getPreviewData","urlCheckOptions","result","doUrlCheck","handle404Error","pageData","rootSelectorClasses","isPreview","getHost","headers","BLAZE_FRONTEND_HOST","host","location","protocol","hostname","port","window","urlPort","data","itemId","itemEntity","urlTo","variables","cacheControlMaxAge","redirectUrl","BLAZE_DISABLE_REDIRECT_WITH_QUERY","queryString","split","writeHead","Location","end","href","err","parentPATH","handleError","events","emit","error","networkError","write","graphQLErrors","statusCode","errorCode"],"sources":["../../src/helpers/check-url.js"],"sourcesContent":["import { parseUrl } from 'query-string';\nimport { getUnpublishedEntityName } from '@blaze-cms/react-page-builder';\nimport { checkAccessToken } from '@blaze-cms/core-auth-ui';\nimport { HTTPS, DOUBLE_SLASH, COLON, NOT_FOUND_STATUS_CODE } from '../constants';\nimport { checkUrlQuery } from '../application/query';\nimport checkParent from './check-parent';\nimport checkPreviewUrl from './check-preview-url';\nimport handleStaticRoutes from './handle-static-routes';\nimport getPageData from './get-page-data';\nimport getRootSelectorClasses from './get-root-selector-classes';\n\nconst getRootClassesLimit = () => Number(process.env.BLAZE_ROOT_SELECTOR_CLASSES_LIMIT);\n\nconst checkUrl = async props => {\n const { asPath, apolloClient, res, req, query, blazeApp, disableSsr } = props;\n const fullUrl = getFullUrl(req, asPath);\n const { url } = parseUrl(asPath);\n\n if (process.env.BLAZE_STATUS_URL && url === process.env.BLAZE_STATUS_URL) {\n return { isStatusPage: true };\n }\n\n if (res) {\n const handler = handleStaticRoutes.getHandler(asPath);\n\n if (!res.getHeader('Cache-Control')) {\n res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');\n }\n\n if (handler) {\n return handler(props);\n }\n }\n\n const previewData = checkPreviewUrl(url, query);\n\n if (!previewData && disableSsr) return { disableSsr: true };\n\n await checkAccessToken(apolloClient, {\n ...props,\n disableSsr: !Object.keys(apolloClient.cache.extract()).length // empty cache means SSR was disabled\n });\n\n if (previewData) return getPreviewData(previewData, apolloClient);\n const urlCheckOptions = { asPath, url, apolloClient, res };\n const result = await doUrlCheck({\n ...urlCheckOptions,\n handle404Error: true,\n blazeApp\n });\n return { ...result, fullUrl } || {};\n};\n\nconst getPreviewData = async (previewData, apolloClient) => {\n const result = await getPageData({ ...previewData, apolloClient });\n const { pageData: { url } = {} } = result;\n const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());\n return { ...previewData, rootSelectorClasses, ...result, isPreview: true };\n};\n\nconst getHost = ({ headers = {} }) =>\n process.env.BLAZE_FRONTEND_HOST ||\n headers['x-request-host'] ||\n headers['x-forwarded-host'] ||\n headers.host;\n\nconst getFullUrl = (req, asPath) => {\n if (req) {\n return `${HTTPS}${getHost(req)}${asPath}`;\n }\n const {\n location: { protocol, hostname, port }\n } = window;\n const urlPort = port ? `${COLON}${port}` : '';\n\n return `${protocol}${DOUBLE_SLASH}${hostname}${urlPort}${asPath}`;\n};\n\nconst doUrlCheck = async ({ asPath, url, apolloClient, res, handle404Error, blazeApp }) => {\n try {\n const {\n data: {\n checkUrl: { itemId, itemEntity, urlTo, pageData = {} }\n }\n } = await apolloClient.query({\n query: checkUrlQuery,\n variables: {\n url\n }\n });\n\n const { cacheControlMaxAge = null } = pageData || {}; // pageData can be null when there is no page\n if (res && cacheControlMaxAge !== null && cacheControlMaxAge >= 0) {\n res.setHeader('Cache-Control', `max-age=${cacheControlMaxAge}`);\n }\n\n if (urlTo && urlTo !== url) {\n let redirectUrl = urlTo;\n if (process.env.BLAZE_DISABLE_REDIRECT_WITH_QUERY !== 'true') {\n const queryString = asPath.split('?')[1];\n redirectUrl = queryString ? `${urlTo}?${queryString}` : urlTo;\n }\n\n if (res) {\n res.writeHead(301, { Location: redirectUrl });\n res.end();\n } else {\n window.location.href = redirectUrl;\n }\n return {};\n }\n const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());\n return {\n pageData,\n rootSelectorClasses,\n itemId,\n itemEntity: getUnpublishedEntityName(itemEntity)\n };\n } catch (err) {\n const parentPATH = checkParent(url);\n if (handle404Error && parentPATH && res) {\n res.writeHead(301, { Location: parentPATH });\n res.end();\n } else {\n return handleError(err, res, handle404Error, blazeApp);\n }\n\n return handle404Error ? {} : null;\n }\n};\n\nconst handleError = (err, res, handle404Error, blazeApp) => {\n blazeApp.events.emit('monitor:log', { error: err });\n\n if (!res) return {};\n if (err.networkError) {\n res.writeHead(500, { 'Content-Type': 'text/plain' });\n res.write('500 Internal Server Error\\n');\n res.end();\n } else if (handle404Error && err.graphQLErrors && err.graphQLErrors.length) {\n res.statusCode = NOT_FOUND_STATUS_CODE;\n return { errorCode: NOT_FOUND_STATUS_CODE };\n }\n\n return {};\n};\nexport default checkUrl;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/nextjs-tools",
3
- "version": "0.131.0-admin-updates.1",
3
+ "version": "0.131.0-admin-updates.3",
4
4
  "description": "Blaze nextjs tools",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -35,13 +35,13 @@
35
35
  "@blaze-cms/nextjs-components": "0.131.0-admin-updates.0",
36
36
  "@blaze-cms/plugin-auth-fe": "0.131.0-admin-updates.0",
37
37
  "@blaze-cms/plugin-auth-local-fe": "0.131.0-admin-updates.0",
38
- "@blaze-cms/plugin-google-maps-fe": "0.131.0-admin-updates.1",
39
- "@blaze-cms/plugin-gtm-fe": "0.131.0-admin-updates.1",
40
- "@blaze-cms/plugin-page-builder-fe": "0.131.0-admin-updates.1",
38
+ "@blaze-cms/plugin-google-maps-fe": "0.131.0-admin-updates.2",
39
+ "@blaze-cms/plugin-gtm-fe": "0.131.0-admin-updates.2",
40
+ "@blaze-cms/plugin-page-builder-fe": "0.131.0-admin-updates.2",
41
41
  "@blaze-cms/plugin-preview-fe": "0.131.0-admin-updates.0",
42
42
  "@blaze-cms/plugin-search-ui": "0.131.0-admin-updates.0",
43
43
  "@blaze-cms/plugin-structured-data-fe": "0.131.0-admin-updates.0",
44
- "@blaze-cms/react-page-builder": "0.131.0-admin-updates.1",
44
+ "@blaze-cms/react-page-builder": "0.131.0-admin-updates.2",
45
45
  "@blaze-cms/setup-ui": "0.131.0-admin-updates.0",
46
46
  "autoprefixer": "^10.2.3",
47
47
  "core-js": "^3.2.1",
@@ -69,5 +69,5 @@
69
69
  "lib/*",
70
70
  "lib-es/*"
71
71
  ],
72
- "gitHead": "757ebc0ab43b06c8a34d0348724f5b9bbbf097a3"
72
+ "gitHead": "a601b073a93a38a72e0aea90527a47fed14284ab"
73
73
  }
@@ -76,7 +76,7 @@ const getFullUrl = (req, asPath) => {
76
76
  return `${protocol}${DOUBLE_SLASH}${hostname}${urlPort}${asPath}`;
77
77
  };
78
78
 
79
- const doUrlCheck = async ({ url, apolloClient, res, handle404Error, blazeApp }) => {
79
+ const doUrlCheck = async ({ asPath, url, apolloClient, res, handle404Error, blazeApp }) => {
80
80
  try {
81
81
  const {
82
82
  data: {
@@ -95,11 +95,17 @@ const doUrlCheck = async ({ url, apolloClient, res, handle404Error, blazeApp })
95
95
  }
96
96
 
97
97
  if (urlTo && urlTo !== url) {
98
+ let redirectUrl = urlTo;
99
+ if (process.env.BLAZE_DISABLE_REDIRECT_WITH_QUERY !== 'true') {
100
+ const queryString = asPath.split('?')[1];
101
+ redirectUrl = queryString ? `${urlTo}?${queryString}` : urlTo;
102
+ }
103
+
98
104
  if (res) {
99
- res.writeHead(301, { Location: urlTo });
105
+ res.writeHead(301, { Location: redirectUrl });
100
106
  res.end();
101
107
  } else {
102
- window.location.href = urlTo;
108
+ window.location.href = redirectUrl;
103
109
  }
104
110
  return {};
105
111
  }
@@ -80,6 +80,9 @@ describe('Check url', () => {
80
80
  const mockHandlerResponse = () => jest.fn(() => true);
81
81
  const cacheControlHeader = 'Cache-Control';
82
82
 
83
+ const queryString = '?query=string';
84
+ const asPathWithQuery = `${asPath}${queryString}`;
85
+
83
86
  beforeAll(() => {
84
87
  setEnvs(envs);
85
88
  });
@@ -178,6 +181,29 @@ describe('Check url', () => {
178
181
  apolloQueryCheck(apolloClient, asPath);
179
182
  });
180
183
 
184
+ it('should redirect with query string', async () => {
185
+ apolloClient.query.mockImplementationOnce(async () => ({
186
+ data: {
187
+ checkUrl: { urlTo }
188
+ }
189
+ }));
190
+ await checkUrl({ ...props, asPath: asPathWithQuery });
191
+ expect(res.writeHead).toHaveBeenCalledWith(301, { Location: `${urlTo}${queryString}` });
192
+ });
193
+
194
+ it('should not redirect with query string', async () => {
195
+ apolloClient.query.mockImplementationOnce(async () => ({
196
+ data: {
197
+ checkUrl: { urlTo }
198
+ }
199
+ }));
200
+ const customEnvs = { BLAZE_DISABLE_REDIRECT_WITH_QUERY: 'true' };
201
+ setEnvs(customEnvs);
202
+ await checkUrl({ ...props, asPath: asPathWithQuery });
203
+ expect(res.writeHead).toHaveBeenCalledWith(301, { Location: urlTo });
204
+ deleteEnvs(customEnvs);
205
+ });
206
+
181
207
  it('should handle redirect to parent on not found', async () => {
182
208
  apolloClient.query.mockImplementationOnce(async () => {
183
209
  throw new Error('Not found');