@griddo/cx 11.9.9-rc.0 → 11.9.9-rc.1
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 +240 -13
- package/build/adapters/gatsby/index.d.ts +4 -0
- package/build/adapters/gatsby/utils.d.ts +22 -0
- package/build/artifacts/index.d.ts +6 -0
- package/build/commands/end-render.d.ts +1 -0
- package/build/commands/reset-render.d.ts +1 -0
- package/build/commands/start-render.d.ts +1 -0
- package/build/commands/upload-search-content.d.ts +1 -0
- package/build/constants/envs.d.ts +37 -0
- package/build/constants/index.d.ts +57 -0
- package/build/end-render.js +74 -0
- package/build/end-render.js.map +7 -0
- package/build/{shared/errors.d.ts → errors/errors-data.d.ts} +3 -5
- package/build/errors/index.d.ts +15 -0
- package/build/index.d.ts +29 -10
- package/build/index.js +73 -406
- package/build/index.js.map +7 -0
- package/build/prepare-domains-render.js +73 -0
- package/build/prepare-domains-render.js.map +7 -0
- package/build/react/Favicon/index.d.ts +5 -0
- package/build/react/GriddoIntegrations/index.d.ts +4 -3
- package/build/react/GriddoIntegrations/utils.d.ts +6 -7
- package/build/react/index.d.ts +2 -3
- package/build/react/index.js +3 -1
- package/build/registers/api.d.ts +9 -0
- package/build/registers/gatsby.d.ts +9 -0
- package/build/registers/index.d.ts +3 -0
- package/build/reset-render.js +74 -0
- package/build/reset-render.js.map +7 -0
- package/build/services/auth.d.ts +5 -2
- package/build/services/domains.d.ts +4 -3
- package/build/services/navigation.d.ts +16 -16
- package/build/services/reference-fields.d.ts +3 -3
- package/build/services/register.d.ts +36 -0
- package/build/services/robots.d.ts +19 -2
- package/build/services/settings.d.ts +4 -0
- package/build/services/sites.d.ts +5 -8
- package/build/services/store.d.ts +1 -10
- package/build/start-render.js +100 -0
- package/build/start-render.js.map +7 -0
- package/build/{shared/types → types}/api.d.ts +18 -18
- package/build/{shared/types → types}/global.d.ts +16 -15
- package/build/{shared/types → types}/navigation.d.ts +5 -5
- package/build/{shared/types → types}/pages.d.ts +9 -9
- package/build/{shared/types → types}/sites.d.ts +19 -18
- package/build/upload-search-content.js +74 -0
- package/build/upload-search-content.js.map +7 -0
- package/build/utils/alerts.d.ts +3 -0
- package/build/{services → utils}/api.d.ts +1 -1
- package/build/utils/cache.d.ts +35 -0
- package/build/utils/core-utils.d.ts +107 -0
- package/build/utils/create-build-data.d.ts +8 -0
- package/build/utils/domains.d.ts +13 -0
- package/build/utils/folders.d.ts +53 -0
- package/build/{core/check-env-health.d.ts → utils/health-checks.d.ts} +2 -4
- package/build/utils/loggin.d.ts +51 -0
- package/build/{services → utils}/pages.d.ts +3 -3
- package/build/utils/render.d.ts +13 -0
- package/build/utils/searches.d.ts +15 -0
- package/build/utils/sites.d.ts +31 -0
- package/build/utils/store.d.ts +81 -0
- package/cx.config.d.ts +5 -0
- package/cx.config.js +36 -0
- package/exporter/adapters/gatsby/index.ts +162 -0
- package/exporter/adapters/gatsby/utils.ts +161 -0
- package/exporter/artifacts/README.md +34 -0
- package/exporter/artifacts/index.ts +33 -0
- package/exporter/build.sh +24 -16
- package/exporter/commands/end-render.ts +86 -65
- package/exporter/commands/move-assets.ts +11 -0
- package/exporter/commands/prepare-domains-render.ts +35 -147
- package/exporter/commands/reset-render.ts +8 -13
- package/exporter/commands/start-render.ts +64 -26
- package/exporter/commands/upload-search-content.ts +26 -201
- package/exporter/{shared → constants}/endpoints.ts +11 -12
- package/exporter/constants/envs.ts +94 -0
- package/exporter/constants/index.ts +129 -0
- package/exporter/{shared/errors.ts → errors/errors-data.ts} +14 -24
- package/exporter/errors/index.ts +40 -0
- package/exporter/index.ts +56 -14
- package/exporter/react/{GriddoFavicon → Favicon}/index.tsx +9 -3
- package/exporter/react/GriddoIntegrations/index.tsx +23 -17
- package/exporter/react/GriddoIntegrations/utils.ts +12 -24
- package/exporter/react/index.tsx +9 -3
- package/exporter/registers/api.ts +14 -0
- package/exporter/registers/gatsby.ts +14 -0
- package/exporter/registers/index.ts +4 -0
- package/exporter/services/auth.ts +10 -8
- package/exporter/services/domains.ts +8 -23
- package/exporter/services/navigation.ts +18 -12
- package/exporter/services/reference-fields.ts +32 -14
- package/exporter/services/register.ts +113 -0
- package/exporter/services/robots.ts +61 -33
- package/exporter/services/settings.ts +17 -0
- package/exporter/services/sites.ts +28 -40
- package/exporter/services/store.ts +321 -354
- package/exporter/{shared/types → types}/api.ts +41 -40
- package/exporter/{shared/types → types}/global.ts +21 -17
- package/exporter/{shared/types → types}/navigation.ts +3 -3
- package/exporter/{shared/types → types}/pages.ts +11 -10
- package/exporter/{shared/types → types}/sites.ts +19 -18
- package/exporter/utils/alerts.ts +29 -0
- package/exporter/utils/api.ts +243 -0
- package/exporter/utils/cache.ts +142 -0
- package/exporter/utils/core-utils.ts +458 -0
- package/exporter/utils/create-build-data.ts +17 -0
- package/exporter/utils/domains.ts +39 -0
- package/exporter/utils/folders.ts +320 -0
- package/exporter/utils/health-checks.ts +64 -0
- package/exporter/{core → utils}/images.ts +6 -1
- package/exporter/{core → utils}/instance.ts +13 -9
- package/exporter/utils/loggin.ts +184 -0
- package/exporter/{services → utils}/pages.ts +92 -27
- package/exporter/utils/render.ts +71 -0
- package/exporter/utils/searches.ts +156 -0
- package/exporter/utils/sites.ts +312 -0
- package/exporter/utils/store.ts +314 -0
- package/gatsby-browser.tsx +58 -41
- package/gatsby-config.ts +17 -10
- package/gatsby-node.ts +79 -20
- package/gatsby-ssr.tsx +1 -2
- package/package.json +80 -41
- package/src/README.md +7 -0
- package/src/components/Head.tsx +73 -28
- package/src/components/template.tsx +29 -6
- package/src/gatsby-node-utils.ts +2 -76
- package/src/html.tsx +11 -2
- package/src/types.ts +3 -3
- package/start-render.js +7 -0
- package/tsconfig.json +3 -5
- package/build/commands/end-render.js +0 -31
- package/build/commands/end-render.js.map +0 -7
- package/build/commands/prepare-assets-directory.js +0 -9
- package/build/commands/prepare-assets-directory.js.map +0 -7
- package/build/commands/prepare-domains-render.js +0 -38
- package/build/commands/prepare-domains-render.js.map +0 -7
- package/build/commands/reset-render.js +0 -31
- package/build/commands/reset-render.js.map +0 -7
- package/build/commands/single-domain-upload-search-content.d.ts +0 -1
- package/build/commands/start-render.js +0 -66
- package/build/commands/start-render.js.map +0 -7
- package/build/commands/upload-search-content.js +0 -31
- package/build/commands/upload-search-content.js.map +0 -7
- package/build/core/GriddoLog.d.ts +0 -16
- package/build/core/db-class.d.ts +0 -11
- package/build/core/db.d.ts +0 -4
- package/build/core/dist-rollback.d.ts +0 -11
- package/build/core/errors.d.ts +0 -26
- package/build/core/fs.d.ts +0 -69
- package/build/core/life-cycle.d.ts +0 -26
- package/build/core/logger.d.ts +0 -18
- package/build/core/objects.d.ts +0 -11
- package/build/core/print-logos.d.ts +0 -5
- package/build/react/DynamicScript/index.d.ts +0 -4
- package/build/react/GriddoFavicon/index.d.ts +0 -4
- package/build/react/GriddoOpenGraph/index.d.ts +0 -10
- package/build/services/manage-sites.d.ts +0 -22
- package/build/services/manage-store.d.ts +0 -32
- package/build/services/render-artifacts.d.ts +0 -6
- package/build/services/render.d.ts +0 -70
- package/build/services/sitemaps.d.ts +0 -5
- package/build/shared/context.d.ts +0 -36
- package/build/shared/envs.d.ts +0 -19
- package/build/shared/npm-modules/brush.d.ts +0 -18
- package/build/shared/npm-modules/find-up-simple.d.ts +0 -34
- package/build/shared/npm-modules/pkg-dir.d.ts +0 -7
- package/build/shared/npm-modules/xml-parser.d.ts +0 -4
- package/build/shared/types/render.d.ts +0 -54
- package/build/shared/types.d.ts +0 -15
- package/build/ssg-adapters/gatsby/actions/clean.d.ts +0 -3
- package/build/ssg-adapters/gatsby/actions/close.d.ts +0 -3
- package/build/ssg-adapters/gatsby/actions/data.d.ts +0 -2
- package/build/ssg-adapters/gatsby/actions/healthCheck.d.ts +0 -2
- package/build/ssg-adapters/gatsby/actions/init.d.ts +0 -2
- package/build/ssg-adapters/gatsby/actions/logs.d.ts +0 -3
- package/build/ssg-adapters/gatsby/actions/meta.d.ts +0 -2
- package/build/ssg-adapters/gatsby/actions/prepare.d.ts +0 -2
- package/build/ssg-adapters/gatsby/actions/relocation.d.ts +0 -2
- package/build/ssg-adapters/gatsby/actions/restore.d.ts +0 -3
- package/build/ssg-adapters/gatsby/actions/ssg.d.ts +0 -3
- package/build/ssg-adapters/gatsby/actions/sync.d.ts +0 -3
- package/build/ssg-adapters/gatsby/index.d.ts +0 -9
- package/build/ssg-adapters/gatsby/shared/artifacts.d.ts +0 -4
- package/build/ssg-adapters/gatsby/shared/diff-assets.d.ts +0 -15
- package/build/ssg-adapters/gatsby/shared/extract-assets.d.ts +0 -7
- package/build/ssg-adapters/gatsby/shared/gatsby-build.d.ts +0 -7
- package/build/ssg-adapters/gatsby/shared/render-rollback.d.ts +0 -18
- package/build/ssg-adapters/gatsby/shared/sync-render.d.ts +0 -26
- package/build/ssg-adapters/gatsby/shared/types.d.ts +0 -34
- package/cli.mjs +0 -231
- package/exporter/build-esbuild.noop +0 -42
- package/exporter/commands/README.md +0 -151
- package/exporter/commands/prepare-assets-directory.ts +0 -34
- package/exporter/commands/single-domain-upload-search-content.ts +0 -206
- package/exporter/core/GriddoLog.ts +0 -45
- package/exporter/core/check-env-health.ts +0 -204
- package/exporter/core/db-class.ts +0 -54
- package/exporter/core/db.ts +0 -33
- package/exporter/core/dist-rollback.ts +0 -49
- package/exporter/core/errors.ts +0 -92
- package/exporter/core/fs.ts +0 -385
- package/exporter/core/life-cycle.ts +0 -73
- package/exporter/core/logger.ts +0 -141
- package/exporter/core/objects.ts +0 -37
- package/exporter/core/print-logos.ts +0 -21
- package/exporter/react/DynamicScript/index.tsx +0 -33
- package/exporter/react/GriddoOpenGraph/index.tsx +0 -39
- package/exporter/services/api.ts +0 -306
- package/exporter/services/manage-sites.ts +0 -116
- package/exporter/services/manage-store.ts +0 -173
- package/exporter/services/render-artifacts.ts +0 -44
- package/exporter/services/render.ts +0 -229
- package/exporter/services/sitemaps.ts +0 -129
- package/exporter/shared/context.ts +0 -49
- package/exporter/shared/envs.ts +0 -62
- package/exporter/shared/npm-modules/README.md +0 -36
- package/exporter/shared/npm-modules/brush.ts +0 -34
- package/exporter/shared/npm-modules/find-up-simple.ts +0 -100
- package/exporter/shared/npm-modules/pkg-dir.ts +0 -17
- package/exporter/shared/npm-modules/xml-parser.ts +0 -57
- package/exporter/shared/types/render.ts +0 -63
- package/exporter/shared/types.ts +0 -15
- package/exporter/ssg-adapters/gatsby/actions/clean.ts +0 -26
- package/exporter/ssg-adapters/gatsby/actions/close.ts +0 -17
- package/exporter/ssg-adapters/gatsby/actions/data.ts +0 -22
- package/exporter/ssg-adapters/gatsby/actions/healthCheck.ts +0 -10
- package/exporter/ssg-adapters/gatsby/actions/init.ts +0 -12
- package/exporter/ssg-adapters/gatsby/actions/logs.ts +0 -10
- package/exporter/ssg-adapters/gatsby/actions/meta.ts +0 -13
- package/exporter/ssg-adapters/gatsby/actions/prepare.ts +0 -9
- package/exporter/ssg-adapters/gatsby/actions/relocation.ts +0 -15
- package/exporter/ssg-adapters/gatsby/actions/restore.ts +0 -21
- package/exporter/ssg-adapters/gatsby/actions/ssg.ts +0 -12
- package/exporter/ssg-adapters/gatsby/actions/sync.ts +0 -65
- package/exporter/ssg-adapters/gatsby/index.ts +0 -114
- package/exporter/ssg-adapters/gatsby/shared/artifacts.ts +0 -17
- package/exporter/ssg-adapters/gatsby/shared/diff-assets.ts +0 -128
- package/exporter/ssg-adapters/gatsby/shared/extract-assets.ts +0 -75
- package/exporter/ssg-adapters/gatsby/shared/gatsby-build.ts +0 -58
- package/exporter/ssg-adapters/gatsby/shared/render-rollback.ts +0 -33
- package/exporter/ssg-adapters/gatsby/shared/sync-render.ts +0 -298
- package/exporter/ssg-adapters/gatsby/shared/types.ts +0 -35
- package/plugins/gatsby-plugin-svgr-loader/gatsby-node.js +0 -55
- package/plugins/gatsby-plugin-svgr-loader/package.json +0 -8
- package/tsconfig.commands.json +0 -36
- package/tsconfig.exporter.json +0 -21
- /package/build/commands/{prepare-assets-directory.d.ts → move-assets.d.ts} +0 -0
- /package/build/{shared → constants}/endpoints.d.ts +0 -0
- /package/build/react/{GriddoFavicon → Favicon}/utils.d.ts +0 -0
- /package/build/{shared/types → types}/templates.d.ts +0 -0
- /package/build/{core → utils}/images.d.ts +0 -0
- /package/build/{core → utils}/instance.d.ts +0 -0
- /package/exporter/react/{GriddoFavicon → Favicon}/utils.ts +0 -0
- /package/exporter/{shared/types → types}/templates.ts +0 -0
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { GRIDDO_BUILD_LOGS, GRIDDO_VERBOSE_LOGS } from "../shared/envs";
|
|
2
|
-
import { brush } from "../shared/npm-modules/brush";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Clase estática para gestionar los logs de la aplicación.
|
|
6
|
-
* No se puede instanciar, se usa directamente: GriddoLogs.info("mensaje").
|
|
7
|
-
*/
|
|
8
|
-
class GriddoLog {
|
|
9
|
-
/** El constructor es privado para prevenir la instanciación de la clase. */
|
|
10
|
-
private constructor() {}
|
|
11
|
-
|
|
12
|
-
public static verbose(...str: unknown[]): void {
|
|
13
|
-
if (GRIDDO_VERBOSE_LOGS) {
|
|
14
|
-
console.log(brush.yellow("verbose"), brush.dim(str.join(" ")));
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
public static build(...str: unknown[]): void {
|
|
19
|
-
if (GRIDDO_BUILD_LOGS) {
|
|
20
|
-
GriddoLog.log(...str);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
public static info(...str: unknown[]): void {
|
|
25
|
-
console.log(`${brush.blue("info")} ${str.join(" ")}`);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
public static success(...str: unknown[]): void {
|
|
29
|
-
console.log(`${brush.green("success")} ${str.join(" ")}`);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
public static error(...str: unknown[]): void {
|
|
33
|
-
console.error(`${brush.red("error")} ${str.join(" ")}`);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public static warn(...str: unknown[]): void {
|
|
37
|
-
console.warn(`${brush.yellow("warn")} ${str.join(" ")}`);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
public static log(...args: Parameters<typeof console.log>): void {
|
|
41
|
-
console.log(...args);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export { GriddoLog };
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import { CheckHealthError } from "../shared/errors";
|
|
2
|
-
import { throwError } from "./errors";
|
|
3
|
-
import { GriddoLog } from "./GriddoLog";
|
|
4
|
-
|
|
5
|
-
// Environment variables that must be present (but value doesn't matter)
|
|
6
|
-
const REQUIRED_ENV_VARS: readonly string[] = [];
|
|
7
|
-
|
|
8
|
-
// Environment variables that must have specific values
|
|
9
|
-
const REQUIRED_ENV_VALUES: readonly {
|
|
10
|
-
key: string;
|
|
11
|
-
expected: string;
|
|
12
|
-
description?: string;
|
|
13
|
-
}[] = [
|
|
14
|
-
{
|
|
15
|
-
key: "GRIDDO_RENDER_BY_DOMAINS",
|
|
16
|
-
expected: "true",
|
|
17
|
-
description: "Must be set to 'true' for domain-based rendering",
|
|
18
|
-
},
|
|
19
|
-
];
|
|
20
|
-
|
|
21
|
-
// Environment variables that are recommended but not required
|
|
22
|
-
// These will show warnings if missing but won't fail the health check
|
|
23
|
-
const RECOMMENDED_ENV_VARS: readonly { key: string; description?: string }[] = [
|
|
24
|
-
{
|
|
25
|
-
key: "GRIDDO_BUILD_LOGS",
|
|
26
|
-
description: "Recommended for detailed render logs",
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
key: "GRIDDO_BUILD_LOGS_TO_FILE",
|
|
30
|
-
description: "Recommended for performance gain and simplify render logs",
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
key: "GRIDDO_API_CONCURRENCY_COUNT",
|
|
34
|
-
description: "Recommended for better performance and memory management",
|
|
35
|
-
},
|
|
36
|
-
];
|
|
37
|
-
|
|
38
|
-
// Environment variables that must be present (but value doesn't matter)
|
|
39
|
-
const DEPRECATED_ENV_VARS: readonly { key: string; description?: string }[] = [
|
|
40
|
-
{
|
|
41
|
-
key: "GRIDDO_RENDER_SITE",
|
|
42
|
-
description:
|
|
43
|
-
"This environment variable no longer has any effect because it is incompatible with incremental rendering.",
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
key: "GRIDDO_RENDER_PAGES",
|
|
47
|
-
description:
|
|
48
|
-
"This environment variable no longer has any effect because it is incompatible with incremental rendering.",
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
key: "REACT_APP_API_ENDPOINT",
|
|
52
|
-
description: "Use GRIDDO_API_URL",
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
key: "REACT_APP_PUBLIC_API_ENDPOINT",
|
|
56
|
-
description: "Use GRIDDO_PUBLIC_API_URL",
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
key: "GRIDDO_RENDER_ALL_SITES",
|
|
60
|
-
description: "This environment variable is deprecated, remove it",
|
|
61
|
-
},
|
|
62
|
-
];
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Check if required environment variables exist with any value.
|
|
66
|
-
*
|
|
67
|
-
* @returns An object containing:
|
|
68
|
-
* - isValid: boolean indicating if all required environment variables are present.
|
|
69
|
-
* - missing: an array of missing environment variable names.
|
|
70
|
-
*/
|
|
71
|
-
function checkRequiredEnvVars(): { isValid: boolean; missing: string[] } {
|
|
72
|
-
const missing = REQUIRED_ENV_VARS.filter((envName) => !process.env[envName]);
|
|
73
|
-
|
|
74
|
-
if (missing.length > 0) {
|
|
75
|
-
GriddoLog.error(`Missing required environment variables: ${missing.join(", ")}`);
|
|
76
|
-
return { isValid: false, missing };
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return { isValid: true, missing: [] };
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Check if environment variables have the expected values.
|
|
84
|
-
*
|
|
85
|
-
* @returns An object containing:
|
|
86
|
-
* - isValid: boolean indicating if all required environment variables have the expected values.
|
|
87
|
-
* - mismatches: an array of mismatched environment variable names and their expected and actual values.
|
|
88
|
-
*/
|
|
89
|
-
function checkEnvVarValues(): {
|
|
90
|
-
isValid: boolean;
|
|
91
|
-
mismatches: { key: string; expected: string; actual: string }[];
|
|
92
|
-
} {
|
|
93
|
-
const mismatches: { key: string; expected: string; actual: string }[] = [];
|
|
94
|
-
|
|
95
|
-
for (const { key, expected } of REQUIRED_ENV_VALUES) {
|
|
96
|
-
const actual = process.env[key];
|
|
97
|
-
|
|
98
|
-
if (actual !== expected) {
|
|
99
|
-
mismatches.push({ key, expected, actual: actual || "(undefined)" });
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (mismatches.length > 0) {
|
|
104
|
-
return { isValid: false, mismatches };
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
return { isValid: true, mismatches: [] };
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Check recommended environment variables and show warnings for missing ones.
|
|
112
|
-
*
|
|
113
|
-
* @returns An object containing:
|
|
114
|
-
* - isValid: boolean indicating if all recommended environment variables are set.
|
|
115
|
-
* - missing: an array of missing recommended environment variable names.
|
|
116
|
-
*/
|
|
117
|
-
function checkRecommendedEnvVars() {
|
|
118
|
-
const missing = RECOMMENDED_ENV_VARS.filter(({ key }) => !process.env[key]);
|
|
119
|
-
|
|
120
|
-
if (missing.length > 0) {
|
|
121
|
-
GriddoLog.warn("Recommended environment variables not set:");
|
|
122
|
-
|
|
123
|
-
for (const { key, description } of missing) {
|
|
124
|
-
const desc = description ? ` # ${description}` : "";
|
|
125
|
-
GriddoLog.log(` -> ${key}${desc}`);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Check if set enviroment variables have been deprecated
|
|
132
|
-
*
|
|
133
|
-
* @returns An object containing:
|
|
134
|
-
* - deprecated: an array of deprecated environment variable names.
|
|
135
|
-
*/
|
|
136
|
-
function checkDeprecatedEnvVars() {
|
|
137
|
-
const deprecated = DEPRECATED_ENV_VARS.filter(({ key }) => process.env[key]);
|
|
138
|
-
|
|
139
|
-
if (deprecated.length > 0) {
|
|
140
|
-
const deprecatedMessages = deprecated.map(({ key, description }) => {
|
|
141
|
-
const desc = description ? ` # ${description}` : "";
|
|
142
|
-
return ` ${key}${desc}`;
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
GriddoLog.warn("Deprecated environment variables set:");
|
|
146
|
-
GriddoLog.warn(`${deprecatedMessages.join("\n")}\n`);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
return { deprecated: deprecated.map((key) => key) };
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Check if the environment is secure to launch a render.
|
|
154
|
-
* If something fails then log an error message and exit from the process.
|
|
155
|
-
* Otherwise just return true.
|
|
156
|
-
*
|
|
157
|
-
* @returns A boolean indicating if the environment is secure to launch a render.
|
|
158
|
-
*/
|
|
159
|
-
function checkEnvironmentHealth() {
|
|
160
|
-
// Check required environment variables
|
|
161
|
-
const envVarsCheck = checkRequiredEnvVars();
|
|
162
|
-
const envValuesCheck = checkEnvVarValues();
|
|
163
|
-
|
|
164
|
-
// (warnings only)
|
|
165
|
-
checkRecommendedEnvVars();
|
|
166
|
-
checkDeprecatedEnvVars();
|
|
167
|
-
|
|
168
|
-
// Render is safe if all required checks pass
|
|
169
|
-
const isSafeToRender = envVarsCheck.isValid && envValuesCheck.isValid;
|
|
170
|
-
|
|
171
|
-
if (isSafeToRender) {
|
|
172
|
-
GriddoLog.info("Build health check passed");
|
|
173
|
-
return true;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// Generate consolidated error message
|
|
177
|
-
const allIssues: string[] = [];
|
|
178
|
-
|
|
179
|
-
if (!envVarsCheck.isValid) {
|
|
180
|
-
allIssues.push(`Missing: ${envVarsCheck.missing.join(", ")}`);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
if (!envValuesCheck.isValid) {
|
|
184
|
-
const mismatchMessages = envValuesCheck.mismatches.map(
|
|
185
|
-
({ key, expected, actual }) => `${key}="${actual || "undefined"}" (expected "${expected}")`,
|
|
186
|
-
);
|
|
187
|
-
allIssues.push(`Incorrect values:\n ${mismatchMessages.join("\n ")}`);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// Show what needs to be set
|
|
191
|
-
const requiredVarsMessage = REQUIRED_ENV_VALUES.map(({ key, expected, description }) => {
|
|
192
|
-
const desc = description ? ` # ${description}` : "";
|
|
193
|
-
return ` ${key}="${expected}"${desc}`;
|
|
194
|
-
}).join("\n");
|
|
195
|
-
|
|
196
|
-
GriddoLog.error(`Environment health check failed:`);
|
|
197
|
-
GriddoLog.error(` ${allIssues.join("\n ")}`);
|
|
198
|
-
GriddoLog.warn("\nRequired environment variables:");
|
|
199
|
-
GriddoLog.error(requiredVarsMessage);
|
|
200
|
-
|
|
201
|
-
throwError(CheckHealthError);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
export { checkEnvironmentHealth };
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import type { RenderDB } from "../shared/types/render";
|
|
2
|
-
|
|
3
|
-
import fsp from "node:fs/promises";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
|
|
6
|
-
import { pkgDirSync } from "../shared/npm-modules/pkg-dir";
|
|
7
|
-
import { GriddoLog } from "./GriddoLog";
|
|
8
|
-
|
|
9
|
-
// Interfaz para abstraer la DB
|
|
10
|
-
export interface Database {
|
|
11
|
-
read(): Promise<RenderDB>;
|
|
12
|
-
write(renderDB: RenderDB): Promise<void>;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export class JsonDatabase implements Database {
|
|
16
|
-
private readonly dbFilePath: string;
|
|
17
|
-
|
|
18
|
-
constructor(customDBPath?: string) {
|
|
19
|
-
this.dbFilePath =
|
|
20
|
-
customDBPath ??
|
|
21
|
-
path.join(
|
|
22
|
-
pkgDirSync({ cwd: path.resolve(__dirname, "../../..") }) ?? "",
|
|
23
|
-
".griddo/cache/db.json",
|
|
24
|
-
);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
async read(customDBFilePath?: string): Promise<RenderDB> {
|
|
28
|
-
try {
|
|
29
|
-
const raw = await fsp.readFile(customDBFilePath || this.dbFilePath, "utf-8");
|
|
30
|
-
return JSON.parse(raw) as RenderDB;
|
|
31
|
-
} catch (error) {
|
|
32
|
-
if (error instanceof Error) {
|
|
33
|
-
GriddoLog.error(`Error reading DB file at ${this.dbFilePath}:`, error.message);
|
|
34
|
-
} else {
|
|
35
|
-
GriddoLog.error(`Unknown error reading DB file at ${this.dbFilePath}:`, error);
|
|
36
|
-
}
|
|
37
|
-
throw error;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
async write(renderDB: RenderDB): Promise<void> {
|
|
42
|
-
try {
|
|
43
|
-
await fsp.mkdir(path.dirname(this.dbFilePath), { recursive: true });
|
|
44
|
-
await fsp.writeFile(this.dbFilePath, JSON.stringify(renderDB, null, "\t"));
|
|
45
|
-
} catch (error) {
|
|
46
|
-
if (error instanceof Error) {
|
|
47
|
-
GriddoLog.error(`Error writing to DB file at ${this.dbFilePath}:`, error.message);
|
|
48
|
-
} else {
|
|
49
|
-
GriddoLog.error(`Unknown error writing to DB file at ${this.dbFilePath}:`, error);
|
|
50
|
-
}
|
|
51
|
-
throw error;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
package/exporter/core/db.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { RenderDB } from "../shared/types/render";
|
|
2
|
-
|
|
3
|
-
import fsp from "node:fs/promises";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
|
|
6
|
-
import { pkgDirSync } from "../shared/npm-modules/pkg-dir";
|
|
7
|
-
import { GriddoLog } from "./GriddoLog";
|
|
8
|
-
|
|
9
|
-
const root = pkgDirSync({ cwd: path.resolve(__dirname, "../../..") }) || "";
|
|
10
|
-
const cache = path.join(root, ".griddo/cache");
|
|
11
|
-
const dbFilePath = path.join(cache, "db.json");
|
|
12
|
-
|
|
13
|
-
async function readDB(customDBPath = "") {
|
|
14
|
-
const file = customDBPath || dbFilePath;
|
|
15
|
-
try {
|
|
16
|
-
return JSON.parse(await fsp.readFile(file, "utf-8")) as RenderDB;
|
|
17
|
-
} catch (error) {
|
|
18
|
-
GriddoLog.error(`Failed to read DB file at ${file}:`, error);
|
|
19
|
-
throw error;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
async function writeDB(renderDB: RenderDB, customDBPath = "") {
|
|
24
|
-
const file = customDBPath || dbFilePath;
|
|
25
|
-
try {
|
|
26
|
-
await fsp.writeFile(file, JSON.stringify(renderDB, null, "\t"));
|
|
27
|
-
} catch (error) {
|
|
28
|
-
GriddoLog.error(`Failed to write DB file at ${file}:`, error);
|
|
29
|
-
throw error;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export { readDB, writeDB };
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import fsp from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
|
|
4
|
-
import { readDB } from "./db";
|
|
5
|
-
import { pathExists } from "./fs";
|
|
6
|
-
import { GriddoLog } from "./GriddoLog";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Rolls back the exports directory for the given domain.
|
|
10
|
-
*
|
|
11
|
-
* - Deletes the potentially corrupt exports directory for the domain.
|
|
12
|
-
* - If a backup exists, it restores the directory from the backup location.
|
|
13
|
-
* - If no backup is found, it informs that a fresh exports directory will be created on the next render.
|
|
14
|
-
*
|
|
15
|
-
* @param domain The domain for which to rollback the exports directory.
|
|
16
|
-
*/
|
|
17
|
-
async function distRollback(domain: string): Promise<void> {
|
|
18
|
-
const data = await readDB();
|
|
19
|
-
const { exportsDir, exportsDirBackup } = data.paths;
|
|
20
|
-
|
|
21
|
-
GriddoLog.info(`Cleaning exports dir for the domain ${domain}`);
|
|
22
|
-
GriddoLog.verbose(`Deleting ${path.join(exportsDir, domain)}...`);
|
|
23
|
-
|
|
24
|
-
// TODO: Probar rsync en lugar de borrar y copiar
|
|
25
|
-
|
|
26
|
-
// 1 - Borrar dist corrupto
|
|
27
|
-
await fsp.rm(path.join(exportsDir, domain), {
|
|
28
|
-
recursive: true,
|
|
29
|
-
force: true,
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
// 2 - Si hay backup, restaurar
|
|
33
|
-
if (await pathExists(path.join(exportsDirBackup, domain))) {
|
|
34
|
-
await fsp.cp(path.join(exportsDirBackup, domain), path.join(exportsDir, domain), {
|
|
35
|
-
recursive: true,
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
GriddoLog.info(`export-backup dir for the domain ${domain} found. Restoring before exit...`);
|
|
39
|
-
GriddoLog.verbose(
|
|
40
|
-
`Copying ${path.join(exportsDirBackup, domain)} -> ${path.join(exportsDir, domain)}...`,
|
|
41
|
-
);
|
|
42
|
-
} else {
|
|
43
|
-
GriddoLog.info(
|
|
44
|
-
"No export-backup found, skipping rollback. Next render will create a new exports dir from scratch...",
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export { distRollback };
|
package/exporter/core/errors.ts
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import type { ErrorsType } from "../shared/errors";
|
|
2
|
-
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
|
|
5
|
-
import { brush } from "../shared/npm-modules/brush";
|
|
6
|
-
import { readDB, writeDB } from "./db";
|
|
7
|
-
import { distRollback } from "./dist-rollback";
|
|
8
|
-
import { GriddoLog } from "./GriddoLog";
|
|
9
|
-
|
|
10
|
-
export type ErrorData = {
|
|
11
|
-
error: ErrorsType;
|
|
12
|
-
message: string;
|
|
13
|
-
expected?: string;
|
|
14
|
-
hint?: string;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export class RenderError extends Error {
|
|
18
|
-
constructor(originalError?: unknown) {
|
|
19
|
-
super(originalError instanceof Error ? originalError.message : String(originalError));
|
|
20
|
-
|
|
21
|
-
this.name = "InternalCXError";
|
|
22
|
-
this.stack = originalError instanceof Error ? originalError.stack : "";
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Throws an error with the provided error message, expected value, and hint.
|
|
28
|
-
*/
|
|
29
|
-
function throwError(options: ErrorData, stack?: unknown): never {
|
|
30
|
-
const { error, message, expected, hint } = options;
|
|
31
|
-
|
|
32
|
-
const errorColor = GriddoLog.log(brush.red(`[ ${error} ]`));
|
|
33
|
-
const extraText = [expected, hint].filter(Boolean).join("\n");
|
|
34
|
-
|
|
35
|
-
GriddoLog.log(`
|
|
36
|
-
${errorColor}
|
|
37
|
-
${message}
|
|
38
|
-
${extraText}
|
|
39
|
-
|
|
40
|
-
${brush.red("stack")}
|
|
41
|
-
${JSON.stringify(stack, null, 2)}`);
|
|
42
|
-
|
|
43
|
-
throw new RenderError(stack);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Executes the provided asynchronous function and handles errors that occur during execution.
|
|
48
|
-
*
|
|
49
|
-
* - If an error is thrown, attempts to log the error and, if necessary, rolls back the exports directory.
|
|
50
|
-
* - Updates the render database to set the domain's rendering state to "ERROR" if an error occurs.
|
|
51
|
-
*
|
|
52
|
-
* @param fn - The asynchronous function to execute within the error handler.
|
|
53
|
-
* @returns A promise that resolves when the function is executed successfully.
|
|
54
|
-
* @throws RenderError | unknown - Rethrows the original error after handling and database state update.
|
|
55
|
-
*/
|
|
56
|
-
async function withErrorHandler(fn: () => Promise<void>) {
|
|
57
|
-
try {
|
|
58
|
-
await fn();
|
|
59
|
-
} catch (error) {
|
|
60
|
-
if (error instanceof RenderError) {
|
|
61
|
-
GriddoLog.error("Internal Griddo RenderError");
|
|
62
|
-
} else if (error instanceof Error) {
|
|
63
|
-
GriddoLog.error(error.message);
|
|
64
|
-
} else {
|
|
65
|
-
GriddoLog.error(`An unexpected error occurred ${error}`);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Try to rollback the exports directory if needed
|
|
69
|
-
try {
|
|
70
|
-
const data = await readDB();
|
|
71
|
-
const { root } = data.paths;
|
|
72
|
-
if (data.needsRollbackOnError) {
|
|
73
|
-
GriddoLog.info("Cleaning exports dir...");
|
|
74
|
-
GriddoLog.verbose(`Deleting ${path.join(root, "exports")}...`);
|
|
75
|
-
|
|
76
|
-
await distRollback(data.currentRenderingDomain!);
|
|
77
|
-
} else {
|
|
78
|
-
GriddoLog.info("No rollback needed, skipping...");
|
|
79
|
-
}
|
|
80
|
-
} catch (_e) {
|
|
81
|
-
GriddoLog.info("Early render stage, no db.json created yet...");
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const data = await readDB();
|
|
85
|
-
data.domains[data.currentRenderingDomain!].isRendering = false;
|
|
86
|
-
data.domains[data.currentRenderingDomain!].renderMode = "ERROR";
|
|
87
|
-
await writeDB(data);
|
|
88
|
-
throw error;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export { throwError, withErrorHandler };
|