@bright.global/arboretum-sdk 0.0.8 → 0.1.0-rc.0
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/dist/es6/impl/arboretum-client.impl.js +13 -13
- package/dist/es6/impl/data/page-entries.js +1 -0
- package/dist/es6/impl/sitemap/adapters/page-entry-adapter.js +6 -8
- package/dist/es6/impl/sitemap/adapters/to-arboretum-page-adapter.test.js +6 -0
- package/dist/es6/impl/sitemap/adapters/to-arboretum-page-with-missing-data-adapter.js +2 -1
- package/dist/es6/impl/sitemap/helpers/__mocks__/mocked-localized-sitemap.js +59 -58
- package/dist/es6/impl/sitemap/helpers/build-localized-sitemap.js +56 -12
- package/dist/es6/impl/sitemap/helpers/build-localized-sitemap.test.js +34 -34
- package/dist/impl/arboretum-client.impl.js +13 -13
- package/dist/impl/data/page-entries.js +1 -0
- package/dist/impl/sitemap/adapters/page-entry-adapter.js +5 -7
- package/dist/impl/sitemap/adapters/to-arboretum-page-adapter.test.js +6 -0
- package/dist/impl/sitemap/adapters/to-arboretum-page-with-missing-data-adapter.js +2 -1
- package/dist/impl/sitemap/helpers/__mocks__/mocked-localized-sitemap.js +59 -58
- package/dist/impl/sitemap/helpers/build-localized-sitemap.js +52 -8
- package/dist/impl/sitemap/helpers/build-localized-sitemap.test.js +30 -30
- package/dist/types/arboretum-client.d.ts +6 -3
- package/dist/types/impl/arboretum-client.impl.d.ts +1 -0
- package/dist/types/impl/sitemap/adapters/page-entry-adapter.d.ts +4 -4
- package/dist/types/impl/sitemap/adapters/to-arboretum-page-with-missing-data-adapter.d.ts +3 -3
- package/dist/types/impl/sitemap/helpers/__mocks__/mocked-localized-sitemap.d.ts +1 -1
- package/dist/types/impl/sitemap/helpers/build-localized-sitemap.d.ts +5 -5
- package/package.json +1 -1
|
@@ -108,9 +108,9 @@ var arboretumConfigOptions = function (config) {
|
|
|
108
108
|
};
|
|
109
109
|
export var createArboretumClient = function (config) { return __awaiter(void 0, void 0, void 0, function () {
|
|
110
110
|
var clientApi, cmaPreviewClientApi, includeEntryStatus, options, sitemapDataCtx, dataE, _a, c, sitemap, pagesByTagIdRecord, ctx_1;
|
|
111
|
-
var _b, _c, _d, _e, _f, _g, _h;
|
|
112
|
-
return __generator(this, function (
|
|
113
|
-
switch (
|
|
111
|
+
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
112
|
+
return __generator(this, function (_k) {
|
|
113
|
+
switch (_k.label) {
|
|
114
114
|
case 0:
|
|
115
115
|
clientApi = createContentfulClient(config);
|
|
116
116
|
cmaPreviewClientApi = config.type === "cma-client"
|
|
@@ -119,11 +119,11 @@ export var createArboretumClient = function (config) { return __awaiter(void 0,
|
|
|
119
119
|
includeEntryStatus = config.type === "cma-client" ? !!((_b = config.options) === null || _b === void 0 ? void 0 : _b.includeEntryStatus) : false;
|
|
120
120
|
return [4 /*yield*/, arboretumConfigOptions(config)];
|
|
121
121
|
case 1:
|
|
122
|
-
options =
|
|
122
|
+
options = _k.sent();
|
|
123
123
|
sitemapDataCtx = {
|
|
124
124
|
preview: config.preview,
|
|
125
125
|
clientApi: clientApi,
|
|
126
|
-
options: __assign(__assign({}, options), { includeEntryStatus: includeEntryStatus }),
|
|
126
|
+
options: __assign(__assign({}, options), { includeEntryStatus: includeEntryStatus, sitemapRepresentation: (_c = config.options) === null || _c === void 0 ? void 0 : _c.sitemapRepresentation }),
|
|
127
127
|
localeTagIdPrefix: localeTagIdPrefix,
|
|
128
128
|
pageHomeTagId: options.homePageTagId || pageHomeTagId,
|
|
129
129
|
contentfulClientType: config.type === "cda-client" && config.contentful.client.withAllLocales
|
|
@@ -132,25 +132,25 @@ export var createArboretumClient = function (config) { return __awaiter(void 0,
|
|
|
132
132
|
pageTagIdPrefix: pageTagIdPrefix,
|
|
133
133
|
cmaPreviewClientApi: cmaPreviewClientApi,
|
|
134
134
|
};
|
|
135
|
-
if (!((
|
|
136
|
-
_a = right({ data: (
|
|
135
|
+
if (!((_d = config.options) === null || _d === void 0 ? void 0 : _d.data)) return [3 /*break*/, 2];
|
|
136
|
+
_a = right({ data: (_e = config.options) === null || _e === void 0 ? void 0 : _e.data.data, warnings: undefined });
|
|
137
137
|
return [3 /*break*/, 4];
|
|
138
138
|
case 2: return [4 /*yield*/, sitemapData(sitemapDataCtx)];
|
|
139
139
|
case 3:
|
|
140
|
-
_a =
|
|
141
|
-
|
|
140
|
+
_a = _k.sent();
|
|
141
|
+
_k.label = 4;
|
|
142
142
|
case 4:
|
|
143
143
|
dataE = _a;
|
|
144
144
|
if (dataE._tag === "Right") {
|
|
145
145
|
c = __assign(__assign({}, sitemapDataCtx), { data: dataE.right.data });
|
|
146
|
-
sitemap = ((
|
|
146
|
+
sitemap = ((_f = config.options) === null || _f === void 0 ? void 0 : _f.data)
|
|
147
147
|
? config.options.data.sitemap
|
|
148
|
-
: ((
|
|
148
|
+
: ((_g = config.options) === null || _g === void 0 ? void 0 : _g.eagerly)
|
|
149
149
|
? buildSitemapEagerly(c, dataE.right.data.locales)
|
|
150
150
|
: new Map();
|
|
151
|
-
pagesByTagIdRecord = ((
|
|
151
|
+
pagesByTagIdRecord = ((_h = config.options) === null || _h === void 0 ? void 0 : _h.data)
|
|
152
152
|
? config.options.data.pagesByTagId
|
|
153
|
-
: ((
|
|
153
|
+
: ((_j = config.options) === null || _j === void 0 ? void 0 : _j.eagerly)
|
|
154
154
|
? buildPagesByTagEagerly(__assign(__assign({}, c), { sitemap: sitemap }), dataE.right.data.locales)
|
|
155
155
|
: new Map();
|
|
156
156
|
ctx_1 = __assign(__assign({}, c), { data: dataE.right.data, sitemap: sitemap, pagesByTagId: pagesByTagIdRecord, lastUpdatedAt: new Date().toISOString(), regenerationInProgress: false });
|
|
@@ -82,6 +82,7 @@ var getAllPageEntriesRecursively = function (_a, contentfulClientType, pageConte
|
|
|
82
82
|
pageContentTypeOpt.slugFieldId,
|
|
83
83
|
pageContentTypeOpt.childPagesFieldId,
|
|
84
84
|
pageContentTypeOpt.titleFieldId,
|
|
85
|
+
pageContentTypeOpt.parentPageFieldId,
|
|
85
86
|
].flatMap(function (id) { return (id ? ["fields.".concat(id)] : []); });
|
|
86
87
|
return [2 /*return*/, getAllEntriesRecursively({ getEntries: getEntries }, contentfulClientType, pageContentTypeOpt.id, skip, acc,
|
|
87
88
|
/* For some reason select param causes errors in CMA. I'm getting the following response:
|
|
@@ -1,27 +1,25 @@
|
|
|
1
|
-
import { localizeField } from
|
|
2
|
-
export var pageEntryAdapter = function (data, slugField, titleField,
|
|
1
|
+
import { localizeField } from "../helpers/localize-contentful-field";
|
|
2
|
+
export var pageEntryAdapter = function (data, slugField, titleField, childrenRefs, locale, parent, entry) {
|
|
3
3
|
var _a;
|
|
4
4
|
var fieldValue = localizeField(data, locale);
|
|
5
5
|
var slug = (_a = fieldValue(slugField.localized, entry.fields[slugField.id])) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
6
6
|
var title = titleField
|
|
7
7
|
? fieldValue(titleField.localized, entry.fields[titleField.id])
|
|
8
8
|
: undefined;
|
|
9
|
-
var childPages = childPagesField
|
|
10
|
-
? fieldValue(childPagesField.localized, entry.fields[childPagesField.id])
|
|
11
|
-
: undefined;
|
|
12
9
|
return slug
|
|
13
10
|
? {
|
|
14
|
-
type:
|
|
11
|
+
type: "page",
|
|
15
12
|
parent: parent ? { sys: parent.sys } : undefined,
|
|
16
|
-
path: parent ? parent.path +
|
|
13
|
+
path: parent ? parent.path + "/" + slug : "/" + locale.code,
|
|
17
14
|
slug: slug,
|
|
18
15
|
title: title || undefined,
|
|
19
16
|
sys: {
|
|
20
17
|
id: entry.sys.id,
|
|
21
18
|
cmaOnlyStatus: entry.sys.cmaOnlyStatus,
|
|
19
|
+
contentTypeId: entry.sys.contentType.sys.id,
|
|
22
20
|
},
|
|
23
21
|
metadata: entry.metadata,
|
|
24
|
-
childPages: (
|
|
22
|
+
childPages: (childrenRefs === null || childrenRefs === void 0 ? void 0 : childrenRefs.flatMap(function (childPage) { var _a; return ((_a = childPage === null || childPage === void 0 ? void 0 : childPage.sys) === null || _a === void 0 ? void 0 : _a.id) ? [{ sys: { id: childPage === null || childPage === void 0 ? void 0 : childPage.sys.id } }] : []; })) || [],
|
|
25
23
|
}
|
|
26
24
|
: undefined;
|
|
27
25
|
};
|
|
@@ -37,11 +37,13 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
37
37
|
import { mockedPage1, mockedPage1_1, mockedPage1_1_1, mockedPage1_1_2, mockedRoot, mockedLocalizedSitemap, } from '../helpers/__mocks__/mocked-localized-sitemap';
|
|
38
38
|
import { toArboretumPage } from './to-arboretum-page-adapter';
|
|
39
39
|
var localeCode = 'en';
|
|
40
|
+
var contentTypeId = "page";
|
|
40
41
|
var toArboretumPageF = function (options) {
|
|
41
42
|
return toArboretumPage(mockedLocalizedSitemap, localeCode, options);
|
|
42
43
|
};
|
|
43
44
|
var arboretumPageRoot = {
|
|
44
45
|
type: 'page',
|
|
46
|
+
contentTypeId: contentTypeId,
|
|
45
47
|
id: mockedRoot.sys.id,
|
|
46
48
|
localeCode: localeCode,
|
|
47
49
|
path: mockedRoot.path,
|
|
@@ -50,6 +52,7 @@ var arboretumPageRoot = {
|
|
|
50
52
|
};
|
|
51
53
|
var arboretumPagePage1 = {
|
|
52
54
|
id: mockedPage1.sys.id,
|
|
55
|
+
contentTypeId: contentTypeId,
|
|
53
56
|
localeCode: localeCode,
|
|
54
57
|
path: mockedPage1.path,
|
|
55
58
|
slug: mockedPage1.slug,
|
|
@@ -58,6 +61,7 @@ var arboretumPagePage1 = {
|
|
|
58
61
|
};
|
|
59
62
|
var arboretumPagePage1_1 = {
|
|
60
63
|
id: mockedPage1_1.sys.id,
|
|
64
|
+
contentTypeId: contentTypeId,
|
|
61
65
|
localeCode: localeCode,
|
|
62
66
|
path: mockedPage1_1.path,
|
|
63
67
|
slug: mockedPage1_1.slug,
|
|
@@ -66,6 +70,7 @@ var arboretumPagePage1_1 = {
|
|
|
66
70
|
};
|
|
67
71
|
var arboretumPage1_1_1 = {
|
|
68
72
|
id: mockedPage1_1_1.sys.id,
|
|
73
|
+
contentTypeId: contentTypeId,
|
|
69
74
|
localeCode: localeCode,
|
|
70
75
|
path: mockedPage1_1_1.path,
|
|
71
76
|
slug: mockedPage1_1_1.slug,
|
|
@@ -74,6 +79,7 @@ var arboretumPage1_1_1 = {
|
|
|
74
79
|
};
|
|
75
80
|
var arboretumPage1_1_2 = {
|
|
76
81
|
id: mockedPage1_1_2.sys.id,
|
|
82
|
+
contentTypeId: contentTypeId,
|
|
77
83
|
localeCode: localeCode,
|
|
78
84
|
path: mockedPage1_1_2.path,
|
|
79
85
|
slug: mockedPage1_1_2.slug,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export var toArboretumPageWithMissingData = function (localeCode) {
|
|
2
2
|
return function (page, ancestors, children) { return ({
|
|
3
|
-
type:
|
|
3
|
+
type: "page",
|
|
4
|
+
contentTypeId: page.sys.contentTypeId,
|
|
4
5
|
id: page.sys.id,
|
|
5
6
|
title: page.title,
|
|
6
7
|
cmaOnlyStatus: page.sys.cmaOnlyStatus,
|
|
@@ -23,24 +23,25 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
23
23
|
}
|
|
24
24
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
25
25
|
};
|
|
26
|
-
var mockedRootSysId =
|
|
27
|
-
var mockedPage1SysId =
|
|
28
|
-
var mockedPage1_1SysId =
|
|
29
|
-
var mockedPage1_1_1SysId =
|
|
30
|
-
var mockedPage1_1_2SysId =
|
|
31
|
-
var mockedPage1_2SysId =
|
|
32
|
-
var mockedPage2SysId =
|
|
33
|
-
var mockedPage2_1SysId =
|
|
34
|
-
var mockedPage3SysId =
|
|
35
|
-
var mockedRedirect1SysId =
|
|
36
|
-
var mockedRedirect2SysId =
|
|
37
|
-
var mockedRedirect3SysId =
|
|
26
|
+
var mockedRootSysId = "root";
|
|
27
|
+
var mockedPage1SysId = "page1";
|
|
28
|
+
var mockedPage1_1SysId = "page1-1";
|
|
29
|
+
var mockedPage1_1_1SysId = "page1-1-1";
|
|
30
|
+
var mockedPage1_1_2SysId = "page1-1-2";
|
|
31
|
+
var mockedPage1_2SysId = "page1-2";
|
|
32
|
+
var mockedPage2SysId = "page2";
|
|
33
|
+
var mockedPage2_1SysId = "page2_1";
|
|
34
|
+
var mockedPage3SysId = "page3";
|
|
35
|
+
var mockedRedirect1SysId = "redirect1";
|
|
36
|
+
var mockedRedirect2SysId = "redirect2";
|
|
37
|
+
var mockedRedirect3SysId = "redirect3";
|
|
38
|
+
var contentTypeId = "page";
|
|
38
39
|
export var mockedRoot = {
|
|
39
|
-
type:
|
|
40
|
-
sys: { id: mockedRootSysId },
|
|
40
|
+
type: "page",
|
|
41
|
+
sys: { id: mockedRootSysId, contentTypeId: contentTypeId },
|
|
41
42
|
parent: undefined,
|
|
42
43
|
slug: mockedRootSysId,
|
|
43
|
-
path:
|
|
44
|
+
path: "/en",
|
|
44
45
|
childPages: [
|
|
45
46
|
{ sys: { id: mockedPage1SysId } },
|
|
46
47
|
{ sys: { id: mockedPage2SysId } },
|
|
@@ -51,21 +52,21 @@ export var mockedRoot = {
|
|
|
51
52
|
],
|
|
52
53
|
};
|
|
53
54
|
export var mockedPage1 = {
|
|
54
|
-
type:
|
|
55
|
-
sys: { id: mockedPage1SysId },
|
|
56
|
-
parent: { sys: mockedRoot.sys },
|
|
55
|
+
type: "page",
|
|
56
|
+
sys: { id: mockedPage1SysId, contentTypeId: contentTypeId },
|
|
57
|
+
parent: { sys: { id: mockedRoot.sys.id } },
|
|
57
58
|
slug: mockedPage1SysId,
|
|
58
|
-
path: mockedRoot.path +
|
|
59
|
+
path: mockedRoot.path + "/" + mockedPage1SysId,
|
|
59
60
|
childPages: [
|
|
60
61
|
{ sys: { id: mockedPage1_1SysId } },
|
|
61
62
|
{ sys: { id: mockedPage1_2SysId } },
|
|
62
63
|
],
|
|
63
64
|
};
|
|
64
65
|
export var mockedPage1_1 = {
|
|
65
|
-
type:
|
|
66
|
-
sys: { id: mockedPage1_1SysId },
|
|
67
|
-
parent: { sys: mockedPage1.sys },
|
|
68
|
-
path: mockedPage1.path +
|
|
66
|
+
type: "page",
|
|
67
|
+
sys: { id: mockedPage1_1SysId, contentTypeId: contentTypeId },
|
|
68
|
+
parent: { sys: { id: mockedPage1.sys.id } },
|
|
69
|
+
path: mockedPage1.path + "/" + mockedPage1_1SysId,
|
|
69
70
|
slug: mockedPage1_1SysId,
|
|
70
71
|
childPages: [
|
|
71
72
|
{ sys: { id: mockedPage1_1_1SysId } },
|
|
@@ -73,72 +74,72 @@ export var mockedPage1_1 = {
|
|
|
73
74
|
],
|
|
74
75
|
};
|
|
75
76
|
export var mockedPage1_2 = {
|
|
76
|
-
type:
|
|
77
|
-
sys: { id: mockedPage1_2SysId },
|
|
78
|
-
parent: { sys: mockedPage1.sys },
|
|
79
|
-
path: mockedPage1.path +
|
|
77
|
+
type: "page",
|
|
78
|
+
sys: { id: mockedPage1_2SysId, contentTypeId: contentTypeId },
|
|
79
|
+
parent: { sys: { id: mockedPage1.sys.id } },
|
|
80
|
+
path: mockedPage1.path + "/" + mockedPage1_2SysId,
|
|
80
81
|
slug: mockedPage1_2SysId,
|
|
81
82
|
childPages: [],
|
|
82
83
|
};
|
|
83
84
|
export var mockedPage1_1_1 = {
|
|
84
|
-
type:
|
|
85
|
-
sys: { id: mockedPage1_1_1SysId },
|
|
86
|
-
parent: { sys: mockedPage1_1.sys },
|
|
87
|
-
path: mockedPage1_1.path +
|
|
85
|
+
type: "page",
|
|
86
|
+
sys: { id: mockedPage1_1_1SysId, contentTypeId: contentTypeId },
|
|
87
|
+
parent: { sys: { id: mockedPage1_1.sys.id } },
|
|
88
|
+
path: mockedPage1_1.path + "/" + mockedPage1_1_1SysId,
|
|
88
89
|
slug: mockedPage1_1_1SysId,
|
|
89
90
|
childPages: [],
|
|
90
91
|
};
|
|
91
92
|
export var mockedPage1_1_2 = {
|
|
92
|
-
type:
|
|
93
|
-
sys: { id: mockedPage1_1_2SysId },
|
|
94
|
-
parent: { sys: mockedPage1_1.sys },
|
|
95
|
-
path: mockedPage1_1.path +
|
|
93
|
+
type: "page",
|
|
94
|
+
sys: { id: mockedPage1_1_2SysId, contentTypeId: contentTypeId },
|
|
95
|
+
parent: { sys: { id: mockedPage1_1.sys.id } },
|
|
96
|
+
path: mockedPage1_1.path + "/" + mockedPage1_1_2SysId,
|
|
96
97
|
slug: mockedPage1_1_2SysId,
|
|
97
98
|
childPages: [],
|
|
98
99
|
};
|
|
99
100
|
export var mockedPage2 = {
|
|
100
|
-
type:
|
|
101
|
-
sys: { id: mockedPage2SysId },
|
|
102
|
-
parent: { sys: mockedRoot.sys },
|
|
103
|
-
path: mockedRoot.path +
|
|
101
|
+
type: "page",
|
|
102
|
+
sys: { id: mockedPage2SysId, contentTypeId: contentTypeId },
|
|
103
|
+
parent: { sys: { id: mockedRoot.sys.id } },
|
|
104
|
+
path: mockedRoot.path + "/" + mockedPage2SysId,
|
|
104
105
|
slug: mockedPage2SysId,
|
|
105
106
|
childPages: [{ sys: { id: mockedPage2_1SysId } }],
|
|
106
107
|
};
|
|
107
108
|
export var mockedPage2_1 = {
|
|
108
|
-
type:
|
|
109
|
-
sys: { id: mockedPage2_1SysId },
|
|
110
|
-
parent: { sys: mockedPage2.sys },
|
|
111
|
-
path: mockedPage2.path +
|
|
109
|
+
type: "page",
|
|
110
|
+
sys: { id: mockedPage2_1SysId, contentTypeId: contentTypeId },
|
|
111
|
+
parent: { sys: { id: mockedPage2.sys.id } },
|
|
112
|
+
path: mockedPage2.path + "/" + mockedPage2_1SysId,
|
|
112
113
|
slug: mockedPage2_1SysId,
|
|
113
114
|
childPages: [],
|
|
114
115
|
};
|
|
115
116
|
export var mockedPage3 = {
|
|
116
|
-
type:
|
|
117
|
-
sys: { id: mockedPage3SysId },
|
|
118
|
-
parent: { sys: mockedRoot.sys },
|
|
119
|
-
path: mockedRoot.path +
|
|
117
|
+
type: "page",
|
|
118
|
+
sys: { id: mockedPage3SysId, contentTypeId: contentTypeId },
|
|
119
|
+
parent: { sys: { id: mockedRoot.sys.id } },
|
|
120
|
+
path: mockedRoot.path + "/" + mockedPage3SysId,
|
|
120
121
|
slug: mockedPage3SysId,
|
|
121
122
|
childPages: [],
|
|
122
123
|
};
|
|
123
124
|
var mockedRedirect1 = {
|
|
124
|
-
type:
|
|
125
|
+
type: "alias",
|
|
125
126
|
sys: { id: mockedRedirect1SysId },
|
|
126
127
|
page: { sys: { id: mockedRedirect1SysId } },
|
|
127
|
-
path: mockedRoot.path +
|
|
128
|
+
path: mockedRoot.path + "/" + mockedRedirect1SysId,
|
|
128
129
|
parent: { sys: { id: mockedRoot.sys.id } },
|
|
129
130
|
};
|
|
130
131
|
var mockedRedirect2 = {
|
|
131
|
-
type:
|
|
132
|
+
type: "redirect",
|
|
132
133
|
sys: { id: mockedRedirect2SysId },
|
|
133
134
|
page: { sys: { id: mockedRedirect2SysId } },
|
|
134
|
-
path: mockedRoot.path +
|
|
135
|
+
path: mockedRoot.path + "/" + mockedRedirect2SysId,
|
|
135
136
|
parent: { sys: { id: mockedRoot.sys.id } },
|
|
136
137
|
};
|
|
137
138
|
var mockedRedirect3 = {
|
|
138
|
-
type:
|
|
139
|
+
type: "alias",
|
|
139
140
|
sys: { id: mockedRedirect3SysId },
|
|
140
141
|
page: { sys: { id: mockedRedirect3SysId } },
|
|
141
|
-
path: mockedRoot.path +
|
|
142
|
+
path: mockedRoot.path + "/" + mockedRedirect3SysId,
|
|
142
143
|
parent: { sys: { id: mockedRoot.sys.id } },
|
|
143
144
|
};
|
|
144
145
|
export var mockedRedirects = [
|
|
@@ -158,9 +159,9 @@ export var mockedPages = __spreadArray([
|
|
|
158
159
|
mockedPage3
|
|
159
160
|
], __read(mockedRedirects), false);
|
|
160
161
|
export var mockedLocalizedSitemap = {
|
|
161
|
-
root: { sys: mockedRoot.sys },
|
|
162
|
+
root: { sys: { id: mockedRoot.sys.id } },
|
|
162
163
|
sitemap: new Map(mockedPages.map(function (page) {
|
|
163
|
-
if (!page.parent && page.type ===
|
|
164
|
+
if (!page.parent && page.type === "page") {
|
|
164
165
|
return [page.sys.id, page];
|
|
165
166
|
}
|
|
166
167
|
return [page.sys.id, page];
|
|
@@ -168,10 +169,10 @@ export var mockedLocalizedSitemap = {
|
|
|
168
169
|
pageIdByPath: new Map(mockedPages.map(function (page) { return [page.path, page.sys.id]; })),
|
|
169
170
|
};
|
|
170
171
|
export var mockedPage1WithCircularReference = {
|
|
171
|
-
type:
|
|
172
|
-
sys: { id: mockedPage1SysId },
|
|
172
|
+
type: "page",
|
|
173
|
+
sys: { id: mockedPage1SysId, contentTypeId: contentTypeId },
|
|
173
174
|
parent: { sys: { id: mockedRoot.sys.id } },
|
|
174
|
-
path: mockedRoot.path +
|
|
175
|
+
path: mockedRoot.path + "/" + mockedPage1SysId,
|
|
175
176
|
slug: mockedPage1SysId,
|
|
176
177
|
childPages: [{ sys: { id: mockedRootSysId } }],
|
|
177
178
|
};
|
|
@@ -34,10 +34,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
34
34
|
}
|
|
35
35
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
36
36
|
};
|
|
37
|
-
import { left, right } from
|
|
38
|
-
import { pageEntryAdapter } from
|
|
39
|
-
import { redirectEntryAdapter } from
|
|
40
|
-
import { isRoot } from
|
|
37
|
+
import { left, right } from "../../../utils/fp-utils";
|
|
38
|
+
import { pageEntryAdapter } from "../adapters/page-entry-adapter";
|
|
39
|
+
import { redirectEntryAdapter } from "../adapters/redirect-entry-adapter";
|
|
40
|
+
import { isRoot } from "./is-root";
|
|
41
|
+
import { localizeField } from "./localize-contentful-field";
|
|
41
42
|
var getAllRedirects = function (data, options, locale, parent) {
|
|
42
43
|
var redirectContentType = options.id
|
|
43
44
|
? data.contentTypes.get(options.id)
|
|
@@ -58,15 +59,49 @@ var getAllRedirects = function (data, options, locale, parent) {
|
|
|
58
59
|
return redirect ? [redirect] : [];
|
|
59
60
|
});
|
|
60
61
|
};
|
|
61
|
-
var
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
var findPageFieldF = function (data, options, pageContentTypeId) {
|
|
63
|
+
return function (fieldId) {
|
|
64
|
+
var contentTypes = data.contentTypes;
|
|
65
|
+
var pageContentType = contentTypes.get(pageContentTypeId);
|
|
66
|
+
var pageContentTypeConfig = options.pageContentTypes[pageContentTypeId];
|
|
66
67
|
return pageContentType && pageContentTypeConfig
|
|
67
68
|
? pageContentType.fields.get(fieldId)
|
|
68
69
|
: undefined;
|
|
69
70
|
};
|
|
71
|
+
};
|
|
72
|
+
var getChildrenRefsByParentId = function (data, locale, options) {
|
|
73
|
+
var pages = data.pages;
|
|
74
|
+
var acc = new Map();
|
|
75
|
+
pages.forEach(function (page) {
|
|
76
|
+
var _a;
|
|
77
|
+
var pageContentTypeConfig = options.pageContentTypes[page.sys.contentType.sys.id];
|
|
78
|
+
var findPageField = findPageFieldF(data, options, page.sys.contentType.sys.id);
|
|
79
|
+
var parentPageField = pageContentTypeConfig.parentPageFieldId
|
|
80
|
+
? findPageField(pageContentTypeConfig.parentPageFieldId)
|
|
81
|
+
: undefined;
|
|
82
|
+
var fieldValue = localizeField(data, locale);
|
|
83
|
+
var parentPage = parentPageField
|
|
84
|
+
? fieldValue(parentPageField.localized, page.fields[parentPageField.id])
|
|
85
|
+
: undefined;
|
|
86
|
+
var parentPageId = (_a = parentPage === null || parentPage === void 0 ? void 0 : parentPage.sys) === null || _a === void 0 ? void 0 : _a.id;
|
|
87
|
+
if (parentPageId) {
|
|
88
|
+
var pageRef = { sys: { id: page.sys.id } };
|
|
89
|
+
var maybePages = acc.get(parentPageId);
|
|
90
|
+
if (maybePages) {
|
|
91
|
+
maybePages.push(pageRef);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
acc.set(parentPageId, [pageRef]);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
return acc;
|
|
99
|
+
};
|
|
100
|
+
var buildLocalizedSitemapArrRecursively = function (data, options, locale, parent, childrenRefsByPageId, pageEntry, acc) {
|
|
101
|
+
var _a;
|
|
102
|
+
var pages = data.pages;
|
|
103
|
+
var pageContentTypeConfig = options.pageContentTypes[pageEntry.sys.contentType.sys.id];
|
|
104
|
+
var findPageField = findPageFieldF(data, options, pageEntry.sys.contentType.sys.id);
|
|
70
105
|
var slugField = findPageField(pageContentTypeConfig.slugFieldId);
|
|
71
106
|
var titleField = pageContentTypeConfig.titleFieldId
|
|
72
107
|
? findPageField(pageContentTypeConfig.titleFieldId)
|
|
@@ -74,8 +109,14 @@ var buildLocalizedSitemapArrRecursively = function (data, options, locale, paren
|
|
|
74
109
|
var childPagesField = pageContentTypeConfig.childPagesFieldId
|
|
75
110
|
? findPageField(pageContentTypeConfig.childPagesFieldId)
|
|
76
111
|
: undefined;
|
|
112
|
+
var fieldValue = localizeField(data, locale);
|
|
113
|
+
var childrenRefs = childrenRefsByPageId
|
|
114
|
+
? childrenRefsByPageId.get(pageEntry.sys.id) || []
|
|
115
|
+
: childPagesField
|
|
116
|
+
? ((_a = fieldValue(childPagesField.localized, pageEntry.fields[childPagesField.id])) === null || _a === void 0 ? void 0 : _a.flatMap(function (childPage) { var _a; return ((_a = childPage === null || childPage === void 0 ? void 0 : childPage.sys) === null || _a === void 0 ? void 0 : _a.id) ? [{ sys: { id: childPage === null || childPage === void 0 ? void 0 : childPage.sys.id } }] : []; })) || []
|
|
117
|
+
: [];
|
|
77
118
|
var page = slugField
|
|
78
|
-
? pageEntryAdapter(data, slugField, titleField,
|
|
119
|
+
? pageEntryAdapter(data, slugField, titleField, childrenRefs, locale, parent, pageEntry)
|
|
79
120
|
: undefined;
|
|
80
121
|
if (page) {
|
|
81
122
|
var validChildPages_1 = page.childPages.filter(function (c) { return pages.get(c.sys.id) && !acc.get(c.sys.id); });
|
|
@@ -93,7 +134,7 @@ var buildLocalizedSitemapArrRecursively = function (data, options, locale, paren
|
|
|
93
134
|
var id = _a.sys.id;
|
|
94
135
|
var childPageEntry = pages.get(id);
|
|
95
136
|
childPageEntry &&
|
|
96
|
-
buildLocalizedSitemapArrRecursively(data, options, locale, { sys: pageEntry.sys, path: page.path }, childPageEntry, acc);
|
|
137
|
+
buildLocalizedSitemapArrRecursively(data, options, locale, { sys: pageEntry.sys, path: page.path }, childrenRefsByPageId, childPageEntry, acc);
|
|
97
138
|
});
|
|
98
139
|
return acc;
|
|
99
140
|
}
|
|
@@ -107,7 +148,10 @@ export var buildLocalizedSitemap = function (data, options, pageHomeTagId, local
|
|
|
107
148
|
var homePageRef = (_d = (_c = (_b = (_a = homePagesByTagId === null || homePagesByTagId === void 0 ? void 0 : homePagesByTagId.get(locale.code)) === null || _a === void 0 ? void 0 : _a.get(pageHomeTagId)) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.sys) === null || _d === void 0 ? void 0 : _d.id;
|
|
108
149
|
var homePageEntry = homePageRef ? pages.get(homePageRef) : undefined;
|
|
109
150
|
if (homePageEntry) {
|
|
110
|
-
var
|
|
151
|
+
var childrenRefsByPageId = options.sitemapRepresentation === "child-to-parent"
|
|
152
|
+
? getChildrenRefsByParentId(data, locale, options)
|
|
153
|
+
: undefined;
|
|
154
|
+
var sitemap = buildLocalizedSitemapArrRecursively(data, options, locale, undefined, childrenRefsByPageId, homePageEntry, new Map());
|
|
111
155
|
return right({
|
|
112
156
|
root: { sys: homePageEntry.sys },
|
|
113
157
|
sitemap: sitemap,
|
|
@@ -10,23 +10,23 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
12
|
var _a;
|
|
13
|
-
import { right } from
|
|
14
|
-
import { jsonStrigifyMapReplacer } from
|
|
15
|
-
import { buildLocalizedSitemap } from
|
|
16
|
-
import { mockedPages, mockedCircularReferencesPages, mockedPage1WithCircularReference, mockedRoot, mockedLocalizedSitemap, } from
|
|
13
|
+
import { right } from "../../../utils/fp-utils";
|
|
14
|
+
import { jsonStrigifyMapReplacer } from "../../../utils/json-stringify-map-replacer";
|
|
15
|
+
import { buildLocalizedSitemap } from "./build-localized-sitemap";
|
|
16
|
+
import { mockedPages, mockedCircularReferencesPages, mockedPage1WithCircularReference, mockedRoot, mockedLocalizedSitemap, } from "./__mocks__/mocked-localized-sitemap";
|
|
17
17
|
var defaultLocale = {
|
|
18
|
-
code:
|
|
18
|
+
code: "en",
|
|
19
19
|
default: true,
|
|
20
20
|
fallbackCode: null,
|
|
21
|
-
name:
|
|
21
|
+
name: "English",
|
|
22
22
|
};
|
|
23
|
-
var pageContentTypeId =
|
|
24
|
-
var pageContentTypeSlugFieldId =
|
|
25
|
-
var pageContentTypeChildPagesFieldId =
|
|
26
|
-
var redirectContentTypeId =
|
|
27
|
-
var redirectContentTypePage =
|
|
28
|
-
var redirectContentTypePath =
|
|
29
|
-
var redirectContentTypeType =
|
|
23
|
+
var pageContentTypeId = "page";
|
|
24
|
+
var pageContentTypeSlugFieldId = "slug";
|
|
25
|
+
var pageContentTypeChildPagesFieldId = "childPages";
|
|
26
|
+
var redirectContentTypeId = "redirect";
|
|
27
|
+
var redirectContentTypePage = "page";
|
|
28
|
+
var redirectContentTypePath = "path";
|
|
29
|
+
var redirectContentTypeType = "type";
|
|
30
30
|
var contentTypes = new Map([
|
|
31
31
|
[
|
|
32
32
|
pageContentTypeId,
|
|
@@ -38,8 +38,8 @@ var contentTypes = new Map([
|
|
|
38
38
|
{
|
|
39
39
|
id: pageContentTypeSlugFieldId,
|
|
40
40
|
localized: true,
|
|
41
|
-
name:
|
|
42
|
-
type: "Symbol"
|
|
41
|
+
name: "Slug",
|
|
42
|
+
type: "Symbol",
|
|
43
43
|
},
|
|
44
44
|
],
|
|
45
45
|
[
|
|
@@ -47,8 +47,8 @@ var contentTypes = new Map([
|
|
|
47
47
|
{
|
|
48
48
|
id: pageContentTypeChildPagesFieldId,
|
|
49
49
|
localized: true,
|
|
50
|
-
name:
|
|
51
|
-
type: "Array"
|
|
50
|
+
name: "Child Pages",
|
|
51
|
+
type: "Array",
|
|
52
52
|
},
|
|
53
53
|
],
|
|
54
54
|
]),
|
|
@@ -64,8 +64,8 @@ var contentTypes = new Map([
|
|
|
64
64
|
{
|
|
65
65
|
id: redirectContentTypePage,
|
|
66
66
|
localized: true,
|
|
67
|
-
name:
|
|
68
|
-
type: "Link"
|
|
67
|
+
name: "Page",
|
|
68
|
+
type: "Link",
|
|
69
69
|
},
|
|
70
70
|
],
|
|
71
71
|
[
|
|
@@ -73,8 +73,8 @@ var contentTypes = new Map([
|
|
|
73
73
|
{
|
|
74
74
|
id: redirectContentTypePath,
|
|
75
75
|
localized: true,
|
|
76
|
-
name:
|
|
77
|
-
type: "Symbol"
|
|
76
|
+
name: "Path",
|
|
77
|
+
type: "Symbol",
|
|
78
78
|
},
|
|
79
79
|
],
|
|
80
80
|
[
|
|
@@ -82,8 +82,8 @@ var contentTypes = new Map([
|
|
|
82
82
|
{
|
|
83
83
|
id: redirectContentTypeType,
|
|
84
84
|
localized: true,
|
|
85
|
-
name:
|
|
86
|
-
type: "Symbol"
|
|
85
|
+
name: "Type",
|
|
86
|
+
type: "Symbol",
|
|
87
87
|
},
|
|
88
88
|
],
|
|
89
89
|
]),
|
|
@@ -140,7 +140,7 @@ var redirectToEntry = function (page, tagsIds) {
|
|
|
140
140
|
});
|
|
141
141
|
};
|
|
142
142
|
describe(buildLocalizedSitemap, function () {
|
|
143
|
-
test(
|
|
143
|
+
test("Not enough data to build sitemap", function () {
|
|
144
144
|
var emptyData = {
|
|
145
145
|
contentTypes: contentTypes,
|
|
146
146
|
defaultLocaleCode: defaultLocale.code,
|
|
@@ -149,17 +149,17 @@ describe(buildLocalizedSitemap, function () {
|
|
|
149
149
|
pages: new Map(),
|
|
150
150
|
redirects: [],
|
|
151
151
|
};
|
|
152
|
-
expect(buildLocalizedSitemap(emptyData, { pageContentTypes: {} },
|
|
152
|
+
expect(buildLocalizedSitemap(emptyData, { pageContentTypes: {} }, "pageHome", defaultLocale)._tag).toBe("Left");
|
|
153
153
|
});
|
|
154
|
-
test(
|
|
155
|
-
var pageHomeTagId =
|
|
154
|
+
test("Build localized sitemap", function () {
|
|
155
|
+
var pageHomeTagId = "pagHome";
|
|
156
156
|
var pagesEntries = mockedPages.flatMap(function (page) {
|
|
157
|
-
return page.type ===
|
|
158
|
-
? [pageToEntry(page, page.sys.id ===
|
|
157
|
+
return page.type === "page"
|
|
158
|
+
? [pageToEntry(page, page.sys.id === "root" ? [pageHomeTagId] : [])]
|
|
159
159
|
: [];
|
|
160
160
|
});
|
|
161
161
|
var redirectsEntries = mockedPages.flatMap(function (page) {
|
|
162
|
-
return page.type !==
|
|
162
|
+
return page.type !== "page" ? [redirectToEntry(page)] : [];
|
|
163
163
|
});
|
|
164
164
|
var data = {
|
|
165
165
|
contentTypes: contentTypes,
|
|
@@ -176,10 +176,10 @@ describe(buildLocalizedSitemap, function () {
|
|
|
176
176
|
};
|
|
177
177
|
expect(JSON.parse(JSON.stringify(buildLocalizedSitemap(data, options, pageHomeTagId, defaultLocale), jsonStrigifyMapReplacer))).toMatchObject(JSON.parse(JSON.stringify(right(mockedLocalizedSitemap), jsonStrigifyMapReplacer)));
|
|
178
178
|
});
|
|
179
|
-
test(
|
|
180
|
-
var pageHomeTagId =
|
|
179
|
+
test("Handle reference cycles", function () {
|
|
180
|
+
var pageHomeTagId = "pagHome";
|
|
181
181
|
var entries = mockedCircularReferencesPages.map(function (page) {
|
|
182
|
-
return pageToEntry(page, page.sys.id ===
|
|
182
|
+
return pageToEntry(page, page.sys.id === "root" ? [pageHomeTagId] : []);
|
|
183
183
|
});
|
|
184
184
|
var data = {
|
|
185
185
|
contentTypes: contentTypes,
|
|
@@ -195,7 +195,7 @@ describe(buildLocalizedSitemap, function () {
|
|
|
195
195
|
redirects: [],
|
|
196
196
|
};
|
|
197
197
|
var expectedLocalizedSitemap = right({
|
|
198
|
-
root: { sys: mockedRoot.sys },
|
|
198
|
+
root: { sys: { id: mockedRoot.sys.id } },
|
|
199
199
|
sitemap: new Map([
|
|
200
200
|
__assign(__assign({}, mockedRoot), { childPages: [
|
|
201
201
|
{ sys: { id: mockedPage1WithCircularReference.sys.id } },
|