@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.
Files changed (23) hide show
  1. package/dist/es6/impl/arboretum-client.impl.js +13 -13
  2. package/dist/es6/impl/data/page-entries.js +1 -0
  3. package/dist/es6/impl/sitemap/adapters/page-entry-adapter.js +6 -8
  4. package/dist/es6/impl/sitemap/adapters/to-arboretum-page-adapter.test.js +6 -0
  5. package/dist/es6/impl/sitemap/adapters/to-arboretum-page-with-missing-data-adapter.js +2 -1
  6. package/dist/es6/impl/sitemap/helpers/__mocks__/mocked-localized-sitemap.js +59 -58
  7. package/dist/es6/impl/sitemap/helpers/build-localized-sitemap.js +56 -12
  8. package/dist/es6/impl/sitemap/helpers/build-localized-sitemap.test.js +34 -34
  9. package/dist/impl/arboretum-client.impl.js +13 -13
  10. package/dist/impl/data/page-entries.js +1 -0
  11. package/dist/impl/sitemap/adapters/page-entry-adapter.js +5 -7
  12. package/dist/impl/sitemap/adapters/to-arboretum-page-adapter.test.js +6 -0
  13. package/dist/impl/sitemap/adapters/to-arboretum-page-with-missing-data-adapter.js +2 -1
  14. package/dist/impl/sitemap/helpers/__mocks__/mocked-localized-sitemap.js +59 -58
  15. package/dist/impl/sitemap/helpers/build-localized-sitemap.js +52 -8
  16. package/dist/impl/sitemap/helpers/build-localized-sitemap.test.js +30 -30
  17. package/dist/types/arboretum-client.d.ts +6 -3
  18. package/dist/types/impl/arboretum-client.impl.d.ts +1 -0
  19. package/dist/types/impl/sitemap/adapters/page-entry-adapter.d.ts +4 -4
  20. package/dist/types/impl/sitemap/adapters/to-arboretum-page-with-missing-data-adapter.d.ts +3 -3
  21. package/dist/types/impl/sitemap/helpers/__mocks__/mocked-localized-sitemap.d.ts +1 -1
  22. package/dist/types/impl/sitemap/helpers/build-localized-sitemap.d.ts +5 -5
  23. 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 (_j) {
113
- switch (_j.label) {
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 = _j.sent();
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 (!((_c = config.options) === null || _c === void 0 ? void 0 : _c.data)) return [3 /*break*/, 2];
136
- _a = right({ data: (_d = config.options) === null || _d === void 0 ? void 0 : _d.data.data, warnings: undefined });
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 = _j.sent();
141
- _j.label = 4;
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 = ((_e = config.options) === null || _e === void 0 ? void 0 : _e.data)
146
+ sitemap = ((_f = config.options) === null || _f === void 0 ? void 0 : _f.data)
147
147
  ? config.options.data.sitemap
148
- : ((_f = config.options) === null || _f === void 0 ? void 0 : _f.eagerly)
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 = ((_g = config.options) === null || _g === void 0 ? void 0 : _g.data)
151
+ pagesByTagIdRecord = ((_h = config.options) === null || _h === void 0 ? void 0 : _h.data)
152
152
  ? config.options.data.pagesByTagId
153
- : ((_h = config.options) === null || _h === void 0 ? void 0 : _h.eagerly)
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 '../helpers/localize-contentful-field';
2
- export var pageEntryAdapter = function (data, slugField, titleField, childPagesField, locale, parent, entry) {
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: 'page',
11
+ type: "page",
15
12
  parent: parent ? { sys: parent.sys } : undefined,
16
- path: parent ? parent.path + '/' + slug : '/' + locale.code,
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: (childPages === null || childPages === void 0 ? void 0 : childPages.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 } }] : []; })) || [],
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: 'page',
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 = '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';
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: 'page',
40
- sys: { id: mockedRootSysId },
40
+ type: "page",
41
+ sys: { id: mockedRootSysId, contentTypeId: contentTypeId },
41
42
  parent: undefined,
42
43
  slug: mockedRootSysId,
43
- path: '/en',
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: 'page',
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 + '/' + mockedPage1SysId,
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: 'page',
66
- sys: { id: mockedPage1_1SysId },
67
- parent: { sys: mockedPage1.sys },
68
- path: mockedPage1.path + '/' + mockedPage1_1SysId,
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: 'page',
77
- sys: { id: mockedPage1_2SysId },
78
- parent: { sys: mockedPage1.sys },
79
- path: mockedPage1.path + '/' + mockedPage1_2SysId,
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: 'page',
85
- sys: { id: mockedPage1_1_1SysId },
86
- parent: { sys: mockedPage1_1.sys },
87
- path: mockedPage1_1.path + '/' + mockedPage1_1_1SysId,
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: 'page',
93
- sys: { id: mockedPage1_1_2SysId },
94
- parent: { sys: mockedPage1_1.sys },
95
- path: mockedPage1_1.path + '/' + mockedPage1_1_2SysId,
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: 'page',
101
- sys: { id: mockedPage2SysId },
102
- parent: { sys: mockedRoot.sys },
103
- path: mockedRoot.path + '/' + mockedPage2SysId,
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: 'page',
109
- sys: { id: mockedPage2_1SysId },
110
- parent: { sys: mockedPage2.sys },
111
- path: mockedPage2.path + '/' + mockedPage2_1SysId,
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: 'page',
117
- sys: { id: mockedPage3SysId },
118
- parent: { sys: mockedRoot.sys },
119
- path: mockedRoot.path + '/' + mockedPage3SysId,
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: 'alias',
125
+ type: "alias",
125
126
  sys: { id: mockedRedirect1SysId },
126
127
  page: { sys: { id: mockedRedirect1SysId } },
127
- path: mockedRoot.path + '/' + mockedRedirect1SysId,
128
+ path: mockedRoot.path + "/" + mockedRedirect1SysId,
128
129
  parent: { sys: { id: mockedRoot.sys.id } },
129
130
  };
130
131
  var mockedRedirect2 = {
131
- type: 'redirect',
132
+ type: "redirect",
132
133
  sys: { id: mockedRedirect2SysId },
133
134
  page: { sys: { id: mockedRedirect2SysId } },
134
- path: mockedRoot.path + '/' + mockedRedirect2SysId,
135
+ path: mockedRoot.path + "/" + mockedRedirect2SysId,
135
136
  parent: { sys: { id: mockedRoot.sys.id } },
136
137
  };
137
138
  var mockedRedirect3 = {
138
- type: 'alias',
139
+ type: "alias",
139
140
  sys: { id: mockedRedirect3SysId },
140
141
  page: { sys: { id: mockedRedirect3SysId } },
141
- path: mockedRoot.path + '/' + mockedRedirect3SysId,
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 === 'page') {
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: 'page',
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 + '/' + mockedPage1SysId,
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 '../../../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';
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 buildLocalizedSitemapArrRecursively = function (data, options, locale, parent, pageEntry, acc) {
62
- var pages = data.pages, contentTypes = data.contentTypes;
63
- var pageContentType = contentTypes.get(pageEntry.sys.contentType.sys.id);
64
- var pageContentTypeConfig = options.pageContentTypes[pageEntry.sys.contentType.sys.id];
65
- var findPageField = function (fieldId) {
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, childPagesField, locale, parent, pageEntry)
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 sitemap = buildLocalizedSitemapArrRecursively(data, options, locale, undefined, homePageEntry, new Map());
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 '../../../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';
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: 'en',
18
+ code: "en",
19
19
  default: true,
20
20
  fallbackCode: null,
21
- name: 'English',
21
+ name: "English",
22
22
  };
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';
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: 'Slug',
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: 'Child Pages',
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: 'Page',
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: 'Path',
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: 'Type',
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('Not enough data to build sitemap', function () {
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: {} }, 'pageHome', defaultLocale)._tag).toBe('Left');
152
+ expect(buildLocalizedSitemap(emptyData, { pageContentTypes: {} }, "pageHome", defaultLocale)._tag).toBe("Left");
153
153
  });
154
- test('Build localized sitemap', function () {
155
- var pageHomeTagId = 'pagHome';
154
+ test("Build localized sitemap", function () {
155
+ var pageHomeTagId = "pagHome";
156
156
  var pagesEntries = mockedPages.flatMap(function (page) {
157
- return page.type === 'page'
158
- ? [pageToEntry(page, page.sys.id === 'root' ? [pageHomeTagId] : [])]
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 !== 'page' ? [redirectToEntry(page)] : [];
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('Handle reference cycles', function () {
180
- var pageHomeTagId = 'pagHome';
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 === 'root' ? [pageHomeTagId] : []);
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 } },