@griddo/cx 11.7.5 → 11.7.6-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 +25 -228
- package/build/adapters/gatsby/actions/clean.js +10 -0
- package/build/adapters/gatsby/actions/clean.js.map +1 -0
- package/build/adapters/gatsby/actions/close.js +12 -0
- package/build/adapters/gatsby/actions/close.js.map +1 -0
- package/build/adapters/gatsby/actions/data.js +18 -0
- package/build/adapters/gatsby/actions/data.js.map +1 -0
- package/build/adapters/gatsby/actions/healthCheck.js +10 -0
- package/build/adapters/gatsby/actions/healthCheck.js.map +1 -0
- package/build/adapters/gatsby/actions/init.js +9 -0
- package/build/adapters/gatsby/actions/init.js.map +1 -0
- package/build/adapters/gatsby/actions/meta.js +14 -0
- package/build/adapters/gatsby/actions/meta.js.map +1 -0
- package/build/adapters/gatsby/actions/prepare.js +9 -0
- package/build/adapters/gatsby/actions/prepare.js.map +1 -0
- package/build/adapters/gatsby/actions/relocation.js +15 -0
- package/build/adapters/gatsby/actions/relocation.js.map +1 -0
- package/build/adapters/gatsby/actions/restore.js +26 -0
- package/build/adapters/gatsby/actions/restore.js.map +1 -0
- package/build/adapters/gatsby/actions/ssg.js +9 -0
- package/build/adapters/gatsby/actions/ssg.js.map +1 -0
- package/build/adapters/gatsby/actions/sync.js +50 -0
- package/build/adapters/gatsby/actions/sync.js.map +1 -0
- package/build/adapters/gatsby/index.js +74 -0
- package/build/adapters/gatsby/index.js.map +1 -0
- package/build/adapters/gatsby/shared/context.js +25 -0
- package/build/adapters/gatsby/shared/context.js.map +1 -0
- package/build/adapters/gatsby/shared/extract-assets.js +58 -0
- package/build/adapters/gatsby/shared/extract-assets.js.map +1 -0
- package/build/adapters/gatsby/shared/gatsby-build.js +49 -0
- package/build/adapters/gatsby/shared/gatsby-build.js.map +1 -0
- package/build/adapters/gatsby/shared/sync-render.js +208 -0
- package/build/adapters/gatsby/shared/sync-render.js.map +1 -0
- package/build/adapters/gatsby/shared/types.js +3 -0
- package/build/adapters/gatsby/shared/types.js.map +1 -0
- package/build/commands/end-render.js +63 -0
- package/build/commands/end-render.js.map +1 -0
- package/build/commands/prepare-assets-directory.js +32 -0
- package/build/commands/prepare-assets-directory.js.map +1 -0
- package/build/commands/prepare-domains-render.js +138 -0
- package/build/commands/prepare-domains-render.js.map +1 -0
- package/build/commands/reset-render.js +22 -0
- package/build/commands/reset-render.js.map +1 -0
- package/build/commands/start-render.js +35 -0
- package/build/commands/start-render.js.map +1 -0
- package/build/commands/upload-search-content.js +189 -0
- package/build/commands/upload-search-content.js.map +1 -0
- package/build/constants/endpoints.js +42 -0
- package/build/constants/endpoints.js.map +1 -0
- package/build/constants/envs.js +73 -0
- package/build/constants/envs.js.map +1 -0
- package/build/constants/errors.js +89 -0
- package/build/constants/errors.js.map +1 -0
- package/build/exporter/adapters/gatsby/actions/clean.d.ts +3 -0
- package/build/exporter/adapters/gatsby/actions/close.d.ts +3 -0
- package/build/exporter/adapters/gatsby/actions/data.d.ts +2 -0
- package/build/exporter/adapters/gatsby/actions/healthCheck.d.ts +2 -0
- package/build/exporter/adapters/gatsby/actions/init.d.ts +2 -0
- package/build/exporter/adapters/gatsby/actions/meta.d.ts +2 -0
- package/build/exporter/adapters/gatsby/actions/prepare.d.ts +2 -0
- package/build/exporter/adapters/gatsby/actions/relocation.d.ts +2 -0
- package/build/exporter/adapters/gatsby/actions/restore.d.ts +3 -0
- package/build/exporter/adapters/gatsby/actions/ssg.d.ts +3 -0
- package/build/exporter/adapters/gatsby/actions/sync.d.ts +3 -0
- package/build/exporter/adapters/gatsby/index.d.ts +9 -0
- package/build/exporter/adapters/gatsby/shared/context.d.ts +38 -0
- package/build/exporter/adapters/gatsby/shared/extract-assets.d.ts +7 -0
- package/build/exporter/adapters/gatsby/shared/gatsby-build.d.ts +7 -0
- package/build/exporter/adapters/gatsby/shared/sync-render.d.ts +36 -0
- package/build/exporter/adapters/gatsby/shared/types.d.ts +34 -0
- package/build/exporter/commands/start-render.d.ts +2 -0
- package/build/exporter/commands/upload-search-content.d.ts +2 -0
- package/build/{constants → exporter/constants}/envs.d.ts +1 -7
- package/build/{errors/errors-data.d.ts → exporter/constants/errors.d.ts} +5 -3
- package/build/{services → exporter/services}/auth.d.ts +1 -1
- package/build/exporter/services/db.d.ts +4 -0
- package/build/{services → exporter/services}/robots.d.ts +0 -6
- package/build/{services → exporter/services}/sites.d.ts +5 -2
- package/build/exporter/services/store.d.ts +15 -0
- package/build/{types → exporter/types}/api.d.ts +3 -4
- package/build/{types → exporter/types}/global.d.ts +6 -6
- package/build/{types → exporter/types}/navigation.d.ts +1 -1
- package/build/exporter/types/render.d.ts +50 -0
- package/build/{types → exporter/types}/sites.d.ts +1 -2
- package/build/exporter/utils/artifacts.d.ts +6 -0
- package/build/exporter/utils/brush.d.ts +18 -0
- package/build/{utils → exporter/utils}/cache.d.ts +7 -12
- package/build/{utils/health-checks.d.ts → exporter/utils/check-health.d.ts} +2 -2
- package/build/exporter/utils/core-utils.d.ts +77 -0
- package/build/{utils → exporter/utils}/domains.d.ts +1 -1
- package/build/{errors/index.d.ts → exporter/utils/errors.d.ts} +3 -3
- package/build/exporter/utils/folders.d.ts +66 -0
- package/build/{utils → exporter/utils}/loggin.d.ts +2 -16
- package/build/{utils → exporter/utils}/pages.d.ts +2 -2
- package/build/exporter/utils/render.d.ts +49 -0
- package/build/{utils → exporter/utils}/sites.d.ts +3 -3
- package/build/{utils → exporter/utils}/store.d.ts +10 -38
- package/build/services/auth.js +39 -0
- package/build/services/auth.js.map +1 -0
- package/build/services/db.js +34 -0
- package/build/services/db.js.map +1 -0
- package/build/services/navigation.js +93 -0
- package/build/services/navigation.js.map +1 -0
- package/build/services/reference-fields.js +131 -0
- package/build/services/reference-fields.js.map +1 -0
- package/build/services/robots.js +58 -0
- package/build/services/robots.js.map +1 -0
- package/build/services/sites.js +109 -0
- package/build/services/sites.js.map +1 -0
- package/build/services/store.js +282 -0
- package/build/services/store.js.map +1 -0
- package/build/types/api.js +3 -0
- package/build/types/api.js.map +1 -0
- package/build/types/global.js +3 -0
- package/build/types/global.js.map +1 -0
- package/build/types/navigation.js +3 -0
- package/build/types/navigation.js.map +1 -0
- package/build/types/pages.js +3 -0
- package/build/types/pages.js.map +1 -0
- package/build/types/render.js +10 -0
- package/build/types/render.js.map +1 -0
- package/build/types/sites.js +3 -0
- package/build/types/sites.js.map +1 -0
- package/build/types/templates.js +3 -0
- package/build/types/templates.js.map +1 -0
- package/build/utils/api.js +161 -0
- package/build/utils/api.js.map +1 -0
- package/build/utils/artifacts.js +34 -0
- package/build/utils/artifacts.js.map +1 -0
- package/build/utils/brush.js +30 -0
- package/build/utils/brush.js.map +1 -0
- package/build/utils/cache.js +106 -0
- package/build/utils/cache.js.map +1 -0
- package/build/utils/check-health.js +68 -0
- package/build/utils/check-health.js.map +1 -0
- package/build/utils/core-utils.js +251 -0
- package/build/utils/core-utils.js.map +1 -0
- package/build/utils/domains.js +37 -0
- package/build/utils/domains.js.map +1 -0
- package/build/utils/errors.js +30 -0
- package/build/utils/errors.js.map +1 -0
- package/build/utils/folders.js +339 -0
- package/build/utils/folders.js.map +1 -0
- package/build/utils/images.js +45 -0
- package/build/utils/images.js.map +1 -0
- package/build/utils/instance.js +66 -0
- package/build/utils/instance.js.map +1 -0
- package/build/utils/loggin.js +102 -0
- package/build/utils/loggin.js.map +1 -0
- package/build/utils/pages.js +359 -0
- package/build/utils/pages.js.map +1 -0
- package/build/utils/render.js +144 -0
- package/build/utils/render.js.map +1 -0
- package/build/utils/sites.js +239 -0
- package/build/utils/sites.js.map +1 -0
- package/build/utils/store.js +193 -0
- package/build/utils/store.js.map +1 -0
- package/exporter/adapters/gatsby/actions/clean.ts +14 -0
- package/exporter/adapters/gatsby/actions/close.ts +17 -0
- package/exporter/adapters/gatsby/actions/data.ts +25 -0
- package/exporter/adapters/gatsby/actions/healthCheck.ts +10 -0
- package/exporter/adapters/gatsby/actions/init.ts +12 -0
- package/exporter/adapters/gatsby/actions/meta.ts +18 -0
- package/exporter/adapters/gatsby/actions/prepare.ts +9 -0
- package/exporter/adapters/gatsby/actions/relocation.ts +15 -0
- package/exporter/adapters/gatsby/actions/restore.ts +36 -0
- package/exporter/adapters/gatsby/actions/ssg.ts +12 -0
- package/exporter/adapters/gatsby/actions/sync.ts +70 -0
- package/exporter/adapters/gatsby/index.ts +60 -146
- package/exporter/adapters/gatsby/shared/context.ts +50 -0
- package/exporter/adapters/gatsby/shared/extract-assets.ts +61 -0
- package/exporter/adapters/gatsby/shared/gatsby-build.ts +54 -0
- package/exporter/adapters/gatsby/shared/sync-render.ts +294 -0
- package/exporter/adapters/gatsby/shared/types.ts +35 -0
- package/exporter/build-esbuild.noop +42 -0
- package/exporter/build.sh +5 -38
- package/exporter/commands/end-render.ts +56 -81
- package/exporter/commands/prepare-assets-directory.ts +33 -0
- package/exporter/commands/prepare-domains-render.ts +149 -31
- package/exporter/commands/reset-render.ts +12 -3
- package/exporter/commands/start-render.ts +18 -47
- package/exporter/commands/upload-search-content.ts +206 -21
- package/exporter/constants/envs.ts +59 -51
- package/exporter/{errors/errors-data.ts → constants/errors.ts} +24 -15
- package/exporter/services/auth.ts +7 -6
- package/exporter/services/db.ts +32 -0
- package/exporter/services/navigation.ts +4 -10
- package/exporter/services/reference-fields.ts +8 -23
- package/exporter/services/robots.ts +8 -15
- package/exporter/services/sites.ts +35 -24
- package/exporter/services/store.ts +118 -76
- package/exporter/types/api.ts +24 -27
- package/exporter/types/global.ts +8 -10
- package/exporter/types/navigation.ts +1 -1
- package/exporter/types/pages.ts +2 -3
- package/exporter/types/render.ts +59 -0
- package/exporter/types/sites.ts +1 -2
- package/exporter/utils/api.ts +46 -82
- package/exporter/{artifacts/index.ts → utils/artifacts.ts} +9 -8
- package/exporter/utils/brush.ts +34 -0
- package/exporter/utils/cache.ts +34 -59
- package/exporter/utils/check-health.ts +79 -0
- package/exporter/utils/core-utils.ts +86 -247
- package/exporter/utils/domains.ts +10 -7
- package/exporter/{errors/index.ts → utils/errors.ts} +10 -9
- package/exporter/utils/folders.ts +161 -92
- package/exporter/utils/images.ts +1 -6
- package/exporter/utils/instance.ts +9 -12
- package/exporter/utils/loggin.ts +24 -89
- package/exporter/utils/pages.ts +23 -88
- package/exporter/utils/render.ts +147 -48
- package/exporter/utils/sites.ts +67 -77
- package/exporter/utils/store.ts +85 -178
- package/gatsby-browser.tsx +41 -58
- package/gatsby-config.ts +6 -12
- package/gatsby-node.ts +30 -89
- package/gatsby-ssr.tsx +2 -1
- package/package.json +32 -73
- package/plugins/gatsby-plugin-svgr-loader/gatsby-node.js +55 -0
- package/plugins/gatsby-plugin-svgr-loader/package.json +8 -0
- package/{exporter/react → react}/Favicon/index.tsx +1 -7
- package/{exporter/react → react}/GriddoIntegrations/index.tsx +6 -14
- package/{exporter/react → react}/GriddoIntegrations/utils.ts +4 -9
- package/{build/react/index.d.ts → react/index.tsx} +1 -0
- package/src/components/Head.tsx +13 -46
- package/src/components/template.tsx +8 -30
- package/src/gatsby-node-utils.ts +91 -2
- package/src/html.tsx +2 -11
- package/src/types.ts +5 -5
- package/start-render.js +1 -3
- package/tsconfig.json +3 -2
- 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/commands/move-assets.d.ts +0 -1
- package/build/commands/prepare-domains-render.d.ts +0 -1
- 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/index.d.ts +0 -29
- package/build/index.js +0 -73
- 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/react/Favicon/utils.d.ts +0 -9
- package/build/react/GriddoIntegrations/index.d.ts +0 -20
- package/build/react/GriddoIntegrations/utils.d.ts +0 -26
- package/build/react/index.js +0 -3
- 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/domains.d.ts +0 -6
- package/build/services/register.d.ts +0 -36
- package/build/services/settings.d.ts +0 -4
- package/build/services/store.d.ts +0 -6
- 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/core-utils.d.ts +0 -107
- package/build/utils/create-build-data.d.ts +0 -8
- package/build/utils/folders.d.ts +0 -53
- package/build/utils/render.d.ts +0 -13
- package/build/utils/searches.d.ts +0 -15
- package/cx.config.d.ts +0 -5
- package/cx.config.js +0 -36
- package/exporter/adapters/gatsby/utils.ts +0 -161
- package/exporter/artifacts/README.md +0 -34
- package/exporter/commands/move-assets.ts +0 -11
- package/exporter/constants/index.ts +0 -129
- package/exporter/index.ts +0 -82
- package/exporter/react/index.tsx +0 -11
- package/exporter/registers/api.ts +0 -14
- package/exporter/registers/gatsby.ts +0 -14
- package/exporter/registers/index.ts +0 -4
- package/exporter/services/domains.ts +0 -16
- package/exporter/services/register.ts +0 -113
- package/exporter/services/settings.ts +0 -17
- package/exporter/utils/alerts.ts +0 -29
- package/exporter/utils/create-build-data.ts +0 -17
- package/exporter/utils/health-checks.ts +0 -64
- package/exporter/utils/searches.ts +0 -179
- package/src/README.md +0 -7
- package/build/{commands → exporter/commands}/end-render.d.ts +0 -0
- package/build/{commands/reset-render.d.ts → exporter/commands/prepare-assets-directory.d.ts} +0 -0
- package/build/{commands/start-render.d.ts → exporter/commands/prepare-domains-render.d.ts} +0 -0
- package/build/{commands/upload-search-content.d.ts → exporter/commands/reset-render.d.ts} +0 -0
- package/build/{constants → exporter/constants}/endpoints.d.ts +0 -0
- package/build/{services → exporter/services}/navigation.d.ts +0 -0
- package/build/{services → exporter/services}/reference-fields.d.ts +0 -0
- package/build/{types → exporter/types}/pages.d.ts +1 -1
- /package/build/{types → exporter/types}/templates.d.ts +0 -0
- /package/build/{utils → exporter/utils}/api.d.ts +0 -0
- /package/build/{utils → exporter/utils}/images.d.ts +0 -0
- /package/build/{utils → exporter/utils}/instance.d.ts +0 -0
- /package/{exporter/react → react}/Favicon/utils.ts +0 -0
package/exporter/utils/loggin.ts
CHANGED
|
@@ -1,52 +1,38 @@
|
|
|
1
1
|
import type { Site } from "../types/sites";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import fsp from "node:fs/promises";
|
|
4
|
+
import path from "node:path";
|
|
4
5
|
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
6
|
+
import { GRIDDO_BUILD_LOGS, GRIDDO_VERBOSE_LOGS } from "../constants/envs";
|
|
7
|
+
import { brush } from "./brush";
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Custom basic logging function controlled by a environment variable.
|
|
10
|
-
*
|
|
11
11
|
* @param str The string to be logged.
|
|
12
12
|
*/
|
|
13
13
|
function verboseLog(str: string) {
|
|
14
|
-
if (
|
|
15
|
-
console.log(
|
|
16
|
-
kleur.yellow("verbose"),
|
|
17
|
-
kleur.dim(str.replace(/(\s)\s+/g, "$1").trim()),
|
|
18
|
-
);
|
|
14
|
+
if (GRIDDO_VERBOSE_LOGS) {
|
|
15
|
+
console.log(brush.yellow("verbose"), brush.dim(str.replace(/(\s)\s+/g, "$1").trim()));
|
|
19
16
|
}
|
|
20
17
|
}
|
|
21
18
|
|
|
22
19
|
/**
|
|
23
20
|
* Custom log inside a line-box.
|
|
24
|
-
*
|
|
25
21
|
* @param stringValue The string to be logged.
|
|
26
22
|
* @param paddingInline The number of white spaces inside the box at left and right.
|
|
27
23
|
* @param paddingBlock The number of white spaces inside the box at top and bottom.
|
|
28
24
|
*/
|
|
29
|
-
function boxLog(
|
|
30
|
-
stringValue: string,
|
|
31
|
-
title = "",
|
|
32
|
-
paddingInline = 1,
|
|
33
|
-
paddingBlock = 1,
|
|
34
|
-
) {
|
|
25
|
+
function boxLog(stringValue: string, title = "", paddingInline = 1, paddingBlock = 1) {
|
|
35
26
|
const lines = stringValue
|
|
36
27
|
.split("\n") // lines
|
|
37
28
|
.map((line) => line.trim()); // remove extra spaces
|
|
38
29
|
const windowTitle = title ? ` ${title} ` : "";
|
|
39
30
|
const windowTitleLength = title ? windowTitle.length : 0;
|
|
40
|
-
const longerContent =
|
|
41
|
-
Math.max(...lines.map((l) => l.length)) + paddingInline * 2;
|
|
31
|
+
const longerContent = Math.max(...lines.map((l) => l.length)) + paddingInline * 2;
|
|
42
32
|
const longerLine = Math.max(longerContent, windowTitleLength);
|
|
43
|
-
const paddingBlockString = `│${" ".repeat(longerLine)}│\n`.repeat(
|
|
44
|
-
paddingBlock,
|
|
45
|
-
);
|
|
33
|
+
const paddingBlockString = `│${" ".repeat(longerLine)}│\n`.repeat(paddingBlock);
|
|
46
34
|
const minWidth = longerLine;
|
|
47
|
-
const borderTop = `╭${windowTitle}${"─".repeat(
|
|
48
|
-
minWidth - windowTitleLength,
|
|
49
|
-
)}╮\n`;
|
|
35
|
+
const borderTop = `╭${windowTitle}${"─".repeat(minWidth - windowTitleLength)}╮\n`;
|
|
50
36
|
const borderBottom = `╰${"─".repeat(minWidth)}╯`;
|
|
51
37
|
const content = lines
|
|
52
38
|
.map((l) => {
|
|
@@ -55,9 +41,7 @@ function boxLog(
|
|
|
55
41
|
})
|
|
56
42
|
.join("");
|
|
57
43
|
|
|
58
|
-
console.log(
|
|
59
|
-
`${borderTop}${paddingBlockString}${content}${paddingBlockString}${borderBottom}`,
|
|
60
|
-
);
|
|
44
|
+
console.log(`${borderTop}${paddingBlockString}${content}${paddingBlockString}${borderBottom}`);
|
|
61
45
|
}
|
|
62
46
|
|
|
63
47
|
/**
|
|
@@ -67,7 +51,7 @@ function boxLog(
|
|
|
67
51
|
* @param str The string to be logged.
|
|
68
52
|
*/
|
|
69
53
|
function buildLog(str: string) {
|
|
70
|
-
if (
|
|
54
|
+
if (GRIDDO_BUILD_LOGS) {
|
|
71
55
|
console.log(str.replace(/(\s)\s+/g, "$1").trim());
|
|
72
56
|
}
|
|
73
57
|
}
|
|
@@ -77,7 +61,7 @@ function buildLog(str: string) {
|
|
|
77
61
|
* @param str The string to be logged.
|
|
78
62
|
*/
|
|
79
63
|
function infoLog(str: string) {
|
|
80
|
-
console.log(`${
|
|
64
|
+
console.log(`${brush.blue("info")} ${str}`);
|
|
81
65
|
}
|
|
82
66
|
|
|
83
67
|
/**
|
|
@@ -85,99 +69,50 @@ function infoLog(str: string) {
|
|
|
85
69
|
* @param str The string to be logged.
|
|
86
70
|
*/
|
|
87
71
|
function successLog(str: string) {
|
|
88
|
-
console.log(`${
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Internal log
|
|
93
|
-
* @param values The values to be logged.
|
|
94
|
-
*/
|
|
95
|
-
function debugLog(...values: Array<unknown>) {
|
|
96
|
-
if (!envs.GRIDDO_DEBUG_LOGS) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
console.log(...values);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Return a scale size colors with a number and a measure string (KB by default).
|
|
104
|
-
*
|
|
105
|
-
* @param size The page size in KB.
|
|
106
|
-
* @param measure The measure string to be added in the log.
|
|
107
|
-
*/
|
|
108
|
-
function pageSizeLog(size: number, measure = "KB") {
|
|
109
|
-
const sizeScale = {
|
|
110
|
-
low: 50,
|
|
111
|
-
mid: 80,
|
|
112
|
-
large: 130,
|
|
113
|
-
extraLarge: 210,
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
// Ternary pawa!
|
|
117
|
-
const color =
|
|
118
|
-
size > sizeScale.large
|
|
119
|
-
? "red"
|
|
120
|
-
: size > sizeScale.mid
|
|
121
|
-
? "magenta"
|
|
122
|
-
: size > sizeScale.low
|
|
123
|
-
? "blue"
|
|
124
|
-
: "green";
|
|
125
|
-
|
|
126
|
-
return kleur[color](kleur.bold(`${size}${measure}`));
|
|
72
|
+
console.log(`${brush.green("success")} ${str}`);
|
|
127
73
|
}
|
|
128
74
|
|
|
129
75
|
/**
|
|
130
76
|
* Console log the Griddo exporter version.
|
|
131
77
|
*/
|
|
132
|
-
function showExporterVersion() {
|
|
78
|
+
async function showExporterVersion() {
|
|
133
79
|
console.clear();
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
.black()
|
|
139
|
-
.bold(" Griddo Exporter " + griddoVersion + " ")}\n`;
|
|
80
|
+
const { version } = JSON.parse(
|
|
81
|
+
await fsp.readFile(path.resolve(__dirname, "../..", "package.json"), "utf-8"),
|
|
82
|
+
) as { version: string };
|
|
83
|
+
const logo = `\n${brush.yellow(`Griddo Exporter ${version}`)}\n`;
|
|
140
84
|
|
|
141
85
|
console.log(logo);
|
|
142
86
|
}
|
|
143
87
|
|
|
144
88
|
function listSitesLog(title: string, sites: Array<Site>) {
|
|
145
89
|
const maxline = Math.max(
|
|
146
|
-
...sites.map(
|
|
147
|
-
(s) =>
|
|
148
|
-
s.name.length + (s.shouldBeUpdated ? 1 : 0) + s.id.toString().length,
|
|
149
|
-
),
|
|
90
|
+
...sites.map((s) => s.name.length + (s.shouldBeUpdated ? 1 : 0) + s.id.toString().length),
|
|
150
91
|
);
|
|
151
92
|
|
|
152
93
|
const sitesStr = sites.map((s) => {
|
|
153
94
|
const shouldBeUpdated = s.shouldBeUpdated ? "*" : "";
|
|
154
|
-
const lineLen =
|
|
155
|
-
s.name.length + shouldBeUpdated.length + s.id.toString().length;
|
|
95
|
+
const lineLen = s.name.length + shouldBeUpdated.length + s.id.toString().length;
|
|
156
96
|
const padding = " ".repeat(maxline - lineLen);
|
|
157
|
-
return `${
|
|
97
|
+
return `${brush.bold(s.name)} ${brush.dim(`(${s.id})`)} ${shouldBeUpdated} ${padding}${brush.dim("-")} ${brush.dim(s.slug)}`;
|
|
158
98
|
});
|
|
159
99
|
|
|
160
|
-
const sitesOutput =
|
|
161
|
-
sitesStr.length > 0
|
|
162
|
-
? "\n\n" + sitesStr.join("\n")
|
|
163
|
-
: kleur.dim("--none--\n");
|
|
100
|
+
const sitesOutput = sitesStr.length > 0 ? `\n\n${sitesStr.join("\n")}` : brush.dim("--none--\n");
|
|
164
101
|
|
|
165
102
|
console.log(`
|
|
166
103
|
${title} ${sitesOutput}`);
|
|
167
104
|
}
|
|
168
105
|
|
|
169
106
|
function errorLabelLog(msg: string) {
|
|
170
|
-
console.error(
|
|
107
|
+
console.error(`\n${brush.black(` ${msg} `)}\n`);
|
|
171
108
|
}
|
|
172
109
|
|
|
173
110
|
export {
|
|
174
111
|
boxLog,
|
|
175
112
|
buildLog,
|
|
176
|
-
debugLog,
|
|
177
113
|
errorLabelLog,
|
|
178
114
|
infoLog,
|
|
179
115
|
listSitesLog,
|
|
180
|
-
pageSizeLog,
|
|
181
116
|
showExporterVersion,
|
|
182
117
|
successLog,
|
|
183
118
|
verboseLog,
|
package/exporter/utils/pages.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Core, Fields } from "@griddo/core";
|
|
1
2
|
import type {
|
|
2
3
|
APIPageObject,
|
|
3
4
|
GriddoListPage,
|
|
@@ -9,14 +10,9 @@ import type {
|
|
|
9
10
|
PageAdditionalInfo,
|
|
10
11
|
} from "../types/pages";
|
|
11
12
|
import type { TemplateWithReferenceField } from "../types/templates";
|
|
12
|
-
import type { Core, Fields } from "@griddo/core";
|
|
13
|
-
|
|
14
|
-
import dotenv from "dotenv";
|
|
15
13
|
|
|
16
14
|
import { formatImage } from "./images";
|
|
17
15
|
|
|
18
|
-
dotenv.config();
|
|
19
|
-
|
|
20
16
|
// Consts
|
|
21
17
|
const DEFAULT_ITEMS_PER_PAGE_FOR_LIST_TEMPLATES = 25;
|
|
22
18
|
|
|
@@ -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 = (
|
|
@@ -391,11 +339,10 @@ function getMultiPageElements(
|
|
|
391
339
|
hasGriddoMultiPage: boolean;
|
|
392
340
|
elements: Array<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: Array<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: Array<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
|
/**
|
package/exporter/utils/render.ts
CHANGED
|
@@ -1,71 +1,170 @@
|
|
|
1
|
-
import
|
|
2
|
-
import path from "node:path";
|
|
1
|
+
import type { RenderModeTuple } from "../types/render";
|
|
3
2
|
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import { apiRegister } from "../registers";
|
|
8
|
-
import { insertAlert } from "./alerts";
|
|
9
|
-
import { getConfig } from "./core-utils";
|
|
10
|
-
import { debugLog } from "./loggin";
|
|
3
|
+
import { execSync } from "node:child_process";
|
|
4
|
+
import fsp from "node:fs/promises";
|
|
5
|
+
import path from "node:path";
|
|
11
6
|
|
|
12
|
-
|
|
7
|
+
import { RenderUUIDError } from "../constants/errors";
|
|
8
|
+
import { readDB, writeDB } from "../services/db";
|
|
9
|
+
import { RENDER_MODE } from "../types/render";
|
|
10
|
+
import { throwError } from "./errors";
|
|
11
|
+
import { pathExists } from "./folders";
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* Creates a sentinel file with the current date and time.
|
|
16
15
|
* This file is used to track later if node_modules/@griddo/cx was cleaned by a
|
|
17
|
-
* npm install from a deploy.
|
|
16
|
+
* npm install coming from a deploy.
|
|
18
17
|
*/
|
|
19
|
-
function
|
|
20
|
-
const {
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
async function markRenderAsStarted(options: { domain: string; basePath: string }) {
|
|
19
|
+
const { domain } = options;
|
|
20
|
+
|
|
21
|
+
const db = await readDB();
|
|
22
|
+
db.domains[domain].isRendering = true;
|
|
23
|
+
await writeDB(db);
|
|
24
|
+
|
|
25
|
+
// Creamos un archivo centinela, si al terminar el render este archivo no
|
|
26
|
+
// existe es que ha habido un deploy por medio y hay que invalidar el render
|
|
27
|
+
const { __ssg } = await getRenderPathsFromDB();
|
|
28
|
+
|
|
29
|
+
const renderSentinelFile = path.join(__ssg, ".render-sentinel");
|
|
30
|
+
await fsp.writeFile(renderSentinelFile, new Date().toISOString());
|
|
23
31
|
}
|
|
24
32
|
|
|
25
|
-
function
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
33
|
+
async function markRenderAsCompleted(domain: string) {
|
|
34
|
+
const db = await readDB();
|
|
35
|
+
db.domains[domain].isRendering = false;
|
|
36
|
+
// db.domains[domain].renderMode = undefined;
|
|
37
|
+
// db.domains[domain].shouldBeRendered = false;
|
|
38
|
+
await writeDB(db);
|
|
39
|
+
|
|
40
|
+
// Borramos finalmente el archivo centinela
|
|
41
|
+
const { __ssg } = await getRenderPathsFromDB();
|
|
42
|
+
const renderSentinelFile = path.join(__ssg, ".render-sentinel");
|
|
43
|
+
await fsp.unlink(renderSentinelFile);
|
|
29
44
|
}
|
|
30
45
|
|
|
31
|
-
function
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
46
|
+
async function assertRenderIsValid() {
|
|
47
|
+
// Comprobamos que .render-sentinel exista, si no es que un deploy lo borro
|
|
48
|
+
// y hay que invalidar el render.
|
|
49
|
+
const { __ssg } = await getRenderPathsFromDB();
|
|
50
|
+
const renderSentinelFile = path.join(__ssg, ".render-sentinel");
|
|
51
|
+
if (!(await pathExists(renderSentinelFile))) {
|
|
35
52
|
throwError(RenderUUIDError);
|
|
36
53
|
}
|
|
37
54
|
}
|
|
38
55
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
56
|
+
// @todo add more messages...
|
|
57
|
+
async function resolveDomainRenderMode(options: { domain: string; shouldBeRendered: boolean }) {
|
|
58
|
+
const { domain, shouldBeRendered } = options;
|
|
59
|
+
const { __cache, __exports } = await getRenderPathsFromDB({ domain });
|
|
60
|
+
|
|
61
|
+
// missing exports
|
|
62
|
+
const missingExports = !(await pathExists(path.join(__exports)));
|
|
63
|
+
// render with errors
|
|
64
|
+
const db = await readDB();
|
|
65
|
+
const wasRenderWithError = db.domains[domain]?.isRendering;
|
|
66
|
+
// new deploy or machine
|
|
67
|
+
const isNewDeploy = await hasNewCommit(__cache);
|
|
68
|
+
|
|
69
|
+
if (missingExports) {
|
|
70
|
+
console.log("[!] From Scratch due to missing exports (first render)");
|
|
71
|
+
return {
|
|
72
|
+
renderMode: RENDER_MODE.FROM_SCRATCH,
|
|
73
|
+
reason: "Missing exports directory",
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (wasRenderWithError) {
|
|
78
|
+
console.log("[!] From Scratch due to a previous render error");
|
|
79
|
+
return {
|
|
80
|
+
renderMode: RENDER_MODE.FROM_SCRATCH,
|
|
81
|
+
reason: "error in previous render",
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (isNewDeploy) {
|
|
86
|
+
console.log("[!] From Scratch due to a changes in the repo (commit hash)");
|
|
87
|
+
return { renderMode: RENDER_MODE.FROM_SCRATCH, reason: "new commit hash" };
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (!shouldBeRendered) {
|
|
91
|
+
console.log(`Skipping render for domain ${domain} as it is not marked for rendering (IDLE).`);
|
|
92
|
+
return { renderMode: RENDER_MODE.IDLE, reason: "" };
|
|
93
|
+
}
|
|
45
94
|
|
|
46
|
-
|
|
47
|
-
|
|
95
|
+
return { renderMode: RENDER_MODE.INCREMENTAL, reason: "" };
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
async function hasNewCommit(basePath: string): Promise<boolean> {
|
|
99
|
+
const commitFile = path.join(basePath, "commit");
|
|
100
|
+
const currentCommit = execSync("git rev-parse HEAD").toString().trim();
|
|
101
|
+
|
|
102
|
+
if (await pathExists(commitFile)) {
|
|
103
|
+
const savedCommit = (await fsp.readFile(commitFile, "utf-8")).trim();
|
|
104
|
+
if (savedCommit === currentCommit) {
|
|
105
|
+
return false; // No hay nuevo commit
|
|
48
106
|
}
|
|
49
107
|
|
|
50
|
-
|
|
51
|
-
debugLog(registerContent);
|
|
52
|
-
debugLog();
|
|
53
|
-
|
|
54
|
-
await insertAlert({
|
|
55
|
-
description: `API response size is too large (${envs.GRIDDO_API_MAX_RESPONSE_SIZE}KB).`,
|
|
56
|
-
area: "Griddo",
|
|
57
|
-
level: "W",
|
|
58
|
-
fullData: {
|
|
59
|
-
output: registerContent,
|
|
60
|
-
date: new Date().toISOString(),
|
|
61
|
-
},
|
|
62
|
-
});
|
|
108
|
+
return true;
|
|
63
109
|
}
|
|
110
|
+
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
async function updateCommitFile(options: { basePath: string }) {
|
|
115
|
+
const { basePath } = options;
|
|
116
|
+
const currentCommit = execSync("git rev-parse HEAD").toString().trim();
|
|
117
|
+
await fsp.writeFile(path.join(basePath, "commit"), currentCommit);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
async function getRenderMode(domain: string): Promise<RenderModeTuple> {
|
|
121
|
+
const db = await readDB();
|
|
122
|
+
|
|
123
|
+
if (!db.domains[domain].renderMode) {
|
|
124
|
+
throw new Error(`Render mode not found for domain ${domain}`);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return {
|
|
128
|
+
renderMode: db.domains[domain].renderMode,
|
|
129
|
+
reason: db.domains[domain].renderModeReason,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
async function getRenderPathsFromDB(options?: { domain?: string; dbFilePath?: string }) {
|
|
134
|
+
const { domain, dbFilePath } = options || {};
|
|
135
|
+
|
|
136
|
+
const db = await readDB(dbFilePath);
|
|
137
|
+
const paths = db.paths;
|
|
138
|
+
|
|
139
|
+
return {
|
|
140
|
+
__root: paths.root,
|
|
141
|
+
__cache: path.join(paths.cxCache, domain || ""),
|
|
142
|
+
__components: paths.components,
|
|
143
|
+
__cx: paths.cx,
|
|
144
|
+
__sites: paths.exportsDir,
|
|
145
|
+
__exports: path.join(paths.exportsDir, domain || ""),
|
|
146
|
+
__ssg: paths.ssg,
|
|
147
|
+
__exports_dist: path.join(paths.exportsDir, domain || "", "dist"),
|
|
148
|
+
__cx_dist: path.join(paths.cx, "dist"),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
async function getRenderMetadataFromDB() {
|
|
153
|
+
const db = await readDB();
|
|
154
|
+
return {
|
|
155
|
+
proDomain: db.proDomain,
|
|
156
|
+
griddoVersion: db.griddoVersion,
|
|
157
|
+
buildReportFileName: db.buildReportFileName,
|
|
158
|
+
};
|
|
64
159
|
}
|
|
65
160
|
|
|
66
161
|
export {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
162
|
+
assertRenderIsValid,
|
|
163
|
+
getRenderMetadataFromDB,
|
|
164
|
+
getRenderMode,
|
|
165
|
+
getRenderPathsFromDB,
|
|
166
|
+
markRenderAsCompleted,
|
|
167
|
+
markRenderAsStarted,
|
|
168
|
+
resolveDomainRenderMode,
|
|
169
|
+
updateCommitFile,
|
|
71
170
|
};
|