@blaze-cms/nextjs-tools 0.124.0-alpha.15 → 0.124.0-alpha.18

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,33 @@
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.124.0-alpha.18](https://github.com/thebyte9/blaze/compare/v0.124.0-alpha.17...v0.124.0-alpha.18) (2022-05-17)
7
+
8
+ **Note:** Version bump only for package @blaze-cms/nextjs-tools
9
+
10
+
11
+
12
+
13
+
14
+ # [0.124.0-alpha.17](https://github.com/thebyte9/blaze/compare/v0.124.0-alpha.16...v0.124.0-alpha.17) (2022-05-13)
15
+
16
+
17
+ ### Features
18
+
19
+ * adding cache control max age property ([#3385](https://github.com/thebyte9/blaze/issues/3385)) ([ace668e](https://github.com/thebyte9/blaze/commit/ace668e708ea867d0b86543aca149ae57d5e51a5))
20
+
21
+
22
+
23
+
24
+
25
+ # [0.124.0-alpha.16](https://github.com/thebyte9/blaze/compare/v0.124.0-alpha.15...v0.124.0-alpha.16) (2022-05-12)
26
+
27
+ **Note:** Version bump only for package @blaze-cms/nextjs-tools
28
+
29
+
30
+
31
+
32
+
6
33
  # [0.124.0-alpha.15](https://github.com/thebyte9/blaze/compare/v0.124.0-alpha.14...v0.124.0-alpha.15) (2022-05-11)
7
34
 
8
35
  **Note:** Version bump only for package @blaze-cms/nextjs-tools
@@ -15,8 +15,8 @@ var _client = require("@apollo/client");
15
15
 
16
16
  var _templateObject, _templateObject2, _templateObject3;
17
17
 
18
- var pageDataFields = "\nid\nname\npreparedPageBuilderComponents\ncanonicalUrl\ncategory {\n id\n name\n}\ntags {\n id\n name\n}\nslug\nimage{\n id\n data\n url\n}\nformattedMetaTitle\nformattedMetaDescription\n__typename";
19
- var checkUrlQuery = (0, _client.gql)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n query checkUrl($url: String!) {\n checkUrl(url: $url) {\n itemId\n itemEntity\n urlTo\n pageData: record {\n ...on ContentContentInterface {\n ", "\n }\n }\n }\n }\n"])), pageDataFields);
18
+ var pageDataFields = "\nid\nname\npreparedPageBuilderComponents\ncanonicalUrl\ncategory {\n id\n name\n}\ntags {\n id\n name\n}\nslug\nimage{\n id\n data\n url\n}\nformattedMetaTitle\nformattedMetaDescription\n__typename\ncacheControlMaxAge";
19
+ var checkUrlQuery = (0, _client.gql)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n query checkUrl($url: String!) {\n checkUrl(url: $url) {\n itemId\n itemEntity\n urlTo,\n pageData: record {\n ...on ContentContentInterface {\n ", "\n }\n }\n }\n }\n"])), pageDataFields);
20
20
  exports.checkUrlQuery = checkUrlQuery;
21
21
 
22
22
  var getPageQuery = function getPageQuery(_ref) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["pageDataFields","checkUrlQuery","gql","getPageQuery","actions","get","getPublished","isPreview","getMethod","GET_ENTITY_SCHEMA"],"sources":["../../../src/application/query/index.js"],"sourcesContent":["import { gql } from '@apollo/client';\n\nconst pageDataFields = `\nid\nname\npreparedPageBuilderComponents\ncanonicalUrl\ncategory {\n id\n name\n}\ntags {\n id\n name\n}\nslug\nimage{\n id\n data\n url\n}\nformattedMetaTitle\nformattedMetaDescription\n__typename`;\n\nconst checkUrlQuery = gql`\n query checkUrl($url: String!) {\n checkUrl(url: $url) {\n itemId\n itemEntity\n urlTo\n pageData: record {\n ...on ContentContentInterface {\n ${pageDataFields}\n }\n }\n }\n }\n`;\n\nconst getPageQuery = ({ actions: { get, getPublished } = {}, isPreview }) => {\n const getMethod = !isPreview && getPublished ? getPublished : get;\n\n return gql`\n query pageData($id: String!) {\n pageData: ${getMethod}(id: $id) {\n ${pageDataFields}\n url\n }\n }\n `;\n};\n\nconst GET_ENTITY_SCHEMA = gql`\n query getEntitySchema($id: String!) {\n entitySchema: getEntitySchema(id: $id) {\n id\n identifier\n actions\n }\n }\n`;\n\nexport { checkUrlQuery, getPageQuery, GET_ENTITY_SCHEMA };\n"],"mappings":";;;;;;;;;;;;;AAAA;;;;AAEA,IAAMA,cAAc,kNAApB;AAuBA,IAAMC,aAAa,OAAGC,WAAH,wTAQPF,cARO,CAAnB;;;AAeA,IAAMG,YAAY,GAAG,SAAfA,YAAe,OAAwD;EAAA,wBAArDC,OAAqD;EAAA,yCAApB,EAAoB;EAAA,IAA1CC,GAA0C,gBAA1CA,GAA0C;EAAA,IAArCC,YAAqC,gBAArCA,YAAqC;EAAA,IAAhBC,SAAgB,QAAhBA,SAAgB;EAC3E,IAAMC,SAAS,GAAG,CAACD,SAAD,IAAcD,YAAd,GAA6BA,YAA7B,GAA4CD,GAA9D;EAEA,WAAOH,WAAP,8MAEgBM,SAFhB,EAGQR,cAHR;AAQD,CAXD;;;AAaA,IAAMS,iBAAiB,OAAGP,WAAH,yOAAvB"}
1
+ {"version":3,"file":"index.js","names":["pageDataFields","checkUrlQuery","gql","getPageQuery","actions","get","getPublished","isPreview","getMethod","GET_ENTITY_SCHEMA"],"sources":["../../../src/application/query/index.js"],"sourcesContent":["import { gql } from '@apollo/client';\n\nconst pageDataFields = `\nid\nname\npreparedPageBuilderComponents\ncanonicalUrl\ncategory {\n id\n name\n}\ntags {\n id\n name\n}\nslug\nimage{\n id\n data\n url\n}\nformattedMetaTitle\nformattedMetaDescription\n__typename\ncacheControlMaxAge`;\n\nconst checkUrlQuery = gql`\n query checkUrl($url: String!) {\n checkUrl(url: $url) {\n itemId\n itemEntity\n urlTo,\n pageData: record {\n ...on ContentContentInterface {\n ${pageDataFields}\n }\n }\n }\n }\n`;\n\nconst getPageQuery = ({ actions: { get, getPublished } = {}, isPreview }) => {\n const getMethod = !isPreview && getPublished ? getPublished : get;\n\n return gql`\n query pageData($id: String!) {\n pageData: ${getMethod}(id: $id) {\n ${pageDataFields}\n url\n }\n }\n `;\n};\n\nconst GET_ENTITY_SCHEMA = gql`\n query getEntitySchema($id: String!) {\n entitySchema: getEntitySchema(id: $id) {\n id\n identifier\n actions\n }\n }\n`;\n\nexport { checkUrlQuery, getPageQuery, GET_ENTITY_SCHEMA };\n"],"mappings":";;;;;;;;;;;;;AAAA;;;;AAEA,IAAMA,cAAc,sOAApB;AAwBA,IAAMC,aAAa,OAAGC,WAAH,yTAQPF,cARO,CAAnB;;;AAeA,IAAMG,YAAY,GAAG,SAAfA,YAAe,OAAwD;EAAA,wBAArDC,OAAqD;EAAA,yCAApB,EAAoB;EAAA,IAA1CC,GAA0C,gBAA1CA,GAA0C;EAAA,IAArCC,YAAqC,gBAArCA,YAAqC;EAAA,IAAhBC,SAAgB,QAAhBA,SAAgB;EAC3E,IAAMC,SAAS,GAAG,CAACD,SAAD,IAAcD,YAAd,GAA6BA,YAA7B,GAA4CD,GAA9D;EAEA,WAAOH,WAAP,8MAEgBM,SAFhB,EAGQR,cAHR;AAQD,CAXD;;;AAaA,IAAMS,iBAAiB,OAAGP,WAAH,yOAAvB"}
@@ -97,8 +97,8 @@ var checkUrl = /*#__PURE__*/function () {
97
97
  break;
98
98
  }
99
99
 
100
- res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');
101
100
  handler = _handleStaticRoutes["default"].getHandler(asPath);
101
+ res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');
102
102
 
103
103
  if (!handler) {
104
104
  _context.next = 10;
@@ -223,7 +223,7 @@ var getFullUrl = function getFullUrl(req, asPath) {
223
223
 
224
224
  var doUrlCheck = /*#__PURE__*/function () {
225
225
  var _ref5 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(_ref4) {
226
- var url, apolloClient, res, handle404Error, blazeApp, _yield$apolloClient$q, _yield$apolloClient$q2, itemId, itemEntity, urlTo, pageData, rootSelectorClasses, parentPATH;
226
+ var url, apolloClient, res, handle404Error, blazeApp, _yield$apolloClient$q, _yield$apolloClient$q2, itemId, itemEntity, urlTo, _yield$apolloClient$q3, pageData, _pageData$cacheContro, cacheControlMaxAge, rootSelectorClasses, parentPATH;
227
227
 
228
228
  return _regenerator["default"].wrap(function _callee3$(_context3) {
229
229
  while (1) {
@@ -245,10 +245,16 @@ var doUrlCheck = /*#__PURE__*/function () {
245
245
  itemId = _yield$apolloClient$q2.itemId;
246
246
  itemEntity = _yield$apolloClient$q2.itemEntity;
247
247
  urlTo = _yield$apolloClient$q2.urlTo;
248
- pageData = _yield$apolloClient$q2.pageData;
248
+ _yield$apolloClient$q3 = _yield$apolloClient$q2.pageData;
249
+ pageData = _yield$apolloClient$q3 === void 0 ? {} : _yield$apolloClient$q3;
250
+ _pageData$cacheContro = pageData.cacheControlMaxAge, cacheControlMaxAge = _pageData$cacheContro === void 0 ? null : _pageData$cacheContro;
251
+
252
+ if (res && cacheControlMaxAge !== null && cacheControlMaxAge >= 0) {
253
+ res.setHeader('Cache-Control', "max-age=".concat(cacheControlMaxAge));
254
+ }
249
255
 
250
256
  if (!(urlTo && urlTo !== url)) {
251
- _context3.next = 13;
257
+ _context3.next = 16;
252
258
  break;
253
259
  }
254
260
 
@@ -263,7 +269,7 @@ var doUrlCheck = /*#__PURE__*/function () {
263
269
 
264
270
  return _context3.abrupt("return", {});
265
271
 
266
- case 13:
272
+ case 16:
267
273
  rootSelectorClasses = (0, _getRootSelectorClasses["default"])(url, getRootClassesLimit());
268
274
  return _context3.abrupt("return", {
269
275
  pageData: pageData,
@@ -272,13 +278,13 @@ var doUrlCheck = /*#__PURE__*/function () {
272
278
  itemEntity: (0, _reactPageBuilder.getUnpublishedEntityName)(itemEntity)
273
279
  });
274
280
 
275
- case 17:
276
- _context3.prev = 17;
281
+ case 20:
282
+ _context3.prev = 20;
277
283
  _context3.t0 = _context3["catch"](1);
278
284
  parentPATH = (0, _checkParent["default"])(url);
279
285
 
280
286
  if (!(handle404Error && parentPATH && res)) {
281
- _context3.next = 25;
287
+ _context3.next = 28;
282
288
  break;
283
289
  }
284
290
 
@@ -286,21 +292,21 @@ var doUrlCheck = /*#__PURE__*/function () {
286
292
  Location: parentPATH
287
293
  });
288
294
  res.end();
289
- _context3.next = 26;
295
+ _context3.next = 29;
290
296
  break;
291
297
 
292
- case 25:
298
+ case 28:
293
299
  return _context3.abrupt("return", handleError(_context3.t0, res, handle404Error, blazeApp));
294
300
 
295
- case 26:
301
+ case 29:
296
302
  return _context3.abrupt("return", handle404Error ? {} : null);
297
303
 
298
- case 27:
304
+ case 30:
299
305
  case "end":
300
306
  return _context3.stop();
301
307
  }
302
308
  }
303
- }, _callee3, null, [[1, 17]]);
309
+ }, _callee3, null, [[1, 20]]);
304
310
  }));
305
311
 
306
312
  return function doUrlCheck(_x4) {
@@ -320,7 +326,7 @@ var handleError = function handleError(err, res, handle404Error, blazeApp) {
320
326
  });
321
327
  res.write('500 Internal Server Error\n');
322
328
  res.end();
323
- } else if (handle404Error && err.graphQLErrors.length) {
329
+ } else if (handle404Error && err.graphQLErrors && err.graphQLErrors.length) {
324
330
  res.statusCode = _constants.NOT_FOUND_STATUS_CODE;
325
331
  return {
326
332
  errorCode: _constants.NOT_FOUND_STATUS_CODE
@@ -1 +1 @@
1
- {"version":3,"file":"check-url.js","names":["getRootClassesLimit","Number","process","env","BLAZE_ROOT_SELECTOR_CLASSES_LIMIT","hasAuth","req","headers","cookie","checkUrl","props","asPath","apolloClient","res","query","blazeApp","fullUrl","getFullUrl","url","BLAZE_STATUS_URL","isStatusPage","setHeader","BLAZE_CACHE_CONTROL_HEADER","handler","handleStaticRoutes","getHandler","previewData","disableSsr","getPreviewData","urlCheckOptions","doUrlCheck","handle404Error","result","pageData","rootSelectorClasses","isPreview","getHost","BLAZE_FRONTEND_HOST","host","HTTPS","window","location","protocol","hostname","port","urlPort","COLON","DOUBLE_SLASH","checkUrlQuery","variables","data","itemId","itemEntity","urlTo","writeHead","Location","end","href","parentPATH","handleError","err","events","emit","error","networkError","write","graphQLErrors","length","statusCode","NOT_FOUND_STATUS_CODE","errorCode"],"sources":["../../src/helpers/check-url.js"],"sourcesContent":["import { parseUrl } from 'query-string';\nimport { getUnpublishedEntityName } from '@blaze-cms/react-page-builder';\nimport { getAccessToken, 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 hasAuth = req => {\n if (!req) return false;\n return !!getAccessToken(req.headers.cookie);\n};\n\nconst checkUrl = async props => {\n const { asPath, apolloClient, res, req, query, blazeApp } = 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 if (res) {\n res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');\n const handler = handleStaticRoutes.getHandler(asPath);\n if (handler) {\n return handler(props);\n }\n }\n\n const previewData = checkPreviewUrl(url, query);\n\n if (!previewData && hasAuth(req)) return { disableSsr: true };\n\n await checkAccessToken(apolloClient);\n\n if (previewData) return getPreviewData(previewData, apolloClient);\n const urlCheckOptions = { asPath, url, apolloClient, res };\n\n const result = await doUrlCheck({\n ...urlCheckOptions,\n handle404Error: true,\n blazeApp\n });\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 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.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":["getRootClassesLimit","Number","process","env","BLAZE_ROOT_SELECTOR_CLASSES_LIMIT","hasAuth","req","headers","cookie","checkUrl","props","asPath","apolloClient","res","query","blazeApp","fullUrl","getFullUrl","url","BLAZE_STATUS_URL","isStatusPage","handler","handleStaticRoutes","getHandler","setHeader","BLAZE_CACHE_CONTROL_HEADER","previewData","disableSsr","getPreviewData","urlCheckOptions","doUrlCheck","handle404Error","result","pageData","rootSelectorClasses","isPreview","getHost","BLAZE_FRONTEND_HOST","host","HTTPS","window","location","protocol","hostname","port","urlPort","COLON","DOUBLE_SLASH","checkUrlQuery","variables","data","itemId","itemEntity","urlTo","cacheControlMaxAge","writeHead","Location","end","href","parentPATH","handleError","err","events","emit","error","networkError","write","graphQLErrors","length","statusCode","NOT_FOUND_STATUS_CODE","errorCode"],"sources":["../../src/helpers/check-url.js"],"sourcesContent":["import { parseUrl } from 'query-string';\nimport { getUnpublishedEntityName } from '@blaze-cms/react-page-builder';\nimport { getAccessToken, 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 hasAuth = req => {\n if (!req) return false;\n return !!getAccessToken(req.headers.cookie);\n};\n\nconst checkUrl = async props => {\n const { asPath, apolloClient, res, req, query, blazeApp } = 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 res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');\n if (handler) {\n return handler(props);\n }\n }\n\n const previewData = checkPreviewUrl(url, query);\n\n if (!previewData && hasAuth(req)) return { disableSsr: true };\n\n await checkAccessToken(apolloClient);\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;\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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"}
@@ -20,13 +20,14 @@ image{
20
20
  }
21
21
  formattedMetaTitle
22
22
  formattedMetaDescription
23
- __typename`;
23
+ __typename
24
+ cacheControlMaxAge`;
24
25
  const checkUrlQuery = gql`
25
26
  query checkUrl($url: String!) {
26
27
  checkUrl(url: $url) {
27
28
  itemId
28
29
  itemEntity
29
- urlTo
30
+ urlTo,
30
31
  pageData: record {
31
32
  ...on ContentContentInterface {
32
33
  ${pageDataFields}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["gql","pageDataFields","checkUrlQuery","getPageQuery","actions","get","getPublished","isPreview","getMethod","GET_ENTITY_SCHEMA"],"sources":["../../../src/application/query/index.js"],"sourcesContent":["import { gql } from '@apollo/client';\n\nconst pageDataFields = `\nid\nname\npreparedPageBuilderComponents\ncanonicalUrl\ncategory {\n id\n name\n}\ntags {\n id\n name\n}\nslug\nimage{\n id\n data\n url\n}\nformattedMetaTitle\nformattedMetaDescription\n__typename`;\n\nconst checkUrlQuery = gql`\n query checkUrl($url: String!) {\n checkUrl(url: $url) {\n itemId\n itemEntity\n urlTo\n pageData: record {\n ...on ContentContentInterface {\n ${pageDataFields}\n }\n }\n }\n }\n`;\n\nconst getPageQuery = ({ actions: { get, getPublished } = {}, isPreview }) => {\n const getMethod = !isPreview && getPublished ? getPublished : get;\n\n return gql`\n query pageData($id: String!) {\n pageData: ${getMethod}(id: $id) {\n ${pageDataFields}\n url\n }\n }\n `;\n};\n\nconst GET_ENTITY_SCHEMA = gql`\n query getEntitySchema($id: String!) {\n entitySchema: getEntitySchema(id: $id) {\n id\n identifier\n actions\n }\n }\n`;\n\nexport { checkUrlQuery, getPageQuery, GET_ENTITY_SCHEMA };\n"],"mappings":"AAAA,SAASA,GAAT,QAAoB,gBAApB;AAEA,MAAMC,cAAc,GAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WArBA;AAuBA,MAAMC,aAAa,GAAGF,GAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAYC,cAAe;AAC3B;AACA;AACA;AACA;AACA,CAbA;;AAeA,MAAME,YAAY,GAAG,CAAC;EAAEC,OAAO,EAAE;IAAEC,GAAF;IAAOC;EAAP,IAAwB,EAAnC;EAAuCC;AAAvC,CAAD,KAAwD;EAC3E,MAAMC,SAAS,GAAG,CAACD,SAAD,IAAcD,YAAd,GAA6BA,YAA7B,GAA4CD,GAA9D;EAEA,OAAOL,GAAI;AACb;AACA,kBAAkBQ,SAAU;AAC5B,UAAUP,cAAe;AACzB;AACA;AACA;AACA,GAPE;AAQD,CAXD;;AAaA,MAAMQ,iBAAiB,GAAGT,GAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CARA;AAUA,SAASE,aAAT,EAAwBC,YAAxB,EAAsCM,iBAAtC"}
1
+ {"version":3,"file":"index.js","names":["gql","pageDataFields","checkUrlQuery","getPageQuery","actions","get","getPublished","isPreview","getMethod","GET_ENTITY_SCHEMA"],"sources":["../../../src/application/query/index.js"],"sourcesContent":["import { gql } from '@apollo/client';\n\nconst pageDataFields = `\nid\nname\npreparedPageBuilderComponents\ncanonicalUrl\ncategory {\n id\n name\n}\ntags {\n id\n name\n}\nslug\nimage{\n id\n data\n url\n}\nformattedMetaTitle\nformattedMetaDescription\n__typename\ncacheControlMaxAge`;\n\nconst checkUrlQuery = gql`\n query checkUrl($url: String!) {\n checkUrl(url: $url) {\n itemId\n itemEntity\n urlTo,\n pageData: record {\n ...on ContentContentInterface {\n ${pageDataFields}\n }\n }\n }\n }\n`;\n\nconst getPageQuery = ({ actions: { get, getPublished } = {}, isPreview }) => {\n const getMethod = !isPreview && getPublished ? getPublished : get;\n\n return gql`\n query pageData($id: String!) {\n pageData: ${getMethod}(id: $id) {\n ${pageDataFields}\n url\n }\n }\n `;\n};\n\nconst GET_ENTITY_SCHEMA = gql`\n query getEntitySchema($id: String!) {\n entitySchema: getEntitySchema(id: $id) {\n id\n identifier\n actions\n }\n }\n`;\n\nexport { checkUrlQuery, getPageQuery, GET_ENTITY_SCHEMA };\n"],"mappings":"AAAA,SAASA,GAAT,QAAoB,gBAApB;AAEA,MAAMC,cAAc,GAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAtBA;AAwBA,MAAMC,aAAa,GAAGF,GAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAYC,cAAe;AAC3B;AACA;AACA;AACA;AACA,CAbA;;AAeA,MAAME,YAAY,GAAG,CAAC;EAAEC,OAAO,EAAE;IAAEC,GAAF;IAAOC;EAAP,IAAwB,EAAnC;EAAuCC;AAAvC,CAAD,KAAwD;EAC3E,MAAMC,SAAS,GAAG,CAACD,SAAD,IAAcD,YAAd,GAA6BA,YAA7B,GAA4CD,GAA9D;EAEA,OAAOL,GAAI;AACb;AACA,kBAAkBQ,SAAU;AAC5B,UAAUP,cAAe;AACzB;AACA;AACA;AACA,GAPE;AAQD,CAXD;;AAaA,MAAMQ,iBAAiB,GAAGT,GAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CARA;AAUA,SAASE,aAAT,EAAwBC,YAAxB,EAAsCM,iBAAtC"}
@@ -43,8 +43,8 @@ const checkUrl = async props => {
43
43
  }
44
44
 
45
45
  if (res) {
46
- res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');
47
46
  const handler = handleStaticRoutes.getHandler(asPath);
47
+ res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');
48
48
 
49
49
  if (handler) {
50
50
  return handler(props);
@@ -123,7 +123,7 @@ const doUrlCheck = async ({
123
123
  itemId,
124
124
  itemEntity,
125
125
  urlTo,
126
- pageData
126
+ pageData = {}
127
127
  }
128
128
  }
129
129
  } = await apolloClient.query({
@@ -132,6 +132,13 @@ const doUrlCheck = async ({
132
132
  url
133
133
  }
134
134
  });
135
+ const {
136
+ cacheControlMaxAge = null
137
+ } = pageData;
138
+
139
+ if (res && cacheControlMaxAge !== null && cacheControlMaxAge >= 0) {
140
+ res.setHeader('Cache-Control', `max-age=${cacheControlMaxAge}`);
141
+ }
135
142
 
136
143
  if (urlTo && urlTo !== url) {
137
144
  if (res) {
@@ -181,7 +188,7 @@ const handleError = (err, res, handle404Error, blazeApp) => {
181
188
  });
182
189
  res.write('500 Internal Server Error\n');
183
190
  res.end();
184
- } else if (handle404Error && err.graphQLErrors.length) {
191
+ } else if (handle404Error && err.graphQLErrors && err.graphQLErrors.length) {
185
192
  res.statusCode = NOT_FOUND_STATUS_CODE;
186
193
  return {
187
194
  errorCode: NOT_FOUND_STATUS_CODE
@@ -1 +1 @@
1
- {"version":3,"file":"check-url.js","names":["parseUrl","getUnpublishedEntityName","getAccessToken","checkAccessToken","HTTPS","DOUBLE_SLASH","COLON","NOT_FOUND_STATUS_CODE","checkUrlQuery","checkParent","checkPreviewUrl","handleStaticRoutes","getPageData","getRootSelectorClasses","getRootClassesLimit","Number","process","env","BLAZE_ROOT_SELECTOR_CLASSES_LIMIT","hasAuth","req","headers","cookie","checkUrl","props","asPath","apolloClient","res","query","blazeApp","fullUrl","getFullUrl","url","BLAZE_STATUS_URL","isStatusPage","setHeader","BLAZE_CACHE_CONTROL_HEADER","handler","getHandler","previewData","disableSsr","getPreviewData","urlCheckOptions","result","doUrlCheck","handle404Error","pageData","rootSelectorClasses","isPreview","getHost","BLAZE_FRONTEND_HOST","host","location","protocol","hostname","port","window","urlPort","data","itemId","itemEntity","urlTo","variables","writeHead","Location","end","href","err","parentPATH","handleError","events","emit","error","networkError","write","graphQLErrors","length","statusCode","errorCode"],"sources":["../../src/helpers/check-url.js"],"sourcesContent":["import { parseUrl } from 'query-string';\nimport { getUnpublishedEntityName } from '@blaze-cms/react-page-builder';\nimport { getAccessToken, 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 hasAuth = req => {\n if (!req) return false;\n return !!getAccessToken(req.headers.cookie);\n};\n\nconst checkUrl = async props => {\n const { asPath, apolloClient, res, req, query, blazeApp } = 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 if (res) {\n res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');\n const handler = handleStaticRoutes.getHandler(asPath);\n if (handler) {\n return handler(props);\n }\n }\n\n const previewData = checkPreviewUrl(url, query);\n\n if (!previewData && hasAuth(req)) return { disableSsr: true };\n\n await checkAccessToken(apolloClient);\n\n if (previewData) return getPreviewData(previewData, apolloClient);\n const urlCheckOptions = { asPath, url, apolloClient, res };\n\n const result = await doUrlCheck({\n ...urlCheckOptions,\n handle404Error: true,\n blazeApp\n });\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 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.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","getAccessToken","checkAccessToken","HTTPS","DOUBLE_SLASH","COLON","NOT_FOUND_STATUS_CODE","checkUrlQuery","checkParent","checkPreviewUrl","handleStaticRoutes","getPageData","getRootSelectorClasses","getRootClassesLimit","Number","process","env","BLAZE_ROOT_SELECTOR_CLASSES_LIMIT","hasAuth","req","headers","cookie","checkUrl","props","asPath","apolloClient","res","query","blazeApp","fullUrl","getFullUrl","url","BLAZE_STATUS_URL","isStatusPage","handler","getHandler","setHeader","BLAZE_CACHE_CONTROL_HEADER","previewData","disableSsr","getPreviewData","urlCheckOptions","result","doUrlCheck","handle404Error","pageData","rootSelectorClasses","isPreview","getHost","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","length","statusCode","errorCode"],"sources":["../../src/helpers/check-url.js"],"sourcesContent":["import { parseUrl } from 'query-string';\nimport { getUnpublishedEntityName } from '@blaze-cms/react-page-builder';\nimport { getAccessToken, 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 hasAuth = req => {\n if (!req) return false;\n return !!getAccessToken(req.headers.cookie);\n};\n\nconst checkUrl = async props => {\n const { asPath, apolloClient, res, req, query, blazeApp } = 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 res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');\n if (handler) {\n return handler(props);\n }\n }\n\n const previewData = checkPreviewUrl(url, query);\n\n if (!previewData && hasAuth(req)) return { disableSsr: true };\n\n await checkAccessToken(apolloClient);\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;\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/nextjs-tools",
3
- "version": "0.124.0-alpha.15",
3
+ "version": "0.124.0-alpha.18",
4
4
  "description": "Blaze nextjs tools",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -34,12 +34,12 @@
34
34
  "@blaze-cms/core-ui": "^0.121.0",
35
35
  "@blaze-cms/nextjs-components": "^0.124.0-alpha.2",
36
36
  "@blaze-cms/plugin-auth-fe": "^0.121.0",
37
- "@blaze-cms/plugin-google-maps-fe": "^0.124.0-alpha.15",
38
- "@blaze-cms/plugin-gtm-fe": "^0.124.0-alpha.15",
39
- "@blaze-cms/plugin-page-builder-fe": "^0.124.0-alpha.15",
37
+ "@blaze-cms/plugin-google-maps-fe": "^0.124.0-alpha.18",
38
+ "@blaze-cms/plugin-gtm-fe": "^0.124.0-alpha.18",
39
+ "@blaze-cms/plugin-page-builder-fe": "^0.124.0-alpha.18",
40
40
  "@blaze-cms/plugin-preview-fe": "^0.121.0",
41
41
  "@blaze-cms/plugin-search-ui": "^0.124.0-alpha.2",
42
- "@blaze-cms/react-page-builder": "^0.124.0-alpha.15",
42
+ "@blaze-cms/react-page-builder": "^0.124.0-alpha.18",
43
43
  "@blaze-cms/setup-ui": "^0.92.0",
44
44
  "autoprefixer": "^10.2.3",
45
45
  "core-js": "^3.2.1",
@@ -67,5 +67,5 @@
67
67
  "lib/*",
68
68
  "lib-es/*"
69
69
  ],
70
- "gitHead": "1a87bfbc194ed72d8bf5ff39904bea276355dcc2"
70
+ "gitHead": "980811c31a73655a767e58ba8d465ce5604e3055"
71
71
  }
@@ -21,14 +21,15 @@ image{
21
21
  }
22
22
  formattedMetaTitle
23
23
  formattedMetaDescription
24
- __typename`;
24
+ __typename
25
+ cacheControlMaxAge`;
25
26
 
26
27
  const checkUrlQuery = gql`
27
28
  query checkUrl($url: String!) {
28
29
  checkUrl(url: $url) {
29
30
  itemId
30
31
  itemEntity
31
- urlTo
32
+ urlTo,
32
33
  pageData: record {
33
34
  ...on ContentContentInterface {
34
35
  ${pageDataFields}
@@ -24,9 +24,10 @@ const checkUrl = async props => {
24
24
  if (process.env.BLAZE_STATUS_URL && url === process.env.BLAZE_STATUS_URL) {
25
25
  return { isStatusPage: true };
26
26
  }
27
+
27
28
  if (res) {
28
- res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');
29
29
  const handler = handleStaticRoutes.getHandler(asPath);
30
+ res.setHeader('Cache-Control', process.env.BLAZE_CACHE_CONTROL_HEADER || '');
30
31
  if (handler) {
31
32
  return handler(props);
32
33
  }
@@ -40,13 +41,11 @@ const checkUrl = async props => {
40
41
 
41
42
  if (previewData) return getPreviewData(previewData, apolloClient);
42
43
  const urlCheckOptions = { asPath, url, apolloClient, res };
43
-
44
44
  const result = await doUrlCheck({
45
45
  ...urlCheckOptions,
46
46
  handle404Error: true,
47
47
  blazeApp
48
48
  });
49
-
50
49
  return { ...result, fullUrl } || {};
51
50
  };
52
51
 
@@ -79,7 +78,7 @@ const doUrlCheck = async ({ url, apolloClient, res, handle404Error, blazeApp })
79
78
  try {
80
79
  const {
81
80
  data: {
82
- checkUrl: { itemId, itemEntity, urlTo, pageData }
81
+ checkUrl: { itemId, itemEntity, urlTo, pageData = {} }
83
82
  }
84
83
  } = await apolloClient.query({
85
84
  query: checkUrlQuery,
@@ -88,6 +87,11 @@ const doUrlCheck = async ({ url, apolloClient, res, handle404Error, blazeApp })
88
87
  }
89
88
  });
90
89
 
90
+ const { cacheControlMaxAge = null } = pageData;
91
+ if (res && cacheControlMaxAge !== null && cacheControlMaxAge >= 0) {
92
+ res.setHeader('Cache-Control', `max-age=${cacheControlMaxAge}`);
93
+ }
94
+
91
95
  if (urlTo && urlTo !== url) {
92
96
  if (res) {
93
97
  res.writeHead(301, { Location: urlTo });
@@ -125,7 +129,7 @@ const handleError = (err, res, handle404Error, blazeApp) => {
125
129
  res.writeHead(500, { 'Content-Type': 'text/plain' });
126
130
  res.write('500 Internal Server Error\n');
127
131
  res.end();
128
- } else if (handle404Error && err.graphQLErrors.length) {
132
+ } else if (handle404Error && err.graphQLErrors && err.graphQLErrors.length) {
129
133
  res.statusCode = NOT_FOUND_STATUS_CODE;
130
134
  return { errorCode: NOT_FOUND_STATUS_CODE };
131
135
  }