@bright.global/arboretum-sdk 0.1.0-rc.1 → 0.1.0-rc.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/dist/clients/contentful-client/impl/methods/contentful-fetch.js +1 -1
- package/dist/es6/clients/contentful-client/impl/methods/contentful-fetch.js +1 -1
- package/dist/es6/impl/arboretum-client.impl.js +2 -0
- package/dist/es6/impl/sitemap/adapters/redirect-to-arboretum-page-adapter.js +1 -0
- package/dist/es6/impl/sitemap/adapters/to-arboretum-page-with-missing-data-adapter.js +1 -0
- package/dist/es6/impl/sitemap/helpers/build-localized-sitemap.js +22 -19
- package/dist/es6/impl/sitemap/methods/orphaned-pages.js +97 -0
- package/dist/impl/arboretum-client.impl.js +2 -0
- package/dist/impl/sitemap/adapters/redirect-to-arboretum-page-adapter.js +1 -0
- package/dist/impl/sitemap/adapters/to-arboretum-page-with-missing-data-adapter.js +1 -0
- package/dist/impl/sitemap/helpers/build-localized-sitemap.js +24 -20
- package/dist/impl/sitemap/methods/orphaned-pages.js +101 -0
- package/dist/types/arboretum-client.d.ts +7 -1
- package/dist/types/impl/sitemap/helpers/build-localized-sitemap.d.ts +10 -2
- package/dist/types/impl/sitemap/methods/orphaned-pages.d.ts +3 -0
- package/package.json +1 -1
|
@@ -72,7 +72,7 @@ var contentfulFetchWithRetires = function (p, retryLimit, retry) {
|
|
|
72
72
|
if (!(retry < retryLimit &&
|
|
73
73
|
(res.status === 429 || res.status === 500))) return [3 /*break*/, 3];
|
|
74
74
|
delay = getRetryDelay(retry);
|
|
75
|
-
msg = "Waiting for ".concat(delay, "ms before retrying... (retry: ").concat(
|
|
75
|
+
msg = "Waiting for ".concat(delay, "ms before retrying... (retry: ").concat(retry + 1, "/").concat(retryLimit, ")");
|
|
76
76
|
if (res.status === 500) {
|
|
77
77
|
console.log("[warning] Internal server error occurred. ".concat(msg));
|
|
78
78
|
}
|
|
@@ -69,7 +69,7 @@ var contentfulFetchWithRetires = function (p, retryLimit, retry) {
|
|
|
69
69
|
if (!(retry < retryLimit &&
|
|
70
70
|
(res.status === 429 || res.status === 500))) return [3 /*break*/, 3];
|
|
71
71
|
delay = getRetryDelay(retry);
|
|
72
|
-
msg = "Waiting for ".concat(delay, "ms before retrying... (retry: ").concat(
|
|
72
|
+
msg = "Waiting for ".concat(delay, "ms before retrying... (retry: ").concat(retry + 1, "/").concat(retryLimit, ")");
|
|
73
73
|
if (res.status === 500) {
|
|
74
74
|
console.log("[warning] Internal server error occurred. ".concat(msg));
|
|
75
75
|
}
|
|
@@ -86,6 +86,7 @@ import { buildSitemapEagerly } from "./sitemap/helpers/build-sitemap-eagerly";
|
|
|
86
86
|
import { cachedData } from "./sitemap/methods/cached-data";
|
|
87
87
|
import { buildPagesByTagEagerly } from "./sitemap/helpers/build-pages-by-tag-eagerly";
|
|
88
88
|
import { homePage } from "./sitemap/methods/home-page";
|
|
89
|
+
import { orphanedPages } from "./sitemap/methods/orphaned-pages";
|
|
89
90
|
var pageTagIdPrefix = "page";
|
|
90
91
|
var pageHomeTagId = "".concat(pageTagIdPrefix, "Home");
|
|
91
92
|
var localeTagIdPrefix = "locale";
|
|
@@ -168,6 +169,7 @@ export var createArboretumClient = function (config) { return __awaiter(void 0,
|
|
|
168
169
|
search: search(ctx_1),
|
|
169
170
|
status: status(ctx_1),
|
|
170
171
|
cachedData: cachedData(ctx_1),
|
|
172
|
+
orphanedPages: orphanedPages(ctx_1),
|
|
171
173
|
},
|
|
172
174
|
warnings: dataE.right.warnings,
|
|
173
175
|
}];
|
|
@@ -69,6 +69,27 @@ var findPageFieldF = function (data, options, pageContentTypeId) {
|
|
|
69
69
|
: undefined;
|
|
70
70
|
};
|
|
71
71
|
};
|
|
72
|
+
export var buildPage = function (data, options, childrenRefsByPageId, locale, parent, pageEntry) {
|
|
73
|
+
var _a;
|
|
74
|
+
var pageContentTypeConfig = options.pageContentTypes[pageEntry.sys.contentType.sys.id];
|
|
75
|
+
var findPageField = findPageFieldF(data, options, pageEntry.sys.contentType.sys.id);
|
|
76
|
+
var slugField = findPageField(pageContentTypeConfig.slugFieldId);
|
|
77
|
+
var titleField = pageContentTypeConfig.titleFieldId
|
|
78
|
+
? findPageField(pageContentTypeConfig.titleFieldId)
|
|
79
|
+
: undefined;
|
|
80
|
+
var childPagesField = pageContentTypeConfig.childPagesFieldId
|
|
81
|
+
? findPageField(pageContentTypeConfig.childPagesFieldId)
|
|
82
|
+
: undefined;
|
|
83
|
+
var fieldValue = localizeField(data, locale);
|
|
84
|
+
var childrenRefs = childrenRefsByPageId
|
|
85
|
+
? childrenRefsByPageId.get(pageEntry.sys.id) || []
|
|
86
|
+
: childPagesField
|
|
87
|
+
? ((_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 } }] : []; })) || []
|
|
88
|
+
: [];
|
|
89
|
+
return slugField
|
|
90
|
+
? pageEntryAdapter(data, options, slugField, titleField, childrenRefs, locale, parent, pageEntry)
|
|
91
|
+
: undefined;
|
|
92
|
+
};
|
|
72
93
|
var getChildrenRefsByParentId = function (data, locale, options) {
|
|
73
94
|
var pages = data.pages;
|
|
74
95
|
var acc = new Map();
|
|
@@ -98,26 +119,8 @@ var getChildrenRefsByParentId = function (data, locale, options) {
|
|
|
98
119
|
return acc;
|
|
99
120
|
};
|
|
100
121
|
var buildLocalizedSitemapArrRecursively = function (data, options, locale, parent, childrenRefsByPageId, pageEntry, acc) {
|
|
101
|
-
var _a;
|
|
102
122
|
var pages = data.pages;
|
|
103
|
-
var
|
|
104
|
-
var findPageField = findPageFieldF(data, options, pageEntry.sys.contentType.sys.id);
|
|
105
|
-
var slugField = findPageField(pageContentTypeConfig.slugFieldId);
|
|
106
|
-
var titleField = pageContentTypeConfig.titleFieldId
|
|
107
|
-
? findPageField(pageContentTypeConfig.titleFieldId)
|
|
108
|
-
: undefined;
|
|
109
|
-
var childPagesField = pageContentTypeConfig.childPagesFieldId
|
|
110
|
-
? findPageField(pageContentTypeConfig.childPagesFieldId)
|
|
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
|
-
: [];
|
|
118
|
-
var page = slugField
|
|
119
|
-
? pageEntryAdapter(data, options, slugField, titleField, childrenRefs, locale, parent, pageEntry)
|
|
120
|
-
: undefined;
|
|
123
|
+
var page = buildPage(data, options, childrenRefsByPageId, locale, parent, pageEntry);
|
|
121
124
|
if (page) {
|
|
122
125
|
var validChildPages_1 = page.childPages.filter(function (c) { return pages.get(c.sys.id) && !acc.get(c.sys.id); });
|
|
123
126
|
var redirectChildPages = isRoot(page) && options.redirectContentType
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
13
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
14
|
+
if (!m) return o;
|
|
15
|
+
var i = m.call(o), r, ar = [], e;
|
|
16
|
+
try {
|
|
17
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
18
|
+
}
|
|
19
|
+
catch (error) { e = { error: error }; }
|
|
20
|
+
finally {
|
|
21
|
+
try {
|
|
22
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
23
|
+
}
|
|
24
|
+
finally { if (e) throw e.error; }
|
|
25
|
+
}
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
29
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
30
|
+
if (ar || !(i in from)) {
|
|
31
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
32
|
+
ar[i] = from[i];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
36
|
+
};
|
|
37
|
+
import { left, right } from "../../../utils/fp-utils";
|
|
38
|
+
import { buildPage, localizedSitemapFromCacheOrBuildEff, } from "../helpers/build-localized-sitemap";
|
|
39
|
+
import { toArboretumPage } from "../adapters/to-arboretum-page-adapter";
|
|
40
|
+
var singleOrAllLocalesE = function (locales) {
|
|
41
|
+
return function (localeCode) {
|
|
42
|
+
if (localeCode) {
|
|
43
|
+
var locale = locales.get(localeCode);
|
|
44
|
+
return locale
|
|
45
|
+
? right([locale])
|
|
46
|
+
: left("Failed to find locale by code: ".concat(localeCode));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return right(__spreadArray([], __read(locales.values()), false));
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
export var orphanedPages = function (ctx) {
|
|
54
|
+
return function (options) {
|
|
55
|
+
var localeCode = options === null || options === void 0 ? void 0 : options.localeCode;
|
|
56
|
+
var localesE = singleOrAllLocalesE(ctx.data.locales)(localeCode);
|
|
57
|
+
var skip = typeof (options === null || options === void 0 ? void 0 : options.skip) !== "undefined" ? options.skip : 0;
|
|
58
|
+
if (localesE._tag === "Right") {
|
|
59
|
+
var pages = localesE.right
|
|
60
|
+
.flatMap(function (locale) {
|
|
61
|
+
var localizedSitemapE = localizedSitemapFromCacheOrBuildEff(ctx, locale);
|
|
62
|
+
var pages = localizedSitemapE._tag === "Right"
|
|
63
|
+
? __spreadArray([], __read(ctx.data.pages.values()), false).flatMap(function (p) {
|
|
64
|
+
var sitemapPage = localizedSitemapE.right.sitemap.get(p.sys.id);
|
|
65
|
+
if (sitemapPage) {
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
var page = buildPage(ctx.data, ctx.options, undefined, locale, undefined, p);
|
|
70
|
+
var arboretumPage = page
|
|
71
|
+
? toArboretumPage(localizedSitemapE.right, locale.code, {})(page)
|
|
72
|
+
: undefined;
|
|
73
|
+
return arboretumPage
|
|
74
|
+
? [
|
|
75
|
+
__assign(__assign({}, arboretumPage), { path: undefined, totalDirectChildrenCount: undefined, ancestors: undefined, children: undefined }),
|
|
76
|
+
]
|
|
77
|
+
: [];
|
|
78
|
+
}
|
|
79
|
+
})
|
|
80
|
+
: [];
|
|
81
|
+
return pages;
|
|
82
|
+
})
|
|
83
|
+
.sort(function (p1, p2) {
|
|
84
|
+
if (p1.id < p2.id)
|
|
85
|
+
return -1;
|
|
86
|
+
if (p1.id > p2.id)
|
|
87
|
+
return 1;
|
|
88
|
+
return 0;
|
|
89
|
+
})
|
|
90
|
+
.slice(skip, options === null || options === void 0 ? void 0 : options.limit);
|
|
91
|
+
return right(pages);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
return localesE;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
};
|
|
@@ -89,6 +89,7 @@ var build_sitemap_eagerly_1 = require("./sitemap/helpers/build-sitemap-eagerly")
|
|
|
89
89
|
var cached_data_1 = require("./sitemap/methods/cached-data");
|
|
90
90
|
var build_pages_by_tag_eagerly_1 = require("./sitemap/helpers/build-pages-by-tag-eagerly");
|
|
91
91
|
var home_page_1 = require("./sitemap/methods/home-page");
|
|
92
|
+
var orphaned_pages_1 = require("./sitemap/methods/orphaned-pages");
|
|
92
93
|
var pageTagIdPrefix = "page";
|
|
93
94
|
var pageHomeTagId = "".concat(pageTagIdPrefix, "Home");
|
|
94
95
|
var localeTagIdPrefix = "locale";
|
|
@@ -171,6 +172,7 @@ var createArboretumClient = function (config) { return __awaiter(void 0, void 0,
|
|
|
171
172
|
search: (0, search_1.search)(ctx_1),
|
|
172
173
|
status: (0, status_1.status)(ctx_1),
|
|
173
174
|
cachedData: (0, cached_data_1.cachedData)(ctx_1),
|
|
175
|
+
orphanedPages: (0, orphaned_pages_1.orphanedPages)(ctx_1),
|
|
174
176
|
},
|
|
175
177
|
warnings: dataE.right.warnings,
|
|
176
178
|
}];
|
|
@@ -17,6 +17,7 @@ var toArboretumPageWithMissingData = function (localeCode) {
|
|
|
17
17
|
children: children,
|
|
18
18
|
ancestors: ancestors,
|
|
19
19
|
additionalFields: page.additionalFields,
|
|
20
|
+
metadata: page.metadata
|
|
20
21
|
}); };
|
|
21
22
|
};
|
|
22
23
|
exports.toArboretumPageWithMissingData = toArboretumPageWithMissingData;
|
|
@@ -36,7 +36,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
36
36
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.localizedSitemapFromCacheOrBuildEff = exports.buildLocalizedSitemap = void 0;
|
|
39
|
+
exports.localizedSitemapFromCacheOrBuildEff = exports.buildLocalizedSitemap = exports.buildPage = void 0;
|
|
40
40
|
var fp_utils_1 = require("../../../utils/fp-utils");
|
|
41
41
|
var page_entry_adapter_1 = require("../adapters/page-entry-adapter");
|
|
42
42
|
var redirect_entry_adapter_1 = require("../adapters/redirect-entry-adapter");
|
|
@@ -72,6 +72,28 @@ var findPageFieldF = function (data, options, pageContentTypeId) {
|
|
|
72
72
|
: undefined;
|
|
73
73
|
};
|
|
74
74
|
};
|
|
75
|
+
var buildPage = function (data, options, childrenRefsByPageId, locale, parent, pageEntry) {
|
|
76
|
+
var _a;
|
|
77
|
+
var pageContentTypeConfig = options.pageContentTypes[pageEntry.sys.contentType.sys.id];
|
|
78
|
+
var findPageField = findPageFieldF(data, options, pageEntry.sys.contentType.sys.id);
|
|
79
|
+
var slugField = findPageField(pageContentTypeConfig.slugFieldId);
|
|
80
|
+
var titleField = pageContentTypeConfig.titleFieldId
|
|
81
|
+
? findPageField(pageContentTypeConfig.titleFieldId)
|
|
82
|
+
: undefined;
|
|
83
|
+
var childPagesField = pageContentTypeConfig.childPagesFieldId
|
|
84
|
+
? findPageField(pageContentTypeConfig.childPagesFieldId)
|
|
85
|
+
: undefined;
|
|
86
|
+
var fieldValue = (0, localize_contentful_field_1.localizeField)(data, locale);
|
|
87
|
+
var childrenRefs = childrenRefsByPageId
|
|
88
|
+
? childrenRefsByPageId.get(pageEntry.sys.id) || []
|
|
89
|
+
: childPagesField
|
|
90
|
+
? ((_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 } }] : []; })) || []
|
|
91
|
+
: [];
|
|
92
|
+
return slugField
|
|
93
|
+
? (0, page_entry_adapter_1.pageEntryAdapter)(data, options, slugField, titleField, childrenRefs, locale, parent, pageEntry)
|
|
94
|
+
: undefined;
|
|
95
|
+
};
|
|
96
|
+
exports.buildPage = buildPage;
|
|
75
97
|
var getChildrenRefsByParentId = function (data, locale, options) {
|
|
76
98
|
var pages = data.pages;
|
|
77
99
|
var acc = new Map();
|
|
@@ -101,26 +123,8 @@ var getChildrenRefsByParentId = function (data, locale, options) {
|
|
|
101
123
|
return acc;
|
|
102
124
|
};
|
|
103
125
|
var buildLocalizedSitemapArrRecursively = function (data, options, locale, parent, childrenRefsByPageId, pageEntry, acc) {
|
|
104
|
-
var _a;
|
|
105
126
|
var pages = data.pages;
|
|
106
|
-
var
|
|
107
|
-
var findPageField = findPageFieldF(data, options, pageEntry.sys.contentType.sys.id);
|
|
108
|
-
var slugField = findPageField(pageContentTypeConfig.slugFieldId);
|
|
109
|
-
var titleField = pageContentTypeConfig.titleFieldId
|
|
110
|
-
? findPageField(pageContentTypeConfig.titleFieldId)
|
|
111
|
-
: undefined;
|
|
112
|
-
var childPagesField = pageContentTypeConfig.childPagesFieldId
|
|
113
|
-
? findPageField(pageContentTypeConfig.childPagesFieldId)
|
|
114
|
-
: undefined;
|
|
115
|
-
var fieldValue = (0, localize_contentful_field_1.localizeField)(data, locale);
|
|
116
|
-
var childrenRefs = childrenRefsByPageId
|
|
117
|
-
? childrenRefsByPageId.get(pageEntry.sys.id) || []
|
|
118
|
-
: childPagesField
|
|
119
|
-
? ((_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 } }] : []; })) || []
|
|
120
|
-
: [];
|
|
121
|
-
var page = slugField
|
|
122
|
-
? (0, page_entry_adapter_1.pageEntryAdapter)(data, options, slugField, titleField, childrenRefs, locale, parent, pageEntry)
|
|
123
|
-
: undefined;
|
|
127
|
+
var page = (0, exports.buildPage)(data, options, childrenRefsByPageId, locale, parent, pageEntry);
|
|
124
128
|
if (page) {
|
|
125
129
|
var validChildPages_1 = page.childPages.filter(function (c) { return pages.get(c.sys.id) && !acc.get(c.sys.id); });
|
|
126
130
|
var redirectChildPages = (0, is_root_1.isRoot)(page) && options.redirectContentType
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
14
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
|
+
if (!m) return o;
|
|
16
|
+
var i = m.call(o), r, ar = [], e;
|
|
17
|
+
try {
|
|
18
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
19
|
+
}
|
|
20
|
+
catch (error) { e = { error: error }; }
|
|
21
|
+
finally {
|
|
22
|
+
try {
|
|
23
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
24
|
+
}
|
|
25
|
+
finally { if (e) throw e.error; }
|
|
26
|
+
}
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
30
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
31
|
+
if (ar || !(i in from)) {
|
|
32
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
33
|
+
ar[i] = from[i];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.orphanedPages = void 0;
|
|
40
|
+
var fp_utils_1 = require("../../../utils/fp-utils");
|
|
41
|
+
var build_localized_sitemap_1 = require("../helpers/build-localized-sitemap");
|
|
42
|
+
var to_arboretum_page_adapter_1 = require("../adapters/to-arboretum-page-adapter");
|
|
43
|
+
var singleOrAllLocalesE = function (locales) {
|
|
44
|
+
return function (localeCode) {
|
|
45
|
+
if (localeCode) {
|
|
46
|
+
var locale = locales.get(localeCode);
|
|
47
|
+
return locale
|
|
48
|
+
? (0, fp_utils_1.right)([locale])
|
|
49
|
+
: (0, fp_utils_1.left)("Failed to find locale by code: ".concat(localeCode));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
return (0, fp_utils_1.right)(__spreadArray([], __read(locales.values()), false));
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
var orphanedPages = function (ctx) {
|
|
57
|
+
return function (options) {
|
|
58
|
+
var localeCode = options === null || options === void 0 ? void 0 : options.localeCode;
|
|
59
|
+
var localesE = singleOrAllLocalesE(ctx.data.locales)(localeCode);
|
|
60
|
+
var skip = typeof (options === null || options === void 0 ? void 0 : options.skip) !== "undefined" ? options.skip : 0;
|
|
61
|
+
if (localesE._tag === "Right") {
|
|
62
|
+
var pages = localesE.right
|
|
63
|
+
.flatMap(function (locale) {
|
|
64
|
+
var localizedSitemapE = (0, build_localized_sitemap_1.localizedSitemapFromCacheOrBuildEff)(ctx, locale);
|
|
65
|
+
var pages = localizedSitemapE._tag === "Right"
|
|
66
|
+
? __spreadArray([], __read(ctx.data.pages.values()), false).flatMap(function (p) {
|
|
67
|
+
var sitemapPage = localizedSitemapE.right.sitemap.get(p.sys.id);
|
|
68
|
+
if (sitemapPage) {
|
|
69
|
+
return [];
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
var page = (0, build_localized_sitemap_1.buildPage)(ctx.data, ctx.options, undefined, locale, undefined, p);
|
|
73
|
+
var arboretumPage = page
|
|
74
|
+
? (0, to_arboretum_page_adapter_1.toArboretumPage)(localizedSitemapE.right, locale.code, {})(page)
|
|
75
|
+
: undefined;
|
|
76
|
+
return arboretumPage
|
|
77
|
+
? [
|
|
78
|
+
__assign(__assign({}, arboretumPage), { path: undefined, totalDirectChildrenCount: undefined, ancestors: undefined, children: undefined }),
|
|
79
|
+
]
|
|
80
|
+
: [];
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
: [];
|
|
84
|
+
return pages;
|
|
85
|
+
})
|
|
86
|
+
.sort(function (p1, p2) {
|
|
87
|
+
if (p1.id < p2.id)
|
|
88
|
+
return -1;
|
|
89
|
+
if (p1.id > p2.id)
|
|
90
|
+
return 1;
|
|
91
|
+
return 0;
|
|
92
|
+
})
|
|
93
|
+
.slice(skip, options === null || options === void 0 ? void 0 : options.limit);
|
|
94
|
+
return (0, fp_utils_1.right)(pages);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
return localesE;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
exports.orphanedPages = orphanedPages;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CachedDataT, SysIdT } from "./impl/arboretum-client.impl";
|
|
1
|
+
import { CachedDataT, MetadataT, SysIdT } from "./impl/arboretum-client.impl";
|
|
2
2
|
import { Either } from "./utils/fp-utils";
|
|
3
3
|
import { ContentTypeT, EntryT, LocaleT, StatusT, TagT } from "./clients/contentful-client/contentful-client";
|
|
4
4
|
export type ArboretumClientOptions = {
|
|
@@ -88,6 +88,7 @@ type ArboretumPageBaseT = {
|
|
|
88
88
|
path: string;
|
|
89
89
|
title?: string;
|
|
90
90
|
cmaOnlyStatus?: StatusT;
|
|
91
|
+
metadata?: MetadataT;
|
|
91
92
|
};
|
|
92
93
|
export type ArboretumRedirectT = ArboretumPageBaseT & {
|
|
93
94
|
type: "redirect";
|
|
@@ -140,5 +141,10 @@ export type ArboretumClientT = {
|
|
|
140
141
|
regenerationInProgress: boolean;
|
|
141
142
|
};
|
|
142
143
|
cachedData: () => CachedDataT;
|
|
144
|
+
orphanedPages: (options?: {
|
|
145
|
+
limit?: number;
|
|
146
|
+
skip?: number;
|
|
147
|
+
localeCode?: string;
|
|
148
|
+
}) => Either<string, Array<Omit<ArboretumPageT, "path" | "totalDirectChildrenCount" | "ancestors" | "children">>>;
|
|
143
149
|
};
|
|
144
150
|
export {};
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { Either } from "../../../utils/fp-utils";
|
|
2
|
-
import { ArboretumClientCtx, LocalizedSitemapT } from "../../arboretum-client.impl";
|
|
3
|
-
import { LocaleT } from "../../../clients/contentful-client/contentful-client";
|
|
2
|
+
import { ArboretumClientCtx, LocalizedSitemapT, PageT } from "../../arboretum-client.impl";
|
|
3
|
+
import { EntryT, LocaleT } from "../../../clients/contentful-client/contentful-client";
|
|
4
|
+
import { SitemapDataT } from "../../data/sitemap-data";
|
|
5
|
+
export declare const buildPage: (data: Pick<SitemapDataT, "locales" | "defaultLocaleCode" | "pages" | "contentTypes">, options: ArboretumClientCtx["options"], childrenRefsByPageId: Map<string, Array<{
|
|
6
|
+
sys: {
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
9
|
+
}>> | undefined, locale: LocaleT, parent: (NonNullable<PageT["parent"]> & {
|
|
10
|
+
path: string;
|
|
11
|
+
}) | undefined, pageEntry: EntryT) => PageT | undefined;
|
|
4
12
|
export declare const buildLocalizedSitemap: (data: Pick<ArboretumClientCtx["data"], "homePagesByTagId" | "pages" | "contentTypes" | "defaultLocaleCode" | "locales" | "redirects">, options: ArboretumClientCtx["options"], pageHomeTagId: ArboretumClientCtx["pageHomeTagId"], locale: LocaleT) => Either<string, LocalizedSitemapT>;
|
|
5
13
|
export declare const localizedSitemapFromCacheOrBuildEff: (ctx: Pick<ArboretumClientCtx, "options" | "data" | "pageHomeTagId" | "sitemap">, locale: LocaleT) => Either<string, LocalizedSitemapT>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ArboretumClientT } from "../../../arboretum-client";
|
|
2
|
+
import { ArboretumClientCtx } from "../../arboretum-client.impl";
|
|
3
|
+
export declare const orphanedPages: (ctx: Pick<ArboretumClientCtx, "data" | "sitemap" | "options" | "pageHomeTagId">) => ArboretumClientT["orphanedPages"];
|