@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.
- package/CHANGELOG.md +170 -0
- package/README.md +3 -12
- package/lib/application/query/index.js.map +1 -1
- package/lib/blaze.config.js.map +1 -1
- package/lib/components/DebugSidebar/index.js +2 -2
- package/lib/components/DebugSidebar/index.js.map +1 -1
- package/lib/components/index.js.map +1 -1
- package/lib/constants.js +1 -1
- package/lib/constants.js.map +1 -1
- package/lib/containers/ContentContainer.js +6 -6
- package/lib/containers/ContentContainer.js.map +1 -1
- package/lib/containers/index.js.map +1 -1
- package/lib/helpers/build-admin-href.js +1 -1
- package/lib/helpers/build-admin-href.js.map +1 -1
- package/lib/helpers/check-for-gtm.js +1 -1
- package/lib/helpers/check-for-gtm.js.map +1 -1
- package/lib/helpers/check-parent.js.map +1 -1
- package/lib/helpers/check-preview-url.js.map +1 -1
- package/lib/helpers/check-url.js +35 -30
- package/lib/helpers/check-url.js.map +1 -1
- package/lib/helpers/get-entitys-actions.js.map +1 -1
- package/lib/helpers/get-error-message.js.map +1 -1
- package/lib/helpers/get-page-data.js +5 -5
- package/lib/helpers/get-page-data.js.map +1 -1
- package/lib/helpers/get-root-selector-classes.js +3 -3
- package/lib/helpers/get-root-selector-classes.js.map +1 -1
- package/lib/helpers/get-search-filter.js.map +1 -1
- package/lib/helpers/handle-static-routes.js +7 -7
- package/lib/helpers/handle-static-routes.js.map +1 -1
- package/lib/helpers/index.js.map +1 -1
- package/lib/helpers/render-apple-tags.js.map +1 -1
- package/lib/helpers/set-blaze-debug.js.map +1 -1
- package/lib/helpers/static-route-handlers/generic-file-handler.js +1 -1
- package/lib/helpers/static-route-handlers/generic-file-handler.js.map +1 -1
- package/lib/helpers/static-route-handlers/index.js +1 -1
- package/lib/helpers/static-route-handlers/index.js.map +1 -1
- package/lib/helpers/static-route-handlers/robots-txt.js.map +1 -1
- package/lib/helpers/static-route-handlers/sitemap-file.js.map +1 -1
- package/lib/helpers/static-route-handlers/sitemap.js.map +1 -1
- package/lib/hoc/withBlaze.js +20 -20
- package/lib/hoc/withBlaze.js.map +1 -1
- package/lib/hooks/use-get-page.js.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/pages/Resolver.js +13 -6
- package/lib/pages/Resolver.js.map +1 -1
- package/lib/pages/document/DocumentBody.js.map +1 -1
- package/lib/pages/document/_document.js +2 -2
- package/lib/pages/document/_document.js.map +1 -1
- package/lib/server/index.js.map +1 -1
- package/lib/server/routes.js.map +1 -1
- package/lib-es/application/query/index.js.map +1 -1
- package/lib-es/blaze.config.js.map +1 -1
- package/lib-es/components/DebugSidebar/index.js.map +1 -1
- package/lib-es/components/index.js.map +1 -1
- package/lib-es/constants.js +1 -1
- package/lib-es/constants.js.map +1 -1
- package/lib-es/containers/ContentContainer.js.map +1 -1
- package/lib-es/containers/index.js.map +1 -1
- package/lib-es/helpers/build-admin-href.js.map +1 -1
- package/lib-es/helpers/check-for-gtm.js.map +1 -1
- package/lib-es/helpers/check-parent.js.map +1 -1
- package/lib-es/helpers/check-preview-url.js.map +1 -1
- package/lib-es/helpers/check-url.js +12 -11
- package/lib-es/helpers/check-url.js.map +1 -1
- package/lib-es/helpers/get-entitys-actions.js.map +1 -1
- package/lib-es/helpers/get-error-message.js.map +1 -1
- package/lib-es/helpers/get-page-data.js.map +1 -1
- package/lib-es/helpers/get-root-selector-classes.js.map +1 -1
- package/lib-es/helpers/get-search-filter.js.map +1 -1
- package/lib-es/helpers/handle-static-routes.js.map +1 -1
- package/lib-es/helpers/index.js.map +1 -1
- package/lib-es/helpers/render-apple-tags.js.map +1 -1
- package/lib-es/helpers/set-blaze-debug.js.map +1 -1
- package/lib-es/helpers/static-route-handlers/generic-file-handler.js.map +1 -1
- package/lib-es/helpers/static-route-handlers/index.js.map +1 -1
- package/lib-es/helpers/static-route-handlers/robots-txt.js.map +1 -1
- package/lib-es/helpers/static-route-handlers/sitemap-file.js.map +1 -1
- package/lib-es/helpers/static-route-handlers/sitemap.js.map +1 -1
- package/lib-es/hoc/withBlaze.js +5 -5
- package/lib-es/hoc/withBlaze.js.map +1 -1
- package/lib-es/hooks/use-get-page.js.map +1 -1
- package/lib-es/index.js.map +1 -1
- package/lib-es/pages/Resolver.js +11 -4
- package/lib-es/pages/Resolver.js.map +1 -1
- package/lib-es/pages/document/DocumentBody.js.map +1 -1
- package/lib-es/pages/document/_document.js.map +1 -1
- package/lib-es/server/index.js.map +1 -1
- package/lib-es/server/routes.js.map +1 -1
- package/package.json +14 -14
- package/src/constants.js +1 -1
- package/src/helpers/check-url.js +13 -13
- package/src/pages/Resolver.js +10 -2
- package/tests/unit/src/__snapshots__/constants.test.js.snap +1 -1
- package/tests/unit/src/constants.test.js +14 -3
- package/tests/unit/src/helpers/check-url.test.js +4 -2
- package/tests/unit/src/pages/__snapshots__/Resolver.test.js.snap +5 -1
- package/tests/unit/src/server/__snapshots__/routes.test.js.snap +1 -1
package/src/helpers/check-url.js
CHANGED
|
@@ -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 || {};
|
|
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
|
|
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;
|
package/src/pages/Resolver.js
CHANGED
|
@@ -44,8 +44,16 @@ const Resolver = props => {
|
|
|
44
44
|
|
|
45
45
|
if (isStatusPage) return 'OK';
|
|
46
46
|
|
|
47
|
-
if (!pageData || !itemId || !itemEntity)
|
|
48
|
-
return
|
|
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€_\\\\/\\]\\+\\(\\?:\\[
|
|
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
|
-
|
|
10
|
+
describe('Default route regex', () => {
|
|
11
11
|
const { ROUTE_REGEX } = constants;
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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€_\\\\/\\]\\+\\(\\?:\\[
|
|
8
|
+
"pattern": /\\^\\\\/\\[a-z0-9€_\\\\/\\]\\+\\(\\?:\\[-\\\\/\\\\\\.\\]\\{1,2\\}\\[a-z0-9\\\\/€_\\\\/\\]\\+\\)\\*\\$\\|\\^\\\\/\\$/i,
|
|
9
9
|
},
|
|
10
10
|
Object {
|
|
11
11
|
"name": "preview",
|