@enonic/nextjs-adapter 5.0.0-beta.1 → 5.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +129 -155
- package/dist/common/UrlProcessor.d.ts +8 -2
- package/dist/common/UrlProcessor.js +89 -32
- package/dist/common/UrlProcessor.js.map +1 -1
- package/dist/common/constants.d.ts +1 -2
- package/dist/common/constants.js +25 -26
- package/dist/common/constants.js.map +1 -1
- package/dist/guillotine/buildErrorResponse.d.ts +1 -1
- package/dist/guillotine/buildErrorResponse.js +2 -4
- package/dist/guillotine/buildErrorResponse.js.map +1 -1
- package/dist/guillotine/collectComponentDescriptors.d.ts +3 -5
- package/dist/guillotine/collectComponentDescriptors.js +3 -5
- package/dist/guillotine/collectComponentDescriptors.js.map +1 -1
- package/dist/guillotine/combineMultipleQueries.js +13 -22
- package/dist/guillotine/combineMultipleQueries.js.map +1 -1
- package/dist/guillotine/createMetaData.d.ts +2 -4
- package/dist/guillotine/createMetaData.js +2 -4
- package/dist/guillotine/createMetaData.js.map +1 -1
- package/dist/guillotine/fetchContent.js +17 -27
- package/dist/guillotine/fetchContent.js.map +1 -1
- package/dist/guillotine/fetchContentData.d.ts +1 -1
- package/dist/guillotine/fetchContentData.js +4 -12
- package/dist/guillotine/fetchContentData.js.map +1 -1
- package/dist/guillotine/fetchContentPathsForAllLocales.d.ts +1 -1
- package/dist/guillotine/fetchContentPathsForAllLocales.js +3 -3
- package/dist/guillotine/fetchContentPathsForAllLocales.js.map +1 -1
- package/dist/guillotine/fetchContentPathsForLocale.d.ts +1 -1
- package/dist/guillotine/fetchContentPathsForLocale.js +13 -13
- package/dist/guillotine/fetchContentPathsForLocale.js.map +1 -1
- package/dist/guillotine/fetchFromApi.d.ts +2 -2
- package/dist/guillotine/fetchFromApi.js +5 -3
- package/dist/guillotine/fetchFromApi.js.map +1 -1
- package/dist/guillotine/fetchGuillotine.d.ts +2 -2
- package/dist/guillotine/fetchGuillotine.js +2 -2
- package/dist/guillotine/fetchGuillotine.js.map +1 -1
- package/dist/guillotine/fetchMetaData.d.ts +1 -1
- package/dist/guillotine/fetchMetaData.js +3 -6
- package/dist/guillotine/fetchMetaData.js.map +1 -1
- package/dist/guillotine/{getSiteRelativePathOrThrow.d.ts → getCleanContentPathArrayOrThrow400.d.ts} +1 -1
- package/dist/guillotine/{getSiteRelativePathOrThrow.js → getCleanContentPathArrayOrThrow400.js} +2 -2
- package/dist/guillotine/getCleanContentPathArrayOrThrow400.js.map +1 -0
- package/dist/guillotine/getMetaData.d.ts +0 -2
- package/dist/guillotine/getMetaData.js +10 -17
- package/dist/guillotine/getMetaData.js.map +1 -1
- package/dist/guillotine/getQueryAndVariables.d.ts +2 -2
- package/dist/guillotine/getQueryAndVariables.js +5 -12
- package/dist/guillotine/getQueryAndVariables.js.map +1 -1
- package/dist/guillotine/metadata/richTextQuery.js +0 -1
- package/dist/guillotine/metadata/richTextQuery.js.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.js +2 -4
- package/dist/index.js.map +1 -1
- package/dist/query/Shortcut.d.ts +1 -1
- package/dist/query/Shortcut.js +15 -11
- package/dist/query/Shortcut.js.map +1 -1
- package/dist/types/component.d.ts +6 -9
- package/dist/types/componentProps.d.ts +4 -4
- package/dist/utils/fixDoubleSlashes.d.ts +0 -3
- package/dist/utils/fixDoubleSlashes.js +0 -9
- package/dist/utils/fixDoubleSlashes.js.map +1 -1
- package/dist/utils/getContentApiUrl.d.ts +2 -0
- package/dist/utils/getContentApiUrl.js +15 -0
- package/dist/utils/getContentApiUrl.js.map +1 -0
- package/dist/utils/getRenderMode.d.ts +1 -1
- package/dist/utils/getRenderMode.js +1 -1
- package/dist/utils/getRenderMode.js.map +1 -1
- package/dist/views/BaseMacro.jsx +30 -1
- package/dist/views/BaseMacro.jsx.map +1 -1
- package/dist/views/RichTextView.jsx +8 -8
- package/dist/views/RichTextView.jsx.map +1 -1
- package/dist/views/Text.jsx +1 -1
- package/dist/views/Text.jsx.map +1 -1
- package/package.json +13 -13
- package/dist/guillotine/getSiteRelativePathOrThrow.js.map +0 -1
- package/dist/utils/decryptParams.d.ts +0 -1
- package/dist/utils/decryptParams.js +0 -20
- package/dist/utils/decryptParams.js.map +0 -1
- package/dist/utils/encryptParams.d.ts +0 -1
- package/dist/utils/encryptParams.js +0 -12
- package/dist/utils/encryptParams.js.map +0 -1
- package/dist/utils/getContentBranch.d.ts +0 -2
- package/dist/utils/getContentBranch.js +0 -11
- package/dist/utils/getContentBranch.js.map +0 -1
|
@@ -1,49 +1,66 @@
|
|
|
1
1
|
import { RENDER_MODE } from './constants';
|
|
2
2
|
import { fixDoubleSlashes } from '../utils/fixDoubleSlashes';
|
|
3
3
|
import { addBasePath } from 'next/dist/client/add-base-path';
|
|
4
|
-
import {
|
|
4
|
+
import { parseUrl } from 'next/dist/shared/lib/router/utils/parse-url';
|
|
5
|
+
import { getLocaleMappingByLocale } from '../utils/getLocaleMappingByLocale';
|
|
5
6
|
export class UrlProcessor {
|
|
6
7
|
static process(url, meta, serverSide = false, isResource = false) {
|
|
7
|
-
|
|
8
|
+
var _a;
|
|
9
|
+
if (this.startsWithHash(url) || !meta || (this.isAttachmentUrl(url)) && meta.renderMode === RENDER_MODE.NEXT) {
|
|
8
10
|
// do not process if:
|
|
9
11
|
// - url starts with #
|
|
10
|
-
// - url is absolute
|
|
11
12
|
// - meta is absent
|
|
13
|
+
// - attachment urls in NEXT mode
|
|
12
14
|
return url;
|
|
13
15
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
16
|
+
let normalUrl;
|
|
17
|
+
if (this.isRelative(url)) {
|
|
18
|
+
const mapping = getLocaleMappingByLocale(meta.locale);
|
|
19
|
+
if ((_a = mapping.site) === null || _a === void 0 ? void 0 : _a.length) {
|
|
20
|
+
// see if url starts with site name and remove it
|
|
21
|
+
const normalSite = mapping.site.replace(this.startSlashPattern, '').replace(this.endSlashPattern, '');
|
|
22
|
+
normalUrl = url.replace(new RegExp(`^/?${normalSite}(?=/|$)`), '');
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
normalUrl = url;
|
|
26
|
+
}
|
|
18
27
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
else {
|
|
29
|
+
// url is absolute, try to make it relative by striping apiUrl
|
|
30
|
+
// NB: will fail to do so if content api is not on the same domain as enonic xp
|
|
31
|
+
const apiUrl = this.getApiUrl(meta);
|
|
32
|
+
normalUrl = this.stripApiUrl(url, apiUrl);
|
|
33
|
+
// if url is still absolute, return it as is
|
|
34
|
+
if (!this.isRelative(normalUrl)) {
|
|
35
|
+
return normalUrl;
|
|
36
|
+
}
|
|
25
37
|
}
|
|
26
|
-
|
|
38
|
+
const baseUrl = (meta === null || meta === void 0 ? void 0 : meta.baseUrl) && (meta === null || meta === void 0 ? void 0 : meta.baseUrl) !== '/' ? meta.baseUrl : '';
|
|
39
|
+
let result;
|
|
27
40
|
if (meta.renderMode === RENDER_MODE.NEXT) {
|
|
41
|
+
// only add basePath and locale in next mode
|
|
42
|
+
result = `/${normalUrl}`;
|
|
43
|
+
if (!isResource && meta.locale !== meta.defaultLocale) {
|
|
44
|
+
// append locale if it's not the default one
|
|
45
|
+
// to avoid additional middleware redirection
|
|
46
|
+
// NB: don't add locale to resource urls
|
|
47
|
+
result = `/${meta.locale}${result}`;
|
|
48
|
+
}
|
|
28
49
|
if (!serverSide) {
|
|
29
50
|
// no need for baseurl and basepath on server
|
|
30
|
-
result = addBasePath(result);
|
|
51
|
+
result = addBasePath(`${baseUrl}${result}`);
|
|
31
52
|
}
|
|
32
53
|
}
|
|
54
|
+
else {
|
|
55
|
+
result = `${baseUrl}/${normalUrl}`;
|
|
56
|
+
}
|
|
33
57
|
return fixDoubleSlashes(result);
|
|
34
58
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (result.charAt(0) !== '/') {
|
|
41
|
-
result = '/' + result;
|
|
42
|
-
}
|
|
43
|
-
if (!result.startsWith(meta.site)) {
|
|
44
|
-
result = `${meta.site}${result !== '/' ? result : ''}`;
|
|
45
|
-
}
|
|
46
|
-
return result;
|
|
59
|
+
/*
|
|
60
|
+
* Deprecated
|
|
61
|
+
* */
|
|
62
|
+
static setSiteKey(key) {
|
|
63
|
+
// TODO: remove in next major release
|
|
47
64
|
}
|
|
48
65
|
static isMediaLink(ref, linkData) {
|
|
49
66
|
var _a;
|
|
@@ -60,25 +77,59 @@ export class UrlProcessor {
|
|
|
60
77
|
const srcParts = src.trim().split(' ');
|
|
61
78
|
switch (srcParts.length) {
|
|
62
79
|
case 1: // src only
|
|
63
|
-
return
|
|
80
|
+
return this.process(src, meta);
|
|
64
81
|
case 2: // width descriptor
|
|
65
|
-
return `${
|
|
82
|
+
return `${this.process(srcParts[0], meta)} ${srcParts[1]}`;
|
|
66
83
|
case 3: // pixel density descriptor
|
|
67
|
-
return `${
|
|
84
|
+
return `${this.process(srcParts[0], meta)} ${srcParts[1]} ${srcParts[2]}`;
|
|
68
85
|
default:
|
|
69
86
|
console.warn('Can not process image srcset: ' + src);
|
|
70
87
|
return src;
|
|
71
88
|
}
|
|
72
89
|
}).join(', ');
|
|
73
90
|
}
|
|
91
|
+
static stripApiUrl(url, apiUrl) {
|
|
92
|
+
// normalise localhost-127.0.0.1 if present in urls
|
|
93
|
+
const normalUrl = parseUrl(url.replace(this.localhostPattern, '127.0.0.1'));
|
|
94
|
+
const normalApiUrl = parseUrl(apiUrl.replace(this.localhostPattern, '127.0.0.1'));
|
|
95
|
+
// WARNING! disregarding the protocol (http/https)
|
|
96
|
+
if (normalUrl.hostname !== normalApiUrl.hostname
|
|
97
|
+
|| normalUrl.port !== normalApiUrl.port) {
|
|
98
|
+
// can't strip apiUrl if hostnames or ports are different
|
|
99
|
+
return url;
|
|
100
|
+
}
|
|
101
|
+
const urlPathCrumbs = normalUrl.pathname.split('/');
|
|
102
|
+
const apiUrlPathCrumbs = normalApiUrl.pathname.split('/');
|
|
103
|
+
for (let i = 0; i < Math.min(apiUrlPathCrumbs.length, urlPathCrumbs.length);) {
|
|
104
|
+
const urlPathCrumb = urlPathCrumbs[i];
|
|
105
|
+
const apiUrlPathCrumb = apiUrlPathCrumbs[i];
|
|
106
|
+
if (urlPathCrumb === apiUrlPathCrumb) {
|
|
107
|
+
urlPathCrumbs.shift();
|
|
108
|
+
apiUrlPathCrumbs.shift();
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
i++;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return `/${urlPathCrumbs.join('/')}` + normalUrl.search + normalUrl.hash;
|
|
115
|
+
}
|
|
74
116
|
static isAttachmentUrl(url) {
|
|
75
117
|
return this.IMG_ATMT_REGEXP.test(url);
|
|
76
118
|
}
|
|
77
119
|
static startsWithHash(url) {
|
|
78
120
|
return (url === null || url === void 0 ? void 0 : url.charAt(0)) == '#';
|
|
79
121
|
}
|
|
80
|
-
static
|
|
81
|
-
return
|
|
122
|
+
static isRelative(url) {
|
|
123
|
+
return !/^(?:ht|f)tps?:\/\/[^ :\r\n\t]+/.test(url);
|
|
124
|
+
}
|
|
125
|
+
static getApiUrl(meta) {
|
|
126
|
+
var _a, _b;
|
|
127
|
+
let combinedUrl = ((_a = meta.apiUrl) === null || _a === void 0 ? void 0 : _a.replace(this.endSlashPattern, '')) || '';
|
|
128
|
+
const mapping = getLocaleMappingByLocale(meta.locale);
|
|
129
|
+
if ((_b = mapping.site) === null || _b === void 0 ? void 0 : _b.length) {
|
|
130
|
+
combinedUrl += '/' + mapping.site.replace(this.startSlashPattern, '');
|
|
131
|
+
}
|
|
132
|
+
return combinedUrl;
|
|
82
133
|
}
|
|
83
134
|
}
|
|
84
135
|
UrlProcessor.IMG_TAG = 'img';
|
|
@@ -88,7 +139,13 @@ UrlProcessor.IMG_ATTR = 'data-image-ref';
|
|
|
88
139
|
UrlProcessor.LINK_ATTR = 'data-link-ref';
|
|
89
140
|
UrlProcessor.MACRO_ATTR = 'data-macro-ref';
|
|
90
141
|
UrlProcessor.IMG_ATMT_REGEXP = /\/_\/media:(image|attachment)\//;
|
|
142
|
+
UrlProcessor.endSlashPattern = /\/+$/;
|
|
143
|
+
UrlProcessor.startSlashPattern = /^\/+/;
|
|
144
|
+
UrlProcessor.localhostPattern = /localhost/;
|
|
91
145
|
export function getUrl(url, meta) {
|
|
92
146
|
return UrlProcessor.process(url, meta, false, false);
|
|
93
147
|
}
|
|
148
|
+
export function getAsset(url, meta) {
|
|
149
|
+
return UrlProcessor.process(url, meta, false, true);
|
|
150
|
+
}
|
|
94
151
|
//# sourceMappingURL=UrlProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UrlProcessor.js","sourceRoot":"","sources":["../../src/common/UrlProcessor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UrlProcessor.js","sourceRoot":"","sources":["../../src/common/UrlProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export declare const CATCH_ALL = "*";
|
|
2
2
|
export declare enum ENV_VARS {
|
|
3
3
|
MAPPINGS = "ENONIC_MAPPINGS",
|
|
4
|
-
API_TOKEN = "ENONIC_API_TOKEN",
|
|
5
4
|
API_URL = "ENONIC_API",
|
|
6
5
|
APP_NAME = "ENONIC_APP_NAME",
|
|
7
6
|
LOG = "ENONIC_LOGGING"
|
|
@@ -14,7 +13,7 @@ export declare const FRAGMENT_DEFAULT_REGION_NAME = "fragment";
|
|
|
14
13
|
* - media
|
|
15
14
|
* - paths with '/_' in them
|
|
16
15
|
*/
|
|
17
|
-
export declare const GET_STATIC_PATHS_QUERY:
|
|
16
|
+
export declare const GET_STATIC_PATHS_QUERY = "query ($pathRegex: String!, $count: Int) {\n guillotine {\n queryDsl(\n first: $count,\n sort: {\n field: \"modifiedTime\",\n direction: DESC\n }\n query: {\n boolean: {\n mustNot: [\n {in: {field: \"type\", stringValues: [\"base:shortcut\", \"portal:fragment\", \"portal:template-folder\", \"portal:page-template\"]}}\n {like: {field: \"type\", value: \"media:*\"}}\n ]\n must: [\n {like: {field:\"_path\", value: $pathRegex}}\n ]\n }\n }\n ) {\n _name\n _path\n site {_name}\n }\n }\n}";
|
|
18
17
|
export declare enum GUILLOTINE_REQUEST_HEADERS {
|
|
19
18
|
COOKIE = "Cookie",
|
|
20
19
|
LOCALE = "locale",
|
package/dist/common/constants.js
CHANGED
|
@@ -2,45 +2,44 @@ export const CATCH_ALL = '*';
|
|
|
2
2
|
export var ENV_VARS;
|
|
3
3
|
(function (ENV_VARS) {
|
|
4
4
|
ENV_VARS["MAPPINGS"] = "ENONIC_MAPPINGS";
|
|
5
|
-
ENV_VARS["API_TOKEN"] = "ENONIC_API_TOKEN";
|
|
6
5
|
ENV_VARS["API_URL"] = "ENONIC_API";
|
|
7
6
|
ENV_VARS["APP_NAME"] = "ENONIC_APP_NAME";
|
|
8
7
|
ENV_VARS["LOG"] = "ENONIC_LOGGING";
|
|
9
8
|
})(ENV_VARS || (ENV_VARS = {}));
|
|
10
9
|
export const FRAGMENT_CONTENTTYPE_NAME = 'portal:fragment';
|
|
11
10
|
export const FRAGMENT_DEFAULT_REGION_NAME = 'fragment';
|
|
12
|
-
import { queryGuillotine } from '../guillotine/getMetaData';
|
|
13
11
|
/** excluded contents:
|
|
14
12
|
* - folder
|
|
15
13
|
* - shortcuts (redirect can't be used in prerender)
|
|
16
14
|
* - media
|
|
17
15
|
* - paths with '/_' in them
|
|
18
16
|
*/
|
|
19
|
-
export const GET_STATIC_PATHS_QUERY =
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
17
|
+
export const GET_STATIC_PATHS_QUERY = `query ($pathRegex: String!, $count: Int) {
|
|
18
|
+
guillotine {
|
|
19
|
+
queryDsl(
|
|
20
|
+
first: $count,
|
|
21
|
+
sort: {
|
|
22
|
+
field: "modifiedTime",
|
|
23
|
+
direction: DESC
|
|
24
|
+
}
|
|
25
|
+
query: {
|
|
26
|
+
boolean: {
|
|
27
|
+
mustNot: [
|
|
28
|
+
{in: {field: "type", stringValues: ["base:shortcut", "portal:fragment", "portal:template-folder", "portal:page-template"]}}
|
|
29
|
+
{like: {field: "type", value: "media:*"}}
|
|
30
|
+
]
|
|
31
|
+
must: [
|
|
32
|
+
{like: {field:"_path", value: $pathRegex}}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
) {
|
|
37
|
+
_name
|
|
38
|
+
_path
|
|
39
|
+
site {_name}
|
|
34
40
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
_name
|
|
38
|
-
_path
|
|
39
|
-
site {_name}
|
|
40
|
-
}`, {
|
|
41
|
-
'$pathRegex': 'String!',
|
|
42
|
-
'$count': 'Int'
|
|
43
|
-
});
|
|
41
|
+
}
|
|
42
|
+
}`;
|
|
44
43
|
// Seems like NodeJS.fetch lowercases all headers, so we need to lowercase the
|
|
45
44
|
// header names here.
|
|
46
45
|
export var GUILLOTINE_REQUEST_HEADERS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAChB,wCAA4B,CAAA;IAC5B,kCAAsB,CAAA;IACtB,wCAA4B,CAAA;IAC5B,kCAAsB,CAAA;AAC1B,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAC3D,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;EAyBpC,CAAC;AAEH,8EAA8E;AAC9E,qBAAqB;AACrB,MAAM,CAAN,IAAY,0BAKX;AALD,WAAY,0BAA0B;IAClC,+CAAiB,CAAA;IACjB,+CAAiB,CAAA;IACjB,iDAAmB,CAAA;IACnB,+DAAiC,CAAA;AACrC,CAAC,EALW,0BAA0B,KAA1B,0BAA0B,QAKrC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAE9C,MAAM,CAAC,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AACrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAC7D,MAAM,CAAC,MAAM,0BAA0B,GAAG,4BAA4B,CAAC;AACvE,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAE1D,MAAM,CAAN,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,gCAAiB,CAAA;IACjB,4BAAa,CAAA;IACb,kCAAmB,CAAA;IACnB,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,4BAAa,CAAA,CAAO,mEAAmE;AAC3F,CAAC,EAPW,WAAW,KAAX,WAAW,QAOtB;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAExD,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAEnD,oHAAoH;AACpH,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAE9C,0DAA0D;AAC1D,MAAM,CAAN,IAAY,iBAMX;AAND,WAAY,iBAAiB;IACzB,kCAAa,CAAA;IACb,sCAAiB,CAAA;IACjB,kCAAa,CAAA;IACb,0CAAqB,CAAA;IACrB,kCAAa,CAAA;AACjB,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;AAED,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACvB,0CAAuB,CAAA;IACvB,gCAAa,CAAA;IACb,gCAAa,CAAA;AACjB,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { FetchContentResult } from '../types';
|
|
2
2
|
import { RENDER_MODE, XP_REQUEST_TYPE } from '../common/constants';
|
|
3
|
-
export declare function buildErrorResponse(requestType: XP_REQUEST_TYPE, renderMode: RENDER_MODE,
|
|
3
|
+
export declare function buildErrorResponse(requestType: XP_REQUEST_TYPE, renderMode: RENDER_MODE, apiUrl: string, baseUrl: string, locale: string, defaultLocale: string, contentPath?: string, contentId?: string): (code?: string, message?: string) => FetchContentResult;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function buildErrorResponse(requestType, renderMode,
|
|
1
|
+
export function buildErrorResponse(requestType, renderMode, apiUrl, baseUrl, locale, defaultLocale, contentPath, contentId) {
|
|
2
2
|
return function (code = '500', message = 'Unknown error') {
|
|
3
3
|
return {
|
|
4
4
|
error: {
|
|
@@ -16,9 +16,7 @@ export function buildErrorResponse(requestType, renderMode, project, site, branc
|
|
|
16
16
|
path: contentPath || '',
|
|
17
17
|
canRender: false,
|
|
18
18
|
catchAll: false,
|
|
19
|
-
|
|
20
|
-
site,
|
|
21
|
-
branch,
|
|
19
|
+
apiUrl,
|
|
22
20
|
baseUrl,
|
|
23
21
|
locale,
|
|
24
22
|
defaultLocale
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildErrorResponse.js","sourceRoot":"","sources":["../../src/guillotine/buildErrorResponse.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,kBAAkB,CAAC,WAA4B,EAAE,UAAuB,
|
|
1
|
+
{"version":3,"file":"buildErrorResponse.js","sourceRoot":"","sources":["../../src/guillotine/buildErrorResponse.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,kBAAkB,CAAC,WAA4B,EAAE,UAAuB,EACpF,MAAc,EAAE,OAAe,EAAE,MAAc,EAAE,aAAqB,EACvC,WAAqB,EAAE,SAAkB;IAExE,OAAO,UAAU,IAAI,GAAG,KAAK,EAAE,OAAO,GAAG,eAAe;QACpD,OAAO;YACH,KAAK,EAAE;gBACH,IAAI;gBACJ,OAAO;aACV;YACD,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,IAAI,EAAE;gBACF,EAAE,EAAE,SAAS,IAAI,EAAE;gBACnB,IAAI,EAAE,EAAE;gBACR,WAAW,EAAE,WAAW;gBACxB,UAAU,EAAE,UAAU;gBACtB,IAAI,EAAE,WAAW,IAAI,EAAE;gBACvB,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,KAAK;gBACf,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,aAAa;aAChB;SACJ,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import type { ComponentDescriptor, Context, PageComponent
|
|
2
|
-
export declare function collectComponentDescriptors({ components,
|
|
1
|
+
import type { ComponentDescriptor, Context, PageComponent } from '../types';
|
|
2
|
+
export declare function collectComponentDescriptors({ components, xpContentPath, context }: {
|
|
3
3
|
components: PageComponent[];
|
|
4
|
-
|
|
5
|
-
branch: string;
|
|
6
|
-
mapping: LocaleMapping;
|
|
4
|
+
xpContentPath: string;
|
|
7
5
|
context: Context;
|
|
8
6
|
}): ComponentDescriptor[];
|
|
@@ -4,7 +4,7 @@ import { APP_NAME, APP_NAME_DASHED } from '../common/env';
|
|
|
4
4
|
import { processComponentConfig } from './processComponentConfig';
|
|
5
5
|
import { getComponentConfig } from './getComponentConfig';
|
|
6
6
|
import { getQueryAndVariables } from './getQueryAndVariables';
|
|
7
|
-
export function collectComponentDescriptors({ components,
|
|
7
|
+
export function collectComponentDescriptors({ components, xpContentPath, context }) {
|
|
8
8
|
var _a, _b;
|
|
9
9
|
const descriptors = [];
|
|
10
10
|
for (const cmp of (components || [])) {
|
|
@@ -16,7 +16,7 @@ export function collectComponentDescriptors({ components, contentPath, branch, m
|
|
|
16
16
|
if (cmpDef) {
|
|
17
17
|
// const partPath = `${xpContentPath}/_component${cmp.path}`;
|
|
18
18
|
const config = getComponentConfig(cmp);
|
|
19
|
-
const queryAndVariables = getQueryAndVariables(cmp.type,
|
|
19
|
+
const queryAndVariables = getQueryAndVariables(cmp.type, xpContentPath, context, cmpDef.query, config);
|
|
20
20
|
if (queryAndVariables) {
|
|
21
21
|
descriptors.push({
|
|
22
22
|
component: cmp,
|
|
@@ -30,9 +30,7 @@ export function collectComponentDescriptors({ components, contentPath, branch, m
|
|
|
30
30
|
// look for parts inside fragments
|
|
31
31
|
const fragPartDescs = collectComponentDescriptors({
|
|
32
32
|
components: (_b = (_a = cmp.fragment) === null || _a === void 0 ? void 0 : _a.fragment) === null || _b === void 0 ? void 0 : _b.components,
|
|
33
|
-
|
|
34
|
-
branch,
|
|
35
|
-
mapping,
|
|
33
|
+
xpContentPath,
|
|
36
34
|
context
|
|
37
35
|
});
|
|
38
36
|
if (fragPartDescs.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectComponentDescriptors.js","sourceRoot":"","sources":["../../src/guillotine/collectComponentDescriptors.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,QAAQ,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AACxD,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAG5D,MAAM,UAAU,2BAA2B,CAAC,EACxC,UAAU,
|
|
1
|
+
{"version":3,"file":"collectComponentDescriptors.js","sourceRoot":"","sources":["../../src/guillotine/collectComponentDescriptors.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,QAAQ,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AACxD,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAG5D,MAAM,UAAU,2BAA2B,CAAC,EACxC,UAAU,EACV,aAAa,EACb,OAAO,EAKV;;IAEG,MAAM,WAAW,GAA0B,EAAE,CAAC;IAE9C,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QACnC,sBAAsB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;QACvD,sBAAsB;QACtB,2DAA2D;QAC3D,IAAI,iBAAiB,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,iBAAiB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACrD,IAAI,MAAM,EAAE,CAAC;gBACT,6DAA6D;gBAC7D,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACvG,IAAI,iBAAiB,EAAE,CAAC;oBACpB,WAAW,CAAC,IAAI,CAAC;wBACb,SAAS,EAAE,GAAG;wBACd,IAAI,EAAE,MAAM;wBACZ,iBAAiB,EAAE,iBAAiB;qBACvC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,kCAAkC;YAClC,MAAM,aAAa,GAAG,2BAA2B,CAAC;gBAC9C,UAAU,EAAE,MAAA,MAAA,GAAG,CAAC,QAAQ,0CAAE,QAAQ,0CAAE,UAAU;gBAC9C,aAAa;gBACb,OAAO;aACV,CAAC,CAAC;YACH,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBACvB,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
const ALIAS_PREFIX = 'request';
|
|
2
2
|
const GRAPHQL_FRAGMENTS_REGEXP = /fragment\s+.+\s+on\s+.+\s*{[\s\w{}().,:"'`]+}/;
|
|
3
|
-
|
|
4
|
-
const GUILLOTINE_QUERY_REGEXP = /^\s*query\s*(?:\(([^)]*)\))?\s*{\s*((?:.|\s)+)\s*}\s*$/;
|
|
5
|
-
const GLOBAL_PARAMS = [{ key: 'path', type: 'ID!' }, { key: 'siteKey', type: 'String' }, { key: 'project', type: 'String' },
|
|
6
|
-
{ key: 'branch', type: 'String' }];
|
|
3
|
+
const GUILLOTINE_QUERY_REGEXP = /^\s*query\s*(?:\((.*)*\))?\s*{\s*guillotine\s*{((?:.|\s)+)}\s*}\s*$/;
|
|
7
4
|
export function combineMultipleQueries(queriesWithVars) {
|
|
8
5
|
const queries = [];
|
|
9
6
|
const fragments = [];
|
|
@@ -14,7 +11,6 @@ export function combineMultipleQueries(queriesWithVars) {
|
|
|
14
11
|
if (!queryAndVars) {
|
|
15
12
|
return;
|
|
16
13
|
}
|
|
17
|
-
const currentAlias = `${ALIAS_PREFIX}${index}`;
|
|
18
14
|
// Extract fragments first if exist
|
|
19
15
|
let q = queryAndVars.query;
|
|
20
16
|
let match = q.match(GRAPHQL_FRAGMENTS_REGEXP);
|
|
@@ -25,33 +21,28 @@ export function combineMultipleQueries(queriesWithVars) {
|
|
|
25
21
|
q = q.replace(match[0], '');
|
|
26
22
|
}
|
|
27
23
|
// Extract graphql query and its params and add prefixes to exclude collisions with other queries
|
|
28
|
-
match = q.match(GUILLOTINE_QUERY_REGEXP) || [''];
|
|
24
|
+
match = q.match(GUILLOTINE_QUERY_REGEXP) || ['']; // Fall back to empty string if no match
|
|
29
25
|
const args = match[1];
|
|
30
26
|
let query = match[2];
|
|
31
27
|
if (args) {
|
|
32
28
|
args.split(',').forEach(originalParamString => {
|
|
33
|
-
const [originalKey, originalVal] = originalParamString.trim().split(':')
|
|
34
|
-
const [prefixedKey, prefixedVal] = [`$${
|
|
29
|
+
const [originalKey, originalVal] = originalParamString.trim().split(':');
|
|
30
|
+
const [prefixedKey, prefixedVal] = [`$${ALIAS_PREFIX}${index}_${originalKey.substr(1)}`, originalVal];
|
|
35
31
|
superParams.push(`${prefixedKey}:${prefixedVal}`);
|
|
36
|
-
//
|
|
37
|
-
query = query.
|
|
38
|
-
//
|
|
32
|
+
// also update param references in query itself !
|
|
33
|
+
// query = query.replaceAll(originalKey, prefixedKey);
|
|
34
|
+
// replaceAll is not supported in older nodejs versions
|
|
35
|
+
const origKeyPattern = new RegExp(originalKey.replace(/\$/g, '\\$'), 'g');
|
|
36
|
+
query = query.replace(origKeyPattern, prefixedKey);
|
|
39
37
|
});
|
|
40
38
|
}
|
|
39
|
+
if (query === null || query === void 0 ? void 0 : query.length) {
|
|
40
|
+
queries.push(`${ALIAS_PREFIX}${index}:guillotine {${query}}`);
|
|
41
|
+
}
|
|
41
42
|
// Update variables with the same prefixes
|
|
42
43
|
Object.entries(queryAndVars.variables || {}).forEach(entry => {
|
|
43
|
-
superVars[`${
|
|
44
|
+
superVars[`${ALIAS_PREFIX}${index}_${entry[0]}`] = entry[1];
|
|
44
45
|
});
|
|
45
|
-
if (query === null || query === void 0 ? void 0 : query.length) {
|
|
46
|
-
queries.push(`${currentAlias}:${query}`);
|
|
47
|
-
// Find global params used in the query and add them to superParams
|
|
48
|
-
GLOBAL_PARAMS.forEach(param => {
|
|
49
|
-
const def = `$${param.key}:${param.type}`;
|
|
50
|
-
if (query.includes(`$${param.key}`) && superParams.indexOf(def) < 0) {
|
|
51
|
-
superParams.push(def);
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
46
|
});
|
|
56
47
|
// Compose the super query
|
|
57
48
|
const superQuery = `query ${superParams.length ? `(${superParams.join(', ')})` : ''} {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combineMultipleQueries.js","sourceRoot":"","sources":["../../src/guillotine/combineMultipleQueries.ts"],"names":[],"mappings":"AAGA,MAAM,YAAY,GAAG,SAAS,CAAC;AAE/B,MAAM,wBAAwB,GAAG,+CAA+C,CAAC;AAEjF,
|
|
1
|
+
{"version":3,"file":"combineMultipleQueries.js","sourceRoot":"","sources":["../../src/guillotine/combineMultipleQueries.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import type { MetaData, PageComponent } from '../types';
|
|
2
2
|
import { RENDER_MODE, XP_REQUEST_TYPE } from '../common/constants';
|
|
3
|
-
export declare function createMetaData({
|
|
3
|
+
export declare function createMetaData({ apiUrl, baseUrl, components, // Optional NOTE: Doesn't handle null
|
|
4
4
|
contentPath, contentType, contentId, defaultLocale, locale, pageCmp, // Optional
|
|
5
5
|
renderMode, requestedComponentPath, requestType }: {
|
|
6
|
-
|
|
7
|
-
site: string;
|
|
8
|
-
branch: string;
|
|
6
|
+
apiUrl: string;
|
|
9
7
|
baseUrl: string;
|
|
10
8
|
components?: PageComponent[];
|
|
11
9
|
contentPath: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { XP_REQUEST_TYPE } from '../common/constants';
|
|
2
2
|
import { ComponentRegistry } from '../common/ComponentRegistry';
|
|
3
|
-
export function createMetaData({
|
|
3
|
+
export function createMetaData({ apiUrl, baseUrl, components = [], // Optional NOTE: Doesn't handle null
|
|
4
4
|
contentPath, contentType, contentId, defaultLocale, locale, pageCmp, // Optional
|
|
5
5
|
renderMode, requestedComponentPath, requestType }) {
|
|
6
6
|
var _a;
|
|
@@ -8,9 +8,7 @@ renderMode, requestedComponentPath, requestType }) {
|
|
|
8
8
|
// Only adding some .meta attributes here on certain conditions
|
|
9
9
|
// (instead of always adding them and letting them be visible as false/undefined etc)
|
|
10
10
|
const meta = {
|
|
11
|
-
|
|
12
|
-
site,
|
|
13
|
-
branch,
|
|
11
|
+
apiUrl,
|
|
14
12
|
baseUrl,
|
|
15
13
|
canRender: false,
|
|
16
14
|
catchAll: false, // catchAll only refers to content type catch-all
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMetaData.js","sourceRoot":"","sources":["../../src/guillotine/createMetaData.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAG9D,MAAM,UAAU,cAAc,CAAC,EACI,
|
|
1
|
+
{"version":3,"file":"createMetaData.js","sourceRoot":"","sources":["../../src/guillotine/createMetaData.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAG9D,MAAM,UAAU,cAAc,CAAC,EACI,MAAM,EACN,OAAO,EACP,UAAU,GAAG,EAAE,EAAE,qCAAqC;AACtD,WAAW,EACX,WAAW,EACX,SAAS,EACT,aAAa,EACb,MAAM,EACN,OAAO,EAAE,WAAW;AACpB,UAAU,EACV,sBAAsB,EACrD,WAAW,EAcd;;IACG,wDAAwD;IACxD,+DAA+D;IAC/D,qFAAqF;IACrF,MAAM,IAAI,GAAa;QACnB,MAAM;QACN,OAAO;QACP,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,KAAK,EAAE,iDAAiD;QAClE,aAAa;QACb,MAAM;QACN,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,WAAW;KACpB,CAAC;IAEF,IAAI,sBAAsB,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,UAAU,CAAC;IAC3C,MAAM,OAAO,GAAG,iBAAiB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC9D,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,KAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;SAAM,IAAI,WAAW,KAAK,eAAe,CAAC,SAAS,EAAE,CAAC;QACnD,qEAAqE;QACrE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QAClB,kFAAkF;QAClF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;SAAM,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
|