@bright.global/arboretum-sdk 0.0.6
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 +223 -0
- package/dist/arboretum-client.js +2 -0
- package/dist/clients/contentful-client/contentful-client.js +2 -0
- package/dist/clients/contentful-client/impl/contentful-client-impl.js +54 -0
- package/dist/es6/arboretum-client.js +1 -0
- package/dist/es6/clients/contentful-client/contentful-client.js +1 -0
- package/dist/es6/clients/contentful-client/impl/contentful-client-impl.js +50 -0
- package/dist/es6/impl/arboretum-client.impl.js +182 -0
- package/dist/es6/impl/data/content-types.js +136 -0
- package/dist/es6/impl/data/helpers/__mocks__/mocked-contentful-entries-client-api.js +66 -0
- package/dist/es6/impl/data/helpers/entry-status.js +19 -0
- package/dist/es6/impl/data/helpers/get-all-entries-recursively.js +113 -0
- package/dist/es6/impl/data/helpers/get-all-entries-recursively.test.js +114 -0
- package/dist/es6/impl/data/helpers/home-pages-by-tag-id.js +66 -0
- package/dist/es6/impl/data/helpers/home-pages-by-tag-id.test.js +105 -0
- package/dist/es6/impl/data/helpers/locale-codes-from-metadata.js +7 -0
- package/dist/es6/impl/data/helpers/locale-codes-from-metadata.test.js +52 -0
- package/dist/es6/impl/data/helpers/parse-locale-tag.js +24 -0
- package/dist/es6/impl/data/helpers/parse-locale-tag.test.js +19 -0
- package/dist/es6/impl/data/helpers/validate-content-types.js +112 -0
- package/dist/es6/impl/data/helpers/validate-content-types.test.js +103 -0
- package/dist/es6/impl/data/home-page.js +75 -0
- package/dist/es6/impl/data/locales.js +60 -0
- package/dist/es6/impl/data/page-entries.js +169 -0
- package/dist/es6/impl/data/page-entries.test.js +170 -0
- package/dist/es6/impl/data/redirect-entries.js +163 -0
- package/dist/es6/impl/data/sitemap-data.js +109 -0
- package/dist/es6/impl/sitemap/adapters/page-entry-adapter.js +27 -0
- package/dist/es6/impl/sitemap/adapters/redirect-entry-adapter.js +26 -0
- package/dist/es6/impl/sitemap/adapters/redirect-to-arboretum-page-adapter.js +11 -0
- package/dist/es6/impl/sitemap/adapters/to-arboretum-page-adapter.js +14 -0
- package/dist/es6/impl/sitemap/adapters/to-arboretum-page-adapter.test.js +100 -0
- package/dist/es6/impl/sitemap/adapters/to-arboretum-page-with-missing-data-adapter.js +16 -0
- package/dist/es6/impl/sitemap/helpers/__mocks__/mocked-localized-sitemap.js +186 -0
- package/dist/es6/impl/sitemap/helpers/build-localized-sitemap.js +128 -0
- package/dist/es6/impl/sitemap/helpers/build-localized-sitemap.test.js +208 -0
- package/dist/es6/impl/sitemap/helpers/build-pages-by-tag-eagerly.js +7 -0
- package/dist/es6/impl/sitemap/helpers/build-sitemap-eagerly.js +32 -0
- package/dist/es6/impl/sitemap/helpers/find-ancestors.js +42 -0
- package/dist/es6/impl/sitemap/helpers/find-ancestors.test.js +33 -0
- package/dist/es6/impl/sitemap/helpers/find-children.js +9 -0
- package/dist/es6/impl/sitemap/helpers/find-children.test.js +39 -0
- package/dist/es6/impl/sitemap/helpers/is-root.js +1 -0
- package/dist/es6/impl/sitemap/helpers/localize-contentful-field.js +22 -0
- package/dist/es6/impl/sitemap/helpers/localize-contentful-field.test.js +137 -0
- package/dist/es6/impl/sitemap/helpers/localized-pages-by-tag-id.js +79 -0
- package/dist/es6/impl/sitemap/helpers/localized-path.js +4 -0
- package/dist/es6/impl/sitemap/helpers/page-ancestors.js +8 -0
- package/dist/es6/impl/sitemap/helpers/page-children.js +10 -0
- package/dist/es6/impl/sitemap/methods/cached-data.js +7 -0
- package/dist/es6/impl/sitemap/methods/home-page.js +27 -0
- package/dist/es6/impl/sitemap/methods/page-by-id.js +29 -0
- package/dist/es6/impl/sitemap/methods/page-by-path.js +52 -0
- package/dist/es6/impl/sitemap/methods/pages-by-ids.js +6 -0
- package/dist/es6/impl/sitemap/methods/pages-by-paths.js +6 -0
- package/dist/es6/impl/sitemap/methods/pages-by-tag-id.js +37 -0
- package/dist/es6/impl/sitemap/methods/pages.js +75 -0
- package/dist/es6/impl/sitemap/methods/regenerate.js +64 -0
- package/dist/es6/impl/sitemap/methods/search.js +97 -0
- package/dist/es6/impl/sitemap/methods/status.js +47 -0
- package/dist/es6/index.js +2 -0
- package/dist/es6/utils/array-to-map.js +7 -0
- package/dist/es6/utils/fp-utils.js +5 -0
- package/dist/es6/utils/group-by.js +13 -0
- package/dist/es6/utils/json-stringify-map-replacer.js +6 -0
- package/dist/es6/utils/string-similarity.js +59 -0
- package/dist/impl/arboretum-client.impl.js +189 -0
- package/dist/impl/data/content-types.js +140 -0
- package/dist/impl/data/helpers/__mocks__/mocked-contentful-entries-client-api.js +72 -0
- package/dist/impl/data/helpers/entry-status.js +23 -0
- package/dist/impl/data/helpers/get-all-entries-recursively.js +117 -0
- package/dist/impl/data/helpers/get-all-entries-recursively.test.js +116 -0
- package/dist/impl/data/helpers/home-pages-by-tag-id.js +70 -0
- package/dist/impl/data/helpers/home-pages-by-tag-id.test.js +107 -0
- package/dist/impl/data/helpers/locale-codes-from-metadata.js +11 -0
- package/dist/impl/data/helpers/locale-codes-from-metadata.test.js +54 -0
- package/dist/impl/data/helpers/parse-locale-tag.js +28 -0
- package/dist/impl/data/helpers/parse-locale-tag.test.js +21 -0
- package/dist/impl/data/helpers/validate-content-types.js +117 -0
- package/dist/impl/data/helpers/validate-content-types.test.js +105 -0
- package/dist/impl/data/home-page.js +79 -0
- package/dist/impl/data/locales.js +64 -0
- package/dist/impl/data/page-entries.js +173 -0
- package/dist/impl/data/page-entries.test.js +172 -0
- package/dist/impl/data/redirect-entries.js +168 -0
- package/dist/impl/data/sitemap-data.js +113 -0
- package/dist/impl/sitemap/adapters/page-entry-adapter.js +31 -0
- package/dist/impl/sitemap/adapters/redirect-entry-adapter.js +30 -0
- package/dist/impl/sitemap/adapters/redirect-to-arboretum-page-adapter.js +15 -0
- package/dist/impl/sitemap/adapters/to-arboretum-page-adapter.js +18 -0
- package/dist/impl/sitemap/adapters/to-arboretum-page-adapter.test.js +102 -0
- package/dist/impl/sitemap/adapters/to-arboretum-page-with-missing-data-adapter.js +20 -0
- package/dist/impl/sitemap/helpers/__mocks__/mocked-localized-sitemap.js +189 -0
- package/dist/impl/sitemap/helpers/build-localized-sitemap.js +133 -0
- package/dist/impl/sitemap/helpers/build-localized-sitemap.test.js +210 -0
- package/dist/impl/sitemap/helpers/build-pages-by-tag-eagerly.js +11 -0
- package/dist/impl/sitemap/helpers/build-sitemap-eagerly.js +36 -0
- package/dist/impl/sitemap/helpers/find-ancestors.js +46 -0
- package/dist/impl/sitemap/helpers/find-ancestors.test.js +35 -0
- package/dist/impl/sitemap/helpers/find-children.js +13 -0
- package/dist/impl/sitemap/helpers/find-children.test.js +41 -0
- package/dist/impl/sitemap/helpers/is-root.js +5 -0
- package/dist/impl/sitemap/helpers/localize-contentful-field.js +26 -0
- package/dist/impl/sitemap/helpers/localize-contentful-field.test.js +139 -0
- package/dist/impl/sitemap/helpers/localized-pages-by-tag-id.js +84 -0
- package/dist/impl/sitemap/helpers/localized-path.js +8 -0
- package/dist/impl/sitemap/helpers/page-ancestors.js +12 -0
- package/dist/impl/sitemap/helpers/page-children.js +14 -0
- package/dist/impl/sitemap/methods/cached-data.js +11 -0
- package/dist/impl/sitemap/methods/home-page.js +31 -0
- package/dist/impl/sitemap/methods/page-by-id.js +33 -0
- package/dist/impl/sitemap/methods/page-by-path.js +56 -0
- package/dist/impl/sitemap/methods/pages-by-ids.js +10 -0
- package/dist/impl/sitemap/methods/pages-by-paths.js +10 -0
- package/dist/impl/sitemap/methods/pages-by-tag-id.js +41 -0
- package/dist/impl/sitemap/methods/pages.js +79 -0
- package/dist/impl/sitemap/methods/regenerate.js +68 -0
- package/dist/impl/sitemap/methods/search.js +101 -0
- package/dist/impl/sitemap/methods/status.js +51 -0
- package/dist/index.js +8 -0
- package/dist/types/arboretum-client.d.ts +110 -0
- package/dist/types/clients/contentful-client/contentful-client.d.ts +95 -0
- package/dist/types/clients/contentful-client/impl/contentful-client-impl.d.ts +3 -0
- package/dist/types/impl/arboretum-client.impl.d.ts +107 -0
- package/dist/types/impl/data/content-types.d.ts +11 -0
- package/dist/types/impl/data/helpers/__mocks__/mocked-contentful-entries-client-api.d.ts +7 -0
- package/dist/types/impl/data/helpers/entry-status.d.ts +2 -0
- package/dist/types/impl/data/helpers/get-all-entries-recursively.d.ts +6 -0
- package/dist/types/impl/data/helpers/get-all-entries-recursively.test.d.ts +1 -0
- package/dist/types/impl/data/helpers/home-pages-by-tag-id.d.ts +15 -0
- package/dist/types/impl/data/helpers/home-pages-by-tag-id.test.d.ts +1 -0
- package/dist/types/impl/data/helpers/locale-codes-from-metadata.d.ts +2 -0
- package/dist/types/impl/data/helpers/locale-codes-from-metadata.test.d.ts +1 -0
- package/dist/types/impl/data/helpers/parse-locale-tag.d.ts +3 -0
- package/dist/types/impl/data/helpers/parse-locale-tag.test.d.ts +1 -0
- package/dist/types/impl/data/helpers/validate-content-types.d.ts +5 -0
- package/dist/types/impl/data/helpers/validate-content-types.test.d.ts +1 -0
- package/dist/types/impl/data/home-page.d.ts +3 -0
- package/dist/types/impl/data/locales.d.ts +10 -0
- package/dist/types/impl/data/page-entries.d.ts +3 -0
- package/dist/types/impl/data/page-entries.test.d.ts +1 -0
- package/dist/types/impl/data/redirect-entries.d.ts +4 -0
- package/dist/types/impl/data/sitemap-data.d.ts +17 -0
- package/dist/types/impl/sitemap/adapters/page-entry-adapter.d.ts +6 -0
- package/dist/types/impl/sitemap/adapters/redirect-entry-adapter.d.ts +4 -0
- package/dist/types/impl/sitemap/adapters/redirect-to-arboretum-page-adapter.d.ts +3 -0
- package/dist/types/impl/sitemap/adapters/to-arboretum-page-adapter.d.ts +3 -0
- package/dist/types/impl/sitemap/adapters/to-arboretum-page-adapter.test.d.ts +1 -0
- package/dist/types/impl/sitemap/adapters/to-arboretum-page-with-missing-data-adapter.d.ts +3 -0
- package/dist/types/impl/sitemap/helpers/__mocks__/mocked-localized-sitemap.d.ts +16 -0
- package/dist/types/impl/sitemap/helpers/build-localized-sitemap.d.ts +5 -0
- package/dist/types/impl/sitemap/helpers/build-localized-sitemap.test.d.ts +1 -0
- package/dist/types/impl/sitemap/helpers/build-pages-by-tag-eagerly.d.ts +3 -0
- package/dist/types/impl/sitemap/helpers/build-sitemap-eagerly.d.ts +3 -0
- package/dist/types/impl/sitemap/helpers/find-ancestors.d.ts +2 -0
- package/dist/types/impl/sitemap/helpers/find-ancestors.test.d.ts +1 -0
- package/dist/types/impl/sitemap/helpers/find-children.d.ts +2 -0
- package/dist/types/impl/sitemap/helpers/find-children.test.d.ts +1 -0
- package/dist/types/impl/sitemap/helpers/is-root.d.ts +2 -0
- package/dist/types/impl/sitemap/helpers/localize-contentful-field.d.ts +4 -0
- package/dist/types/impl/sitemap/helpers/localize-contentful-field.test.d.ts +1 -0
- package/dist/types/impl/sitemap/helpers/localized-pages-by-tag-id.d.ts +4 -0
- package/dist/types/impl/sitemap/helpers/localized-path.d.ts +1 -0
- package/dist/types/impl/sitemap/helpers/page-ancestors.d.ts +3 -0
- package/dist/types/impl/sitemap/helpers/page-children.d.ts +5 -0
- package/dist/types/impl/sitemap/methods/cached-data.d.ts +3 -0
- package/dist/types/impl/sitemap/methods/home-page.d.ts +3 -0
- package/dist/types/impl/sitemap/methods/page-by-id.d.ts +3 -0
- package/dist/types/impl/sitemap/methods/page-by-path.d.ts +3 -0
- package/dist/types/impl/sitemap/methods/pages-by-ids.d.ts +3 -0
- package/dist/types/impl/sitemap/methods/pages-by-paths.d.ts +3 -0
- package/dist/types/impl/sitemap/methods/pages-by-tag-id.d.ts +3 -0
- package/dist/types/impl/sitemap/methods/pages.d.ts +3 -0
- package/dist/types/impl/sitemap/methods/regenerate.d.ts +3 -0
- package/dist/types/impl/sitemap/methods/search.d.ts +3 -0
- package/dist/types/impl/sitemap/methods/status.d.ts +3 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/utils/array-to-map.d.ts +1 -0
- package/dist/types/utils/fp-utils.d.ts +11 -0
- package/dist/types/utils/group-by.d.ts +1 -0
- package/dist/types/utils/json-stringify-map-replacer.d.ts +1 -0
- package/dist/types/utils/string-similarity.d.ts +9 -0
- package/dist/utils/array-to-map.js +11 -0
- package/dist/utils/fp-utils.js +10 -0
- package/dist/utils/group-by.js +17 -0
- package/dist/utils/json-stringify-map-replacer.js +10 -0
- package/dist/utils/string-similarity.js +63 -0
- package/docs/.nojekyll +1 -0
- package/docs/assets/highlight.css +78 -0
- package/docs/assets/main.js +58 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1367 -0
- package/docs/functions/createArboretumClient.html +72 -0
- package/docs/functions/createArboretumClientFromCdaClient.html +72 -0
- package/docs/functions/createArboretumClientFromCdaParams.html +72 -0
- package/docs/functions/createArboretumClientFromCma.html +72 -0
- package/docs/index.html +228 -0
- package/docs/modules.html +88 -0
- package/docs/types/ArboretumAliasT.html +70 -0
- package/docs/types/ArboretumClientConfigFromCdaParamsT.html +74 -0
- package/docs/types/ArboretumClientConfigFromCdaT.html +79 -0
- package/docs/types/ArboretumClientConfigFromCmaT.html +79 -0
- package/docs/types/ArboretumClientConfigT.html +63 -0
- package/docs/types/ArboretumClientContentfulConfigOptionsT.html +93 -0
- package/docs/types/ArboretumClientOptions.html +72 -0
- package/docs/types/ArboretumClientOptionsT.html +63 -0
- package/docs/types/ArboretumClientT.html +235 -0
- package/docs/types/ArboretumPageNodeT.html +63 -0
- package/docs/types/ArboretumPageT.html +76 -0
- package/docs/types/ArboretumRedirectT.html +70 -0
- package/docs/types/CachedDataT.html +63 -0
- package/docs/types/Either.html +70 -0
- package/docs/types/EitherL.html +75 -0
- package/docs/types/EitherR.html +75 -0
- package/docs/types/LocaleT.html +63 -0
- package/docs/types/OptionsT.html +70 -0
- package/logo.svg +12 -0
- package/package.json +47 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toArboretumPageWithMissingData = void 0;
|
|
4
|
+
var toArboretumPageWithMissingData = function (localeCode) {
|
|
5
|
+
return function (page, ancestors, children) { return ({
|
|
6
|
+
type: 'page',
|
|
7
|
+
id: page.sys.id,
|
|
8
|
+
title: page.title,
|
|
9
|
+
cmaOnlyStatus: page.sys.cmaOnlyStatus,
|
|
10
|
+
localeCode: localeCode,
|
|
11
|
+
path: page.path,
|
|
12
|
+
slug: page.slug,
|
|
13
|
+
totalDirectChildrenCount: children
|
|
14
|
+
? children.length
|
|
15
|
+
: page.childPages.length,
|
|
16
|
+
children: children,
|
|
17
|
+
ancestors: ancestors,
|
|
18
|
+
}); };
|
|
19
|
+
};
|
|
20
|
+
exports.toArboretumPageWithMissingData = toArboretumPageWithMissingData;
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
+
if (!m) return o;
|
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
|
6
|
+
try {
|
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
+
}
|
|
9
|
+
catch (error) { e = { error: error }; }
|
|
10
|
+
finally {
|
|
11
|
+
try {
|
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
+
}
|
|
14
|
+
finally { if (e) throw e.error; }
|
|
15
|
+
}
|
|
16
|
+
return ar;
|
|
17
|
+
};
|
|
18
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
+
if (ar || !(i in from)) {
|
|
21
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
+
ar[i] = from[i];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
+
};
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.mockedLocalizedSitemapWithCircularReference = exports.mockedCircularReferencesPages = exports.mockedPage1WithCircularReference = exports.mockedLocalizedSitemap = exports.mockedPages = exports.mockedRedirects = exports.mockedPage3 = exports.mockedPage2_1 = exports.mockedPage2 = exports.mockedPage1_1_2 = exports.mockedPage1_1_1 = exports.mockedPage1_2 = exports.mockedPage1_1 = exports.mockedPage1 = exports.mockedRoot = void 0;
|
|
29
|
+
var mockedRootSysId = 'root';
|
|
30
|
+
var mockedPage1SysId = 'page1';
|
|
31
|
+
var mockedPage1_1SysId = 'page1-1';
|
|
32
|
+
var mockedPage1_1_1SysId = 'page1-1-1';
|
|
33
|
+
var mockedPage1_1_2SysId = 'page1-1-2';
|
|
34
|
+
var mockedPage1_2SysId = 'page1-2';
|
|
35
|
+
var mockedPage2SysId = 'page2';
|
|
36
|
+
var mockedPage2_1SysId = 'page2_1';
|
|
37
|
+
var mockedPage3SysId = 'page3';
|
|
38
|
+
var mockedRedirect1SysId = 'redirect1';
|
|
39
|
+
var mockedRedirect2SysId = 'redirect2';
|
|
40
|
+
var mockedRedirect3SysId = 'redirect3';
|
|
41
|
+
exports.mockedRoot = {
|
|
42
|
+
type: 'page',
|
|
43
|
+
sys: { id: mockedRootSysId },
|
|
44
|
+
parent: undefined,
|
|
45
|
+
slug: mockedRootSysId,
|
|
46
|
+
path: '/en',
|
|
47
|
+
childPages: [
|
|
48
|
+
{ sys: { id: mockedPage1SysId } },
|
|
49
|
+
{ sys: { id: mockedPage2SysId } },
|
|
50
|
+
{ sys: { id: mockedPage3SysId } },
|
|
51
|
+
{ sys: { id: mockedRedirect1SysId } },
|
|
52
|
+
{ sys: { id: mockedRedirect2SysId } },
|
|
53
|
+
{ sys: { id: mockedRedirect3SysId } },
|
|
54
|
+
],
|
|
55
|
+
};
|
|
56
|
+
exports.mockedPage1 = {
|
|
57
|
+
type: 'page',
|
|
58
|
+
sys: { id: mockedPage1SysId },
|
|
59
|
+
parent: { sys: exports.mockedRoot.sys },
|
|
60
|
+
slug: mockedPage1SysId,
|
|
61
|
+
path: exports.mockedRoot.path + '/' + mockedPage1SysId,
|
|
62
|
+
childPages: [
|
|
63
|
+
{ sys: { id: mockedPage1_1SysId } },
|
|
64
|
+
{ sys: { id: mockedPage1_2SysId } },
|
|
65
|
+
],
|
|
66
|
+
};
|
|
67
|
+
exports.mockedPage1_1 = {
|
|
68
|
+
type: 'page',
|
|
69
|
+
sys: { id: mockedPage1_1SysId },
|
|
70
|
+
parent: { sys: exports.mockedPage1.sys },
|
|
71
|
+
path: exports.mockedPage1.path + '/' + mockedPage1_1SysId,
|
|
72
|
+
slug: mockedPage1_1SysId,
|
|
73
|
+
childPages: [
|
|
74
|
+
{ sys: { id: mockedPage1_1_1SysId } },
|
|
75
|
+
{ sys: { id: mockedPage1_1_2SysId } },
|
|
76
|
+
],
|
|
77
|
+
};
|
|
78
|
+
exports.mockedPage1_2 = {
|
|
79
|
+
type: 'page',
|
|
80
|
+
sys: { id: mockedPage1_2SysId },
|
|
81
|
+
parent: { sys: exports.mockedPage1.sys },
|
|
82
|
+
path: exports.mockedPage1.path + '/' + mockedPage1_2SysId,
|
|
83
|
+
slug: mockedPage1_2SysId,
|
|
84
|
+
childPages: [],
|
|
85
|
+
};
|
|
86
|
+
exports.mockedPage1_1_1 = {
|
|
87
|
+
type: 'page',
|
|
88
|
+
sys: { id: mockedPage1_1_1SysId },
|
|
89
|
+
parent: { sys: exports.mockedPage1_1.sys },
|
|
90
|
+
path: exports.mockedPage1_1.path + '/' + mockedPage1_1_1SysId,
|
|
91
|
+
slug: mockedPage1_1_1SysId,
|
|
92
|
+
childPages: [],
|
|
93
|
+
};
|
|
94
|
+
exports.mockedPage1_1_2 = {
|
|
95
|
+
type: 'page',
|
|
96
|
+
sys: { id: mockedPage1_1_2SysId },
|
|
97
|
+
parent: { sys: exports.mockedPage1_1.sys },
|
|
98
|
+
path: exports.mockedPage1_1.path + '/' + mockedPage1_1_2SysId,
|
|
99
|
+
slug: mockedPage1_1_2SysId,
|
|
100
|
+
childPages: [],
|
|
101
|
+
};
|
|
102
|
+
exports.mockedPage2 = {
|
|
103
|
+
type: 'page',
|
|
104
|
+
sys: { id: mockedPage2SysId },
|
|
105
|
+
parent: { sys: exports.mockedRoot.sys },
|
|
106
|
+
path: exports.mockedRoot.path + '/' + mockedPage2SysId,
|
|
107
|
+
slug: mockedPage2SysId,
|
|
108
|
+
childPages: [{ sys: { id: mockedPage2_1SysId } }],
|
|
109
|
+
};
|
|
110
|
+
exports.mockedPage2_1 = {
|
|
111
|
+
type: 'page',
|
|
112
|
+
sys: { id: mockedPage2_1SysId },
|
|
113
|
+
parent: { sys: exports.mockedPage2.sys },
|
|
114
|
+
path: exports.mockedPage2.path + '/' + mockedPage2_1SysId,
|
|
115
|
+
slug: mockedPage2_1SysId,
|
|
116
|
+
childPages: [],
|
|
117
|
+
};
|
|
118
|
+
exports.mockedPage3 = {
|
|
119
|
+
type: 'page',
|
|
120
|
+
sys: { id: mockedPage3SysId },
|
|
121
|
+
parent: { sys: exports.mockedRoot.sys },
|
|
122
|
+
path: exports.mockedRoot.path + '/' + mockedPage3SysId,
|
|
123
|
+
slug: mockedPage3SysId,
|
|
124
|
+
childPages: [],
|
|
125
|
+
};
|
|
126
|
+
var mockedRedirect1 = {
|
|
127
|
+
type: 'alias',
|
|
128
|
+
sys: { id: mockedRedirect1SysId },
|
|
129
|
+
page: { sys: { id: mockedRedirect1SysId } },
|
|
130
|
+
path: exports.mockedRoot.path + '/' + mockedRedirect1SysId,
|
|
131
|
+
parent: { sys: { id: exports.mockedRoot.sys.id } },
|
|
132
|
+
};
|
|
133
|
+
var mockedRedirect2 = {
|
|
134
|
+
type: 'redirect',
|
|
135
|
+
sys: { id: mockedRedirect2SysId },
|
|
136
|
+
page: { sys: { id: mockedRedirect2SysId } },
|
|
137
|
+
path: exports.mockedRoot.path + '/' + mockedRedirect2SysId,
|
|
138
|
+
parent: { sys: { id: exports.mockedRoot.sys.id } },
|
|
139
|
+
};
|
|
140
|
+
var mockedRedirect3 = {
|
|
141
|
+
type: 'alias',
|
|
142
|
+
sys: { id: mockedRedirect3SysId },
|
|
143
|
+
page: { sys: { id: mockedRedirect3SysId } },
|
|
144
|
+
path: exports.mockedRoot.path + '/' + mockedRedirect3SysId,
|
|
145
|
+
parent: { sys: { id: exports.mockedRoot.sys.id } },
|
|
146
|
+
};
|
|
147
|
+
exports.mockedRedirects = [
|
|
148
|
+
mockedRedirect1,
|
|
149
|
+
mockedRedirect2,
|
|
150
|
+
mockedRedirect3,
|
|
151
|
+
];
|
|
152
|
+
exports.mockedPages = __spreadArray([
|
|
153
|
+
exports.mockedRoot,
|
|
154
|
+
exports.mockedPage1,
|
|
155
|
+
exports.mockedPage1_1,
|
|
156
|
+
exports.mockedPage1_1_1,
|
|
157
|
+
exports.mockedPage1_1_2,
|
|
158
|
+
exports.mockedPage1_2,
|
|
159
|
+
exports.mockedPage2,
|
|
160
|
+
exports.mockedPage2_1,
|
|
161
|
+
exports.mockedPage3
|
|
162
|
+
], __read(exports.mockedRedirects), false);
|
|
163
|
+
exports.mockedLocalizedSitemap = {
|
|
164
|
+
root: { sys: exports.mockedRoot.sys },
|
|
165
|
+
sitemap: new Map(exports.mockedPages.map(function (page) {
|
|
166
|
+
if (!page.parent && page.type === 'page') {
|
|
167
|
+
return [page.sys.id, page];
|
|
168
|
+
}
|
|
169
|
+
return [page.sys.id, page];
|
|
170
|
+
})),
|
|
171
|
+
pageIdByPath: new Map(exports.mockedPages.map(function (page) { return [page.path, page.sys.id]; })),
|
|
172
|
+
};
|
|
173
|
+
exports.mockedPage1WithCircularReference = {
|
|
174
|
+
type: 'page',
|
|
175
|
+
sys: { id: mockedPage1SysId },
|
|
176
|
+
parent: { sys: { id: exports.mockedRoot.sys.id } },
|
|
177
|
+
path: exports.mockedRoot.path + '/' + mockedPage1SysId,
|
|
178
|
+
slug: mockedPage1SysId,
|
|
179
|
+
childPages: [{ sys: { id: mockedRootSysId } }],
|
|
180
|
+
};
|
|
181
|
+
exports.mockedCircularReferencesPages = [
|
|
182
|
+
exports.mockedRoot,
|
|
183
|
+
exports.mockedPage1WithCircularReference,
|
|
184
|
+
];
|
|
185
|
+
exports.mockedLocalizedSitemapWithCircularReference = {
|
|
186
|
+
root: { sys: exports.mockedRoot.sys },
|
|
187
|
+
sitemap: new Map(exports.mockedCircularReferencesPages.map(function (page) { return [page.sys.id, page]; })),
|
|
188
|
+
pageIdByPath: new Map(exports.mockedCircularReferencesPages.map(function (page) { return [page.path, page.sys.id]; })),
|
|
189
|
+
};
|
|
@@ -0,0 +1,133 @@
|
|
|
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.localizedSitemapFromCacheOrBuildEff = exports.buildLocalizedSitemap = void 0;
|
|
40
|
+
var fp_utils_1 = require("../../../utils/fp-utils");
|
|
41
|
+
var page_entry_adapter_1 = require("../adapters/page-entry-adapter");
|
|
42
|
+
var redirect_entry_adapter_1 = require("../adapters/redirect-entry-adapter");
|
|
43
|
+
var is_root_1 = require("./is-root");
|
|
44
|
+
var getAllRedirects = function (data, options, locale, parent) {
|
|
45
|
+
var redirectContentType = options.id
|
|
46
|
+
? data.contentTypes.get(options.id)
|
|
47
|
+
: undefined;
|
|
48
|
+
var findField = function (fieldId) {
|
|
49
|
+
return redirectContentType === null || redirectContentType === void 0 ? void 0 : redirectContentType.fields.get(fieldId);
|
|
50
|
+
};
|
|
51
|
+
var pageField = findField(options.pageFieldId);
|
|
52
|
+
var pathField = findField(options.pathFieldId);
|
|
53
|
+
var typeField = findField(options.typeFieldId);
|
|
54
|
+
var titleField = options.titleFieldId
|
|
55
|
+
? findField(options.titleFieldId)
|
|
56
|
+
: undefined;
|
|
57
|
+
return data.redirects.flatMap(function (redirectEntry) {
|
|
58
|
+
var redirect = pageField && pathField && typeField
|
|
59
|
+
? (0, redirect_entry_adapter_1.redirectEntryAdapter)(data, pageField, pathField, typeField, titleField, parent, locale, redirectEntry)
|
|
60
|
+
: undefined;
|
|
61
|
+
return redirect ? [redirect] : [];
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
var buildLocalizedSitemapArrRecursively = function (data, options, locale, parent, pageEntry, acc) {
|
|
65
|
+
var pages = data.pages, contentTypes = data.contentTypes;
|
|
66
|
+
var pageContentType = contentTypes.get(pageEntry.sys.contentType.sys.id);
|
|
67
|
+
var pageContentTypeConfig = options.pageContentTypes[pageEntry.sys.contentType.sys.id];
|
|
68
|
+
var findPageField = function (fieldId) {
|
|
69
|
+
return pageContentType && pageContentTypeConfig
|
|
70
|
+
? pageContentType.fields.get(fieldId)
|
|
71
|
+
: undefined;
|
|
72
|
+
};
|
|
73
|
+
var slugField = findPageField(pageContentTypeConfig.slugFieldId);
|
|
74
|
+
var titleField = pageContentTypeConfig.titleFieldId
|
|
75
|
+
? findPageField(pageContentTypeConfig.titleFieldId)
|
|
76
|
+
: undefined;
|
|
77
|
+
var childPagesField = pageContentTypeConfig.childPagesFieldId
|
|
78
|
+
? findPageField(pageContentTypeConfig.childPagesFieldId)
|
|
79
|
+
: undefined;
|
|
80
|
+
var page = slugField
|
|
81
|
+
? (0, page_entry_adapter_1.pageEntryAdapter)(data, slugField, titleField, childPagesField, locale, parent, pageEntry)
|
|
82
|
+
: undefined;
|
|
83
|
+
if (page) {
|
|
84
|
+
var validChildPages_1 = page.childPages.filter(function (c) { return pages.get(c.sys.id) && !acc.get(c.sys.id); });
|
|
85
|
+
var redirectChildPages = (0, is_root_1.isRoot)(page) && options.redirectContentType
|
|
86
|
+
? getAllRedirects(data, options.redirectContentType, locale, page)
|
|
87
|
+
: [];
|
|
88
|
+
redirectChildPages.forEach(function (r) {
|
|
89
|
+
var id = r.sys.id;
|
|
90
|
+
acc.set(id, r);
|
|
91
|
+
validChildPages_1.push({ sys: { id: id } });
|
|
92
|
+
});
|
|
93
|
+
var pageWithValidChildPages = __assign(__assign({}, page), { childPages: validChildPages_1 });
|
|
94
|
+
acc.set(page.sys.id, pageWithValidChildPages);
|
|
95
|
+
validChildPages_1.forEach(function (_a) {
|
|
96
|
+
var id = _a.sys.id;
|
|
97
|
+
var childPageEntry = pages.get(id);
|
|
98
|
+
childPageEntry &&
|
|
99
|
+
buildLocalizedSitemapArrRecursively(data, options, locale, { sys: pageEntry.sys, path: page.path }, childPageEntry, acc);
|
|
100
|
+
});
|
|
101
|
+
return acc;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
return acc;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
var buildLocalizedSitemap = function (data, options, pageHomeTagId, locale) {
|
|
108
|
+
var _a, _b, _c, _d;
|
|
109
|
+
var homePagesByTagId = data.homePagesByTagId, pages = data.pages;
|
|
110
|
+
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;
|
|
111
|
+
var homePageEntry = homePageRef ? pages.get(homePageRef) : undefined;
|
|
112
|
+
if (homePageEntry) {
|
|
113
|
+
var sitemap = buildLocalizedSitemapArrRecursively(data, options, locale, undefined, homePageEntry, new Map());
|
|
114
|
+
return (0, fp_utils_1.right)({
|
|
115
|
+
root: { sys: homePageEntry.sys },
|
|
116
|
+
sitemap: sitemap,
|
|
117
|
+
pageIdByPath: new Map(__spreadArray([], __read(sitemap.values()), false).map(function (page) { return [page.path, page.sys.id]; })),
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return (0, fp_utils_1.left)("Homepage required but not defined (locale: ".concat(locale.code, ")"));
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
exports.buildLocalizedSitemap = buildLocalizedSitemap;
|
|
125
|
+
var localizedSitemapFromCacheOrBuildEff = function (ctx, locale) {
|
|
126
|
+
var cachedLocalizedSitemap = ctx.sitemap.get(locale.code);
|
|
127
|
+
var sitemapE = cachedLocalizedSitemap
|
|
128
|
+
? cachedLocalizedSitemap
|
|
129
|
+
: (0, exports.buildLocalizedSitemap)(ctx.data, ctx.options, ctx.pageHomeTagId, locale);
|
|
130
|
+
ctx.sitemap.set(locale.code, sitemapE);
|
|
131
|
+
return sitemapE;
|
|
132
|
+
};
|
|
133
|
+
exports.localizedSitemapFromCacheOrBuildEff = localizedSitemapFromCacheOrBuildEff;
|
|
@@ -0,0 +1,210 @@
|
|
|
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 _a;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
var fp_utils_1 = require("../../../utils/fp-utils");
|
|
16
|
+
var json_stringify_map_replacer_1 = require("../../../utils/json-stringify-map-replacer");
|
|
17
|
+
var build_localized_sitemap_1 = require("./build-localized-sitemap");
|
|
18
|
+
var mocked_localized_sitemap_1 = require("./__mocks__/mocked-localized-sitemap");
|
|
19
|
+
var defaultLocale = {
|
|
20
|
+
code: 'en',
|
|
21
|
+
default: true,
|
|
22
|
+
fallbackCode: null,
|
|
23
|
+
name: 'English',
|
|
24
|
+
};
|
|
25
|
+
var pageContentTypeId = 'page';
|
|
26
|
+
var pageContentTypeSlugFieldId = 'slug';
|
|
27
|
+
var pageContentTypeChildPagesFieldId = 'childPages';
|
|
28
|
+
var redirectContentTypeId = 'redirect';
|
|
29
|
+
var redirectContentTypePage = 'page';
|
|
30
|
+
var redirectContentTypePath = 'path';
|
|
31
|
+
var redirectContentTypeType = 'type';
|
|
32
|
+
var contentTypes = new Map([
|
|
33
|
+
[
|
|
34
|
+
pageContentTypeId,
|
|
35
|
+
{
|
|
36
|
+
sys: { id: pageContentTypeId },
|
|
37
|
+
fields: new Map([
|
|
38
|
+
[
|
|
39
|
+
pageContentTypeSlugFieldId,
|
|
40
|
+
{
|
|
41
|
+
id: pageContentTypeSlugFieldId,
|
|
42
|
+
localized: true,
|
|
43
|
+
name: 'Slug',
|
|
44
|
+
type: "Symbol"
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
pageContentTypeChildPagesFieldId,
|
|
49
|
+
{
|
|
50
|
+
id: pageContentTypeChildPagesFieldId,
|
|
51
|
+
localized: true,
|
|
52
|
+
name: 'Child Pages',
|
|
53
|
+
type: "Array"
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
]),
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
[
|
|
60
|
+
redirectContentTypeId,
|
|
61
|
+
{
|
|
62
|
+
sys: { id: redirectContentTypeId },
|
|
63
|
+
fields: new Map([
|
|
64
|
+
[
|
|
65
|
+
redirectContentTypePage,
|
|
66
|
+
{
|
|
67
|
+
id: redirectContentTypePage,
|
|
68
|
+
localized: true,
|
|
69
|
+
name: 'Page',
|
|
70
|
+
type: "Link"
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
[
|
|
74
|
+
redirectContentTypePath,
|
|
75
|
+
{
|
|
76
|
+
id: redirectContentTypePath,
|
|
77
|
+
localized: true,
|
|
78
|
+
name: 'Path',
|
|
79
|
+
type: "Symbol"
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
[
|
|
83
|
+
redirectContentTypeType,
|
|
84
|
+
{
|
|
85
|
+
id: redirectContentTypeType,
|
|
86
|
+
localized: true,
|
|
87
|
+
name: 'Type',
|
|
88
|
+
type: "Symbol"
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
]),
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
]);
|
|
95
|
+
var options = {
|
|
96
|
+
pageContentTypes: (_a = {},
|
|
97
|
+
_a[pageContentTypeId] = {
|
|
98
|
+
slugFieldId: pageContentTypeSlugFieldId,
|
|
99
|
+
childPagesFieldId: pageContentTypeChildPagesFieldId,
|
|
100
|
+
},
|
|
101
|
+
_a),
|
|
102
|
+
redirectContentType: {
|
|
103
|
+
id: redirectContentTypeId,
|
|
104
|
+
pageFieldId: redirectContentTypePage,
|
|
105
|
+
pathFieldId: redirectContentTypePath,
|
|
106
|
+
typeFieldId: redirectContentTypeType,
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
var pageToEntry = function (page, tagsIds) {
|
|
110
|
+
var _a, _b, _c;
|
|
111
|
+
return ({
|
|
112
|
+
sys: { id: page.sys.id, contentType: { sys: { id: pageContentTypeId } } },
|
|
113
|
+
metadata: tagsIds
|
|
114
|
+
? { tags: tagsIds.map(function (t) { return ({ sys: { id: t } }); }) }
|
|
115
|
+
: undefined,
|
|
116
|
+
fields: (_a = {},
|
|
117
|
+
_a[pageContentTypeSlugFieldId] = (_b = {}, _b[defaultLocale.code] = page.slug, _b),
|
|
118
|
+
_a[pageContentTypeChildPagesFieldId] = (_c = {},
|
|
119
|
+
_c[defaultLocale.code] = page.childPages.map(function (cp) { return ({ sys: cp.sys }); }),
|
|
120
|
+
_c),
|
|
121
|
+
_a),
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
var redirectToEntry = function (page, tagsIds) {
|
|
125
|
+
var _a, _b, _c, _d;
|
|
126
|
+
return ({
|
|
127
|
+
sys: { id: page.sys.id, contentType: { sys: { id: redirectContentTypeId } } },
|
|
128
|
+
metadata: tagsIds
|
|
129
|
+
? { tags: tagsIds.map(function (t) { return ({ sys: { id: t } }); }) }
|
|
130
|
+
: undefined,
|
|
131
|
+
fields: (_a = {},
|
|
132
|
+
_a[redirectContentTypePage] = (_b = {},
|
|
133
|
+
_b[defaultLocale.code] = { sys: { id: page.page.sys.id } },
|
|
134
|
+
_b),
|
|
135
|
+
_a[redirectContentTypePath] = (_c = {},
|
|
136
|
+
_c[defaultLocale.code] = page.path.slice(("/" + defaultLocale.code).length),
|
|
137
|
+
_c),
|
|
138
|
+
_a[redirectContentTypeType] = (_d = {},
|
|
139
|
+
_d[defaultLocale.code] = page.type,
|
|
140
|
+
_d),
|
|
141
|
+
_a),
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
describe(build_localized_sitemap_1.buildLocalizedSitemap, function () {
|
|
145
|
+
test('Not enough data to build sitemap', function () {
|
|
146
|
+
var emptyData = {
|
|
147
|
+
contentTypes: contentTypes,
|
|
148
|
+
defaultLocaleCode: defaultLocale.code,
|
|
149
|
+
locales: new Map([[defaultLocale.code, defaultLocale]]),
|
|
150
|
+
homePagesByTagId: new Map(),
|
|
151
|
+
pages: new Map(),
|
|
152
|
+
redirects: [],
|
|
153
|
+
};
|
|
154
|
+
expect((0, build_localized_sitemap_1.buildLocalizedSitemap)(emptyData, { pageContentTypes: {} }, 'pageHome', defaultLocale)._tag).toBe('Left');
|
|
155
|
+
});
|
|
156
|
+
test('Build localized sitemap', function () {
|
|
157
|
+
var pageHomeTagId = 'pagHome';
|
|
158
|
+
var pagesEntries = mocked_localized_sitemap_1.mockedPages.flatMap(function (page) {
|
|
159
|
+
return page.type === 'page'
|
|
160
|
+
? [pageToEntry(page, page.sys.id === 'root' ? [pageHomeTagId] : [])]
|
|
161
|
+
: [];
|
|
162
|
+
});
|
|
163
|
+
var redirectsEntries = mocked_localized_sitemap_1.mockedPages.flatMap(function (page) {
|
|
164
|
+
return page.type !== 'page' ? [redirectToEntry(page)] : [];
|
|
165
|
+
});
|
|
166
|
+
var data = {
|
|
167
|
+
contentTypes: contentTypes,
|
|
168
|
+
defaultLocaleCode: defaultLocale.code,
|
|
169
|
+
locales: new Map([[defaultLocale.code, defaultLocale]]),
|
|
170
|
+
homePagesByTagId: new Map([
|
|
171
|
+
[
|
|
172
|
+
defaultLocale.code,
|
|
173
|
+
new Map([[pageHomeTagId, [{ sys: { id: mocked_localized_sitemap_1.mockedRoot.sys.id } }]]]),
|
|
174
|
+
],
|
|
175
|
+
]),
|
|
176
|
+
pages: new Map(pagesEntries.map(function (e) { return [e.sys.id, e]; })),
|
|
177
|
+
redirects: redirectsEntries,
|
|
178
|
+
};
|
|
179
|
+
expect(JSON.parse(JSON.stringify((0, build_localized_sitemap_1.buildLocalizedSitemap)(data, options, pageHomeTagId, defaultLocale), json_stringify_map_replacer_1.jsonStrigifyMapReplacer))).toMatchObject(JSON.parse(JSON.stringify((0, fp_utils_1.right)(mocked_localized_sitemap_1.mockedLocalizedSitemap), json_stringify_map_replacer_1.jsonStrigifyMapReplacer)));
|
|
180
|
+
});
|
|
181
|
+
test('Handle reference cycles', function () {
|
|
182
|
+
var pageHomeTagId = 'pagHome';
|
|
183
|
+
var entries = mocked_localized_sitemap_1.mockedCircularReferencesPages.map(function (page) {
|
|
184
|
+
return pageToEntry(page, page.sys.id === 'root' ? [pageHomeTagId] : []);
|
|
185
|
+
});
|
|
186
|
+
var data = {
|
|
187
|
+
contentTypes: contentTypes,
|
|
188
|
+
defaultLocaleCode: defaultLocale.code,
|
|
189
|
+
locales: new Map([[defaultLocale.code, defaultLocale]]),
|
|
190
|
+
homePagesByTagId: new Map([
|
|
191
|
+
[
|
|
192
|
+
defaultLocale.code,
|
|
193
|
+
new Map([[pageHomeTagId, [{ sys: { id: mocked_localized_sitemap_1.mockedRoot.sys.id } }]]]),
|
|
194
|
+
],
|
|
195
|
+
]),
|
|
196
|
+
pages: new Map(entries.map(function (e) { return [e.sys.id, e]; })),
|
|
197
|
+
redirects: [],
|
|
198
|
+
};
|
|
199
|
+
var expectedLocalizedSitemap = (0, fp_utils_1.right)({
|
|
200
|
+
root: { sys: mocked_localized_sitemap_1.mockedRoot.sys },
|
|
201
|
+
sitemap: new Map([
|
|
202
|
+
__assign(__assign({}, mocked_localized_sitemap_1.mockedRoot), { childPages: [
|
|
203
|
+
{ sys: { id: mocked_localized_sitemap_1.mockedPage1WithCircularReference.sys.id } },
|
|
204
|
+
] }),
|
|
205
|
+
__assign(__assign({}, mocked_localized_sitemap_1.mockedPage1WithCircularReference), { childPages: [] }),
|
|
206
|
+
].map(function (page) { return [page.sys.id, page]; })),
|
|
207
|
+
});
|
|
208
|
+
expect(JSON.parse(JSON.stringify((0, build_localized_sitemap_1.buildLocalizedSitemap)(data, options, pageHomeTagId, defaultLocale), json_stringify_map_replacer_1.jsonStrigifyMapReplacer))).toMatchObject(JSON.parse(JSON.stringify(expectedLocalizedSitemap, json_stringify_map_replacer_1.jsonStrigifyMapReplacer)));
|
|
209
|
+
});
|
|
210
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildPagesByTagEagerly = void 0;
|
|
4
|
+
var array_to_map_1 = require("../../../utils/array-to-map");
|
|
5
|
+
var localized_pages_by_tag_id_1 = require("./localized-pages-by-tag-id");
|
|
6
|
+
var buildPagesByTagEagerly = function (ctx, locales) {
|
|
7
|
+
return (0, array_to_map_1.arrayToMap)(function (locale) { return locale.code; })(function (locale) {
|
|
8
|
+
return (0, localized_pages_by_tag_id_1.buildLocalizedPagesByTagId)(ctx, locale);
|
|
9
|
+
})(Object.values(locales));
|
|
10
|
+
};
|
|
11
|
+
exports.buildPagesByTagEagerly = buildPagesByTagEagerly;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
+
if (!m) return o;
|
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
|
6
|
+
try {
|
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
+
}
|
|
9
|
+
catch (error) { e = { error: error }; }
|
|
10
|
+
finally {
|
|
11
|
+
try {
|
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
+
}
|
|
14
|
+
finally { if (e) throw e.error; }
|
|
15
|
+
}
|
|
16
|
+
return ar;
|
|
17
|
+
};
|
|
18
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
+
if (ar || !(i in from)) {
|
|
21
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
+
ar[i] = from[i];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
+
};
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.buildSitemapEagerly = void 0;
|
|
29
|
+
var build_localized_sitemap_1 = require("./build-localized-sitemap");
|
|
30
|
+
var array_to_map_1 = require("../../../utils/array-to-map");
|
|
31
|
+
var buildSitemapEagerly = function (ctx, locales) {
|
|
32
|
+
return (0, array_to_map_1.arrayToMap)(function (locale) { return locale.code; })(function (locale) {
|
|
33
|
+
return (0, build_localized_sitemap_1.buildLocalizedSitemap)(ctx.data, ctx.options, ctx.pageHomeTagId, locale);
|
|
34
|
+
})(__spreadArray([], __read(locales.values()), false));
|
|
35
|
+
};
|
|
36
|
+
exports.buildSitemapEagerly = buildSitemapEagerly;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
+
if (!m) return o;
|
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
|
6
|
+
try {
|
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
+
}
|
|
9
|
+
catch (error) { e = { error: error }; }
|
|
10
|
+
finally {
|
|
11
|
+
try {
|
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
+
}
|
|
14
|
+
finally { if (e) throw e.error; }
|
|
15
|
+
}
|
|
16
|
+
return ar;
|
|
17
|
+
};
|
|
18
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
+
if (ar || !(i in from)) {
|
|
21
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
+
ar[i] = from[i];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
+
};
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.findAncestors = void 0;
|
|
29
|
+
var findAncestorsRecursively = function (sitemap, page) {
|
|
30
|
+
var _a;
|
|
31
|
+
var maybeParentRef = (_a = page === null || page === void 0 ? void 0 : page.parent) === null || _a === void 0 ? void 0 : _a.sys;
|
|
32
|
+
var maybeParent = maybeParentRef
|
|
33
|
+
? sitemap.get(maybeParentRef.id)
|
|
34
|
+
: undefined;
|
|
35
|
+
return maybeParent && maybeParent.type === 'page'
|
|
36
|
+
? __spreadArray([maybeParent], __read(findAncestorsRecursively(sitemap, maybeParent)), false) : [];
|
|
37
|
+
};
|
|
38
|
+
var findAncestors = function (_a, page) {
|
|
39
|
+
var root = _a.root, sitemap = _a.sitemap;
|
|
40
|
+
var ancestors = findAncestorsRecursively(sitemap, page);
|
|
41
|
+
var maybeHomePageAncestor = ancestors
|
|
42
|
+
.slice(-1)
|
|
43
|
+
.find(function (page) { return page.sys.id === root.sys.id; });
|
|
44
|
+
return maybeHomePageAncestor ? ancestors : undefined;
|
|
45
|
+
};
|
|
46
|
+
exports.findAncestors = findAncestors;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var find_ancestors_1 = require("./find-ancestors");
|
|
4
|
+
var mocked_localized_sitemap_1 = require("./__mocks__/mocked-localized-sitemap");
|
|
5
|
+
describe(find_ancestors_1.findAncestors, function () {
|
|
6
|
+
test('Get home page ancestors', function () {
|
|
7
|
+
expect((0, find_ancestors_1.findAncestors)(mocked_localized_sitemap_1.mockedLocalizedSitemap, mocked_localized_sitemap_1.mockedRoot)).toBeUndefined();
|
|
8
|
+
});
|
|
9
|
+
test('Get first level nodes ancestors', function () {
|
|
10
|
+
expect((0, find_ancestors_1.findAncestors)(mocked_localized_sitemap_1.mockedLocalizedSitemap, mocked_localized_sitemap_1.mockedPage1)).toEqual([
|
|
11
|
+
mocked_localized_sitemap_1.mockedRoot,
|
|
12
|
+
]);
|
|
13
|
+
expect((0, find_ancestors_1.findAncestors)(mocked_localized_sitemap_1.mockedLocalizedSitemap, mocked_localized_sitemap_1.mockedPage2)).toEqual([
|
|
14
|
+
mocked_localized_sitemap_1.mockedRoot,
|
|
15
|
+
]);
|
|
16
|
+
expect((0, find_ancestors_1.findAncestors)(mocked_localized_sitemap_1.mockedLocalizedSitemap, mocked_localized_sitemap_1.mockedPage3)).toEqual([
|
|
17
|
+
mocked_localized_sitemap_1.mockedRoot,
|
|
18
|
+
]);
|
|
19
|
+
});
|
|
20
|
+
test('Get nested nodes ancestors', function () {
|
|
21
|
+
expect((0, find_ancestors_1.findAncestors)(mocked_localized_sitemap_1.mockedLocalizedSitemap, mocked_localized_sitemap_1.mockedPage1_1)).toEqual([
|
|
22
|
+
mocked_localized_sitemap_1.mockedPage1,
|
|
23
|
+
mocked_localized_sitemap_1.mockedRoot,
|
|
24
|
+
]);
|
|
25
|
+
expect((0, find_ancestors_1.findAncestors)(mocked_localized_sitemap_1.mockedLocalizedSitemap, mocked_localized_sitemap_1.mockedPage1_1_1)).toEqual([
|
|
26
|
+
mocked_localized_sitemap_1.mockedPage1_1,
|
|
27
|
+
mocked_localized_sitemap_1.mockedPage1,
|
|
28
|
+
mocked_localized_sitemap_1.mockedRoot,
|
|
29
|
+
]);
|
|
30
|
+
expect((0, find_ancestors_1.findAncestors)(mocked_localized_sitemap_1.mockedLocalizedSitemap, mocked_localized_sitemap_1.mockedPage1_2)).toEqual([
|
|
31
|
+
mocked_localized_sitemap_1.mockedPage1,
|
|
32
|
+
mocked_localized_sitemap_1.mockedRoot,
|
|
33
|
+
]);
|
|
34
|
+
});
|
|
35
|
+
});
|