@blaze-cms/nextjs-tools 0.146.0-alpha.4 → 0.146.0-alpha.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/CHANGELOG.md +170 -0
  2. package/README.md +3 -12
  3. package/lib/application/query/index.js.map +1 -1
  4. package/lib/blaze.config.js.map +1 -1
  5. package/lib/components/DebugSidebar/index.js +2 -2
  6. package/lib/components/DebugSidebar/index.js.map +1 -1
  7. package/lib/components/index.js.map +1 -1
  8. package/lib/constants.js +1 -1
  9. package/lib/constants.js.map +1 -1
  10. package/lib/containers/ContentContainer.js +6 -6
  11. package/lib/containers/ContentContainer.js.map +1 -1
  12. package/lib/containers/index.js.map +1 -1
  13. package/lib/helpers/build-admin-href.js +1 -1
  14. package/lib/helpers/build-admin-href.js.map +1 -1
  15. package/lib/helpers/check-for-gtm.js +1 -1
  16. package/lib/helpers/check-for-gtm.js.map +1 -1
  17. package/lib/helpers/check-parent.js.map +1 -1
  18. package/lib/helpers/check-preview-url.js.map +1 -1
  19. package/lib/helpers/check-url.js +35 -30
  20. package/lib/helpers/check-url.js.map +1 -1
  21. package/lib/helpers/get-entitys-actions.js.map +1 -1
  22. package/lib/helpers/get-error-message.js.map +1 -1
  23. package/lib/helpers/get-page-data.js +5 -5
  24. package/lib/helpers/get-page-data.js.map +1 -1
  25. package/lib/helpers/get-root-selector-classes.js +3 -3
  26. package/lib/helpers/get-root-selector-classes.js.map +1 -1
  27. package/lib/helpers/get-search-filter.js.map +1 -1
  28. package/lib/helpers/handle-static-routes.js +7 -7
  29. package/lib/helpers/handle-static-routes.js.map +1 -1
  30. package/lib/helpers/index.js.map +1 -1
  31. package/lib/helpers/render-apple-tags.js.map +1 -1
  32. package/lib/helpers/set-blaze-debug.js.map +1 -1
  33. package/lib/helpers/static-route-handlers/generic-file-handler.js +1 -1
  34. package/lib/helpers/static-route-handlers/generic-file-handler.js.map +1 -1
  35. package/lib/helpers/static-route-handlers/index.js +1 -1
  36. package/lib/helpers/static-route-handlers/index.js.map +1 -1
  37. package/lib/helpers/static-route-handlers/robots-txt.js.map +1 -1
  38. package/lib/helpers/static-route-handlers/sitemap-file.js.map +1 -1
  39. package/lib/helpers/static-route-handlers/sitemap.js.map +1 -1
  40. package/lib/hoc/withBlaze.js +20 -20
  41. package/lib/hoc/withBlaze.js.map +1 -1
  42. package/lib/hooks/use-get-page.js.map +1 -1
  43. package/lib/index.js +2 -2
  44. package/lib/index.js.map +1 -1
  45. package/lib/pages/Resolver.js +13 -6
  46. package/lib/pages/Resolver.js.map +1 -1
  47. package/lib/pages/document/DocumentBody.js.map +1 -1
  48. package/lib/pages/document/_document.js +2 -2
  49. package/lib/pages/document/_document.js.map +1 -1
  50. package/lib/server/index.js.map +1 -1
  51. package/lib/server/routes.js.map +1 -1
  52. package/lib-es/application/query/index.js.map +1 -1
  53. package/lib-es/blaze.config.js.map +1 -1
  54. package/lib-es/components/DebugSidebar/index.js.map +1 -1
  55. package/lib-es/components/index.js.map +1 -1
  56. package/lib-es/constants.js +1 -1
  57. package/lib-es/constants.js.map +1 -1
  58. package/lib-es/containers/ContentContainer.js.map +1 -1
  59. package/lib-es/containers/index.js.map +1 -1
  60. package/lib-es/helpers/build-admin-href.js.map +1 -1
  61. package/lib-es/helpers/check-for-gtm.js.map +1 -1
  62. package/lib-es/helpers/check-parent.js.map +1 -1
  63. package/lib-es/helpers/check-preview-url.js.map +1 -1
  64. package/lib-es/helpers/check-url.js +12 -11
  65. package/lib-es/helpers/check-url.js.map +1 -1
  66. package/lib-es/helpers/get-entitys-actions.js.map +1 -1
  67. package/lib-es/helpers/get-error-message.js.map +1 -1
  68. package/lib-es/helpers/get-page-data.js.map +1 -1
  69. package/lib-es/helpers/get-root-selector-classes.js.map +1 -1
  70. package/lib-es/helpers/get-search-filter.js.map +1 -1
  71. package/lib-es/helpers/handle-static-routes.js.map +1 -1
  72. package/lib-es/helpers/index.js.map +1 -1
  73. package/lib-es/helpers/render-apple-tags.js.map +1 -1
  74. package/lib-es/helpers/set-blaze-debug.js.map +1 -1
  75. package/lib-es/helpers/static-route-handlers/generic-file-handler.js.map +1 -1
  76. package/lib-es/helpers/static-route-handlers/index.js.map +1 -1
  77. package/lib-es/helpers/static-route-handlers/robots-txt.js.map +1 -1
  78. package/lib-es/helpers/static-route-handlers/sitemap-file.js.map +1 -1
  79. package/lib-es/helpers/static-route-handlers/sitemap.js.map +1 -1
  80. package/lib-es/hoc/withBlaze.js +5 -5
  81. package/lib-es/hoc/withBlaze.js.map +1 -1
  82. package/lib-es/hooks/use-get-page.js.map +1 -1
  83. package/lib-es/index.js.map +1 -1
  84. package/lib-es/pages/Resolver.js +11 -4
  85. package/lib-es/pages/Resolver.js.map +1 -1
  86. package/lib-es/pages/document/DocumentBody.js.map +1 -1
  87. package/lib-es/pages/document/_document.js.map +1 -1
  88. package/lib-es/server/index.js.map +1 -1
  89. package/lib-es/server/routes.js.map +1 -1
  90. package/package.json +14 -14
  91. package/src/constants.js +1 -1
  92. package/src/helpers/check-url.js +13 -13
  93. package/src/pages/Resolver.js +10 -2
  94. package/tests/unit/src/__snapshots__/constants.test.js.snap +1 -1
  95. package/tests/unit/src/constants.test.js +14 -3
  96. package/tests/unit/src/helpers/check-url.test.js +4 -2
  97. package/tests/unit/src/pages/__snapshots__/Resolver.test.js.snap +5 -1
  98. package/tests/unit/src/server/__snapshots__/routes.test.js.snap +1 -1
@@ -90,17 +90,14 @@ const getFullUrl = (req, asPath) => {
90
90
  const doUrlCheck = async ({ asPath, url, apolloClient, res, handle404Error, blazeApp }) => {
91
91
  try {
92
92
  const {
93
- data: {
94
- checkUrl: { itemId, itemEntity, urlTo, pageData = {} }
95
- }
93
+ data: { checkUrl: { itemId, itemEntity, urlTo, pageData = {} } = {} } = {}
96
94
  } = await apolloClient.query({
97
95
  query: checkUrlQuery,
98
- variables: {
99
- url
100
- }
96
+ variables: { url }
101
97
  });
102
98
 
103
- const { cacheControlMaxAge = null } = pageData || {}; // pageData can be null when there is no page
99
+ const { cacheControlMaxAge = null } = pageData || {};
100
+
104
101
  if (res && cacheControlMaxAge !== null && cacheControlMaxAge >= 0) {
105
102
  res.setHeader('Cache-Control', `max-age=${cacheControlMaxAge}`);
106
103
  }
@@ -112,8 +109,7 @@ const doUrlCheck = async ({ asPath, url, apolloClient, res, handle404Error, blaz
112
109
  redirectUrl = queryString ? `${urlTo}?${queryString}` : urlTo;
113
110
  }
114
111
 
115
- doRedirect(res, redirectUrl);
116
- return { redirecting: true };
112
+ return doRedirect(res, redirectUrl);
117
113
  }
118
114
  const rootSelectorClasses = getRootSelectorClasses(url, getRootClassesLimit());
119
115
  return {
@@ -123,14 +119,16 @@ const doUrlCheck = async ({ asPath, url, apolloClient, res, handle404Error, blaz
123
119
  itemEntity: getUnpublishedEntityName(itemEntity)
124
120
  };
125
121
  } catch (err) {
122
+ if (!err.graphQLErrors || !err.graphQLErrors.length) {
123
+ return handleError(err, res, handle404Error, blazeApp);
124
+ }
125
+
126
126
  const parentPATH = checkParent(url);
127
127
  if (handle404Error && parentPATH) {
128
- doRedirect(res, parentPATH);
129
- } else {
130
- return handleError(err, res, handle404Error, blazeApp);
128
+ return doRedirect(res, parentPATH);
131
129
  }
132
130
 
133
- return handle404Error ? {} : null;
131
+ return handleError(err, res, handle404Error, blazeApp);
134
132
  }
135
133
  };
136
134
 
@@ -157,6 +155,8 @@ function doRedirect(res, redirectUrl) {
157
155
  } else {
158
156
  window.location.href = redirectUrl;
159
157
  }
158
+
159
+ return { redirecting: true };
160
160
  }
161
161
 
162
162
  export default checkUrl;
@@ -44,8 +44,16 @@ const Resolver = props => {
44
44
 
45
45
  if (isStatusPage) return 'OK';
46
46
 
47
- if (!pageData || !itemId || !itemEntity)
48
- return <NextError statusCode={errorCode} title={errorMessage} />;
47
+ if (!pageData || !itemId || !itemEntity) {
48
+ return (
49
+ <>
50
+ <div className="next_error">
51
+ <NextError statusCode={errorCode} title={errorMessage} />
52
+ </div>
53
+ <DebugSidebar itemId={itemId} itemEntity={itemEntity} />
54
+ </>
55
+ );
56
+ }
49
57
 
50
58
  return (
51
59
  <div className={rootSelectorClasses}>
@@ -66,7 +66,7 @@ Object {
66
66
  "ROUTE_PATTERN_ROBOTS_TXT": "/robots.txt",
67
67
  "ROUTE_PATTERN_SITEMAP": "/sitemap.xml",
68
68
  "ROUTE_PATTERN_SITEMAP_FILE_REGEX": /\\\\/sitemap\\\\/\\.\\*\\.xml/,
69
- "ROUTE_REGEX": /\\^\\\\/\\[a-z0-9€_\\\\/\\]\\+\\(\\?:\\[-\\\\/\\]\\{1,2\\}\\[a-z0-9\\\\/€_\\\\/\\]\\+\\)\\*\\$\\|\\^\\\\/\\$/i,
69
+ "ROUTE_REGEX": /\\^\\\\/\\[a-z0-9€_\\\\/\\]\\+\\(\\?:\\[-\\\\/\\\\\\.\\]\\{1,2\\}\\[a-z0-9\\\\/€_\\\\/\\]\\+\\)\\*\\$\\|\\^\\\\/\\$/i,
70
70
  "SEARCH_FILTER": "searchfilter",
71
71
  "SITEMAP_STORE_KEY": "default_sitemap",
72
72
  "STATIC_FILE_FORWARD_HEADERS": Array [
@@ -7,10 +7,21 @@ describe('Constants', () => {
7
7
  expect(constants).toMatchSnapshot();
8
8
  });
9
9
 
10
- it('should handle trailing and no trailing route slashes', () => {
10
+ describe('Default route regex', () => {
11
11
  const { ROUTE_REGEX } = constants;
12
- expect(ROUTE_REGEX.test('/page')).toEqual(true);
13
- expect(ROUTE_REGEX.test('/page/')).toEqual(true);
12
+
13
+ it('should handle trailing and no trailing route slashes', () => {
14
+ expect(ROUTE_REGEX.test('/page')).toEqual(true);
15
+ expect(ROUTE_REGEX.test('/page/')).toEqual(true);
16
+ });
17
+
18
+ it('should allow specific characters in route regex', () => {
19
+ const validCharacters = 'abc0123€_';
20
+ expect(ROUTE_REGEX.test(`/${validCharacters}`)).toEqual(true);
21
+ expect(ROUTE_REGEX.test(`/${validCharacters}/${validCharacters}.pdf`)).toEqual(true);
22
+ expect(ROUTE_REGEX.test(`/${validCharacters}=`)).toEqual(false);
23
+ expect(ROUTE_REGEX.test(`/${validCharacters}/${validCharacters}=`)).toEqual(false);
24
+ });
14
25
  });
15
26
 
16
27
  it('should be able to override default ROUTE_REGEX', () => {
@@ -229,13 +229,15 @@ describe('Check url', () => {
229
229
 
230
230
  it('should handle redirect to parent on not found', async () => {
231
231
  apolloClient.query.mockImplementationOnce(async () => {
232
- throw new Error('Not found');
232
+ const error = new Error('Not found');
233
+ error.graphQLErrors = ['error'];
234
+ throw error;
233
235
  });
234
236
  const parentChildAsPath = '/parent/child';
235
237
  const result = await checkUrl({ ...props, asPath: parentChildAsPath });
236
238
  expect(res.writeHead).toHaveBeenCalledWith(301, { Location: '/parent' });
237
239
  expect(res.end).toHaveBeenCalled();
238
- redirectResultCheck(result, false);
240
+ redirectResultCheck(result, true);
239
241
  apolloQueryCheck(apolloClient, parentChildAsPath);
240
242
  });
241
243
 
@@ -14,7 +14,11 @@ exports[`Resolver page should disable SSR 1`] = `<DocumentFragment />`;
14
14
 
15
15
  exports[`Resolver page should render 404 error if pageData, itemId or itemEntity falsey 1`] = `
16
16
  <DocumentFragment>
17
- NextError
17
+ <div
18
+ class="next_error"
19
+ >
20
+ NextError
21
+ </div>
18
22
  </DocumentFragment>
19
23
  `;
20
24
 
@@ -5,7 +5,7 @@ Array [
5
5
  Object {
6
6
  "name": "resolver",
7
7
  "page": "/Resolver",
8
- "pattern": /\\^\\\\/\\[a-z0-9€_\\\\/\\]\\+\\(\\?:\\[-\\\\/\\]\\{1,2\\}\\[a-z0-9\\\\/€_\\\\/\\]\\+\\)\\*\\$\\|\\^\\\\/\\$/i,
8
+ "pattern": /\\^\\\\/\\[a-z0-9€_\\\\/\\]\\+\\(\\?:\\[-\\\\/\\\\\\.\\]\\{1,2\\}\\[a-z0-9\\\\/€_\\\\/\\]\\+\\)\\*\\$\\|\\^\\\\/\\$/i,
9
9
  },
10
10
  Object {
11
11
  "name": "preview",