@griddo/cx 11.7.11 → 11.7.12-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 +27 -226
- 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 +14 -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 +22 -0
- package/build/adapters/gatsby/actions/init.js.map +1 -0
- package/build/adapters/gatsby/actions/logs.js +9 -0
- package/build/adapters/gatsby/actions/logs.js.map +1 -0
- package/build/adapters/gatsby/actions/meta.js +13 -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 +51 -0
- package/build/adapters/gatsby/actions/sync.js.map +1 -0
- package/build/adapters/gatsby/index.js +78 -0
- package/build/adapters/gatsby/index.js.map +1 -0
- package/build/adapters/gatsby/shared/artifacts.js +20 -0
- package/build/adapters/gatsby/shared/artifacts.js.map +1 -0
- package/build/adapters/gatsby/shared/context.js +31 -0
- package/build/adapters/gatsby/shared/context.js.map +1 -0
- package/build/adapters/gatsby/shared/diff-assets.js +101 -0
- package/build/adapters/gatsby/shared/diff-assets.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 +55 -0
- package/build/adapters/gatsby/shared/gatsby-build.js.map +1 -0
- package/build/adapters/gatsby/shared/sync-render.js +210 -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 +87 -0
- package/build/commands/end-render.js.map +1 -0
- package/build/commands/prepare-assets-directory.js +30 -0
- package/build/commands/prepare-assets-directory.js.map +1 -0
- package/build/commands/prepare-domains-render.js +133 -0
- package/build/commands/prepare-domains-render.js.map +1 -0
- package/build/commands/reset-render.js +21 -0
- package/build/commands/reset-render.js.map +1 -0
- package/build/commands/start-render.js +44 -0
- package/build/commands/start-render.js.map +1 -0
- package/build/commands/upload-search-content.js +180 -0
- package/build/commands/upload-search-content.js.map +1 -0
- package/build/constants/endpoints.js +43 -0
- package/build/constants/endpoints.js.map +1 -0
- package/build/constants/envs.js +68 -0
- package/build/constants/envs.js.map +1 -0
- package/build/constants/errors.js +81 -0
- package/build/constants/errors.js.map +1 -0
- package/build/services/auth.js +40 -0
- package/build/services/auth.js.map +1 -0
- package/build/services/db-class.js +49 -0
- package/build/services/db-class.js.map +1 -0
- package/build/services/db.js +34 -0
- package/build/services/db.js.map +1 -0
- package/build/services/navigation.js +96 -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 +60 -0
- package/build/services/robots.js.map +1 -0
- package/build/services/sites.js +110 -0
- package/build/services/sites.js.map +1 -0
- package/build/services/store.js +257 -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 +165 -0
- package/build/utils/api.js.map +1 -0
- package/build/utils/artifacts.js +38 -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-environment-health.js +69 -0
- package/build/utils/check-environment-health.js.map +1 -0
- package/build/utils/core-utils.js +270 -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 +341 -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 +119 -0
- package/build/utils/loggin.js.map +1 -0
- package/build/utils/npm-deps/find-up-simple.js +75 -0
- package/build/utils/npm-deps/find-up-simple.js.map +1 -0
- package/build/utils/npm-deps/pkg-dir.js +20 -0
- package/build/utils/npm-deps/pkg-dir.js.map +1 -0
- package/build/utils/npm-deps/xml-parser.js +49 -0
- package/build/utils/npm-deps/xml-parser.js.map +1 -0
- package/build/utils/pages.js +359 -0
- package/build/utils/pages.js.map +1 -0
- package/build/utils/render.js +168 -0
- package/build/utils/render.js.map +1 -0
- package/build/utils/sitemaps.js +110 -0
- package/build/utils/sitemaps.js.map +1 -0
- package/build/utils/sites.js +105 -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 +20 -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 +26 -0
- package/exporter/adapters/gatsby/actions/logs.ts +10 -0
- package/exporter/adapters/gatsby/actions/meta.ts +16 -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 +71 -0
- package/exporter/adapters/gatsby/index.ts +73 -153
- package/exporter/adapters/gatsby/shared/artifacts.ts +16 -0
- package/exporter/adapters/gatsby/shared/context.ts +50 -0
- package/exporter/adapters/gatsby/shared/diff-assets.ts +113 -0
- package/exporter/adapters/gatsby/shared/extract-assets.ts +61 -0
- package/exporter/adapters/gatsby/shared/gatsby-build.ts +58 -0
- package/exporter/adapters/gatsby/shared/sync-render.ts +276 -0
- package/exporter/adapters/gatsby/shared/types.ts +35 -0
- package/exporter/build-esbuild.noop +42 -0
- package/exporter/build.sh +4 -38
- package/exporter/commands/end-render.ts +72 -70
- package/exporter/commands/prepare-assets-directory.ts +30 -0
- package/exporter/commands/prepare-domains-render.ts +143 -31
- package/exporter/commands/reset-render.ts +10 -3
- package/exporter/commands/start-render.ts +22 -45
- package/exporter/commands/upload-search-content.ts +194 -21
- package/exporter/constants/endpoints.ts +2 -1
- package/exporter/constants/envs.ts +57 -55
- package/exporter/{errors/errors-data.ts → constants/errors.ts} +24 -14
- package/exporter/services/auth.ts +7 -6
- package/exporter/services/db-class.ts +54 -0
- package/exporter/services/db.ts +32 -0
- package/exporter/services/navigation.ts +4 -10
- package/exporter/services/reference-fields.ts +9 -24
- package/exporter/services/robots.ts +9 -16
- package/exporter/services/sites.ts +36 -24
- package/exporter/services/store.ts +107 -96
- package/exporter/types/api.ts +27 -28
- package/exporter/types/global.ts +8 -11
- 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 +55 -75
- package/exporter/utils/artifacts.ts +38 -0
- package/exporter/utils/brush.ts +34 -0
- package/exporter/utils/cache.ts +37 -62
- package/exporter/utils/check-environment-health.ts +80 -0
- package/exporter/utils/core-utils.ts +133 -272
- package/exporter/utils/domains.ts +10 -7
- package/exporter/{errors/index.ts → utils/errors.ts} +10 -9
- package/exporter/utils/folders.ts +163 -98
- package/exporter/utils/images.ts +1 -6
- package/exporter/utils/instance.ts +9 -13
- package/exporter/utils/loggin.ts +44 -91
- package/exporter/utils/npm-deps/find-up-simple.ts +100 -0
- package/exporter/utils/npm-deps/pkg-dir.ts +17 -0
- package/exporter/utils/npm-deps/xml-parser.ts +57 -0
- package/exporter/utils/pages.ts +23 -88
- package/exporter/utils/render.ts +180 -48
- package/exporter/utils/sitemaps.ts +129 -0
- package/exporter/utils/sites.ts +19 -197
- package/exporter/utils/store.ts +87 -180
- package/gatsby-browser.tsx +41 -58
- package/gatsby-config.ts +10 -17
- package/gatsby-node.ts +17 -78
- package/gatsby-ssr.tsx +2 -1
- package/package.json +35 -86
- package/plugins/gatsby-plugin-svgr-loader/gatsby-node.js +55 -0
- package/plugins/gatsby-plugin-svgr-loader/package.json +8 -0
- package/react/DynamicScript/index.tsx +33 -0
- package/{exporter/react → react}/Favicon/index.tsx +1 -7
- package/{exporter/react → react}/GriddoIntegrations/index.tsx +16 -22
- package/{exporter/react → react}/GriddoIntegrations/utils.ts +21 -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 +73 -2
- package/src/html.tsx +2 -11
- package/src/types.ts +5 -5
- package/tsconfig.commands.json +36 -0
- package/tsconfig.exporter.json +19 -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/commands/end-render.d.ts +0 -2
- package/build/commands/move-assets.d.ts +0 -1
- package/build/commands/prepare-domains-render.d.ts +0 -1
- package/build/commands/reset-render.d.ts +0 -2
- package/build/commands/start-render.d.ts +0 -2
- package/build/commands/upload-search-content.d.ts +0 -2
- package/build/constants/endpoints.d.ts +0 -19
- 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/errors-data.d.ts +0 -22
- package/build/errors/index.d.ts +0 -15
- 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/auth.d.ts +0 -10
- package/build/services/domains.d.ts +0 -6
- package/build/services/navigation.d.ts +0 -50
- package/build/services/reference-fields.d.ts +0 -20
- package/build/services/register.d.ts +0 -36
- package/build/services/robots.d.ts +0 -19
- package/build/services/settings.d.ts +0 -4
- package/build/services/sites.d.ts +0 -29
- 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/types/api.d.ts +0 -142
- package/build/types/global.d.ts +0 -84
- package/build/types/navigation.d.ts +0 -28
- package/build/types/pages.d.ts +0 -144
- package/build/types/sites.d.ts +0 -57
- package/build/types/templates.d.ts +0 -8
- 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/api.d.ts +0 -23
- 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/health-checks.d.ts +0 -7
- package/build/utils/images.d.ts +0 -16
- package/build/utils/instance.d.ts +0 -21
- package/build/utils/loggin.d.ts +0 -51
- package/build/utils/pages.d.ts +0 -34
- 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/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/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 -156
- package/src/README.md +0 -7
- package/start-render.js +0 -7
- /package/{exporter/react → react}/Favicon/utils.ts +0 -0
|
@@ -1,105 +1,107 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Report } from "../types/render";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import fsp from "node:fs/promises";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
|
|
6
|
-
import
|
|
7
|
-
|
|
6
|
+
import { ArtifactError } from "../constants/errors";
|
|
8
7
|
import { AuthService } from "../services/auth";
|
|
9
8
|
import { endSiteRender } from "../services/sites";
|
|
10
|
-
import { getConfig } from "../utils/core-utils";
|
|
11
9
|
import { getInstanceDomains } from "../utils/domains";
|
|
10
|
+
import { throwError } from "../utils/errors";
|
|
11
|
+
import { pathExists } from "../utils/folders";
|
|
12
12
|
import { infoLog } from "../utils/loggin";
|
|
13
|
+
import { getRenderMetadataFromDB, getRenderMode, getRenderPathsFromDB } from "../utils/render";
|
|
13
14
|
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
// Where we are going to find export dirs
|
|
17
|
-
const execBasePath = pkgDir.sync(path.resolve(__dirname, "../.."))!;
|
|
18
|
-
|
|
19
|
-
// Where we are going to find archived exports
|
|
20
|
-
const exportArchiveBasePath = path.resolve(execBasePath, "exports/sites");
|
|
21
|
-
|
|
22
|
-
type Report = {
|
|
23
|
-
authControl:
|
|
24
|
-
| {
|
|
25
|
-
Authorization: string;
|
|
26
|
-
"Cache-Control": string;
|
|
27
|
-
lang?: string | undefined;
|
|
28
|
-
}
|
|
29
|
-
| undefined;
|
|
30
|
-
sites: Array<{
|
|
31
|
-
siteId: number;
|
|
32
|
-
publishHashes: Array<string>;
|
|
33
|
-
siteHash: string | null;
|
|
34
|
-
unpublishHashes: Array<string>;
|
|
35
|
-
publishPagesIds: Array<number>;
|
|
36
|
-
}>;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
function getDomainRenderReport(domain: string) {
|
|
40
|
-
const reports: Array<Report> = [];
|
|
41
|
-
const { buildReportFileName } = getConfig();
|
|
15
|
+
const renderByDomains = !!process.env.GRIDDO_RENDER_BY_DOMAINS;
|
|
42
16
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
17
|
+
async function getRenderReport(options: {
|
|
18
|
+
domain: string;
|
|
19
|
+
exportsSiteDir: string;
|
|
20
|
+
buildReportFileName: string;
|
|
21
|
+
}) {
|
|
22
|
+
const { buildReportFileName, domain, exportsSiteDir: exportArchiveBasePath } = options;
|
|
23
|
+
const buildReportFile = path.resolve(exportArchiveBasePath, domain, "dist", buildReportFileName);
|
|
49
24
|
|
|
50
|
-
if (!
|
|
51
|
-
|
|
25
|
+
if (!(await pathExists(buildReportFile))) {
|
|
26
|
+
infoLog(`Build report file "${buildReportFile}" not found.`);
|
|
27
|
+
throwError(ArtifactError);
|
|
52
28
|
}
|
|
53
29
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
reports.push(buildReport);
|
|
57
|
-
|
|
58
|
-
return reports;
|
|
30
|
+
return JSON.parse(await fsp.readFile(buildReportFile, "utf-8")) as Report;
|
|
59
31
|
}
|
|
60
32
|
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
for (const report of reports) {
|
|
64
|
-
const sites = report.sites;
|
|
33
|
+
const sendEndSiteRender = async (report: Report) => {
|
|
34
|
+
const sites = report.sites;
|
|
65
35
|
|
|
66
|
-
|
|
67
|
-
|
|
36
|
+
for (const site of sites) {
|
|
37
|
+
const { siteId, ...body } = site;
|
|
38
|
+
infoLog(`Site (${siteId})`);
|
|
39
|
+
await endSiteRender(siteId, body);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
68
42
|
|
|
69
|
-
|
|
43
|
+
async function endRender() {
|
|
44
|
+
const { buildReportFileName } = await getRenderMetadataFromDB();
|
|
45
|
+
const { __sites } = await getRenderPathsFromDB();
|
|
70
46
|
|
|
71
|
-
|
|
72
|
-
|
|
47
|
+
await AuthService.login();
|
|
48
|
+
if (renderByDomains) {
|
|
49
|
+
const [domain] = process.argv.slice(2);
|
|
50
|
+
const { renderMode } = await getRenderMode(domain);
|
|
51
|
+
|
|
52
|
+
if (renderMode === "IDLE") {
|
|
53
|
+
infoLog(`Skipping build-end for domain ${domain} as it is marked as IDLE.`);
|
|
54
|
+
return;
|
|
73
55
|
}
|
|
74
|
-
};
|
|
75
56
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
57
|
+
const report = await getRenderReport({
|
|
58
|
+
domain,
|
|
59
|
+
exportsSiteDir: __sites,
|
|
60
|
+
buildReportFileName,
|
|
61
|
+
});
|
|
80
62
|
|
|
81
63
|
infoLog(`Sending ending call to ${domain} sites`);
|
|
82
64
|
|
|
83
|
-
for (const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
site.unpublishHashes = [...new Set(site.unpublishHashes)];
|
|
87
|
-
}
|
|
65
|
+
for (const site of report.sites) {
|
|
66
|
+
site.publishHashes = [...new Set(site.publishHashes)];
|
|
67
|
+
site.unpublishHashes = [...new Set(site.unpublishHashes)];
|
|
88
68
|
}
|
|
89
69
|
|
|
90
|
-
await sendEndSiteRender(
|
|
70
|
+
await sendEndSiteRender(report);
|
|
91
71
|
} else {
|
|
92
|
-
|
|
72
|
+
console.log("- LEGACY RENDER MODE -");
|
|
93
73
|
const domains = await getInstanceDomains();
|
|
94
74
|
for (const domain of domains) {
|
|
95
|
-
const
|
|
75
|
+
const { renderMode } = await getRenderMode(domain);
|
|
76
|
+
|
|
77
|
+
if (renderMode === "IDLE") {
|
|
78
|
+
infoLog(`Skipping build-end for domain ${domain} as it is marked as IDLE.`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const report = await getRenderReport({
|
|
83
|
+
domain,
|
|
84
|
+
exportsSiteDir: __sites,
|
|
85
|
+
buildReportFileName,
|
|
86
|
+
});
|
|
96
87
|
|
|
97
88
|
infoLog(`Sending ending call to ${domain} sites`);
|
|
98
89
|
|
|
99
|
-
|
|
90
|
+
for (const site of report.sites) {
|
|
91
|
+
site.publishHashes = [...new Set(site.publishHashes)];
|
|
92
|
+
site.unpublishHashes = [...new Set(site.unpublishHashes)];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
await sendEndSiteRender(report);
|
|
100
96
|
}
|
|
101
97
|
}
|
|
102
|
-
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async function main() {
|
|
101
|
+
await endRender();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
main().catch((err) => {
|
|
103
105
|
console.error("Error", err?.stdout?.toString() || err);
|
|
104
106
|
process.exit(1);
|
|
105
107
|
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import childProcess from "node:child_process";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
import { pathExists } from "../utils/folders";
|
|
5
|
+
import { getRenderPathsFromDB } from "../utils/render";
|
|
6
|
+
|
|
7
|
+
async function prepareAssetsDir() {
|
|
8
|
+
const [domain] = process.argv.slice(2);
|
|
9
|
+
|
|
10
|
+
const { __exports } = await getRenderPathsFromDB({ domain });
|
|
11
|
+
|
|
12
|
+
const assetsDir = path.join(__exports, "assets");
|
|
13
|
+
const domainAssetsDir = path.join(__exports, domain);
|
|
14
|
+
|
|
15
|
+
if (await pathExists(assetsDir)) {
|
|
16
|
+
childProcess.execSync(`rm -rf ${domainAssetsDir}`);
|
|
17
|
+
childProcess.execSync(`mv ${assetsDir} ${domainAssetsDir}`);
|
|
18
|
+
} else {
|
|
19
|
+
console.log("Assets directory not found");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async function main() {
|
|
24
|
+
await prepareAssetsDir();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
main().catch((err) => {
|
|
28
|
+
console.error("Error", err?.stdout?.toString() || err);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
});
|
|
@@ -1,46 +1,158 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { RenderDB } from "../types/render";
|
|
2
|
+
|
|
3
|
+
import fsp from "node:fs/promises";
|
|
2
4
|
import path from "node:path";
|
|
3
5
|
|
|
4
|
-
import {
|
|
6
|
+
import { version as griddoVersion } from "../../package.json";
|
|
7
|
+
import { AuthService } from "../services/auth";
|
|
8
|
+
import { readDB, writeDB } from "../services/db";
|
|
5
9
|
import { getInstanceDomains } from "../utils/domains";
|
|
6
|
-
import {
|
|
10
|
+
import { pathExists, removeDirs } from "../utils/folders";
|
|
11
|
+
import { resolveComponentsPath } from "../utils/instance";
|
|
12
|
+
import { showExporterVersion } from "../utils/loggin";
|
|
13
|
+
import { pkgDir } from "../utils/npm-deps/pkg-dir";
|
|
14
|
+
import { resolveDomainRenderMode } from "../utils/render";
|
|
7
15
|
import { getSitesToRender } from "../utils/sites";
|
|
8
16
|
|
|
9
|
-
|
|
10
|
-
|
|
17
|
+
async function getDomainsWithNumberOfPages(domains: Array<string>) {
|
|
18
|
+
const results = await Promise.all(
|
|
19
|
+
domains.map(async (domain) => {
|
|
20
|
+
// Get the sites to render for the domain
|
|
21
|
+
const { sitesToPublish, sitesToUnpublish } = await getSitesToRender(domain);
|
|
11
22
|
|
|
12
|
-
|
|
23
|
+
// Only count pages (offlinePending && publishPending) if sitesToPublish
|
|
24
|
+
// is not empty. Otherwise we set the domain has having 0 pages.
|
|
25
|
+
const pages: Array<number> = [];
|
|
13
26
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
if (sitesToPublish.length > 0) {
|
|
28
|
+
for (const site of sitesToPublish) {
|
|
29
|
+
// el site ya está publicado
|
|
30
|
+
if (site.isPublished && !site.shouldBeUpdated) {
|
|
31
|
+
const { pagesStatus } = site;
|
|
32
|
+
const { offlinePending, uploadPending } = pagesStatus;
|
|
33
|
+
const total = offlinePending.length + uploadPending.length;
|
|
34
|
+
pages.push(total);
|
|
35
|
+
}
|
|
36
|
+
// el site esta pendiente de publicar
|
|
37
|
+
if (site.isPublished && site.shouldBeUpdated) {
|
|
38
|
+
const { pagesStatus } = site;
|
|
39
|
+
const { offlinePending, uploadPending, active } = pagesStatus;
|
|
40
|
+
const total = offlinePending.length + uploadPending.length + active.length;
|
|
41
|
+
pages.push(total);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
} else if (sitesToUnpublish.length > 0) {
|
|
45
|
+
// si tiene sites para despublicar marcamos el dominio como que tiene 1 página
|
|
46
|
+
pages.push(1);
|
|
47
|
+
} else {
|
|
48
|
+
// si eldominio no tiene nada ni para publicar ni despublicar lomarcamos como 0
|
|
49
|
+
pages.push(0);
|
|
27
50
|
}
|
|
28
|
-
} else {
|
|
29
|
-
pages.push(0);
|
|
30
|
-
}
|
|
31
51
|
|
|
32
|
-
|
|
33
|
-
domainsInfo.push({ domain, totalPages });
|
|
34
|
-
}
|
|
52
|
+
const totalPages = pages.reduce((a, b) => a + b);
|
|
35
53
|
|
|
36
|
-
|
|
54
|
+
return { domain, totalPages };
|
|
55
|
+
}),
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
return results;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function getDomainsSortedByNumberOfPages(
|
|
62
|
+
domainsInfo: Array<{
|
|
63
|
+
domain: string;
|
|
64
|
+
totalPages: number;
|
|
65
|
+
}>,
|
|
66
|
+
) {
|
|
37
67
|
domainsInfo.sort((a, b) => a.totalPages - b.totalPages);
|
|
38
|
-
const domainSorted = domainsInfo.map(({ domain }) => domain);
|
|
39
68
|
|
|
40
|
-
|
|
69
|
+
return domainsInfo.map(({ domain }) => domain);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async function initRender() {
|
|
73
|
+
const root = (await pkgDir({ cwd: path.resolve(__dirname, "../../..") })) || "";
|
|
74
|
+
const cx = root;
|
|
75
|
+
const ssg = path.resolve((await pkgDir({ cwd: __dirname })) || "");
|
|
76
|
+
const cxCache = path.resolve(root, ".cx-cache");
|
|
77
|
+
const components = resolveComponentsPath();
|
|
78
|
+
const exportsDir = path.join(root, "exports/sites");
|
|
79
|
+
|
|
80
|
+
const data: RenderDB = {
|
|
81
|
+
proDomainPrefix: "pro-",
|
|
82
|
+
griddoVersion,
|
|
83
|
+
buildReportFileName: "build-report.json",
|
|
84
|
+
sortedDomains: [],
|
|
85
|
+
domains: {},
|
|
86
|
+
paths: {
|
|
87
|
+
components,
|
|
88
|
+
cx,
|
|
89
|
+
cxCache,
|
|
90
|
+
exportsDir,
|
|
91
|
+
root,
|
|
92
|
+
ssg,
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// create the main cache folder for cx if it doesn't exist.
|
|
97
|
+
if (!(await pathExists(cxCache))) {
|
|
98
|
+
await fsp.mkdir(cxCache, { recursive: true });
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
await writeDB(data);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async function prepareDomains() {
|
|
105
|
+
await AuthService.login();
|
|
106
|
+
|
|
107
|
+
const db = await readDB();
|
|
108
|
+
|
|
109
|
+
const __ssg = db.paths.ssg;
|
|
110
|
+
const domains = await getInstanceDomains();
|
|
111
|
+
const domainsWithNumberOfPages = await getDomainsWithNumberOfPages(domains);
|
|
112
|
+
const domainSorted = getDomainsSortedByNumberOfPages(domainsWithNumberOfPages);
|
|
113
|
+
|
|
114
|
+
// @deprecated use db.json (only for infra)
|
|
115
|
+
await fsp.writeFile(path.join(__ssg, "domains.json"), JSON.stringify(domainSorted));
|
|
116
|
+
await fsp.writeFile(path.join(__ssg, "domains.txt"), domainSorted.join(","));
|
|
117
|
+
|
|
118
|
+
db.sortedDomains = domainSorted;
|
|
119
|
+
db.domains = {};
|
|
120
|
+
|
|
121
|
+
for (const { domain, totalPages } of domainsWithNumberOfPages) {
|
|
122
|
+
const shouldBeRendered = totalPages > 0;
|
|
123
|
+
const { renderMode, reason } = await resolveDomainRenderMode({
|
|
124
|
+
domain,
|
|
125
|
+
shouldBeRendered,
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
db.domains[domain] = db.domains[domain] || {};
|
|
129
|
+
db.domains[domain].renderMode = renderMode;
|
|
130
|
+
db.domains[domain].shouldBeRendered = shouldBeRendered;
|
|
131
|
+
db.domains[domain].renderModeReason = reason;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
await writeDB(db);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
async function clean() {
|
|
138
|
+
const db = await readDB();
|
|
139
|
+
const { root: __root } = db.paths;
|
|
140
|
+
await removeDirs([path.join(__root, "apiCache")]);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Prepare domains to render.
|
|
145
|
+
* It creates a `domains.json` file with the sorted list of domains and writes a
|
|
146
|
+
* `RENDE-STATE.json` file to persist a state between all cx-infra commands.
|
|
147
|
+
*/
|
|
148
|
+
async function main() {
|
|
149
|
+
await showExporterVersion();
|
|
150
|
+
await initRender();
|
|
151
|
+
await prepareDomains();
|
|
152
|
+
await clean();
|
|
153
|
+
}
|
|
41
154
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
console.error(err);
|
|
155
|
+
main().catch((err) => {
|
|
156
|
+
console.error("Error", err?.stdout?.toString() || err);
|
|
45
157
|
process.exit(1);
|
|
46
158
|
});
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { RESET_RENDER } from "../constants/endpoints";
|
|
3
2
|
import { AuthService } from "../services/auth";
|
|
4
|
-
import {
|
|
3
|
+
import { post } from "../utils/api";
|
|
4
|
+
|
|
5
|
+
async function resetRender() {
|
|
6
|
+
await post({
|
|
7
|
+
endpoint: RESET_RENDER,
|
|
8
|
+
useApiCacheDir: false,
|
|
9
|
+
});
|
|
10
|
+
}
|
|
5
11
|
|
|
6
12
|
async function main() {
|
|
7
13
|
await AuthService.login();
|
|
8
14
|
await resetRender();
|
|
15
|
+
console.log(`The render status has been reset.`);
|
|
9
16
|
}
|
|
10
17
|
|
|
11
18
|
main().catch((err) => {
|
|
@@ -1,68 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { gatsbyRenderDomain } from "../adapters/gatsby";
|
|
2
|
+
import { AuthService } from "../services/auth";
|
|
3
|
+
import { brush } from "../utils/brush";
|
|
4
|
+
import { checkEnvironmentHealth } from "../utils/check-environment-health";
|
|
4
5
|
import { getInstanceDomains } from "../utils/domains";
|
|
5
|
-
import {
|
|
6
|
-
import { sendGriddoDefaultAlerts } from "../utils/render";
|
|
6
|
+
import { RenderError } from "../utils/errors";
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
const RENDER_BY_DOMAIN = process.env.GRIDDO_RENDER_BY_DOMAINS || "";
|
|
8
|
+
const renderByDomains = !!process.env.GRIDDO_RENDER_BY_DOMAINS;
|
|
10
9
|
|
|
11
10
|
async function startRender() {
|
|
12
11
|
try {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
console.log("USANDO EL .ENV");
|
|
17
|
-
showExporterVersion();
|
|
18
|
-
for (const domain of GRIDDO_RENDER_DOMAINS.split(",")) {
|
|
19
|
-
await renderDomainsWithGatsbyAdapter(domain);
|
|
20
|
-
}
|
|
21
|
-
await sendGriddoDefaultAlerts();
|
|
22
|
-
process.exit(0);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// This will render every domain opposed to the new logic of render each
|
|
26
|
-
// domain separately.
|
|
27
|
-
if (RENDER_BY_DOMAIN) {
|
|
28
|
-
const domain = process.argv.splice(2)[0];
|
|
29
|
-
|
|
30
|
-
if (!domain) {
|
|
31
|
-
console.log("Needs the domain name argument");
|
|
32
|
-
throw new RenderError();
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
showExporterVersion();
|
|
36
|
-
await renderDomainsWithGatsbyAdapter(domain);
|
|
37
|
-
await sendGriddoDefaultAlerts();
|
|
38
|
-
|
|
39
|
-
process.exit(0);
|
|
12
|
+
if (renderByDomains) {
|
|
13
|
+
const [domain] = process.argv.slice(2);
|
|
14
|
+
await gatsbyRenderDomain(domain);
|
|
40
15
|
} else {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
console.log("( Legacy Render Mode )\n");
|
|
44
|
-
|
|
16
|
+
console.log("- LEGACY RENDER MODE -");
|
|
45
17
|
const domains = await getInstanceDomains();
|
|
46
|
-
|
|
47
18
|
for (const domain of domains) {
|
|
48
|
-
await
|
|
49
|
-
await sendGriddoDefaultAlerts();
|
|
19
|
+
await gatsbyRenderDomain(domain);
|
|
50
20
|
}
|
|
51
|
-
process.exit(0);
|
|
52
21
|
}
|
|
22
|
+
|
|
23
|
+
return;
|
|
53
24
|
} catch (error) {
|
|
54
25
|
if (error instanceof RenderError) {
|
|
55
|
-
|
|
26
|
+
console.log(brush.red("GRIDDO_ERROR InternalCXError"));
|
|
56
27
|
process.exit(1);
|
|
57
28
|
}
|
|
58
29
|
|
|
59
|
-
|
|
30
|
+
console.log(brush.red("GRIDDO_ERROR UnknownError"));
|
|
60
31
|
console.error(error);
|
|
61
32
|
process.exit(1);
|
|
62
33
|
}
|
|
63
34
|
}
|
|
64
35
|
|
|
65
|
-
|
|
36
|
+
async function main() {
|
|
37
|
+
checkEnvironmentHealth();
|
|
38
|
+
await AuthService.login();
|
|
39
|
+
await startRender();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
main().catch((err) => {
|
|
66
43
|
console.error("Error", err?.stdout?.toString() || err);
|
|
67
44
|
process.exit(1);
|
|
68
45
|
});
|