@blaze-cms/nextjs-tools 0.146.0-alpha.56 → 0.146.0-alpha.59
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 +19 -0
- package/README.md +6 -0
- package/lib/constants.js +5 -1
- package/lib/constants.js.map +1 -1
- package/lib/helpers/check-url.js +74 -35
- package/lib/helpers/check-url.js.map +1 -1
- package/lib-es/constants.js +5 -1
- package/lib-es/constants.js.map +1 -1
- package/lib-es/helpers/check-url.js +77 -30
- package/lib-es/helpers/check-url.js.map +1 -1
- package/package.json +7 -7
- package/src/constants.js +5 -1
- package/src/helpers/check-url.js +59 -24
- package/tests/unit/src/__snapshots__/constants.test.js.snap +3 -0
- package/tests/unit/src/helpers/check-url.test.js +37 -12
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.146.0-alpha.59](https://github.com/thebyte9/blaze/compare/v0.146.0-alpha.58...v0.146.0-alpha.59) (2025-07-29)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* add support for custom 404 page using custom error 404 slug and fallback rendering ([#4839](https://github.com/thebyte9/blaze/issues/4839)) ([67554a3](https://github.com/thebyte9/blaze/commit/67554a3febc2871d73bd127753edf3b918a1a0b7))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# [0.146.0-alpha.57](https://github.com/thebyte9/blaze/compare/v0.146.0-alpha.56...v0.146.0-alpha.57) (2025-07-14)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package @blaze-cms/nextjs-tools
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
# [0.146.0-alpha.56](https://github.com/thebyte9/blaze/compare/v0.146.0-alpha.55...v0.146.0-alpha.56) (2025-07-09)
|
|
7
26
|
|
|
8
27
|
|
package/README.md
CHANGED
|
@@ -81,6 +81,12 @@ If you want to make it stricter or more open you can override the default with t
|
|
|
81
81
|
|
|
82
82
|
**Note** If you make it more open this could increase load on the frontend/api services as more paths will be checked with the api so if bot is targetting the server the load on both services will be higher.
|
|
83
83
|
|
|
84
|
+
## Custom error not found (404) page
|
|
85
|
+
|
|
86
|
+
By default if a url is not found by the API the frontend app will show a simple error message saying "Page not found".
|
|
87
|
+
|
|
88
|
+
If is possible to create a custom error page by adding a page with the slug "custom-error-404". The frontend will check the api for this url and render the page if it is set. The requested url will still be shown in the browser and appropriate 404 HTTP header.
|
|
89
|
+
|
|
84
90
|
## Environment variables
|
|
85
91
|
|
|
86
92
|
| Name | Description | Type | Default |
|
package/lib/constants.js
CHANGED
|
@@ -64,6 +64,9 @@ var NOT_FOUND_STATUS_CODE = 404;
|
|
|
64
64
|
var ROOT_SELECTOR_CLASS_PREFIX = 'root-selector';
|
|
65
65
|
var ROOT_SELECTOR_SEPARATOR = '--';
|
|
66
66
|
var RESOLVER_CONTAINER_CLASS = 'resolver-container';
|
|
67
|
+
var ERROR_URLS = {
|
|
68
|
+
custom404: '/custom-error-404'
|
|
69
|
+
};
|
|
67
70
|
module.exports = {
|
|
68
71
|
APPLE_TAGS: APPLE_TAGS,
|
|
69
72
|
ACTIVE_META_TAGS: ACTIVE_META_TAGS,
|
|
@@ -92,6 +95,7 @@ module.exports = {
|
|
|
92
95
|
ROOT_SELECTOR_CLASS_PREFIX: ROOT_SELECTOR_CLASS_PREFIX,
|
|
93
96
|
ROOT_SELECTOR_SEPARATOR: ROOT_SELECTOR_SEPARATOR,
|
|
94
97
|
RESOLVER_CONTAINER_CLASS: RESOLVER_CONTAINER_CLASS,
|
|
95
|
-
BLAZE_X_FRAME_OPTIONS_DEFAULT: BLAZE_X_FRAME_OPTIONS_DEFAULT
|
|
98
|
+
BLAZE_X_FRAME_OPTIONS_DEFAULT: BLAZE_X_FRAME_OPTIONS_DEFAULT,
|
|
99
|
+
ERROR_URLS: ERROR_URLS
|
|
96
100
|
};
|
|
97
101
|
//# sourceMappingURL=constants.js.map
|
package/lib/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["ACTIVE_META_TAGS","BLAZE_X_FRAME_OPTIONS_DEFAULT","META_TAGS_LOOKUP","description","apiKey","htmlTagName","tagKeyName","contentDataKeyName","canonical","PB_TYPE_IMAGE","PB_TYPE_TEXTBLOCK","PB_TYPE_CAROUSEL","SEARCH_FILTER","COLON","DOUBLE_SLASH","HTTPS","DEFAULT_ROUTE_REGEX","ROUTE_REGEX","process","env","BLAZE_ROUTE_REGEX","RegExp","PREVIEW_REGEX","PREVIEW_MODE","GTM_STRING","DEBUG_LOGO","SRC","ALT","PUBLISHED_","RESPONSE_404","SITEMAP_STORE_KEY","ROUTE_PATTERN_SITEMAP","BLAZE_ROUTE_PATTERN_SITEMAP","sitemapFilePrefix","BLAZE_CONTENT_SITEMAP_URL_PREFIX","ROUTE_PATTERN_SITEMAP_FILE_REGEX","concat","ROUTE_PATTERN_ROBOTS_TXT","BLAZE_STATIC_ROUTE_STORE_KEY","STATIC_FILE_FORWARD_HEADERS","APPLE_TAGS","href","rel","sizes","NOT_FOUND_STATUS_CODE","ROOT_SELECTOR_CLASS_PREFIX","ROOT_SELECTOR_SEPARATOR","RESOLVER_CONTAINER_CLASS","module","exports"],"sources":["../src/constants.js"],"sourcesContent":["const ACTIVE_META_TAGS = ['description', 'canonical'];\nconst BLAZE_X_FRAME_OPTIONS_DEFAULT = 'SAMEORIGIN';\n\nconst META_TAGS_LOOKUP = {\n description: {\n apiKey: 'metaDescription',\n htmlTagName: 'meta',\n tagKeyName: 'name',\n contentDataKeyName: 'content'\n },\n canonical: {\n apiKey: 'canonicalUrl',\n htmlTagName: 'link',\n tagKeyName: 'rel',\n contentDataKeyName: 'href'\n }\n};\n\nconst PB_TYPE_IMAGE = 'image';\nconst PB_TYPE_TEXTBLOCK = 'textblock';\nconst PB_TYPE_CAROUSEL = 'carousel';\nconst SEARCH_FILTER = 'searchfilter';\nconst COLON = ':';\nconst DOUBLE_SLASH = '//';\nconst HTTPS = 'https://';\n\nconst DEFAULT_ROUTE_REGEX = /^\\/[a-z0-9€_\\/]+(?:[-\\/\\.]{1,2}[a-z0-9\\/€_\\/]+)*$|^\\/$/i;\nconst ROUTE_REGEX = process.env.BLAZE_ROUTE_REGEX\n ? new RegExp(process.env.BLAZE_ROUTE_REGEX)\n : DEFAULT_ROUTE_REGEX;\nconst PREVIEW_REGEX = /^(\\/_preview)/;\nconst PREVIEW_MODE = 'Preview Mode';\nconst GTM_STRING = 'gtm';\n\nconst DEBUG_LOGO = {\n SRC: 'https://images.thisisblaze.com/logo-small-27-40.png',\n ALT: 'blaze-logo'\n};\n\nconst PUBLISHED_ = 'published_';\n\nconst RESPONSE_404 = '404 Not Found\\n';\n\nconst SITEMAP_STORE_KEY = 'default_sitemap';\nconst ROUTE_PATTERN_SITEMAP = process.env.BLAZE_ROUTE_PATTERN_SITEMAP || '/sitemap.xml';\nconst sitemapFilePrefix = process.env.BLAZE_CONTENT_SITEMAP_URL_PREFIX || 'sitemap';\nconst ROUTE_PATTERN_SITEMAP_FILE_REGEX = new RegExp(`/${sitemapFilePrefix}/.*\\.xml`);\nconst ROUTE_PATTERN_ROBOTS_TXT = '/robots.txt';\nconst BLAZE_STATIC_ROUTE_STORE_KEY = 'default';\n\nconst STATIC_FILE_FORWARD_HEADERS = ['content-length', 'last-modified', 'etag'];\n\nconst APPLE_TAGS = [\n { href: '/static/icons/touch-icon-iphone.png', rel: 'apple-touch-icon' },\n { href: '/static/icons/touch-icon-ipad.png', rel: 'apple-touch-icon', sizes: '152x152' },\n { href: '/static/icons/touch-icon-iphone-retina.png', rel: 'apple-touch-icon', sizes: '180x180' },\n { href: '/static/icons/touch-icon-ipad-retina.png', rel: 'apple-touch-icon', sizes: '167x167' }\n];\n\nconst NOT_FOUND_STATUS_CODE = 404;\n\nconst ROOT_SELECTOR_CLASS_PREFIX = 'root-selector';\nconst ROOT_SELECTOR_SEPARATOR = '--';\nconst RESOLVER_CONTAINER_CLASS = 'resolver-container';\n\nmodule.exports = {\n APPLE_TAGS,\n ACTIVE_META_TAGS,\n COLON,\n DOUBLE_SLASH,\n GTM_STRING,\n HTTPS,\n META_TAGS_LOOKUP,\n SEARCH_FILTER,\n PB_TYPE_IMAGE,\n PB_TYPE_TEXTBLOCK,\n PB_TYPE_CAROUSEL,\n PREVIEW_MODE,\n ROUTE_REGEX,\n PREVIEW_REGEX,\n DEBUG_LOGO,\n PUBLISHED_,\n RESPONSE_404,\n NOT_FOUND_STATUS_CODE,\n SITEMAP_STORE_KEY,\n ROUTE_PATTERN_SITEMAP,\n ROUTE_PATTERN_SITEMAP_FILE_REGEX,\n ROUTE_PATTERN_ROBOTS_TXT,\n BLAZE_STATIC_ROUTE_STORE_KEY,\n STATIC_FILE_FORWARD_HEADERS,\n ROOT_SELECTOR_CLASS_PREFIX,\n ROOT_SELECTOR_SEPARATOR,\n RESOLVER_CONTAINER_CLASS,\n BLAZE_X_FRAME_OPTIONS_DEFAULT\n};\n"],"mappings":";;;;;AAAA,IAAMA,gBAAgB,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC;AACrD,IAAMC,6BAA6B,GAAG,YAAY;AAElD,IAAMC,gBAAgB,GAAG;EACvBC,WAAW,EAAE;IACXC,MAAM,EAAE,iBAAiB;IACzBC,WAAW,EAAE,MAAM;IACnBC,UAAU,EAAE,MAAM;IAClBC,kBAAkB,EAAE;EACtB,CAAC;EACDC,SAAS,EAAE;IACTJ,MAAM,EAAE,cAAc;IACtBC,WAAW,EAAE,MAAM;IACnBC,UAAU,EAAE,KAAK;IACjBC,kBAAkB,EAAE;EACtB;AACF,CAAC;AAED,IAAME,aAAa,GAAG,OAAO;AAC7B,IAAMC,iBAAiB,GAAG,WAAW;AACrC,IAAMC,gBAAgB,GAAG,UAAU;AACnC,IAAMC,aAAa,GAAG,cAAc;AACpC,IAAMC,KAAK,GAAG,GAAG;AACjB,IAAMC,YAAY,GAAG,IAAI;AACzB,IAAMC,KAAK,GAAG,UAAU;AAExB,IAAMC,mBAAmB,GAAG,yDAAyD;AACrF,IAAMC,WAAW,GAAGC,OAAO,CAACC,GAAG,CAACC,iBAAiB,GAC7C,IAAIC,MAAM,CAACH,OAAO,CAACC,GAAG,CAACC,iBAAiB,CAAC,GACzCJ,mBAAmB;AACvB,IAAMM,aAAa,GAAG,eAAe;AACrC,IAAMC,YAAY,GAAG,cAAc;AACnC,IAAMC,UAAU,GAAG,KAAK;AAExB,IAAMC,UAAU,GAAG;EACjBC,GAAG,EAAE,qDAAqD;EAC1DC,GAAG,EAAE;AACP,CAAC;AAED,IAAMC,UAAU,GAAG,YAAY;AAE/B,IAAMC,YAAY,GAAG,iBAAiB;AAEtC,IAAMC,iBAAiB,GAAG,iBAAiB;AAC3C,IAAMC,qBAAqB,GAAGb,OAAO,CAACC,GAAG,CAACa,2BAA2B,IAAI,cAAc;AACvF,IAAMC,iBAAiB,GAAGf,OAAO,CAACC,GAAG,CAACe,gCAAgC,IAAI,SAAS;AACnF,IAAMC,gCAAgC,GAAG,IAAId,MAAM,KAAAe,MAAA,CAAKH,iBAAiB,YAAU,CAAC;AACpF,IAAMI,wBAAwB,GAAG,aAAa;AAC9C,IAAMC,4BAA4B,GAAG,SAAS;AAE9C,IAAMC,2BAA2B,GAAG,CAAC,gBAAgB,EAAE,eAAe,EAAE,MAAM,CAAC;AAE/E,IAAMC,UAAU,GAAG,CACjB;EAAEC,IAAI,EAAE,qCAAqC;EAAEC,GAAG,EAAE;AAAmB,CAAC,EACxE;EAAED,IAAI,EAAE,mCAAmC;EAAEC,GAAG,EAAE,kBAAkB;EAAEC,KAAK,EAAE;AAAU,CAAC,EACxF;EAAEF,IAAI,EAAE,4CAA4C;EAAEC,GAAG,EAAE,kBAAkB;EAAEC,KAAK,EAAE;AAAU,CAAC,EACjG;EAAEF,IAAI,EAAE,0CAA0C;EAAEC,GAAG,EAAE,kBAAkB;EAAEC,KAAK,EAAE;AAAU,CAAC,CAChG;AAED,IAAMC,qBAAqB,GAAG,GAAG;AAEjC,IAAMC,0BAA0B,GAAG,eAAe;AAClD,IAAMC,uBAAuB,GAAG,IAAI;AACpC,IAAMC,wBAAwB,GAAG,oBAAoB;
|
|
1
|
+
{"version":3,"file":"constants.js","names":["ACTIVE_META_TAGS","BLAZE_X_FRAME_OPTIONS_DEFAULT","META_TAGS_LOOKUP","description","apiKey","htmlTagName","tagKeyName","contentDataKeyName","canonical","PB_TYPE_IMAGE","PB_TYPE_TEXTBLOCK","PB_TYPE_CAROUSEL","SEARCH_FILTER","COLON","DOUBLE_SLASH","HTTPS","DEFAULT_ROUTE_REGEX","ROUTE_REGEX","process","env","BLAZE_ROUTE_REGEX","RegExp","PREVIEW_REGEX","PREVIEW_MODE","GTM_STRING","DEBUG_LOGO","SRC","ALT","PUBLISHED_","RESPONSE_404","SITEMAP_STORE_KEY","ROUTE_PATTERN_SITEMAP","BLAZE_ROUTE_PATTERN_SITEMAP","sitemapFilePrefix","BLAZE_CONTENT_SITEMAP_URL_PREFIX","ROUTE_PATTERN_SITEMAP_FILE_REGEX","concat","ROUTE_PATTERN_ROBOTS_TXT","BLAZE_STATIC_ROUTE_STORE_KEY","STATIC_FILE_FORWARD_HEADERS","APPLE_TAGS","href","rel","sizes","NOT_FOUND_STATUS_CODE","ROOT_SELECTOR_CLASS_PREFIX","ROOT_SELECTOR_SEPARATOR","RESOLVER_CONTAINER_CLASS","ERROR_URLS","custom404","module","exports"],"sources":["../src/constants.js"],"sourcesContent":["const ACTIVE_META_TAGS = ['description', 'canonical'];\nconst BLAZE_X_FRAME_OPTIONS_DEFAULT = 'SAMEORIGIN';\n\nconst META_TAGS_LOOKUP = {\n description: {\n apiKey: 'metaDescription',\n htmlTagName: 'meta',\n tagKeyName: 'name',\n contentDataKeyName: 'content'\n },\n canonical: {\n apiKey: 'canonicalUrl',\n htmlTagName: 'link',\n tagKeyName: 'rel',\n contentDataKeyName: 'href'\n }\n};\n\nconst PB_TYPE_IMAGE = 'image';\nconst PB_TYPE_TEXTBLOCK = 'textblock';\nconst PB_TYPE_CAROUSEL = 'carousel';\nconst SEARCH_FILTER = 'searchfilter';\nconst COLON = ':';\nconst DOUBLE_SLASH = '//';\nconst HTTPS = 'https://';\n\nconst DEFAULT_ROUTE_REGEX = /^\\/[a-z0-9€_\\/]+(?:[-\\/\\.]{1,2}[a-z0-9\\/€_\\/]+)*$|^\\/$/i;\nconst ROUTE_REGEX = process.env.BLAZE_ROUTE_REGEX\n ? new RegExp(process.env.BLAZE_ROUTE_REGEX)\n : DEFAULT_ROUTE_REGEX;\nconst PREVIEW_REGEX = /^(\\/_preview)/;\nconst PREVIEW_MODE = 'Preview Mode';\nconst GTM_STRING = 'gtm';\n\nconst DEBUG_LOGO = {\n SRC: 'https://images.thisisblaze.com/logo-small-27-40.png',\n ALT: 'blaze-logo'\n};\n\nconst PUBLISHED_ = 'published_';\n\nconst RESPONSE_404 = '404 Not Found\\n';\n\nconst SITEMAP_STORE_KEY = 'default_sitemap';\nconst ROUTE_PATTERN_SITEMAP = process.env.BLAZE_ROUTE_PATTERN_SITEMAP || '/sitemap.xml';\nconst sitemapFilePrefix = process.env.BLAZE_CONTENT_SITEMAP_URL_PREFIX || 'sitemap';\nconst ROUTE_PATTERN_SITEMAP_FILE_REGEX = new RegExp(`/${sitemapFilePrefix}/.*\\.xml`);\nconst ROUTE_PATTERN_ROBOTS_TXT = '/robots.txt';\nconst BLAZE_STATIC_ROUTE_STORE_KEY = 'default';\n\nconst STATIC_FILE_FORWARD_HEADERS = ['content-length', 'last-modified', 'etag'];\n\nconst APPLE_TAGS = [\n { href: '/static/icons/touch-icon-iphone.png', rel: 'apple-touch-icon' },\n { href: '/static/icons/touch-icon-ipad.png', rel: 'apple-touch-icon', sizes: '152x152' },\n { href: '/static/icons/touch-icon-iphone-retina.png', rel: 'apple-touch-icon', sizes: '180x180' },\n { href: '/static/icons/touch-icon-ipad-retina.png', rel: 'apple-touch-icon', sizes: '167x167' }\n];\n\nconst NOT_FOUND_STATUS_CODE = 404;\n\nconst ROOT_SELECTOR_CLASS_PREFIX = 'root-selector';\nconst ROOT_SELECTOR_SEPARATOR = '--';\nconst RESOLVER_CONTAINER_CLASS = 'resolver-container';\nconst ERROR_URLS = {\n custom404: '/custom-error-404'\n};\n\nmodule.exports = {\n APPLE_TAGS,\n ACTIVE_META_TAGS,\n COLON,\n DOUBLE_SLASH,\n GTM_STRING,\n HTTPS,\n META_TAGS_LOOKUP,\n SEARCH_FILTER,\n PB_TYPE_IMAGE,\n PB_TYPE_TEXTBLOCK,\n PB_TYPE_CAROUSEL,\n PREVIEW_MODE,\n ROUTE_REGEX,\n PREVIEW_REGEX,\n DEBUG_LOGO,\n PUBLISHED_,\n RESPONSE_404,\n NOT_FOUND_STATUS_CODE,\n SITEMAP_STORE_KEY,\n ROUTE_PATTERN_SITEMAP,\n ROUTE_PATTERN_SITEMAP_FILE_REGEX,\n ROUTE_PATTERN_ROBOTS_TXT,\n BLAZE_STATIC_ROUTE_STORE_KEY,\n STATIC_FILE_FORWARD_HEADERS,\n ROOT_SELECTOR_CLASS_PREFIX,\n ROOT_SELECTOR_SEPARATOR,\n RESOLVER_CONTAINER_CLASS,\n BLAZE_X_FRAME_OPTIONS_DEFAULT,\n ERROR_URLS\n};\n"],"mappings":"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","ignoreList":[]}
|
package/lib/helpers/check-url.js
CHANGED
|
@@ -160,12 +160,12 @@ var getFullUrl = function getFullUrl(req, asPath) {
|
|
|
160
160
|
return "".concat(protocol).concat(_constants.DOUBLE_SLASH).concat(hostname).concat(urlPort).concat(asPath);
|
|
161
161
|
};
|
|
162
162
|
var doUrlCheck = /*#__PURE__*/function () {
|
|
163
|
-
var
|
|
164
|
-
var asPath, url, apolloClient, res,
|
|
163
|
+
var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(args) {
|
|
164
|
+
var asPath, url, apolloClient, res, blazeApp, _args$errorCheckCode, errorCheckCode, _yield$apolloClient$q, _yield$apolloClient$q2, _yield$apolloClient$q3, _yield$apolloClient$q4, _yield$apolloClient$q5, itemId, itemEntity, urlTo, _yield$apolloClient$q6, pageData, rootSelectorClasses;
|
|
165
165
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
166
166
|
while (1) switch (_context3.prev = _context3.next) {
|
|
167
167
|
case 0:
|
|
168
|
-
asPath =
|
|
168
|
+
asPath = args.asPath, url = args.url, apolloClient = args.apolloClient, res = args.res, blazeApp = args.blazeApp, _args$errorCheckCode = args.errorCheckCode, errorCheckCode = _args$errorCheckCode === void 0 ? false : _args$errorCheckCode;
|
|
169
169
|
_context3.prev = 1;
|
|
170
170
|
_context3.next = 4;
|
|
171
171
|
return apolloClient.query({
|
|
@@ -185,53 +185,44 @@ var doUrlCheck = /*#__PURE__*/function () {
|
|
|
185
185
|
urlTo = _yield$apolloClient$q5.urlTo;
|
|
186
186
|
_yield$apolloClient$q6 = _yield$apolloClient$q5.pageData;
|
|
187
187
|
pageData = _yield$apolloClient$q6 === void 0 ? {} : _yield$apolloClient$q6;
|
|
188
|
-
|
|
189
|
-
if (
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
if (!(urlTo && urlTo !== url)) {
|
|
193
|
-
_context3.next = 20;
|
|
188
|
+
setCustomCacheControlHeaders(pageData, res);
|
|
189
|
+
if (!(urlTo && (urlTo !== url || errorCheckCode))) {
|
|
190
|
+
_context3.next = 17;
|
|
194
191
|
break;
|
|
195
192
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
193
|
+
return _context3.abrupt("return", handleRedirect({
|
|
194
|
+
errorCheckCode: errorCheckCode,
|
|
195
|
+
url: url,
|
|
196
|
+
urlTo: urlTo,
|
|
197
|
+
asPath: asPath,
|
|
198
|
+
res: res
|
|
199
|
+
}));
|
|
200
|
+
case 17:
|
|
203
201
|
rootSelectorClasses = (0, _getRootSelectorClasses["default"])(url, getRootClassesLimit());
|
|
202
|
+
if (errorCheckCode) {
|
|
203
|
+
blazeApp.events.emit('monitor:log', {
|
|
204
|
+
message: "Serving custom ".concat(errorCheckCode, " page")
|
|
205
|
+
});
|
|
206
|
+
if (res) res.statusCode = errorCheckCode;
|
|
207
|
+
}
|
|
204
208
|
return _context3.abrupt("return", {
|
|
205
209
|
pageData: pageData,
|
|
206
210
|
rootSelectorClasses: rootSelectorClasses,
|
|
207
211
|
itemId: itemId,
|
|
208
212
|
itemEntity: (0, _reactPageBuilder.getUnpublishedEntityName)(itemEntity)
|
|
209
213
|
});
|
|
210
|
-
case
|
|
211
|
-
_context3.prev =
|
|
214
|
+
case 22:
|
|
215
|
+
_context3.prev = 22;
|
|
212
216
|
_context3.t0 = _context3["catch"](1);
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
break;
|
|
216
|
-
}
|
|
217
|
-
return _context3.abrupt("return", handleError(_context3.t0, res, handle404Error, blazeApp));
|
|
218
|
-
case 28:
|
|
219
|
-
parentPATH = (0, _checkParent["default"])(url);
|
|
220
|
-
if (!(handle404Error && parentPATH)) {
|
|
221
|
-
_context3.next = 31;
|
|
222
|
-
break;
|
|
223
|
-
}
|
|
224
|
-
return _context3.abrupt("return", doRedirect(res, parentPATH));
|
|
225
|
-
case 31:
|
|
226
|
-
return _context3.abrupt("return", handleError(_context3.t0, res, handle404Error, blazeApp));
|
|
227
|
-
case 32:
|
|
217
|
+
return _context3.abrupt("return", handleUrlError(_context3.t0, args));
|
|
218
|
+
case 25:
|
|
228
219
|
case "end":
|
|
229
220
|
return _context3.stop();
|
|
230
221
|
}
|
|
231
|
-
}, _callee3, null, [[1,
|
|
222
|
+
}, _callee3, null, [[1, 22]]);
|
|
232
223
|
}));
|
|
233
224
|
return function doUrlCheck(_x4) {
|
|
234
|
-
return
|
|
225
|
+
return _ref4.apply(this, arguments);
|
|
235
226
|
};
|
|
236
227
|
}();
|
|
237
228
|
var handleError = function handleError(err, res, handle404Error, blazeApp) {
|
|
@@ -253,6 +244,33 @@ var handleError = function handleError(err, res, handle404Error, blazeApp) {
|
|
|
253
244
|
}
|
|
254
245
|
return {};
|
|
255
246
|
};
|
|
247
|
+
function handleRedirect(_ref5) {
|
|
248
|
+
var errorCheckCode = _ref5.errorCheckCode,
|
|
249
|
+
url = _ref5.url,
|
|
250
|
+
urlTo = _ref5.urlTo,
|
|
251
|
+
asPath = _ref5.asPath,
|
|
252
|
+
res = _ref5.res;
|
|
253
|
+
if (errorCheckCode) {
|
|
254
|
+
var errorMessage = "Cannot redirect ".concat(url);
|
|
255
|
+
var customError = new Error(errorMessage);
|
|
256
|
+
customError.graphQLErrors = [errorMessage];
|
|
257
|
+
throw customError;
|
|
258
|
+
}
|
|
259
|
+
var redirectUrl = urlTo;
|
|
260
|
+
if (process.env.BLAZE_DISABLE_REDIRECT_WITH_QUERY !== 'true') {
|
|
261
|
+
var queryString = asPath.split('?')[1];
|
|
262
|
+
redirectUrl = queryString ? "".concat(urlTo, "?").concat(queryString) : urlTo;
|
|
263
|
+
}
|
|
264
|
+
return doRedirect(res, redirectUrl);
|
|
265
|
+
}
|
|
266
|
+
function setCustomCacheControlHeaders(pageData, res) {
|
|
267
|
+
var _ref6 = pageData || {},
|
|
268
|
+
_ref6$cacheControlMax = _ref6.cacheControlMaxAge,
|
|
269
|
+
cacheControlMaxAge = _ref6$cacheControlMax === void 0 ? null : _ref6$cacheControlMax;
|
|
270
|
+
if (res && cacheControlMaxAge !== null && cacheControlMaxAge >= 0) {
|
|
271
|
+
res.setHeader('Cache-Control', "max-age=".concat(cacheControlMaxAge));
|
|
272
|
+
}
|
|
273
|
+
}
|
|
256
274
|
function doRedirect(res, redirectUrl) {
|
|
257
275
|
if (res) {
|
|
258
276
|
res.writeHead(301, {
|
|
@@ -266,5 +284,26 @@ function doRedirect(res, redirectUrl) {
|
|
|
266
284
|
redirecting: true
|
|
267
285
|
};
|
|
268
286
|
}
|
|
287
|
+
function handleUrlError(err, args) {
|
|
288
|
+
var asPath = args.asPath,
|
|
289
|
+
res = args.res,
|
|
290
|
+
handle404Error = args.handle404Error,
|
|
291
|
+
blazeApp = args.blazeApp,
|
|
292
|
+
errorCheckCode = args.errorCheckCode;
|
|
293
|
+
if (!err.graphQLErrors || !err.graphQLErrors.length) {
|
|
294
|
+
return handleError(err, res, handle404Error, blazeApp);
|
|
295
|
+
}
|
|
296
|
+
if (!errorCheckCode) {
|
|
297
|
+
return doUrlCheck(_objectSpread(_objectSpread({}, args), {}, {
|
|
298
|
+
url: _constants.ERROR_URLS.custom404,
|
|
299
|
+
errorCheckCode: _constants.NOT_FOUND_STATUS_CODE
|
|
300
|
+
}));
|
|
301
|
+
}
|
|
302
|
+
var parentPATH = (0, _checkParent["default"])(asPath);
|
|
303
|
+
if (handle404Error && parentPATH) {
|
|
304
|
+
return doRedirect(res, parentPATH);
|
|
305
|
+
}
|
|
306
|
+
return handleError(err, res, handle404Error, blazeApp);
|
|
307
|
+
}
|
|
269
308
|
var _default = exports["default"] = checkUrl;
|
|
270
309
|
//# sourceMappingURL=check-url.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-url.js","names":["_queryString","require","_reactPageBuilder","_coreAuthUi","_constants","_query","_checkParent","_interopRequireDefault","_checkPreviewUrl","_handleStaticRoutes","_getPageData","_getRootSelectorClasses","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_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","setHeader","BLAZE_X_FRAME_OPTIONS","BLAZE_X_FRAME_OPTIONS_DEFAULT","getHeader","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","_yield$apolloClient$q3","_yield$apolloClient$q4","_yield$apolloClient$q5","itemId","itemEntity","urlTo","_yield$apolloClient$q6","_ref6","_ref6$cacheControlMax","cacheControlMaxAge","redirectUrl","queryString","parentPATH","_callee3$","_context3","checkUrlQuery","variables","data","BLAZE_DISABLE_REDIRECT_WITH_QUERY","split","doRedirect","getUnpublishedEntityName","t0","graphQLErrors","handleError","checkParent","_x4","err","events","emit","error","networkError","writeHead","write","end","statusCode","NOT_FOUND_STATUS_CODE","errorCode","Location","href","redirecting","_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 {\n HTTPS,\n DOUBLE_SLASH,\n COLON,\n NOT_FOUND_STATUS_CODE,\n BLAZE_X_FRAME_OPTIONS_DEFAULT\n} 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 res.setHeader(\n 'X-Frame-Options',\n process.env.BLAZE_X_FRAME_OPTIONS || BLAZE_X_FRAME_OPTIONS_DEFAULT\n );\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: { checkUrl: { itemId, itemEntity, urlTo, pageData = {} } = {} } = {}\n } = await apolloClient.query({\n query: checkUrlQuery,\n variables: { url }\n });\n\n const { cacheControlMaxAge = null } = pageData || {};\n\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 return doRedirect(res, redirectUrl);\n }\n const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());\n return {\n pageData,\n rootSelectorClasses,\n itemId,\n itemEntity: getUnpublishedEntityName(itemEntity)\n };\n } catch (err) {\n if (!err.graphQLErrors || !err.graphQLErrors.length) {\n return handleError(err, res, handle404Error, blazeApp);\n }\n\n const parentPATH = checkParent(url);\n if (handle404Error && parentPATH) {\n return doRedirect(res, parentPATH);\n }\n\n return handleError(err, res, handle404Error, blazeApp);\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};\n\nfunction doRedirect(res, redirectUrl) {\n if (res) {\n res.writeHead(301, { Location: redirectUrl });\n res.end();\n } else {\n window.location.href = redirectUrl;\n }\n\n return { redirecting: true };\n}\n\nexport default checkUrl;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"check-url.js","names":["_queryString","require","_reactPageBuilder","_coreAuthUi","_constants","_query","_checkParent","_interopRequireDefault","_checkPreviewUrl","_handleStaticRoutes","_getPageData","_getRootSelectorClasses","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_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","setHeader","BLAZE_X_FRAME_OPTIONS","BLAZE_X_FRAME_OPTIONS_DEFAULT","getHeader","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","_ref4","_callee3","args","_args$errorCheckCode","errorCheckCode","_yield$apolloClient$q","_yield$apolloClient$q2","_yield$apolloClient$q3","_yield$apolloClient$q4","_yield$apolloClient$q5","itemId","itemEntity","urlTo","_yield$apolloClient$q6","_callee3$","_context3","checkUrlQuery","variables","data","setCustomCacheControlHeaders","handleRedirect","events","emit","message","statusCode","getUnpublishedEntityName","t0","handleUrlError","_x4","handleError","err","error","networkError","writeHead","write","end","graphQLErrors","NOT_FOUND_STATUS_CODE","errorCode","_ref5","errorMessage","customError","Error","redirectUrl","BLAZE_DISABLE_REDIRECT_WITH_QUERY","queryString","split","doRedirect","_ref6","_ref6$cacheControlMax","cacheControlMaxAge","Location","href","redirecting","ERROR_URLS","custom404","parentPATH","checkParent","_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 {\n HTTPS,\n DOUBLE_SLASH,\n COLON,\n NOT_FOUND_STATUS_CODE,\n BLAZE_X_FRAME_OPTIONS_DEFAULT,\n ERROR_URLS\n} 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 res.setHeader(\n 'X-Frame-Options',\n process.env.BLAZE_X_FRAME_OPTIONS || BLAZE_X_FRAME_OPTIONS_DEFAULT\n );\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 args => {\n const { asPath, url, apolloClient, res, blazeApp, errorCheckCode = false } = args;\n try {\n const {\n data: { checkUrl: { itemId, itemEntity, urlTo, pageData = {} } = {} } = {}\n } = await apolloClient.query({\n query: checkUrlQuery,\n variables: { url }\n });\n\n setCustomCacheControlHeaders(pageData, res);\n\n if (urlTo && (urlTo !== url || errorCheckCode)) {\n return handleRedirect({ errorCheckCode, url, urlTo, asPath, res });\n }\n const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());\n\n if (errorCheckCode) {\n blazeApp.events.emit('monitor:log', { message: `Serving custom ${errorCheckCode} page` });\n if (res) res.statusCode = errorCheckCode;\n }\n\n return {\n pageData,\n rootSelectorClasses,\n itemId,\n itemEntity: getUnpublishedEntityName(itemEntity)\n };\n } catch (err) {\n return handleUrlError(err, args);\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};\n\nfunction handleRedirect({ errorCheckCode, url, urlTo, asPath, res }) {\n if (errorCheckCode) {\n const errorMessage = `Cannot redirect ${url}`;\n const customError = new Error(errorMessage);\n customError.graphQLErrors = [errorMessage];\n throw customError;\n }\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 return doRedirect(res, redirectUrl);\n}\n\nfunction setCustomCacheControlHeaders(pageData, res) {\n const { cacheControlMaxAge = null } = pageData || {};\n\n if (res && cacheControlMaxAge !== null && cacheControlMaxAge >= 0) {\n res.setHeader('Cache-Control', `max-age=${cacheControlMaxAge}`);\n }\n}\n\nfunction doRedirect(res, redirectUrl) {\n if (res) {\n res.writeHead(301, { Location: redirectUrl });\n res.end();\n } else {\n window.location.href = redirectUrl;\n }\n\n return { redirecting: true };\n}\n\nfunction handleUrlError(err, args) {\n const { asPath, res, handle404Error, blazeApp, errorCheckCode } = args;\n if (!err.graphQLErrors || !err.graphQLErrors.length) {\n return handleError(err, res, handle404Error, blazeApp);\n }\n\n if (!errorCheckCode) {\n return doUrlCheck({\n ...args,\n url: ERROR_URLS.custom404,\n errorCheckCode: NOT_FOUND_STATUS_CODE\n });\n }\n\n const parentPATH = checkParent(asPath);\n if (handle404Error && parentPATH) {\n return doRedirect(res, parentPATH);\n }\n\n return handleError(err, res, handle404Error, blazeApp);\n}\n\nexport default checkUrl;\n"],"mappings":"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","ignoreList":[]}
|
package/lib-es/constants.js
CHANGED
|
@@ -59,6 +59,9 @@ const NOT_FOUND_STATUS_CODE = 404;
|
|
|
59
59
|
const ROOT_SELECTOR_CLASS_PREFIX = 'root-selector';
|
|
60
60
|
const ROOT_SELECTOR_SEPARATOR = '--';
|
|
61
61
|
const RESOLVER_CONTAINER_CLASS = 'resolver-container';
|
|
62
|
+
const ERROR_URLS = {
|
|
63
|
+
custom404: '/custom-error-404'
|
|
64
|
+
};
|
|
62
65
|
module.exports = {
|
|
63
66
|
APPLE_TAGS,
|
|
64
67
|
ACTIVE_META_TAGS,
|
|
@@ -87,6 +90,7 @@ module.exports = {
|
|
|
87
90
|
ROOT_SELECTOR_CLASS_PREFIX,
|
|
88
91
|
ROOT_SELECTOR_SEPARATOR,
|
|
89
92
|
RESOLVER_CONTAINER_CLASS,
|
|
90
|
-
BLAZE_X_FRAME_OPTIONS_DEFAULT
|
|
93
|
+
BLAZE_X_FRAME_OPTIONS_DEFAULT,
|
|
94
|
+
ERROR_URLS
|
|
91
95
|
};
|
|
92
96
|
//# sourceMappingURL=constants.js.map
|
package/lib-es/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["ACTIVE_META_TAGS","BLAZE_X_FRAME_OPTIONS_DEFAULT","META_TAGS_LOOKUP","description","apiKey","htmlTagName","tagKeyName","contentDataKeyName","canonical","PB_TYPE_IMAGE","PB_TYPE_TEXTBLOCK","PB_TYPE_CAROUSEL","SEARCH_FILTER","COLON","DOUBLE_SLASH","HTTPS","DEFAULT_ROUTE_REGEX","ROUTE_REGEX","process","env","BLAZE_ROUTE_REGEX","RegExp","PREVIEW_REGEX","PREVIEW_MODE","GTM_STRING","DEBUG_LOGO","SRC","ALT","PUBLISHED_","RESPONSE_404","SITEMAP_STORE_KEY","ROUTE_PATTERN_SITEMAP","BLAZE_ROUTE_PATTERN_SITEMAP","sitemapFilePrefix","BLAZE_CONTENT_SITEMAP_URL_PREFIX","ROUTE_PATTERN_SITEMAP_FILE_REGEX","ROUTE_PATTERN_ROBOTS_TXT","BLAZE_STATIC_ROUTE_STORE_KEY","STATIC_FILE_FORWARD_HEADERS","APPLE_TAGS","href","rel","sizes","NOT_FOUND_STATUS_CODE","ROOT_SELECTOR_CLASS_PREFIX","ROOT_SELECTOR_SEPARATOR","RESOLVER_CONTAINER_CLASS","module","exports"],"sources":["../src/constants.js"],"sourcesContent":["const ACTIVE_META_TAGS = ['description', 'canonical'];\nconst BLAZE_X_FRAME_OPTIONS_DEFAULT = 'SAMEORIGIN';\n\nconst META_TAGS_LOOKUP = {\n description: {\n apiKey: 'metaDescription',\n htmlTagName: 'meta',\n tagKeyName: 'name',\n contentDataKeyName: 'content'\n },\n canonical: {\n apiKey: 'canonicalUrl',\n htmlTagName: 'link',\n tagKeyName: 'rel',\n contentDataKeyName: 'href'\n }\n};\n\nconst PB_TYPE_IMAGE = 'image';\nconst PB_TYPE_TEXTBLOCK = 'textblock';\nconst PB_TYPE_CAROUSEL = 'carousel';\nconst SEARCH_FILTER = 'searchfilter';\nconst COLON = ':';\nconst DOUBLE_SLASH = '//';\nconst HTTPS = 'https://';\n\nconst DEFAULT_ROUTE_REGEX = /^\\/[a-z0-9€_\\/]+(?:[-\\/\\.]{1,2}[a-z0-9\\/€_\\/]+)*$|^\\/$/i;\nconst ROUTE_REGEX = process.env.BLAZE_ROUTE_REGEX\n ? new RegExp(process.env.BLAZE_ROUTE_REGEX)\n : DEFAULT_ROUTE_REGEX;\nconst PREVIEW_REGEX = /^(\\/_preview)/;\nconst PREVIEW_MODE = 'Preview Mode';\nconst GTM_STRING = 'gtm';\n\nconst DEBUG_LOGO = {\n SRC: 'https://images.thisisblaze.com/logo-small-27-40.png',\n ALT: 'blaze-logo'\n};\n\nconst PUBLISHED_ = 'published_';\n\nconst RESPONSE_404 = '404 Not Found\\n';\n\nconst SITEMAP_STORE_KEY = 'default_sitemap';\nconst ROUTE_PATTERN_SITEMAP = process.env.BLAZE_ROUTE_PATTERN_SITEMAP || '/sitemap.xml';\nconst sitemapFilePrefix = process.env.BLAZE_CONTENT_SITEMAP_URL_PREFIX || 'sitemap';\nconst ROUTE_PATTERN_SITEMAP_FILE_REGEX = new RegExp(`/${sitemapFilePrefix}/.*\\.xml`);\nconst ROUTE_PATTERN_ROBOTS_TXT = '/robots.txt';\nconst BLAZE_STATIC_ROUTE_STORE_KEY = 'default';\n\nconst STATIC_FILE_FORWARD_HEADERS = ['content-length', 'last-modified', 'etag'];\n\nconst APPLE_TAGS = [\n { href: '/static/icons/touch-icon-iphone.png', rel: 'apple-touch-icon' },\n { href: '/static/icons/touch-icon-ipad.png', rel: 'apple-touch-icon', sizes: '152x152' },\n { href: '/static/icons/touch-icon-iphone-retina.png', rel: 'apple-touch-icon', sizes: '180x180' },\n { href: '/static/icons/touch-icon-ipad-retina.png', rel: 'apple-touch-icon', sizes: '167x167' }\n];\n\nconst NOT_FOUND_STATUS_CODE = 404;\n\nconst ROOT_SELECTOR_CLASS_PREFIX = 'root-selector';\nconst ROOT_SELECTOR_SEPARATOR = '--';\nconst RESOLVER_CONTAINER_CLASS = 'resolver-container';\n\nmodule.exports = {\n APPLE_TAGS,\n ACTIVE_META_TAGS,\n COLON,\n DOUBLE_SLASH,\n GTM_STRING,\n HTTPS,\n META_TAGS_LOOKUP,\n SEARCH_FILTER,\n PB_TYPE_IMAGE,\n PB_TYPE_TEXTBLOCK,\n PB_TYPE_CAROUSEL,\n PREVIEW_MODE,\n ROUTE_REGEX,\n PREVIEW_REGEX,\n DEBUG_LOGO,\n PUBLISHED_,\n RESPONSE_404,\n NOT_FOUND_STATUS_CODE,\n SITEMAP_STORE_KEY,\n ROUTE_PATTERN_SITEMAP,\n ROUTE_PATTERN_SITEMAP_FILE_REGEX,\n ROUTE_PATTERN_ROBOTS_TXT,\n BLAZE_STATIC_ROUTE_STORE_KEY,\n STATIC_FILE_FORWARD_HEADERS,\n ROOT_SELECTOR_CLASS_PREFIX,\n ROOT_SELECTOR_SEPARATOR,\n RESOLVER_CONTAINER_CLASS,\n BLAZE_X_FRAME_OPTIONS_DEFAULT\n};\n"],"mappings":"AAAA,MAAMA,gBAAgB,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC;AACrD,MAAMC,6BAA6B,GAAG,YAAY;AAElD,MAAMC,gBAAgB,GAAG;EACvBC,WAAW,EAAE;IACXC,MAAM,EAAE,iBAAiB;IACzBC,WAAW,EAAE,MAAM;IACnBC,UAAU,EAAE,MAAM;IAClBC,kBAAkB,EAAE;EACtB,CAAC;EACDC,SAAS,EAAE;IACTJ,MAAM,EAAE,cAAc;IACtBC,WAAW,EAAE,MAAM;IACnBC,UAAU,EAAE,KAAK;IACjBC,kBAAkB,EAAE;EACtB;AACF,CAAC;AAED,MAAME,aAAa,GAAG,OAAO;AAC7B,MAAMC,iBAAiB,GAAG,WAAW;AACrC,MAAMC,gBAAgB,GAAG,UAAU;AACnC,MAAMC,aAAa,GAAG,cAAc;AACpC,MAAMC,KAAK,GAAG,GAAG;AACjB,MAAMC,YAAY,GAAG,IAAI;AACzB,MAAMC,KAAK,GAAG,UAAU;AAExB,MAAMC,mBAAmB,GAAG,yDAAyD;AACrF,MAAMC,WAAW,GAAGC,OAAO,CAACC,GAAG,CAACC,iBAAiB,GAC7C,IAAIC,MAAM,CAACH,OAAO,CAACC,GAAG,CAACC,iBAAiB,CAAC,GACzCJ,mBAAmB;AACvB,MAAMM,aAAa,GAAG,eAAe;AACrC,MAAMC,YAAY,GAAG,cAAc;AACnC,MAAMC,UAAU,GAAG,KAAK;AAExB,MAAMC,UAAU,GAAG;EACjBC,GAAG,EAAE,qDAAqD;EAC1DC,GAAG,EAAE;AACP,CAAC;AAED,MAAMC,UAAU,GAAG,YAAY;AAE/B,MAAMC,YAAY,GAAG,iBAAiB;AAEtC,MAAMC,iBAAiB,GAAG,iBAAiB;AAC3C,MAAMC,qBAAqB,GAAGb,OAAO,CAACC,GAAG,CAACa,2BAA2B,IAAI,cAAc;AACvF,MAAMC,iBAAiB,GAAGf,OAAO,CAACC,GAAG,CAACe,gCAAgC,IAAI,SAAS;AACnF,MAAMC,gCAAgC,GAAG,IAAId,MAAM,CAAE,IAAGY,iBAAkB,UAAS,CAAC;AACpF,MAAMG,wBAAwB,GAAG,aAAa;AAC9C,MAAMC,4BAA4B,GAAG,SAAS;AAE9C,MAAMC,2BAA2B,GAAG,CAAC,gBAAgB,EAAE,eAAe,EAAE,MAAM,CAAC;AAE/E,MAAMC,UAAU,GAAG,CACjB;EAAEC,IAAI,EAAE,qCAAqC;EAAEC,GAAG,EAAE;AAAmB,CAAC,EACxE;EAAED,IAAI,EAAE,mCAAmC;EAAEC,GAAG,EAAE,kBAAkB;EAAEC,KAAK,EAAE;AAAU,CAAC,EACxF;EAAEF,IAAI,EAAE,4CAA4C;EAAEC,GAAG,EAAE,kBAAkB;EAAEC,KAAK,EAAE;AAAU,CAAC,EACjG;EAAEF,IAAI,EAAE,0CAA0C;EAAEC,GAAG,EAAE,kBAAkB;EAAEC,KAAK,EAAE;AAAU,CAAC,CAChG;AAED,MAAMC,qBAAqB,GAAG,GAAG;AAEjC,MAAMC,0BAA0B,GAAG,eAAe;AAClD,MAAMC,uBAAuB,GAAG,IAAI;AACpC,MAAMC,wBAAwB,GAAG,oBAAoB;
|
|
1
|
+
{"version":3,"file":"constants.js","names":["ACTIVE_META_TAGS","BLAZE_X_FRAME_OPTIONS_DEFAULT","META_TAGS_LOOKUP","description","apiKey","htmlTagName","tagKeyName","contentDataKeyName","canonical","PB_TYPE_IMAGE","PB_TYPE_TEXTBLOCK","PB_TYPE_CAROUSEL","SEARCH_FILTER","COLON","DOUBLE_SLASH","HTTPS","DEFAULT_ROUTE_REGEX","ROUTE_REGEX","process","env","BLAZE_ROUTE_REGEX","RegExp","PREVIEW_REGEX","PREVIEW_MODE","GTM_STRING","DEBUG_LOGO","SRC","ALT","PUBLISHED_","RESPONSE_404","SITEMAP_STORE_KEY","ROUTE_PATTERN_SITEMAP","BLAZE_ROUTE_PATTERN_SITEMAP","sitemapFilePrefix","BLAZE_CONTENT_SITEMAP_URL_PREFIX","ROUTE_PATTERN_SITEMAP_FILE_REGEX","ROUTE_PATTERN_ROBOTS_TXT","BLAZE_STATIC_ROUTE_STORE_KEY","STATIC_FILE_FORWARD_HEADERS","APPLE_TAGS","href","rel","sizes","NOT_FOUND_STATUS_CODE","ROOT_SELECTOR_CLASS_PREFIX","ROOT_SELECTOR_SEPARATOR","RESOLVER_CONTAINER_CLASS","ERROR_URLS","custom404","module","exports"],"sources":["../src/constants.js"],"sourcesContent":["const ACTIVE_META_TAGS = ['description', 'canonical'];\nconst BLAZE_X_FRAME_OPTIONS_DEFAULT = 'SAMEORIGIN';\n\nconst META_TAGS_LOOKUP = {\n description: {\n apiKey: 'metaDescription',\n htmlTagName: 'meta',\n tagKeyName: 'name',\n contentDataKeyName: 'content'\n },\n canonical: {\n apiKey: 'canonicalUrl',\n htmlTagName: 'link',\n tagKeyName: 'rel',\n contentDataKeyName: 'href'\n }\n};\n\nconst PB_TYPE_IMAGE = 'image';\nconst PB_TYPE_TEXTBLOCK = 'textblock';\nconst PB_TYPE_CAROUSEL = 'carousel';\nconst SEARCH_FILTER = 'searchfilter';\nconst COLON = ':';\nconst DOUBLE_SLASH = '//';\nconst HTTPS = 'https://';\n\nconst DEFAULT_ROUTE_REGEX = /^\\/[a-z0-9€_\\/]+(?:[-\\/\\.]{1,2}[a-z0-9\\/€_\\/]+)*$|^\\/$/i;\nconst ROUTE_REGEX = process.env.BLAZE_ROUTE_REGEX\n ? new RegExp(process.env.BLAZE_ROUTE_REGEX)\n : DEFAULT_ROUTE_REGEX;\nconst PREVIEW_REGEX = /^(\\/_preview)/;\nconst PREVIEW_MODE = 'Preview Mode';\nconst GTM_STRING = 'gtm';\n\nconst DEBUG_LOGO = {\n SRC: 'https://images.thisisblaze.com/logo-small-27-40.png',\n ALT: 'blaze-logo'\n};\n\nconst PUBLISHED_ = 'published_';\n\nconst RESPONSE_404 = '404 Not Found\\n';\n\nconst SITEMAP_STORE_KEY = 'default_sitemap';\nconst ROUTE_PATTERN_SITEMAP = process.env.BLAZE_ROUTE_PATTERN_SITEMAP || '/sitemap.xml';\nconst sitemapFilePrefix = process.env.BLAZE_CONTENT_SITEMAP_URL_PREFIX || 'sitemap';\nconst ROUTE_PATTERN_SITEMAP_FILE_REGEX = new RegExp(`/${sitemapFilePrefix}/.*\\.xml`);\nconst ROUTE_PATTERN_ROBOTS_TXT = '/robots.txt';\nconst BLAZE_STATIC_ROUTE_STORE_KEY = 'default';\n\nconst STATIC_FILE_FORWARD_HEADERS = ['content-length', 'last-modified', 'etag'];\n\nconst APPLE_TAGS = [\n { href: '/static/icons/touch-icon-iphone.png', rel: 'apple-touch-icon' },\n { href: '/static/icons/touch-icon-ipad.png', rel: 'apple-touch-icon', sizes: '152x152' },\n { href: '/static/icons/touch-icon-iphone-retina.png', rel: 'apple-touch-icon', sizes: '180x180' },\n { href: '/static/icons/touch-icon-ipad-retina.png', rel: 'apple-touch-icon', sizes: '167x167' }\n];\n\nconst NOT_FOUND_STATUS_CODE = 404;\n\nconst ROOT_SELECTOR_CLASS_PREFIX = 'root-selector';\nconst ROOT_SELECTOR_SEPARATOR = '--';\nconst RESOLVER_CONTAINER_CLASS = 'resolver-container';\nconst ERROR_URLS = {\n custom404: '/custom-error-404'\n};\n\nmodule.exports = {\n APPLE_TAGS,\n ACTIVE_META_TAGS,\n COLON,\n DOUBLE_SLASH,\n GTM_STRING,\n HTTPS,\n META_TAGS_LOOKUP,\n SEARCH_FILTER,\n PB_TYPE_IMAGE,\n PB_TYPE_TEXTBLOCK,\n PB_TYPE_CAROUSEL,\n PREVIEW_MODE,\n ROUTE_REGEX,\n PREVIEW_REGEX,\n DEBUG_LOGO,\n PUBLISHED_,\n RESPONSE_404,\n NOT_FOUND_STATUS_CODE,\n SITEMAP_STORE_KEY,\n ROUTE_PATTERN_SITEMAP,\n ROUTE_PATTERN_SITEMAP_FILE_REGEX,\n ROUTE_PATTERN_ROBOTS_TXT,\n BLAZE_STATIC_ROUTE_STORE_KEY,\n STATIC_FILE_FORWARD_HEADERS,\n ROOT_SELECTOR_CLASS_PREFIX,\n ROOT_SELECTOR_SEPARATOR,\n RESOLVER_CONTAINER_CLASS,\n BLAZE_X_FRAME_OPTIONS_DEFAULT,\n ERROR_URLS\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
4
4
|
import { parseUrl } from 'query-string';
|
|
5
5
|
import { getUnpublishedEntityName } from '@blaze-cms/react-page-builder';
|
|
6
6
|
import { checkAccessToken } from '@blaze-cms/core-auth-ui';
|
|
7
|
-
import { HTTPS, DOUBLE_SLASH, COLON, NOT_FOUND_STATUS_CODE, BLAZE_X_FRAME_OPTIONS_DEFAULT } from '../constants';
|
|
7
|
+
import { HTTPS, DOUBLE_SLASH, COLON, NOT_FOUND_STATUS_CODE, BLAZE_X_FRAME_OPTIONS_DEFAULT, ERROR_URLS } from '../constants';
|
|
8
8
|
import { checkUrlQuery } from '../application/query';
|
|
9
9
|
import checkParent from './check-parent';
|
|
10
10
|
import checkPreviewUrl from './check-preview-url';
|
|
@@ -96,14 +96,15 @@ const getFullUrl = (req, asPath) => {
|
|
|
96
96
|
const urlPort = port ? `${COLON}${port}` : '';
|
|
97
97
|
return `${protocol}${DOUBLE_SLASH}${hostname}${urlPort}${asPath}`;
|
|
98
98
|
};
|
|
99
|
-
const doUrlCheck = async
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
99
|
+
const doUrlCheck = async args => {
|
|
100
|
+
const {
|
|
101
|
+
asPath,
|
|
102
|
+
url,
|
|
103
|
+
apolloClient,
|
|
104
|
+
res,
|
|
105
|
+
blazeApp,
|
|
106
|
+
errorCheckCode = false
|
|
107
|
+
} = args;
|
|
107
108
|
try {
|
|
108
109
|
const {
|
|
109
110
|
data: {
|
|
@@ -120,21 +121,23 @@ const doUrlCheck = async ({
|
|
|
120
121
|
url
|
|
121
122
|
}
|
|
122
123
|
});
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
const queryString = asPath.split('?')[1];
|
|
133
|
-
redirectUrl = queryString ? `${urlTo}?${queryString}` : urlTo;
|
|
134
|
-
}
|
|
135
|
-
return doRedirect(res, redirectUrl);
|
|
124
|
+
setCustomCacheControlHeaders(pageData, res);
|
|
125
|
+
if (urlTo && (urlTo !== url || errorCheckCode)) {
|
|
126
|
+
return handleRedirect({
|
|
127
|
+
errorCheckCode,
|
|
128
|
+
url,
|
|
129
|
+
urlTo,
|
|
130
|
+
asPath,
|
|
131
|
+
res
|
|
132
|
+
});
|
|
136
133
|
}
|
|
137
134
|
const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());
|
|
135
|
+
if (errorCheckCode) {
|
|
136
|
+
blazeApp.events.emit('monitor:log', {
|
|
137
|
+
message: `Serving custom ${errorCheckCode} page`
|
|
138
|
+
});
|
|
139
|
+
if (res) res.statusCode = errorCheckCode;
|
|
140
|
+
}
|
|
138
141
|
return {
|
|
139
142
|
pageData,
|
|
140
143
|
rootSelectorClasses,
|
|
@@ -142,14 +145,7 @@ const doUrlCheck = async ({
|
|
|
142
145
|
itemEntity: getUnpublishedEntityName(itemEntity)
|
|
143
146
|
};
|
|
144
147
|
} catch (err) {
|
|
145
|
-
|
|
146
|
-
return handleError(err, res, handle404Error, blazeApp);
|
|
147
|
-
}
|
|
148
|
-
const parentPATH = checkParent(url);
|
|
149
|
-
if (handle404Error && parentPATH) {
|
|
150
|
-
return doRedirect(res, parentPATH);
|
|
151
|
-
}
|
|
152
|
-
return handleError(err, res, handle404Error, blazeApp);
|
|
148
|
+
return handleUrlError(err, args);
|
|
153
149
|
}
|
|
154
150
|
};
|
|
155
151
|
const handleError = (err, res, handle404Error, blazeApp) => {
|
|
@@ -171,6 +167,34 @@ const handleError = (err, res, handle404Error, blazeApp) => {
|
|
|
171
167
|
}
|
|
172
168
|
return {};
|
|
173
169
|
};
|
|
170
|
+
function handleRedirect({
|
|
171
|
+
errorCheckCode,
|
|
172
|
+
url,
|
|
173
|
+
urlTo,
|
|
174
|
+
asPath,
|
|
175
|
+
res
|
|
176
|
+
}) {
|
|
177
|
+
if (errorCheckCode) {
|
|
178
|
+
const errorMessage = `Cannot redirect ${url}`;
|
|
179
|
+
const customError = new Error(errorMessage);
|
|
180
|
+
customError.graphQLErrors = [errorMessage];
|
|
181
|
+
throw customError;
|
|
182
|
+
}
|
|
183
|
+
let redirectUrl = urlTo;
|
|
184
|
+
if (process.env.BLAZE_DISABLE_REDIRECT_WITH_QUERY !== 'true') {
|
|
185
|
+
const queryString = asPath.split('?')[1];
|
|
186
|
+
redirectUrl = queryString ? `${urlTo}?${queryString}` : urlTo;
|
|
187
|
+
}
|
|
188
|
+
return doRedirect(res, redirectUrl);
|
|
189
|
+
}
|
|
190
|
+
function setCustomCacheControlHeaders(pageData, res) {
|
|
191
|
+
const {
|
|
192
|
+
cacheControlMaxAge = null
|
|
193
|
+
} = pageData || {};
|
|
194
|
+
if (res && cacheControlMaxAge !== null && cacheControlMaxAge >= 0) {
|
|
195
|
+
res.setHeader('Cache-Control', `max-age=${cacheControlMaxAge}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
174
198
|
function doRedirect(res, redirectUrl) {
|
|
175
199
|
if (res) {
|
|
176
200
|
res.writeHead(301, {
|
|
@@ -184,5 +208,28 @@ function doRedirect(res, redirectUrl) {
|
|
|
184
208
|
redirecting: true
|
|
185
209
|
};
|
|
186
210
|
}
|
|
211
|
+
function handleUrlError(err, args) {
|
|
212
|
+
const {
|
|
213
|
+
asPath,
|
|
214
|
+
res,
|
|
215
|
+
handle404Error,
|
|
216
|
+
blazeApp,
|
|
217
|
+
errorCheckCode
|
|
218
|
+
} = args;
|
|
219
|
+
if (!err.graphQLErrors || !err.graphQLErrors.length) {
|
|
220
|
+
return handleError(err, res, handle404Error, blazeApp);
|
|
221
|
+
}
|
|
222
|
+
if (!errorCheckCode) {
|
|
223
|
+
return doUrlCheck(_objectSpread(_objectSpread({}, args), {}, {
|
|
224
|
+
url: ERROR_URLS.custom404,
|
|
225
|
+
errorCheckCode: NOT_FOUND_STATUS_CODE
|
|
226
|
+
}));
|
|
227
|
+
}
|
|
228
|
+
const parentPATH = checkParent(asPath);
|
|
229
|
+
if (handle404Error && parentPATH) {
|
|
230
|
+
return doRedirect(res, parentPATH);
|
|
231
|
+
}
|
|
232
|
+
return handleError(err, res, handle404Error, blazeApp);
|
|
233
|
+
}
|
|
187
234
|
export default checkUrl;
|
|
188
235
|
//# sourceMappingURL=check-url.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-url.js","names":["parseUrl","getUnpublishedEntityName","checkAccessToken","HTTPS","DOUBLE_SLASH","COLON","NOT_FOUND_STATUS_CODE","BLAZE_X_FRAME_OPTIONS_DEFAULT","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","setHeader","BLAZE_X_FRAME_OPTIONS","getHeader","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","doRedirect","err","graphQLErrors","handleError","parentPATH","events","emit","error","networkError","writeHead","write","end","statusCode","errorCode","Location","href","redirecting"],"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 {\n HTTPS,\n DOUBLE_SLASH,\n COLON,\n NOT_FOUND_STATUS_CODE,\n BLAZE_X_FRAME_OPTIONS_DEFAULT\n} 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 res.setHeader(\n 'X-Frame-Options',\n process.env.BLAZE_X_FRAME_OPTIONS || BLAZE_X_FRAME_OPTIONS_DEFAULT\n );\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: { checkUrl: { itemId, itemEntity, urlTo, pageData = {} } = {} } = {}\n } = await apolloClient.query({\n query: checkUrlQuery,\n variables: { url }\n });\n\n const { cacheControlMaxAge = null } = pageData || {};\n\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 return doRedirect(res, redirectUrl);\n }\n const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());\n return {\n pageData,\n rootSelectorClasses,\n itemId,\n itemEntity: getUnpublishedEntityName(itemEntity)\n };\n } catch (err) {\n if (!err.graphQLErrors || !err.graphQLErrors.length) {\n return handleError(err, res, handle404Error, blazeApp);\n }\n\n const parentPATH = checkParent(url);\n if (handle404Error && parentPATH) {\n return doRedirect(res, parentPATH);\n }\n\n return handleError(err, res, handle404Error, blazeApp);\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};\n\nfunction doRedirect(res, redirectUrl) {\n if (res) {\n res.writeHead(301, { Location: redirectUrl });\n res.end();\n } else {\n window.location.href = redirectUrl;\n }\n\n return { redirecting: true };\n}\n\nexport default checkUrl;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"check-url.js","names":["parseUrl","getUnpublishedEntityName","checkAccessToken","HTTPS","DOUBLE_SLASH","COLON","NOT_FOUND_STATUS_CODE","BLAZE_X_FRAME_OPTIONS_DEFAULT","ERROR_URLS","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","setHeader","BLAZE_X_FRAME_OPTIONS","getHeader","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","args","errorCheckCode","data","itemId","itemEntity","urlTo","variables","setCustomCacheControlHeaders","handleRedirect","events","emit","message","statusCode","err","handleUrlError","handleError","error","networkError","writeHead","write","end","graphQLErrors","errorCode","errorMessage","customError","Error","redirectUrl","BLAZE_DISABLE_REDIRECT_WITH_QUERY","queryString","split","doRedirect","cacheControlMaxAge","Location","href","redirecting","custom404","parentPATH"],"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 {\n HTTPS,\n DOUBLE_SLASH,\n COLON,\n NOT_FOUND_STATUS_CODE,\n BLAZE_X_FRAME_OPTIONS_DEFAULT,\n ERROR_URLS\n} 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 res.setHeader(\n 'X-Frame-Options',\n process.env.BLAZE_X_FRAME_OPTIONS || BLAZE_X_FRAME_OPTIONS_DEFAULT\n );\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 args => {\n const { asPath, url, apolloClient, res, blazeApp, errorCheckCode = false } = args;\n try {\n const {\n data: { checkUrl: { itemId, itemEntity, urlTo, pageData = {} } = {} } = {}\n } = await apolloClient.query({\n query: checkUrlQuery,\n variables: { url }\n });\n\n setCustomCacheControlHeaders(pageData, res);\n\n if (urlTo && (urlTo !== url || errorCheckCode)) {\n return handleRedirect({ errorCheckCode, url, urlTo, asPath, res });\n }\n const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());\n\n if (errorCheckCode) {\n blazeApp.events.emit('monitor:log', { message: `Serving custom ${errorCheckCode} page` });\n if (res) res.statusCode = errorCheckCode;\n }\n\n return {\n pageData,\n rootSelectorClasses,\n itemId,\n itemEntity: getUnpublishedEntityName(itemEntity)\n };\n } catch (err) {\n return handleUrlError(err, args);\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};\n\nfunction handleRedirect({ errorCheckCode, url, urlTo, asPath, res }) {\n if (errorCheckCode) {\n const errorMessage = `Cannot redirect ${url}`;\n const customError = new Error(errorMessage);\n customError.graphQLErrors = [errorMessage];\n throw customError;\n }\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 return doRedirect(res, redirectUrl);\n}\n\nfunction setCustomCacheControlHeaders(pageData, res) {\n const { cacheControlMaxAge = null } = pageData || {};\n\n if (res && cacheControlMaxAge !== null && cacheControlMaxAge >= 0) {\n res.setHeader('Cache-Control', `max-age=${cacheControlMaxAge}`);\n }\n}\n\nfunction doRedirect(res, redirectUrl) {\n if (res) {\n res.writeHead(301, { Location: redirectUrl });\n res.end();\n } else {\n window.location.href = redirectUrl;\n }\n\n return { redirecting: true };\n}\n\nfunction handleUrlError(err, args) {\n const { asPath, res, handle404Error, blazeApp, errorCheckCode } = args;\n if (!err.graphQLErrors || !err.graphQLErrors.length) {\n return handleError(err, res, handle404Error, blazeApp);\n }\n\n if (!errorCheckCode) {\n return doUrlCheck({\n ...args,\n url: ERROR_URLS.custom404,\n errorCheckCode: NOT_FOUND_STATUS_CODE\n });\n }\n\n const parentPATH = checkParent(asPath);\n if (handle404Error && parentPATH) {\n return doRedirect(res, parentPATH);\n }\n\n return handleError(err, res, handle404Error, blazeApp);\n}\n\nexport default checkUrl;\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/nextjs-tools",
|
|
3
|
-
"version": "0.146.0-alpha.
|
|
3
|
+
"version": "0.146.0-alpha.59",
|
|
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.146.0-alpha.28",
|
|
36
36
|
"@blaze-cms/plugin-auth-fe": "0.146.0-alpha.50",
|
|
37
37
|
"@blaze-cms/plugin-auth-local-fe": "0.146.0-alpha.50",
|
|
38
|
-
"@blaze-cms/plugin-google-maps-fe": "0.146.0-alpha.
|
|
39
|
-
"@blaze-cms/plugin-gtm-fe": "0.146.0-alpha.
|
|
40
|
-
"@blaze-cms/plugin-page-builder-fe": "0.146.0-alpha.
|
|
38
|
+
"@blaze-cms/plugin-google-maps-fe": "0.146.0-alpha.57",
|
|
39
|
+
"@blaze-cms/plugin-gtm-fe": "0.146.0-alpha.57",
|
|
40
|
+
"@blaze-cms/plugin-page-builder-fe": "0.146.0-alpha.57",
|
|
41
41
|
"@blaze-cms/plugin-preview-fe": "0.146.0-alpha.42",
|
|
42
|
-
"@blaze-cms/plugin-search-ui": "0.146.0-alpha.
|
|
42
|
+
"@blaze-cms/plugin-search-ui": "0.146.0-alpha.57",
|
|
43
43
|
"@blaze-cms/plugin-structured-data-fe": "^0.140.3",
|
|
44
|
-
"@blaze-cms/react-page-builder": "0.146.0-alpha.
|
|
44
|
+
"@blaze-cms/react-page-builder": "0.146.0-alpha.57",
|
|
45
45
|
"@blaze-cms/setup-ui": "^0.140.3",
|
|
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": "
|
|
72
|
+
"gitHead": "9ff17cf8639e619bc74b891207c6c424b96e8e02"
|
|
73
73
|
}
|
package/src/constants.js
CHANGED
|
@@ -62,6 +62,9 @@ const NOT_FOUND_STATUS_CODE = 404;
|
|
|
62
62
|
const ROOT_SELECTOR_CLASS_PREFIX = 'root-selector';
|
|
63
63
|
const ROOT_SELECTOR_SEPARATOR = '--';
|
|
64
64
|
const RESOLVER_CONTAINER_CLASS = 'resolver-container';
|
|
65
|
+
const ERROR_URLS = {
|
|
66
|
+
custom404: '/custom-error-404'
|
|
67
|
+
};
|
|
65
68
|
|
|
66
69
|
module.exports = {
|
|
67
70
|
APPLE_TAGS,
|
|
@@ -91,5 +94,6 @@ module.exports = {
|
|
|
91
94
|
ROOT_SELECTOR_CLASS_PREFIX,
|
|
92
95
|
ROOT_SELECTOR_SEPARATOR,
|
|
93
96
|
RESOLVER_CONTAINER_CLASS,
|
|
94
|
-
BLAZE_X_FRAME_OPTIONS_DEFAULT
|
|
97
|
+
BLAZE_X_FRAME_OPTIONS_DEFAULT,
|
|
98
|
+
ERROR_URLS
|
|
95
99
|
};
|
package/src/helpers/check-url.js
CHANGED
|
@@ -6,7 +6,8 @@ import {
|
|
|
6
6
|
DOUBLE_SLASH,
|
|
7
7
|
COLON,
|
|
8
8
|
NOT_FOUND_STATUS_CODE,
|
|
9
|
-
BLAZE_X_FRAME_OPTIONS_DEFAULT
|
|
9
|
+
BLAZE_X_FRAME_OPTIONS_DEFAULT,
|
|
10
|
+
ERROR_URLS
|
|
10
11
|
} from '../constants';
|
|
11
12
|
import { checkUrlQuery } from '../application/query';
|
|
12
13
|
import checkParent from './check-parent';
|
|
@@ -87,7 +88,8 @@ const getFullUrl = (req, asPath) => {
|
|
|
87
88
|
return `${protocol}${DOUBLE_SLASH}${hostname}${urlPort}${asPath}`;
|
|
88
89
|
};
|
|
89
90
|
|
|
90
|
-
const doUrlCheck = async
|
|
91
|
+
const doUrlCheck = async args => {
|
|
92
|
+
const { asPath, url, apolloClient, res, blazeApp, errorCheckCode = false } = args;
|
|
91
93
|
try {
|
|
92
94
|
const {
|
|
93
95
|
data: { checkUrl: { itemId, itemEntity, urlTo, pageData = {} } = {} } = {}
|
|
@@ -96,22 +98,18 @@ const doUrlCheck = async ({ asPath, url, apolloClient, res, handle404Error, blaz
|
|
|
96
98
|
variables: { url }
|
|
97
99
|
});
|
|
98
100
|
|
|
99
|
-
|
|
101
|
+
setCustomCacheControlHeaders(pageData, res);
|
|
100
102
|
|
|
101
|
-
if (
|
|
102
|
-
|
|
103
|
+
if (urlTo && (urlTo !== url || errorCheckCode)) {
|
|
104
|
+
return handleRedirect({ errorCheckCode, url, urlTo, asPath, res });
|
|
103
105
|
}
|
|
106
|
+
const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());
|
|
104
107
|
|
|
105
|
-
if (
|
|
106
|
-
|
|
107
|
-
if (
|
|
108
|
-
const queryString = asPath.split('?')[1];
|
|
109
|
-
redirectUrl = queryString ? `${urlTo}?${queryString}` : urlTo;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return doRedirect(res, redirectUrl);
|
|
108
|
+
if (errorCheckCode) {
|
|
109
|
+
blazeApp.events.emit('monitor:log', { message: `Serving custom ${errorCheckCode} page` });
|
|
110
|
+
if (res) res.statusCode = errorCheckCode;
|
|
113
111
|
}
|
|
114
|
-
|
|
112
|
+
|
|
115
113
|
return {
|
|
116
114
|
pageData,
|
|
117
115
|
rootSelectorClasses,
|
|
@@ -119,16 +117,7 @@ const doUrlCheck = async ({ asPath, url, apolloClient, res, handle404Error, blaz
|
|
|
119
117
|
itemEntity: getUnpublishedEntityName(itemEntity)
|
|
120
118
|
};
|
|
121
119
|
} catch (err) {
|
|
122
|
-
|
|
123
|
-
return handleError(err, res, handle404Error, blazeApp);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
const parentPATH = checkParent(url);
|
|
127
|
-
if (handle404Error && parentPATH) {
|
|
128
|
-
return doRedirect(res, parentPATH);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return handleError(err, res, handle404Error, blazeApp);
|
|
120
|
+
return handleUrlError(err, args);
|
|
132
121
|
}
|
|
133
122
|
};
|
|
134
123
|
|
|
@@ -148,6 +137,30 @@ const handleError = (err, res, handle404Error, blazeApp) => {
|
|
|
148
137
|
return {};
|
|
149
138
|
};
|
|
150
139
|
|
|
140
|
+
function handleRedirect({ errorCheckCode, url, urlTo, asPath, res }) {
|
|
141
|
+
if (errorCheckCode) {
|
|
142
|
+
const errorMessage = `Cannot redirect ${url}`;
|
|
143
|
+
const customError = new Error(errorMessage);
|
|
144
|
+
customError.graphQLErrors = [errorMessage];
|
|
145
|
+
throw customError;
|
|
146
|
+
}
|
|
147
|
+
let redirectUrl = urlTo;
|
|
148
|
+
if (process.env.BLAZE_DISABLE_REDIRECT_WITH_QUERY !== 'true') {
|
|
149
|
+
const queryString = asPath.split('?')[1];
|
|
150
|
+
redirectUrl = queryString ? `${urlTo}?${queryString}` : urlTo;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return doRedirect(res, redirectUrl);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function setCustomCacheControlHeaders(pageData, res) {
|
|
157
|
+
const { cacheControlMaxAge = null } = pageData || {};
|
|
158
|
+
|
|
159
|
+
if (res && cacheControlMaxAge !== null && cacheControlMaxAge >= 0) {
|
|
160
|
+
res.setHeader('Cache-Control', `max-age=${cacheControlMaxAge}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
151
164
|
function doRedirect(res, redirectUrl) {
|
|
152
165
|
if (res) {
|
|
153
166
|
res.writeHead(301, { Location: redirectUrl });
|
|
@@ -159,4 +172,26 @@ function doRedirect(res, redirectUrl) {
|
|
|
159
172
|
return { redirecting: true };
|
|
160
173
|
}
|
|
161
174
|
|
|
175
|
+
function handleUrlError(err, args) {
|
|
176
|
+
const { asPath, res, handle404Error, blazeApp, errorCheckCode } = args;
|
|
177
|
+
if (!err.graphQLErrors || !err.graphQLErrors.length) {
|
|
178
|
+
return handleError(err, res, handle404Error, blazeApp);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (!errorCheckCode) {
|
|
182
|
+
return doUrlCheck({
|
|
183
|
+
...args,
|
|
184
|
+
url: ERROR_URLS.custom404,
|
|
185
|
+
errorCheckCode: NOT_FOUND_STATUS_CODE
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
const parentPATH = checkParent(asPath);
|
|
190
|
+
if (handle404Error && parentPATH) {
|
|
191
|
+
return doRedirect(res, parentPATH);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return handleError(err, res, handle404Error, blazeApp);
|
|
195
|
+
}
|
|
196
|
+
|
|
162
197
|
export default checkUrl;
|
|
@@ -5,7 +5,11 @@
|
|
|
5
5
|
import '@testing-library/jest-dom/extend-expect';
|
|
6
6
|
|
|
7
7
|
import checkUrl from '../../../../src/helpers/check-url';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
ROUTE_PATTERN_SITEMAP,
|
|
10
|
+
NOT_FOUND_STATUS_CODE,
|
|
11
|
+
ERROR_URLS
|
|
12
|
+
} from '../../../../src/constants';
|
|
9
13
|
import { checkUrlQuery } from '../../../../src/application/query';
|
|
10
14
|
|
|
11
15
|
import handleStaticRoutes from '../../../../src/helpers/handle-static-routes';
|
|
@@ -82,6 +86,11 @@ describe('Check url', () => {
|
|
|
82
86
|
|
|
83
87
|
const queryString = '?query=string';
|
|
84
88
|
const asPathWithQuery = `${asPath}${queryString}`;
|
|
89
|
+
const notFoundQueryMock = async () => {
|
|
90
|
+
const error = new Error('Not found');
|
|
91
|
+
error.graphQLErrors = ['error'];
|
|
92
|
+
throw error;
|
|
93
|
+
};
|
|
85
94
|
|
|
86
95
|
beforeAll(() => {
|
|
87
96
|
setEnvs(envs);
|
|
@@ -228,11 +237,9 @@ describe('Check url', () => {
|
|
|
228
237
|
});
|
|
229
238
|
|
|
230
239
|
it('should handle redirect to parent on not found', async () => {
|
|
231
|
-
apolloClient.query
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
throw error;
|
|
235
|
-
});
|
|
240
|
+
apolloClient.query
|
|
241
|
+
.mockImplementationOnce(notFoundQueryMock)
|
|
242
|
+
.mockImplementationOnce(notFoundQueryMock);
|
|
236
243
|
const parentChildAsPath = '/parent/child';
|
|
237
244
|
const result = await checkUrl({ ...props, asPath: parentChildAsPath });
|
|
238
245
|
expect(res.writeHead).toHaveBeenCalledWith(301, { Location: '/parent' });
|
|
@@ -241,12 +248,14 @@ describe('Check url', () => {
|
|
|
241
248
|
apolloQueryCheck(apolloClient, parentChildAsPath);
|
|
242
249
|
});
|
|
243
250
|
|
|
244
|
-
it('should handle redirect to parent on not found', async () => {
|
|
245
|
-
apolloClient.query
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
251
|
+
it('should handle redirect to parent on not found where custom 404 is redirect is returned', async () => {
|
|
252
|
+
apolloClient.query
|
|
253
|
+
.mockImplementationOnce(notFoundQueryMock)
|
|
254
|
+
.mockImplementationOnce(async () => ({
|
|
255
|
+
data: {
|
|
256
|
+
checkUrl: { urlTo: ERROR_URLS.custom404 }
|
|
257
|
+
}
|
|
258
|
+
}));
|
|
250
259
|
const result = await checkUrl({ ...props });
|
|
251
260
|
expect(result).toHaveProperty('errorCode', NOT_FOUND_STATUS_CODE);
|
|
252
261
|
expect(res.statusCode).toEqual(NOT_FOUND_STATUS_CODE);
|
|
@@ -257,6 +266,22 @@ describe('Check url', () => {
|
|
|
257
266
|
apolloQueryCheck(apolloClient, asPath);
|
|
258
267
|
});
|
|
259
268
|
|
|
269
|
+
it('should fetch custom-error-404 page when original URL is not found', async () => {
|
|
270
|
+
apolloClient.query.mockImplementationOnce(notFoundQueryMock);
|
|
271
|
+
const notFoundPageUrl = '/non-existent-page';
|
|
272
|
+
const result = await checkUrl({ ...props, asPath: notFoundPageUrl });
|
|
273
|
+
|
|
274
|
+
expect(result).toMatchObject({
|
|
275
|
+
itemEntity: 'page',
|
|
276
|
+
itemId: 'RECORD_ID',
|
|
277
|
+
rootSelectorClasses: rootClassesMockValue,
|
|
278
|
+
pageData: { pageData: true },
|
|
279
|
+
fullUrl: `https://localhost${notFoundPageUrl}`
|
|
280
|
+
});
|
|
281
|
+
expect(result.fullUrl.endsWith('/non-existent-page')).toBe(true);
|
|
282
|
+
expect(blazeApp.events.emit).toHaveBeenCalled();
|
|
283
|
+
});
|
|
284
|
+
|
|
260
285
|
it('should handle network error', async () => {
|
|
261
286
|
apolloClient.query.mockImplementationOnce(async () => {
|
|
262
287
|
const err = new Error('Network error');
|