@griddo/cx 11.9.11-rc.9 → 11.9.12-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -240
- package/build/commands/end-render.d.ts +0 -1
- package/build/commands/end-render.js +31 -0
- package/build/commands/end-render.js.map +7 -0
- package/build/commands/prepare-assets-directory.js +9 -0
- package/build/commands/prepare-assets-directory.js.map +7 -0
- package/build/commands/prepare-domains-render.js +38 -0
- package/build/commands/prepare-domains-render.js.map +7 -0
- package/build/commands/reset-render.d.ts +0 -1
- package/build/commands/reset-render.js +31 -0
- package/build/commands/reset-render.js.map +7 -0
- package/build/commands/single-domain-upload-search-content.d.ts +1 -0
- package/build/commands/start-render.d.ts +0 -1
- package/build/commands/start-render.js +66 -0
- package/build/commands/start-render.js.map +7 -0
- package/build/commands/upload-search-content.d.ts +0 -1
- package/build/commands/upload-search-content.js +32 -0
- package/build/commands/upload-search-content.js.map +7 -0
- package/build/core/GriddoLog.d.ts +16 -0
- package/build/{utils/health-checks.d.ts → core/check-env-health.d.ts} +4 -2
- package/build/core/db-class.d.ts +11 -0
- package/build/core/db.d.ts +4 -0
- package/build/core/dist-rollback.d.ts +11 -0
- package/build/core/errors.d.ts +26 -0
- package/build/core/fs.d.ts +69 -0
- package/build/core/life-cycle.d.ts +26 -0
- package/build/core/logger.d.ts +18 -0
- package/build/core/objects.d.ts +11 -0
- package/build/core/print-logos.d.ts +5 -0
- package/build/index.d.ts +10 -29
- package/build/index.js +406 -73
- package/build/react/DynamicScript/index.d.ts +4 -0
- package/build/react/GriddoFavicon/index.d.ts +4 -0
- package/build/react/GriddoIntegrations/index.d.ts +3 -4
- package/build/react/GriddoIntegrations/utils.d.ts +7 -6
- package/build/react/GriddoOpenGraph/index.d.ts +10 -0
- package/build/react/index.d.ts +3 -2
- package/build/react/index.js +1 -3
- package/build/{utils → services}/api.d.ts +1 -1
- package/build/services/auth.d.ts +2 -5
- package/build/services/domains.d.ts +3 -4
- package/build/services/manage-sites.d.ts +22 -0
- package/build/services/manage-store.d.ts +32 -0
- package/build/services/navigation.d.ts +16 -16
- package/build/{utils → services}/pages.d.ts +3 -3
- package/build/services/reference-fields.d.ts +3 -3
- package/build/services/render-artifacts.d.ts +6 -0
- package/build/services/render.d.ts +70 -0
- package/build/services/robots.d.ts +2 -19
- package/build/services/sitemaps.d.ts +5 -0
- package/build/services/sites.d.ts +8 -5
- package/build/services/store.d.ts +10 -1
- package/build/shared/context.d.ts +36 -0
- package/build/shared/envs.d.ts +19 -0
- package/build/{errors/errors-data.d.ts → shared/errors.d.ts} +5 -3
- package/build/shared/npm-modules/brush.d.ts +18 -0
- package/build/shared/npm-modules/find-up-simple.d.ts +34 -0
- package/build/shared/npm-modules/pkg-dir.d.ts +7 -0
- package/build/shared/npm-modules/xml-parser.d.ts +4 -0
- package/build/{types → shared/types}/api.d.ts +18 -18
- package/build/{types → shared/types}/global.d.ts +15 -16
- package/build/{types → shared/types}/navigation.d.ts +5 -5
- package/build/{types → shared/types}/pages.d.ts +9 -9
- package/build/shared/types/render.d.ts +54 -0
- package/build/{types → shared/types}/sites.d.ts +18 -19
- package/build/shared/types.d.ts +15 -0
- package/build/ssg-adapters/gatsby/actions/clean.d.ts +3 -0
- package/build/ssg-adapters/gatsby/actions/close.d.ts +3 -0
- package/build/ssg-adapters/gatsby/actions/data.d.ts +2 -0
- package/build/ssg-adapters/gatsby/actions/healthCheck.d.ts +2 -0
- package/build/ssg-adapters/gatsby/actions/init.d.ts +2 -0
- package/build/ssg-adapters/gatsby/actions/logs.d.ts +3 -0
- package/build/ssg-adapters/gatsby/actions/meta.d.ts +2 -0
- package/build/ssg-adapters/gatsby/actions/prepare.d.ts +2 -0
- package/build/ssg-adapters/gatsby/actions/relocation.d.ts +2 -0
- package/build/ssg-adapters/gatsby/actions/restore.d.ts +3 -0
- package/build/ssg-adapters/gatsby/actions/ssg.d.ts +3 -0
- package/build/ssg-adapters/gatsby/actions/sync.d.ts +3 -0
- package/build/ssg-adapters/gatsby/index.d.ts +9 -0
- package/build/ssg-adapters/gatsby/shared/artifacts.d.ts +4 -0
- package/build/ssg-adapters/gatsby/shared/diff-assets.d.ts +15 -0
- package/build/ssg-adapters/gatsby/shared/extract-assets.d.ts +7 -0
- package/build/ssg-adapters/gatsby/shared/gatsby-build.d.ts +7 -0
- package/build/ssg-adapters/gatsby/shared/render-rollback.d.ts +18 -0
- package/build/ssg-adapters/gatsby/shared/sync-render.d.ts +26 -0
- package/build/ssg-adapters/gatsby/shared/types.d.ts +34 -0
- package/cli.mjs +231 -0
- package/exporter/build-esbuild.noop +42 -0
- package/exporter/build.sh +16 -24
- package/exporter/commands/README.md +151 -0
- package/exporter/commands/end-render.ts +65 -86
- package/exporter/commands/prepare-assets-directory.ts +35 -0
- package/exporter/commands/prepare-domains-render.ts +132 -35
- package/exporter/commands/reset-render.ts +13 -8
- package/exporter/commands/single-domain-upload-search-content.ts +206 -0
- package/exporter/commands/start-render.ts +26 -64
- package/exporter/commands/upload-search-content.ts +204 -26
- package/exporter/core/GriddoLog.ts +45 -0
- package/exporter/core/check-env-health.ts +204 -0
- package/exporter/core/db-class.ts +54 -0
- package/exporter/core/db.ts +33 -0
- package/exporter/core/dist-rollback.ts +49 -0
- package/exporter/core/errors.ts +93 -0
- package/exporter/core/fs.ts +385 -0
- package/exporter/{utils → core}/images.ts +1 -6
- package/exporter/{utils → core}/instance.ts +9 -13
- package/exporter/core/life-cycle.ts +73 -0
- package/exporter/core/logger.ts +141 -0
- package/exporter/core/objects.ts +37 -0
- package/exporter/core/print-logos.ts +21 -0
- package/exporter/index.ts +14 -56
- package/exporter/react/DynamicScript/index.tsx +33 -0
- package/exporter/react/{Favicon → GriddoFavicon}/index.tsx +3 -9
- package/exporter/react/GriddoIntegrations/index.tsx +17 -23
- package/exporter/react/GriddoIntegrations/utils.ts +24 -12
- package/exporter/react/GriddoOpenGraph/index.tsx +39 -0
- package/exporter/react/index.tsx +3 -9
- package/exporter/services/api.ts +306 -0
- package/exporter/services/auth.ts +8 -10
- package/exporter/services/domains.ts +23 -8
- package/exporter/services/manage-sites.ts +116 -0
- package/exporter/services/manage-store.ts +173 -0
- package/exporter/services/navigation.ts +12 -18
- package/exporter/{utils → services}/pages.ts +27 -92
- package/exporter/services/reference-fields.ts +14 -32
- package/exporter/services/render-artifacts.ts +44 -0
- package/exporter/services/render.ts +229 -0
- package/exporter/services/robots.ts +33 -61
- package/exporter/services/sitemaps.ts +129 -0
- package/exporter/services/sites.ts +40 -28
- package/exporter/services/store.ts +354 -321
- package/exporter/shared/context.ts +49 -0
- package/exporter/{constants → shared}/endpoints.ts +12 -11
- package/exporter/shared/envs.ts +62 -0
- package/exporter/{errors/errors-data.ts → shared/errors.ts} +24 -14
- package/exporter/shared/npm-modules/README.md +36 -0
- package/exporter/shared/npm-modules/brush.ts +34 -0
- package/exporter/shared/npm-modules/find-up-simple.ts +100 -0
- package/exporter/shared/npm-modules/pkg-dir.ts +17 -0
- package/exporter/shared/npm-modules/xml-parser.ts +57 -0
- package/exporter/{types → shared/types}/api.ts +40 -41
- package/exporter/{types → shared/types}/global.ts +17 -21
- package/exporter/{types → shared/types}/navigation.ts +3 -3
- package/exporter/{types → shared/types}/pages.ts +10 -11
- package/exporter/shared/types/render.ts +63 -0
- package/exporter/{types → shared/types}/sites.ts +18 -19
- package/exporter/shared/types.ts +15 -0
- package/exporter/ssg-adapters/gatsby/actions/clean.ts +26 -0
- package/exporter/ssg-adapters/gatsby/actions/close.ts +17 -0
- package/exporter/ssg-adapters/gatsby/actions/data.ts +22 -0
- package/exporter/ssg-adapters/gatsby/actions/healthCheck.ts +10 -0
- package/exporter/ssg-adapters/gatsby/actions/init.ts +12 -0
- package/exporter/ssg-adapters/gatsby/actions/logs.ts +10 -0
- package/exporter/ssg-adapters/gatsby/actions/meta.ts +13 -0
- package/exporter/ssg-adapters/gatsby/actions/prepare.ts +9 -0
- package/exporter/ssg-adapters/gatsby/actions/relocation.ts +15 -0
- package/exporter/ssg-adapters/gatsby/actions/restore.ts +21 -0
- package/exporter/ssg-adapters/gatsby/actions/ssg.ts +12 -0
- package/exporter/ssg-adapters/gatsby/actions/sync.ts +65 -0
- package/exporter/ssg-adapters/gatsby/index.ts +114 -0
- package/exporter/ssg-adapters/gatsby/shared/artifacts.ts +17 -0
- package/exporter/ssg-adapters/gatsby/shared/diff-assets.ts +128 -0
- package/exporter/ssg-adapters/gatsby/shared/extract-assets.ts +75 -0
- package/exporter/ssg-adapters/gatsby/shared/gatsby-build.ts +58 -0
- package/exporter/ssg-adapters/gatsby/shared/render-rollback.ts +33 -0
- package/exporter/ssg-adapters/gatsby/shared/sync-render.ts +298 -0
- package/exporter/ssg-adapters/gatsby/shared/types.ts +35 -0
- package/gatsby-browser.tsx +41 -58
- package/gatsby-config.ts +10 -17
- package/gatsby-node.ts +20 -79
- package/gatsby-ssr.tsx +2 -1
- package/package.json +41 -80
- package/plugins/gatsby-plugin-svgr-loader/gatsby-node.js +55 -0
- package/plugins/gatsby-plugin-svgr-loader/package.json +8 -0
- package/src/components/Head.tsx +28 -73
- package/src/components/template.tsx +6 -29
- package/src/gatsby-node-utils.ts +76 -2
- package/src/html.tsx +2 -11
- package/src/types.ts +3 -3
- package/tsconfig.commands.json +36 -0
- package/tsconfig.exporter.json +21 -0
- package/tsconfig.json +5 -3
- package/build/adapters/gatsby/index.d.ts +0 -4
- package/build/adapters/gatsby/utils.d.ts +0 -22
- package/build/artifacts/index.d.ts +0 -6
- package/build/constants/envs.d.ts +0 -37
- package/build/constants/index.d.ts +0 -57
- package/build/end-render.js +0 -74
- package/build/end-render.js.map +0 -7
- package/build/errors/index.d.ts +0 -15
- package/build/index.js.map +0 -7
- package/build/prepare-domains-render.js +0 -73
- package/build/prepare-domains-render.js.map +0 -7
- package/build/react/Favicon/index.d.ts +0 -5
- package/build/registers/api.d.ts +0 -9
- package/build/registers/gatsby.d.ts +0 -9
- package/build/registers/index.d.ts +0 -3
- package/build/reset-render.js +0 -74
- package/build/reset-render.js.map +0 -7
- package/build/services/register.d.ts +0 -36
- package/build/services/settings.d.ts +0 -4
- package/build/start-render.js +0 -100
- package/build/start-render.js.map +0 -7
- package/build/upload-search-content.js +0 -74
- package/build/upload-search-content.js.map +0 -7
- package/build/utils/alerts.d.ts +0 -3
- package/build/utils/cache.d.ts +0 -35
- package/build/utils/core-utils.d.ts +0 -107
- package/build/utils/create-build-data.d.ts +0 -8
- package/build/utils/domains.d.ts +0 -13
- package/build/utils/folders.d.ts +0 -53
- package/build/utils/loggin.d.ts +0 -51
- package/build/utils/render.d.ts +0 -13
- package/build/utils/searches.d.ts +0 -15
- package/build/utils/sites.d.ts +0 -31
- package/build/utils/store.d.ts +0 -81
- package/cx.config.d.ts +0 -5
- package/cx.config.js +0 -36
- package/exporter/adapters/gatsby/index.ts +0 -162
- package/exporter/adapters/gatsby/utils.ts +0 -161
- package/exporter/artifacts/README.md +0 -34
- package/exporter/artifacts/index.ts +0 -33
- package/exporter/commands/move-assets.ts +0 -11
- package/exporter/constants/envs.ts +0 -94
- package/exporter/constants/index.ts +0 -129
- package/exporter/errors/index.ts +0 -40
- package/exporter/registers/api.ts +0 -14
- package/exporter/registers/gatsby.ts +0 -14
- package/exporter/registers/index.ts +0 -4
- package/exporter/services/register.ts +0 -113
- package/exporter/services/settings.ts +0 -17
- package/exporter/utils/alerts.ts +0 -29
- package/exporter/utils/api.ts +0 -243
- package/exporter/utils/cache.ts +0 -142
- package/exporter/utils/core-utils.ts +0 -458
- package/exporter/utils/create-build-data.ts +0 -17
- package/exporter/utils/domains.ts +0 -39
- package/exporter/utils/folders.ts +0 -320
- package/exporter/utils/health-checks.ts +0 -64
- package/exporter/utils/loggin.ts +0 -184
- package/exporter/utils/render.ts +0 -71
- package/exporter/utils/searches.ts +0 -156
- package/exporter/utils/sites.ts +0 -312
- package/exporter/utils/store.ts +0 -314
- package/src/README.md +0 -7
- package/start-render.js +0 -7
- /package/build/commands/{move-assets.d.ts → prepare-assets-directory.d.ts} +0 -0
- /package/build/{utils → core}/images.d.ts +0 -0
- /package/build/{utils → core}/instance.d.ts +0 -0
- /package/build/react/{Favicon → GriddoFavicon}/utils.d.ts +0 -0
- /package/build/{constants → shared}/endpoints.d.ts +0 -0
- /package/build/{types → shared/types}/templates.d.ts +0 -0
- /package/exporter/react/{Favicon → GriddoFavicon}/utils.ts +0 -0
- /package/exporter/{types → shared/types}/templates.ts +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type { Footer, Header } from "../types/navigation";
|
|
2
|
-
import type { APIPageObject } from "../types/pages";
|
|
1
|
+
import type { Footer, Header } from "../shared/types/navigation";
|
|
2
|
+
import type { APIPageObject } from "../shared/types/pages";
|
|
3
3
|
|
|
4
4
|
class NavigationService {
|
|
5
5
|
private _defaultHeaders: Record<string, Header>;
|
|
6
6
|
private _defaultFooters: Record<string, Footer>;
|
|
7
7
|
private _navigations: {
|
|
8
|
-
headers:
|
|
9
|
-
footers:
|
|
8
|
+
headers: Header[];
|
|
9
|
+
footers: Footer[];
|
|
10
10
|
};
|
|
11
11
|
|
|
12
12
|
constructor() {
|
|
@@ -53,11 +53,11 @@ class NavigationService {
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
getRightLanguage(
|
|
56
|
-
list:
|
|
56
|
+
list: {
|
|
57
57
|
language: number;
|
|
58
|
-
navigationLanguages:
|
|
58
|
+
navigationLanguages: { navigationId: number }[];
|
|
59
59
|
id: number;
|
|
60
|
-
}
|
|
60
|
+
}[],
|
|
61
61
|
id: number,
|
|
62
62
|
language: number,
|
|
63
63
|
) {
|
|
@@ -68,9 +68,7 @@ class NavigationService {
|
|
|
68
68
|
const rightLanguageItem = list.find(
|
|
69
69
|
(item) =>
|
|
70
70
|
item.language === language &&
|
|
71
|
-
item.navigationLanguages?.find(
|
|
72
|
-
(version) => version.navigationId === id,
|
|
73
|
-
),
|
|
71
|
+
item.navigationLanguages?.find((version) => version.navigationId === id),
|
|
74
72
|
);
|
|
75
73
|
|
|
76
74
|
const result = rightLanguageItem || list.find((item) => item.id === id);
|
|
@@ -87,19 +85,15 @@ class NavigationService {
|
|
|
87
85
|
}
|
|
88
86
|
|
|
89
87
|
getPageNavigations(page: APIPageObject) {
|
|
90
|
-
const {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
language,
|
|
94
|
-
template: { templateType },
|
|
95
|
-
templateConfig: { defaultHeader, defaultFooter, templates },
|
|
96
|
-
} = page;
|
|
88
|
+
const { header: pageHeader, footer: pageFooter, language, template, templateConfig } = page;
|
|
89
|
+
const { templateType } = template;
|
|
90
|
+
const { defaultHeader, defaultFooter, templates } = templateConfig;
|
|
97
91
|
|
|
98
92
|
// The navigations would be:
|
|
99
93
|
// - The one with the page or ...
|
|
100
94
|
// - The one defined for that template or ...
|
|
101
95
|
// - The one you have defined for that data package
|
|
102
|
-
const getValidNavigation = (values:
|
|
96
|
+
const getValidNavigation = (values: (number | unknown)[]) => {
|
|
103
97
|
const fineNavigation = values.find((item) => typeof item === "number");
|
|
104
98
|
|
|
105
99
|
return typeof fineNavigation === "number" ? fineNavigation : null;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Core, Fields } from "@griddo/core";
|
|
1
2
|
import type {
|
|
2
3
|
APIPageObject,
|
|
3
4
|
GriddoListPage,
|
|
@@ -7,15 +8,10 @@ import type {
|
|
|
7
8
|
MultiPageElement,
|
|
8
9
|
MultiPageElements,
|
|
9
10
|
PageAdditionalInfo,
|
|
10
|
-
} from "../types/pages";
|
|
11
|
-
import type { TemplateWithReferenceField } from "../types/templates";
|
|
12
|
-
import type { Core, Fields } from "@griddo/core";
|
|
13
|
-
|
|
14
|
-
import dotenv from "dotenv";
|
|
11
|
+
} from "../shared/types/pages";
|
|
12
|
+
import type { TemplateWithReferenceField } from "../shared/types/templates";
|
|
15
13
|
|
|
16
|
-
import { formatImage } from "
|
|
17
|
-
|
|
18
|
-
dotenv.config();
|
|
14
|
+
import { formatImage } from "../core/images";
|
|
19
15
|
|
|
20
16
|
// Consts
|
|
21
17
|
const DEFAULT_ITEMS_PER_PAGE_FOR_LIST_TEMPLATES = 25;
|
|
@@ -31,10 +27,7 @@ function getOpenGraph({
|
|
|
31
27
|
socialTitle,
|
|
32
28
|
socialDescription,
|
|
33
29
|
socialImage,
|
|
34
|
-
}: Pick<
|
|
35
|
-
Core.Page,
|
|
36
|
-
"socialTitle" | "socialDescription" | "socialImage"
|
|
37
|
-
>): Core.Page["openGraph"] {
|
|
30
|
+
}: Pick<Core.Page, "socialTitle" | "socialDescription" | "socialImage">): Core.Page["openGraph"] {
|
|
38
31
|
return {
|
|
39
32
|
type: "website",
|
|
40
33
|
title: socialTitle,
|
|
@@ -49,9 +42,7 @@ function getOpenGraph({
|
|
|
49
42
|
*
|
|
50
43
|
* @param params A Page object
|
|
51
44
|
*/
|
|
52
|
-
function getPageMetadata(
|
|
53
|
-
params: Core.Page,
|
|
54
|
-
): GriddoPageObject["context"]["pageMetadata"] {
|
|
45
|
+
function getPageMetadata(params: Core.Page): GriddoPageObject["context"]["pageMetadata"] {
|
|
55
46
|
const {
|
|
56
47
|
title,
|
|
57
48
|
metaTitle,
|
|
@@ -87,9 +78,7 @@ function getPageMetadata(
|
|
|
87
78
|
index: isIndexed ? "index" : "noindex",
|
|
88
79
|
follow: follow ? "follow" : "nofollow",
|
|
89
80
|
translate: metasAdvancedList.includes("notranslate") ? "notranslate" : "",
|
|
90
|
-
metasAdvanced: metasAdvancedList
|
|
91
|
-
.filter((item) => item !== "notranslate")
|
|
92
|
-
.join(),
|
|
81
|
+
metasAdvanced: metasAdvancedList.filter((item) => item !== "notranslate").join(),
|
|
93
82
|
pageLanguages,
|
|
94
83
|
metaKeywords: metaKeywords
|
|
95
84
|
?.filter(Boolean)
|
|
@@ -133,8 +122,9 @@ async function createGriddoPageObject(
|
|
|
133
122
|
siteSlug,
|
|
134
123
|
socials,
|
|
135
124
|
theme,
|
|
136
|
-
navigations
|
|
125
|
+
navigations,
|
|
137
126
|
} = additionalInfo;
|
|
127
|
+
const { header, footer } = navigations;
|
|
138
128
|
|
|
139
129
|
// Update page object
|
|
140
130
|
page.breadcrumb = breadcrumb;
|
|
@@ -207,10 +197,7 @@ async function createGriddoPageObject(
|
|
|
207
197
|
* @param page A Griddo single page object.
|
|
208
198
|
* @param additionalInfo Additional page info.
|
|
209
199
|
*/
|
|
210
|
-
async function createGriddoSinglePage(
|
|
211
|
-
page: GriddoSinglePage,
|
|
212
|
-
additionalInfo: PageAdditionalInfo,
|
|
213
|
-
) {
|
|
200
|
+
async function createGriddoSinglePage(page: GriddoSinglePage, additionalInfo: PageAdditionalInfo) {
|
|
214
201
|
return createGriddoPageObject(page, additionalInfo);
|
|
215
202
|
}
|
|
216
203
|
|
|
@@ -218,14 +205,7 @@ async function createGriddoSinglePage(
|
|
|
218
205
|
* Create multiples pages from one page as list paginated pages
|
|
219
206
|
*/
|
|
220
207
|
async function createGriddoListPages(
|
|
221
|
-
{
|
|
222
|
-
page,
|
|
223
|
-
pages,
|
|
224
|
-
isRoot = false,
|
|
225
|
-
defaultLang,
|
|
226
|
-
template,
|
|
227
|
-
totalQueriedItems,
|
|
228
|
-
}: GriddoListPage,
|
|
208
|
+
{ page, pages, isRoot = false, defaultLang, template, totalQueriedItems }: GriddoListPage,
|
|
229
209
|
additionalInfo: PageAdditionalInfo,
|
|
230
210
|
) {
|
|
231
211
|
const allPages = pages.map(async (dataInPage, idx) => {
|
|
@@ -233,19 +213,8 @@ async function createGriddoListPages(
|
|
|
233
213
|
const pageNumber = idx + 1;
|
|
234
214
|
const { domainUrl, compose } = page.fullPath;
|
|
235
215
|
|
|
236
|
-
// Crea un id como número negativo y añadiendo un sufijo para los
|
|
237
|
-
// listados estáticos. Esto es así para marcarlas y posteriormente
|
|
238
|
-
// borrarlas siempre en cada nuevo render desde el Adapter.
|
|
239
|
-
//
|
|
240
|
-
// id de página con mode:"list": 1546
|
|
241
|
-
// ids de las "sub-páginas": -15460, -15461, -1546n, (-)id(idx)
|
|
242
|
-
//
|
|
243
|
-
// @todo eliminar el concepto multipage de CX, debería ser algo core de
|
|
244
|
-
// Griddo itself: API/AX, que fuesen páginas con sus ids, etc..
|
|
245
|
-
|
|
246
216
|
const paginatedPage = {
|
|
247
217
|
...page,
|
|
248
|
-
id: Number.parseInt(`-${page.id}${idx}`),
|
|
249
218
|
fullPath: {
|
|
250
219
|
...page.fullPath,
|
|
251
220
|
// Add a page number (tailPageNumber) from page 2 onwards
|
|
@@ -287,16 +256,11 @@ async function createGriddoListPages(
|
|
|
287
256
|
* @param page A Griddo Multipage object.
|
|
288
257
|
* @param additionalInfo Additional page info.
|
|
289
258
|
*/
|
|
290
|
-
function createGriddoMultiPages(
|
|
291
|
-
page: GriddoMultiPage,
|
|
292
|
-
additionalInfo: PageAdditionalInfo,
|
|
293
|
-
) {
|
|
259
|
+
function createGriddoMultiPages(page: GriddoMultiPage, additionalInfo: PageAdditionalInfo) {
|
|
294
260
|
const { multiPageElements: multiPageElementsBulk, ...cleanPage } = page;
|
|
295
261
|
// TODO: Use structuredClone() when node 18 is available.
|
|
296
262
|
// WARN!! Se ha probado que parse(stringify()) está tan optimizado que puede ser más rápido que structuredClone...
|
|
297
|
-
const multiPageElements: MultiPageElements = JSON.parse(
|
|
298
|
-
JSON.stringify(multiPageElementsBulk),
|
|
299
|
-
);
|
|
263
|
+
const multiPageElements: MultiPageElements = JSON.parse(JSON.stringify(multiPageElementsBulk));
|
|
300
264
|
|
|
301
265
|
// Si no hay un elemento sin slug, como mínimo hay que dibujar una página
|
|
302
266
|
// principal para el conjunto de páginas.
|
|
@@ -305,7 +269,7 @@ function createGriddoMultiPages(
|
|
|
305
269
|
}
|
|
306
270
|
|
|
307
271
|
// Creates each page based on `multiPageElements` from the schema.
|
|
308
|
-
const allPages = multiPageElements.map(async (pageElement
|
|
272
|
+
const allPages = multiPageElements.map(async (pageElement) => {
|
|
309
273
|
// TODO: Use structuredClone() when node 18 is available.
|
|
310
274
|
// WARN!! Se ha probado que parse(stringify()) está tan optimizado que puede ser más rápido que structuredClone...
|
|
311
275
|
const paginatedPage: APIPageObject = JSON.parse(JSON.stringify(cleanPage));
|
|
@@ -323,9 +287,7 @@ function createGriddoMultiPages(
|
|
|
323
287
|
|
|
324
288
|
const cleanSectionSlug = sectionSlug?.replace(/\//g, "");
|
|
325
289
|
const isRootSlug = sectionSlug === "/";
|
|
326
|
-
const rightSectionSlug = isRootSlug
|
|
327
|
-
? cleanSectionSlug
|
|
328
|
-
: `${cleanSectionSlug}/`;
|
|
290
|
+
const rightSectionSlug = isRootSlug ? cleanSectionSlug : `${cleanSectionSlug}/`;
|
|
329
291
|
|
|
330
292
|
const slash = compose.endsWith("/") ? "" : "/";
|
|
331
293
|
const newCompose = `${compose}${slash}${rightSectionSlug}`;
|
|
@@ -338,24 +300,12 @@ function createGriddoMultiPages(
|
|
|
338
300
|
paginatedPage.metaDescription = metaDescription;
|
|
339
301
|
}
|
|
340
302
|
|
|
341
|
-
// Crea un id como número negativo y añadiendo un sufijo para las multipages.
|
|
342
|
-
// Esto es así para marcarlas y posteriormente borrarlas siempre en cada
|
|
343
|
-
// nuevo render desde el Adapter.
|
|
344
|
-
//
|
|
345
|
-
// id de página con hasMultipageTrue: 1546
|
|
346
|
-
// ids de las "sub-páginas": -15460, -15461, -1546n, (-)id(idx)
|
|
347
|
-
//
|
|
348
|
-
// @todo eliminar el concepto multipage de CX, debería ser algo core de
|
|
349
|
-
// Griddo itself: API/AX, que fuesen páginas con sus ids, etc..
|
|
350
|
-
paginatedPage.id = Number.parseInt(`-${paginatedPage.id}${idx}`);
|
|
351
|
-
|
|
352
303
|
paginatedPage.fullUrl = `${fullUrl}/${rightSectionSlug}`;
|
|
353
304
|
paginatedPage.fullPath.compose = newCompose;
|
|
354
305
|
paginatedPage.slug = newCompose;
|
|
355
306
|
paginatedPage.template.activeSectionSlug = sectionSlug;
|
|
356
307
|
paginatedPage.template.activeSectionBase = fullUrl;
|
|
357
|
-
paginatedPage.metaTitle =
|
|
358
|
-
metaTitle.trim() || title.trim() || paginatedPage.metaTitle;
|
|
308
|
+
paginatedPage.metaTitle = metaTitle.trim() || title.trim() || paginatedPage.metaTitle;
|
|
359
309
|
|
|
360
310
|
return createGriddoPageObject(paginatedPage, additionalInfo);
|
|
361
311
|
});
|
|
@@ -368,9 +318,7 @@ function createGriddoMultiPages(
|
|
|
368
318
|
*
|
|
369
319
|
* @param page The page to get the multipage parts.
|
|
370
320
|
*/
|
|
371
|
-
function getMultiPageElements(
|
|
372
|
-
page: TemplateWithReferenceField,
|
|
373
|
-
): Promise<MultiPageElements> | null {
|
|
321
|
+
function getMultiPageElements(page: TemplateWithReferenceField): Promise<MultiPageElements> | null {
|
|
374
322
|
const multiPageElements = new Promise((resolve) => {
|
|
375
323
|
// Recursive
|
|
376
324
|
const getMultiPageComponent = (
|
|
@@ -389,13 +337,12 @@ function getMultiPageElements(
|
|
|
389
337
|
const currentComponent = template[key] as {
|
|
390
338
|
component: string;
|
|
391
339
|
hasGriddoMultiPage: boolean;
|
|
392
|
-
elements:
|
|
340
|
+
elements: Record<string, unknown>[];
|
|
393
341
|
};
|
|
394
|
-
const isValidComponent =
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
).includes('"hasGriddoMultiPage":true');
|
|
342
|
+
const isValidComponent = currentComponent || typeof currentComponent === "object";
|
|
343
|
+
const hasGriddoMultiPageProp = JSON.stringify(currentComponent).includes(
|
|
344
|
+
'"hasGriddoMultiPage":true',
|
|
345
|
+
);
|
|
399
346
|
|
|
400
347
|
if (!isValidComponent) {
|
|
401
348
|
continue;
|
|
@@ -445,11 +392,7 @@ function getMultiPageElements(
|
|
|
445
392
|
* getPage(3, ["a", "b", "c", "d", "e", "f", "g", "h"], 2)
|
|
446
393
|
* // -> ["d", "e", "f"]
|
|
447
394
|
*/
|
|
448
|
-
function getPage(
|
|
449
|
-
itemsPerPage: number,
|
|
450
|
-
items: Array<Fields.QueriedDataItem>,
|
|
451
|
-
page: number,
|
|
452
|
-
) {
|
|
395
|
+
function getPage(itemsPerPage: number, items: Fields.QueriedDataItem[], page: number) {
|
|
453
396
|
return items?.slice(itemsPerPage * (page - 1), itemsPerPage * page);
|
|
454
397
|
}
|
|
455
398
|
|
|
@@ -463,16 +406,11 @@ function getPage(
|
|
|
463
406
|
* getPageCluster(3, ["a", "b", "c", "d", "e", "f", "g", "h"])
|
|
464
407
|
* // -> [["a", "b", "c"], ["d", "e", "f"], ["g", "h"]]
|
|
465
408
|
*/
|
|
466
|
-
function getPageCluster(
|
|
467
|
-
itemsPerPage: number,
|
|
468
|
-
items: Array<Fields.QueriedDataItem>,
|
|
469
|
-
) {
|
|
409
|
+
function getPageCluster(itemsPerPage: number, items: Fields.QueriedDataItem[]) {
|
|
470
410
|
const totalPagesCount = Math.ceil(items.length / itemsPerPage) || 1;
|
|
471
411
|
const pageNumbers = Array.from({ length: totalPagesCount }, (_, i) => i + 1);
|
|
472
412
|
|
|
473
|
-
return pageNumbers?.map((pageNumber) =>
|
|
474
|
-
getPage(itemsPerPage, items, pageNumber),
|
|
475
|
-
);
|
|
413
|
+
return pageNumbers?.map((pageNumber) => getPage(itemsPerPage, items, pageNumber));
|
|
476
414
|
}
|
|
477
415
|
|
|
478
416
|
/**
|
|
@@ -482,8 +420,7 @@ function getPageCluster(
|
|
|
482
420
|
*/
|
|
483
421
|
function getPaginatedPages(listTemplate: TemplateWithReferenceField) {
|
|
484
422
|
const items = listTemplate.queriedItems || [];
|
|
485
|
-
const itemsPerPage =
|
|
486
|
-
listTemplate?.itemsPerPage || DEFAULT_ITEMS_PER_PAGE_FOR_LIST_TEMPLATES;
|
|
423
|
+
const itemsPerPage = listTemplate?.itemsPerPage || DEFAULT_ITEMS_PER_PAGE_FOR_LIST_TEMPLATES;
|
|
487
424
|
const pageClusters = getPageCluster(itemsPerPage, items);
|
|
488
425
|
|
|
489
426
|
return pageClusters;
|
|
@@ -524,9 +461,7 @@ function addPageNumberToUrl(
|
|
|
524
461
|
return removeDuplicateTrailing(`${url}${endingSlash}`);
|
|
525
462
|
}
|
|
526
463
|
|
|
527
|
-
return removeDuplicateTrailing(
|
|
528
|
-
`${url}${trailingSlash}${pageNumber}${endingSlash}`,
|
|
529
|
-
);
|
|
464
|
+
return removeDuplicateTrailing(`${url}${trailingSlash}${pageNumber}${endingSlash}`);
|
|
530
465
|
}
|
|
531
466
|
|
|
532
467
|
/**
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { FetchDataProps } from "../types/global";
|
|
2
|
-
import type { APIPageObject } from "../types/pages";
|
|
3
1
|
import type { Core, Fields } from "@griddo/core";
|
|
2
|
+
import type { FetchDataProps } from "../shared/types/global";
|
|
3
|
+
import type { APIPageObject } from "../shared/types/pages";
|
|
4
4
|
|
|
5
|
+
import { GriddoLog } from "../core/GriddoLog";
|
|
5
6
|
import { getReferenceFieldSiteData } from "./sites";
|
|
6
|
-
import { boxLog } from "../utils/loggin";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Get the body data from a ReferenceField.
|
|
@@ -54,9 +54,7 @@ function getBody(data: Fields.Reference<unknown>, page: Core.Page) {
|
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
`Error: ReferenceField mode: ${mode} is not recognized on page ${page?.id}.`,
|
|
59
|
-
);
|
|
57
|
+
GriddoLog.error(`ReferenceField mode: ${mode} is not recognized on page ${page?.id}.`);
|
|
60
58
|
|
|
61
59
|
return data;
|
|
62
60
|
}
|
|
@@ -71,17 +69,13 @@ function getBody(data: Fields.Reference<unknown>, page: Core.Page) {
|
|
|
71
69
|
* @returns The ContentType data.
|
|
72
70
|
*/
|
|
73
71
|
async function fetchContentTypeData(props: FetchDataProps) {
|
|
74
|
-
const {
|
|
75
|
-
|
|
76
|
-
component: { data },
|
|
77
|
-
cacheKey,
|
|
78
|
-
} = props;
|
|
72
|
+
const { page, component, cacheKey } = props;
|
|
73
|
+
const { data } = component;
|
|
79
74
|
|
|
80
75
|
// Distrubutor with `hasDistributorData: true` / `getStaticData: true` but without `data` prop
|
|
81
76
|
if (!data) {
|
|
82
|
-
|
|
77
|
+
GriddoLog.info(
|
|
83
78
|
`Error: Page ${page.id} has \`hasDistributorData: true\` or \`getStaticData: true\` but it doesn't have a \`data\` property.`,
|
|
84
|
-
"No `data` in `ReferenceField`",
|
|
85
79
|
);
|
|
86
80
|
|
|
87
81
|
return [];
|
|
@@ -89,9 +83,8 @@ async function fetchContentTypeData(props: FetchDataProps) {
|
|
|
89
83
|
|
|
90
84
|
// Avoid fetch ReferenceField with empty `data.sources`
|
|
91
85
|
if (Array.isArray(data.sources) && data.sources.length < 1) {
|
|
92
|
-
|
|
86
|
+
GriddoLog.info(
|
|
93
87
|
`Warning: Page with id: ${page.id} has a ReferenceField with empty \`data.sources\``,
|
|
94
|
-
"Empty data.sources in ReferenceField",
|
|
95
88
|
);
|
|
96
89
|
|
|
97
90
|
return [];
|
|
@@ -101,21 +94,14 @@ async function fetchContentTypeData(props: FetchDataProps) {
|
|
|
101
94
|
|
|
102
95
|
// Inform that the ReferenceField has not `data.sources`
|
|
103
96
|
if (!data.sources && data.mode === "auto") {
|
|
104
|
-
|
|
97
|
+
GriddoLog.info(
|
|
105
98
|
`Warning: Page with id: ${page.id} has a ReferenceField with \`undefined\` \`data.sources\``,
|
|
106
|
-
"undefined data.sources in ReferenceField",
|
|
107
99
|
);
|
|
108
100
|
}
|
|
109
101
|
|
|
110
102
|
const body = getBody(data, page);
|
|
111
103
|
|
|
112
|
-
const response = await getReferenceFieldSiteData(
|
|
113
|
-
page,
|
|
114
|
-
body,
|
|
115
|
-
cacheKey,
|
|
116
|
-
site,
|
|
117
|
-
lang,
|
|
118
|
-
);
|
|
104
|
+
const response = await getReferenceFieldSiteData(page, body, cacheKey, site, lang);
|
|
119
105
|
|
|
120
106
|
return response;
|
|
121
107
|
}
|
|
@@ -165,10 +151,7 @@ async function getReferenceFieldData({
|
|
|
165
151
|
continue;
|
|
166
152
|
}
|
|
167
153
|
|
|
168
|
-
const _key = key as
|
|
169
|
-
| "hasDistributorData"
|
|
170
|
-
| "queriedItems"
|
|
171
|
-
| "getStaticData";
|
|
154
|
+
const _key = key as "hasDistributorData" | "queriedItems" | "getStaticData";
|
|
172
155
|
const component = templateChunk[_key] as unknown as {
|
|
173
156
|
data: Fields.Reference<unknown>;
|
|
174
157
|
queriedItems: Fields.QueriedData<unknown>;
|
|
@@ -181,8 +164,7 @@ async function getReferenceFieldData({
|
|
|
181
164
|
continue;
|
|
182
165
|
}
|
|
183
166
|
|
|
184
|
-
const componentHasRequestForData =
|
|
185
|
-
component.hasDistributorData || component.getStaticData;
|
|
167
|
+
const componentHasRequestForData = component.hasDistributorData || component.getStaticData;
|
|
186
168
|
|
|
187
169
|
if (componentHasRequestForData) {
|
|
188
170
|
component.queriedItems = await fetchContentTypeData({
|
|
@@ -208,9 +190,9 @@ async function getReferenceFieldData({
|
|
|
208
190
|
|
|
209
191
|
return response;
|
|
210
192
|
} catch (err) {
|
|
211
|
-
|
|
193
|
+
GriddoLog.error("Error in getReferenceFieldData:", err);
|
|
212
194
|
|
|
213
|
-
|
|
195
|
+
throw err;
|
|
214
196
|
}
|
|
215
197
|
}
|
|
216
198
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { RenderArtifacts } from "../shared/types/global";
|
|
2
|
+
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
|
|
5
|
+
import { getRenderPathsHydratedWithDomainFromDB } from "./render";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Returns the artifacts of CX.
|
|
9
|
+
*/
|
|
10
|
+
async function getRenderArtifacts(domain: string): Promise<RenderArtifacts> {
|
|
11
|
+
const { __exports, __cache, __root, __ssg } = await getRenderPathsHydratedWithDomainFromDB({
|
|
12
|
+
domain,
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
return {
|
|
16
|
+
initials: [
|
|
17
|
+
__exports, // `<root>/exports/<domain>`
|
|
18
|
+
__cache, // `<root>/.griddo/<domain>`
|
|
19
|
+
path.join(__exports, "logs"),
|
|
20
|
+
path.join(__root, "store"),
|
|
21
|
+
path.join(__root, "apiCache"),
|
|
22
|
+
],
|
|
23
|
+
disposables: [
|
|
24
|
+
path.join(__root, "store"),
|
|
25
|
+
path.join(__root, "apiCache"),
|
|
26
|
+
path.join(__root, "dist"),
|
|
27
|
+
path.join(__root, "dist-restored"),
|
|
28
|
+
path.join(__root, "assets"),
|
|
29
|
+
path.join(__root, "render-detail-log.txt"),
|
|
30
|
+
path.join(__root, "current-dist"),
|
|
31
|
+
path.join(__ssg, "domains.json"),
|
|
32
|
+
path.join(__ssg, "render-metadata.json"),
|
|
33
|
+
],
|
|
34
|
+
cacheables: [],
|
|
35
|
+
archivables: [
|
|
36
|
+
// dist ya se usa directamente en exports
|
|
37
|
+
// "dist",
|
|
38
|
+
"assets",
|
|
39
|
+
],
|
|
40
|
+
restaurable: ["dist"],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export { getRenderArtifacts };
|