@griddo/cx 11.7.12-rc.3 → 11.7.12

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.
Files changed (303) hide show
  1. package/README.md +226 -27
  2. package/build/adapters/gatsby/index.d.ts +4 -0
  3. package/build/adapters/gatsby/utils.d.ts +22 -0
  4. package/build/artifacts/index.d.ts +6 -0
  5. package/build/commands/end-render.d.ts +2 -0
  6. package/build/commands/move-assets.d.ts +1 -0
  7. package/build/commands/prepare-domains-render.d.ts +1 -0
  8. package/build/commands/reset-render.d.ts +2 -0
  9. package/build/commands/start-render.d.ts +2 -0
  10. package/build/commands/upload-search-content.d.ts +2 -0
  11. package/build/constants/endpoints.d.ts +19 -0
  12. package/build/constants/envs.d.ts +37 -0
  13. package/build/constants/index.d.ts +57 -0
  14. package/build/end-render.js +74 -0
  15. package/build/end-render.js.map +7 -0
  16. package/build/errors/errors-data.d.ts +22 -0
  17. package/build/errors/index.d.ts +15 -0
  18. package/build/index.d.ts +29 -0
  19. package/build/index.js +73 -0
  20. package/build/index.js.map +7 -0
  21. package/build/prepare-domains-render.js +73 -0
  22. package/build/prepare-domains-render.js.map +7 -0
  23. package/build/react/Favicon/index.d.ts +5 -0
  24. package/build/react/Favicon/utils.d.ts +9 -0
  25. package/build/react/GriddoIntegrations/index.d.ts +20 -0
  26. package/build/react/GriddoIntegrations/utils.d.ts +26 -0
  27. package/{react/index.tsx → build/react/index.d.ts} +0 -1
  28. package/build/react/index.js +3 -0
  29. package/build/registers/api.d.ts +9 -0
  30. package/build/registers/gatsby.d.ts +9 -0
  31. package/build/registers/index.d.ts +3 -0
  32. package/build/reset-render.js +74 -0
  33. package/build/reset-render.js.map +7 -0
  34. package/build/services/auth.d.ts +10 -0
  35. package/build/services/domains.d.ts +6 -0
  36. package/build/services/navigation.d.ts +50 -0
  37. package/build/services/reference-fields.d.ts +20 -0
  38. package/build/services/register.d.ts +36 -0
  39. package/build/services/robots.d.ts +19 -0
  40. package/build/services/settings.d.ts +4 -0
  41. package/build/services/sites.d.ts +29 -0
  42. package/build/services/store.d.ts +6 -0
  43. package/build/start-render.js +100 -0
  44. package/build/start-render.js.map +7 -0
  45. package/build/types/api.d.ts +142 -0
  46. package/build/types/global.d.ts +84 -0
  47. package/build/types/navigation.d.ts +28 -0
  48. package/build/types/pages.d.ts +144 -0
  49. package/build/types/sites.d.ts +57 -0
  50. package/build/types/templates.d.ts +8 -0
  51. package/build/upload-search-content.js +74 -0
  52. package/build/upload-search-content.js.map +7 -0
  53. package/build/utils/alerts.d.ts +3 -0
  54. package/build/utils/api.d.ts +23 -0
  55. package/build/utils/cache.d.ts +35 -0
  56. package/build/utils/core-utils.d.ts +107 -0
  57. package/build/utils/create-build-data.d.ts +8 -0
  58. package/build/utils/domains.d.ts +13 -0
  59. package/build/utils/folders.d.ts +53 -0
  60. package/build/utils/health-checks.d.ts +7 -0
  61. package/build/utils/images.d.ts +16 -0
  62. package/build/utils/instance.d.ts +21 -0
  63. package/build/utils/loggin.d.ts +51 -0
  64. package/build/utils/pages.d.ts +34 -0
  65. package/build/utils/render.d.ts +13 -0
  66. package/build/utils/searches.d.ts +15 -0
  67. package/build/utils/sites.d.ts +31 -0
  68. package/build/utils/store.d.ts +81 -0
  69. package/cx.config.d.ts +5 -0
  70. package/cx.config.js +36 -0
  71. package/exporter/adapters/gatsby/index.ts +153 -73
  72. package/exporter/adapters/gatsby/utils.ts +161 -0
  73. package/exporter/artifacts/README.md +34 -0
  74. package/exporter/artifacts/index.ts +33 -0
  75. package/exporter/build.sh +38 -4
  76. package/exporter/commands/end-render.ts +70 -72
  77. package/exporter/commands/move-assets.ts +11 -0
  78. package/exporter/commands/prepare-domains-render.ts +31 -143
  79. package/exporter/commands/reset-render.ts +3 -10
  80. package/exporter/commands/start-render.ts +45 -22
  81. package/exporter/commands/upload-search-content.ts +21 -194
  82. package/exporter/constants/endpoints.ts +1 -2
  83. package/exporter/constants/envs.ts +55 -57
  84. package/exporter/constants/index.ts +129 -0
  85. package/exporter/{constants/errors.ts → errors/errors-data.ts} +14 -24
  86. package/exporter/{utils/errors.ts → errors/index.ts} +9 -10
  87. package/exporter/index.ts +82 -0
  88. package/{react → exporter/react}/Favicon/index.tsx +7 -1
  89. package/{react → exporter/react}/GriddoIntegrations/index.tsx +22 -16
  90. package/{react → exporter/react}/GriddoIntegrations/utils.ts +9 -21
  91. package/exporter/react/index.tsx +11 -0
  92. package/exporter/registers/api.ts +14 -0
  93. package/exporter/registers/gatsby.ts +14 -0
  94. package/exporter/registers/index.ts +4 -0
  95. package/exporter/services/auth.ts +6 -7
  96. package/exporter/services/domains.ts +16 -0
  97. package/exporter/services/navigation.ts +10 -4
  98. package/exporter/services/reference-fields.ts +24 -9
  99. package/exporter/services/register.ts +113 -0
  100. package/exporter/services/robots.ts +16 -9
  101. package/exporter/services/settings.ts +17 -0
  102. package/exporter/services/sites.ts +24 -36
  103. package/exporter/services/store.ts +96 -107
  104. package/exporter/types/api.ts +28 -27
  105. package/exporter/types/global.ts +11 -8
  106. package/exporter/types/navigation.ts +1 -1
  107. package/exporter/types/pages.ts +3 -2
  108. package/exporter/types/sites.ts +2 -1
  109. package/exporter/utils/alerts.ts +29 -0
  110. package/exporter/utils/api.ts +75 -55
  111. package/exporter/utils/cache.ts +62 -37
  112. package/exporter/utils/core-utils.ts +272 -133
  113. package/exporter/utils/create-build-data.ts +17 -0
  114. package/exporter/utils/domains.ts +7 -10
  115. package/exporter/utils/folders.ts +98 -163
  116. package/exporter/utils/health-checks.ts +64 -0
  117. package/exporter/utils/images.ts +6 -1
  118. package/exporter/utils/instance.ts +13 -9
  119. package/exporter/utils/loggin.ts +91 -44
  120. package/exporter/utils/pages.ts +88 -23
  121. package/exporter/utils/render.ts +48 -180
  122. package/exporter/utils/searches.ts +156 -0
  123. package/exporter/utils/sites.ts +197 -19
  124. package/exporter/utils/store.ts +180 -87
  125. package/gatsby-browser.tsx +58 -41
  126. package/gatsby-config.ts +17 -10
  127. package/gatsby-node.ts +78 -17
  128. package/gatsby-ssr.tsx +1 -2
  129. package/package.json +86 -36
  130. package/src/README.md +7 -0
  131. package/src/components/Head.tsx +46 -13
  132. package/src/components/template.tsx +30 -8
  133. package/src/gatsby-node-utils.ts +2 -73
  134. package/src/html.tsx +11 -2
  135. package/src/types.ts +5 -5
  136. package/start-render.js +7 -0
  137. package/tsconfig.json +3 -5
  138. package/build/adapters/gatsby/actions/clean.js +0 -10
  139. package/build/adapters/gatsby/actions/clean.js.map +0 -1
  140. package/build/adapters/gatsby/actions/close.js +0 -12
  141. package/build/adapters/gatsby/actions/close.js.map +0 -1
  142. package/build/adapters/gatsby/actions/data.js +0 -18
  143. package/build/adapters/gatsby/actions/data.js.map +0 -1
  144. package/build/adapters/gatsby/actions/healthCheck.js +0 -10
  145. package/build/adapters/gatsby/actions/healthCheck.js.map +0 -1
  146. package/build/adapters/gatsby/actions/init.js +0 -22
  147. package/build/adapters/gatsby/actions/init.js.map +0 -1
  148. package/build/adapters/gatsby/actions/logs.js +0 -11
  149. package/build/adapters/gatsby/actions/logs.js.map +0 -1
  150. package/build/adapters/gatsby/actions/meta.js +0 -13
  151. package/build/adapters/gatsby/actions/meta.js.map +0 -1
  152. package/build/adapters/gatsby/actions/prepare.js +0 -9
  153. package/build/adapters/gatsby/actions/prepare.js.map +0 -1
  154. package/build/adapters/gatsby/actions/relocation.js +0 -15
  155. package/build/adapters/gatsby/actions/relocation.js.map +0 -1
  156. package/build/adapters/gatsby/actions/restore.js +0 -26
  157. package/build/adapters/gatsby/actions/restore.js.map +0 -1
  158. package/build/adapters/gatsby/actions/ssg.js +0 -9
  159. package/build/adapters/gatsby/actions/ssg.js.map +0 -1
  160. package/build/adapters/gatsby/actions/sync.js +0 -51
  161. package/build/adapters/gatsby/actions/sync.js.map +0 -1
  162. package/build/adapters/gatsby/index.js +0 -78
  163. package/build/adapters/gatsby/index.js.map +0 -1
  164. package/build/adapters/gatsby/shared/artifacts.js +0 -20
  165. package/build/adapters/gatsby/shared/artifacts.js.map +0 -1
  166. package/build/adapters/gatsby/shared/context.js +0 -31
  167. package/build/adapters/gatsby/shared/context.js.map +0 -1
  168. package/build/adapters/gatsby/shared/diff-assets.js +0 -101
  169. package/build/adapters/gatsby/shared/diff-assets.js.map +0 -1
  170. package/build/adapters/gatsby/shared/extract-assets.js +0 -58
  171. package/build/adapters/gatsby/shared/extract-assets.js.map +0 -1
  172. package/build/adapters/gatsby/shared/gatsby-build.js +0 -55
  173. package/build/adapters/gatsby/shared/gatsby-build.js.map +0 -1
  174. package/build/adapters/gatsby/shared/sync-render.js +0 -210
  175. package/build/adapters/gatsby/shared/sync-render.js.map +0 -1
  176. package/build/adapters/gatsby/shared/types.js +0 -3
  177. package/build/adapters/gatsby/shared/types.js.map +0 -1
  178. package/build/commands/end-render.js +0 -87
  179. package/build/commands/end-render.js.map +0 -1
  180. package/build/commands/prepare-assets-directory.js +0 -30
  181. package/build/commands/prepare-assets-directory.js.map +0 -1
  182. package/build/commands/prepare-domains-render.js +0 -133
  183. package/build/commands/prepare-domains-render.js.map +0 -1
  184. package/build/commands/reset-render.js +0 -21
  185. package/build/commands/reset-render.js.map +0 -1
  186. package/build/commands/start-render.js +0 -44
  187. package/build/commands/start-render.js.map +0 -1
  188. package/build/commands/upload-search-content.js +0 -180
  189. package/build/commands/upload-search-content.js.map +0 -1
  190. package/build/constants/endpoints.js +0 -43
  191. package/build/constants/endpoints.js.map +0 -1
  192. package/build/constants/envs.js +0 -68
  193. package/build/constants/envs.js.map +0 -1
  194. package/build/constants/errors.js +0 -81
  195. package/build/constants/errors.js.map +0 -1
  196. package/build/services/auth.js +0 -40
  197. package/build/services/auth.js.map +0 -1
  198. package/build/services/db-class.js +0 -49
  199. package/build/services/db-class.js.map +0 -1
  200. package/build/services/db.js +0 -34
  201. package/build/services/db.js.map +0 -1
  202. package/build/services/navigation.js +0 -96
  203. package/build/services/navigation.js.map +0 -1
  204. package/build/services/reference-fields.js +0 -131
  205. package/build/services/reference-fields.js.map +0 -1
  206. package/build/services/robots.js +0 -60
  207. package/build/services/robots.js.map +0 -1
  208. package/build/services/sites.js +0 -110
  209. package/build/services/sites.js.map +0 -1
  210. package/build/services/store.js +0 -257
  211. package/build/services/store.js.map +0 -1
  212. package/build/types/api.js +0 -3
  213. package/build/types/api.js.map +0 -1
  214. package/build/types/global.js +0 -3
  215. package/build/types/global.js.map +0 -1
  216. package/build/types/navigation.js +0 -3
  217. package/build/types/navigation.js.map +0 -1
  218. package/build/types/pages.js +0 -3
  219. package/build/types/pages.js.map +0 -1
  220. package/build/types/render.js +0 -10
  221. package/build/types/render.js.map +0 -1
  222. package/build/types/sites.js +0 -3
  223. package/build/types/sites.js.map +0 -1
  224. package/build/types/templates.js +0 -3
  225. package/build/types/templates.js.map +0 -1
  226. package/build/utils/api.js +0 -165
  227. package/build/utils/api.js.map +0 -1
  228. package/build/utils/artifacts.js +0 -38
  229. package/build/utils/artifacts.js.map +0 -1
  230. package/build/utils/brush.js +0 -30
  231. package/build/utils/brush.js.map +0 -1
  232. package/build/utils/cache.js +0 -106
  233. package/build/utils/cache.js.map +0 -1
  234. package/build/utils/check-environment-health.js +0 -73
  235. package/build/utils/check-environment-health.js.map +0 -1
  236. package/build/utils/core-utils.js +0 -270
  237. package/build/utils/core-utils.js.map +0 -1
  238. package/build/utils/domains.js +0 -37
  239. package/build/utils/domains.js.map +0 -1
  240. package/build/utils/errors.js +0 -30
  241. package/build/utils/errors.js.map +0 -1
  242. package/build/utils/folders.js +0 -341
  243. package/build/utils/folders.js.map +0 -1
  244. package/build/utils/images.js +0 -45
  245. package/build/utils/images.js.map +0 -1
  246. package/build/utils/instance.js +0 -66
  247. package/build/utils/instance.js.map +0 -1
  248. package/build/utils/loggin.js +0 -119
  249. package/build/utils/loggin.js.map +0 -1
  250. package/build/utils/npm-deps/find-up-simple.js +0 -75
  251. package/build/utils/npm-deps/find-up-simple.js.map +0 -1
  252. package/build/utils/npm-deps/pkg-dir.js +0 -20
  253. package/build/utils/npm-deps/pkg-dir.js.map +0 -1
  254. package/build/utils/npm-deps/xml-parser.js +0 -49
  255. package/build/utils/npm-deps/xml-parser.js.map +0 -1
  256. package/build/utils/pages.js +0 -359
  257. package/build/utils/pages.js.map +0 -1
  258. package/build/utils/render.js +0 -168
  259. package/build/utils/render.js.map +0 -1
  260. package/build/utils/sitemaps.js +0 -110
  261. package/build/utils/sitemaps.js.map +0 -1
  262. package/build/utils/sites.js +0 -105
  263. package/build/utils/sites.js.map +0 -1
  264. package/build/utils/store.js +0 -193
  265. package/build/utils/store.js.map +0 -1
  266. package/cli.mjs +0 -136
  267. package/exporter/adapters/gatsby/actions/clean.ts +0 -14
  268. package/exporter/adapters/gatsby/actions/close.ts +0 -17
  269. package/exporter/adapters/gatsby/actions/data.ts +0 -25
  270. package/exporter/adapters/gatsby/actions/healthCheck.ts +0 -10
  271. package/exporter/adapters/gatsby/actions/init.ts +0 -26
  272. package/exporter/adapters/gatsby/actions/logs.ts +0 -12
  273. package/exporter/adapters/gatsby/actions/meta.ts +0 -16
  274. package/exporter/adapters/gatsby/actions/prepare.ts +0 -9
  275. package/exporter/adapters/gatsby/actions/relocation.ts +0 -15
  276. package/exporter/adapters/gatsby/actions/restore.ts +0 -36
  277. package/exporter/adapters/gatsby/actions/ssg.ts +0 -12
  278. package/exporter/adapters/gatsby/actions/sync.ts +0 -71
  279. package/exporter/adapters/gatsby/shared/artifacts.ts +0 -16
  280. package/exporter/adapters/gatsby/shared/context.ts +0 -50
  281. package/exporter/adapters/gatsby/shared/diff-assets.ts +0 -113
  282. package/exporter/adapters/gatsby/shared/extract-assets.ts +0 -61
  283. package/exporter/adapters/gatsby/shared/gatsby-build.ts +0 -58
  284. package/exporter/adapters/gatsby/shared/sync-render.ts +0 -276
  285. package/exporter/adapters/gatsby/shared/types.ts +0 -35
  286. package/exporter/build-esbuild.noop +0 -42
  287. package/exporter/commands/prepare-assets-directory.ts +0 -30
  288. package/exporter/services/db-class.ts +0 -54
  289. package/exporter/services/db.ts +0 -32
  290. package/exporter/types/render.ts +0 -59
  291. package/exporter/utils/artifacts.ts +0 -38
  292. package/exporter/utils/brush.ts +0 -34
  293. package/exporter/utils/check-environment-health.ts +0 -84
  294. package/exporter/utils/npm-deps/find-up-simple.ts +0 -100
  295. package/exporter/utils/npm-deps/pkg-dir.ts +0 -17
  296. package/exporter/utils/npm-deps/xml-parser.ts +0 -57
  297. package/exporter/utils/sitemaps.ts +0 -129
  298. package/plugins/gatsby-plugin-svgr-loader/gatsby-node.js +0 -55
  299. package/plugins/gatsby-plugin-svgr-loader/package.json +0 -8
  300. package/react/DynamicScript/index.tsx +0 -33
  301. package/tsconfig.commands.json +0 -36
  302. package/tsconfig.exporter.json +0 -19
  303. /package/{react → exporter/react}/Favicon/utils.ts +0 -0
@@ -1,107 +1,105 @@
1
- import type { Report } from "../types/render";
1
+ #!/usr/bin/env node
2
2
 
3
- import fsp from "node:fs/promises";
3
+ import fs from "node:fs";
4
4
  import path from "node:path";
5
5
 
6
- import { ArtifactError } from "../constants/errors";
6
+ import pkgDir from "pkg-dir";
7
+
7
8
  import { AuthService } from "../services/auth";
8
9
  import { endSiteRender } from "../services/sites";
10
+ import { getConfig } from "../utils/core-utils";
9
11
  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";
14
13
 
15
- const renderByDomains = !!process.env.GRIDDO_RENDER_BY_DOMAINS;
14
+ const RENDER_BY_DOMAIN = process.env.GRIDDO_RENDER_BY_DOMAINS || "";
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();
16
42
 
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);
43
+ const buildReportFile = path.resolve(
44
+ exportArchiveBasePath,
45
+ domain,
46
+ "dist",
47
+ buildReportFileName,
48
+ );
24
49
 
25
- if (!(await pathExists(buildReportFile))) {
26
- infoLog(`Build report file "${buildReportFile}" not found.`);
27
- throwError(ArtifactError);
50
+ if (!fs.existsSync(buildReportFile)) {
51
+ console.info(`Build report file "${buildReportFile}" not found.`);
28
52
  }
29
53
 
30
- return JSON.parse(await fsp.readFile(buildReportFile, "utf-8")) as Report;
31
- }
54
+ const buildReport = JSON.parse(fs.readFileSync(buildReportFile, "utf-8"));
32
55
 
33
- const sendEndSiteRender = async (report: Report) => {
34
- const sites = report.sites;
56
+ reports.push(buildReport);
35
57
 
36
- for (const site of sites) {
37
- const { siteId, ...body } = site;
38
- infoLog(`Site (${siteId})`);
39
- await endSiteRender(siteId, body);
40
- }
41
- };
58
+ return reports;
59
+ }
42
60
 
43
- async function endRender() {
44
- const { buildReportFileName } = await getRenderMetadataFromDB();
45
- const { __sites } = await getRenderPathsFromDB();
61
+ (async () => {
62
+ const sendEndSiteRender = async (reports: Array<Report>) => {
63
+ for (const report of reports) {
64
+ const sites = report.sites;
46
65
 
47
- await AuthService.login();
48
- if (renderByDomains) {
49
- const [domain] = process.argv.slice(2);
50
- const { renderMode } = await getRenderMode(domain);
66
+ for (const site of sites) {
67
+ const { siteId, ...body } = site;
51
68
 
52
- if (renderMode === "IDLE") {
53
- infoLog(`Skipping build-end for domain ${domain} as it is marked as IDLE.`);
54
- return;
69
+ console.info(`Site (${siteId})`);
70
+
71
+ await endSiteRender(siteId, body);
72
+ }
55
73
  }
74
+ };
56
75
 
57
- const report = await getRenderReport({
58
- domain,
59
- exportsSiteDir: __sites,
60
- buildReportFileName,
61
- });
76
+ if (RENDER_BY_DOMAIN) {
77
+ await AuthService.login();
78
+ const domain = process.argv.splice(2)[0];
79
+ const reports = getDomainRenderReport(domain);
62
80
 
63
81
  infoLog(`Sending ending call to ${domain} sites`);
64
82
 
65
- for (const site of report.sites) {
66
- site.publishHashes = [...new Set(site.publishHashes)];
67
- site.unpublishHashes = [...new Set(site.unpublishHashes)];
83
+ for (const report of reports) {
84
+ for (const site of report.sites) {
85
+ site.publishHashes = [...new Set(site.publishHashes)];
86
+ site.unpublishHashes = [...new Set(site.unpublishHashes)];
87
+ }
68
88
  }
69
89
 
70
- await sendEndSiteRender(report);
90
+ await sendEndSiteRender(reports);
71
91
  } else {
72
- console.log("- LEGACY RENDER MODE -");
92
+ // Legacy render
73
93
  const domains = await getInstanceDomains();
74
94
  for (const domain of domains) {
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
- });
95
+ const reports = getDomainRenderReport(domain);
87
96
 
88
97
  infoLog(`Sending ending call to ${domain} sites`);
89
98
 
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);
99
+ await sendEndSiteRender(reports);
96
100
  }
97
101
  }
98
- }
99
-
100
- async function main() {
101
- await endRender();
102
- }
103
-
104
- main().catch((err) => {
102
+ })().catch((err) => {
105
103
  console.error("Error", err?.stdout?.toString() || err);
106
104
  process.exit(1);
107
105
  });
@@ -0,0 +1,11 @@
1
+ import { execSync } from "node:child_process";
2
+ import path from "node:path";
3
+
4
+ const domainName = "pro-griddo";
5
+ const domainPath = path.resolve(
6
+ __dirname,
7
+ `../../../exports/sites/${domainName}`,
8
+ );
9
+
10
+ execSync(`mkdir -p ${domainPath}/assets/${domainName}`);
11
+ execSync(`cp -R ${domainPath}/assets/* ${domainPath}/assets/${domainName}`);
@@ -1,158 +1,46 @@
1
- import type { RenderDB } from "../types/render";
2
-
3
- import fsp from "node:fs/promises";
1
+ import fs from "node:fs";
4
2
  import path from "node:path";
5
3
 
6
- import { version as griddoVersion } from "../../package.json";
7
- import { AuthService } from "../services/auth";
8
- import { readDB, writeDB } from "../services/db";
4
+ import { getConfig } from "../utils/core-utils";
9
5
  import { getInstanceDomains } from "../utils/domains";
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";
6
+ import { infoLog, successLog } from "../utils/loggin";
15
7
  import { getSitesToRender } from "../utils/sites";
16
8
 
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);
22
-
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> = [];
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);
50
- }
51
-
52
- const totalPages = pages.reduce((a, b) => a + b);
53
-
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
- ) {
67
- domainsInfo.sort((a, b) => a.totalPages - b.totalPages);
68
-
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");
9
+ (async () => {
10
+ infoLog("Checking domains size");
79
11
 
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
- };
12
+ const { __cx } = getConfig().paths();
95
13
 
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
14
  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
- });
15
+ const domainsInfo = [];
16
+ const domainsFilePath = path.join(__cx, "domains.json");
17
+
18
+ for (const domain of domains) {
19
+ const { sitesToPublish } = await getSitesToRender(domain);
20
+
21
+ // Only count pages (changedPages) if sitesToPublish is not empty.
22
+ // Otherwise we set the domain has having 0 pages.
23
+ const pages = [];
24
+ if (sitesToPublish.length > 0) {
25
+ for (const site of sitesToPublish) {
26
+ pages.push(site.changedPages.length);
27
+ }
28
+ } else {
29
+ pages.push(0);
30
+ }
127
31
 
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;
32
+ const totalPages = pages.reduce((a, b) => a + b);
33
+ domainsInfo.push({ domain, totalPages });
132
34
  }
133
35
 
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
- }
36
+ // sort domains, smaller first
37
+ domainsInfo.sort((a, b) => a.totalPages - b.totalPages);
38
+ const domainSorted = domainsInfo.map(({ domain }) => domain);
142
39
 
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
- }
40
+ fs.writeFileSync(domainsFilePath, JSON.stringify(domainSorted));
154
41
 
155
- main().catch((err) => {
156
- console.error("Error", err?.stdout?.toString() || err);
42
+ successLog(`Checking domains size`);
43
+ })().catch((err) => {
44
+ console.error(err);
157
45
  process.exit(1);
158
46
  });
@@ -1,18 +1,11 @@
1
- import { RESET_RENDER } from "../constants/endpoints";
2
- import { AuthService } from "../services/auth";
3
- import { post } from "../utils/api";
1
+ #!/usr/bin/env node
4
2
 
5
- async function resetRender() {
6
- await post({
7
- endpoint: RESET_RENDER,
8
- useApiCacheDir: false,
9
- });
10
- }
3
+ import { AuthService } from "../services/auth";
4
+ import { resetRender } from "../services/settings";
11
5
 
12
6
  async function main() {
13
7
  await AuthService.login();
14
8
  await resetRender();
15
- console.log(`The render status has been reset.`);
16
9
  }
17
10
 
18
11
  main().catch((err) => {
@@ -1,45 +1,68 @@
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";
1
+ #!/usr/bin/env node
2
+ import { renderDomainsWithGatsbyAdapter } from "../adapters/gatsby";
3
+ import { RenderError } from "../errors";
5
4
  import { getInstanceDomains } from "../utils/domains";
6
- import { RenderError } from "../utils/errors";
5
+ import { errorLabelLog, showExporterVersion } from "../utils/loggin";
6
+ import { sendGriddoDefaultAlerts } from "../utils/render";
7
7
 
8
- const renderByDomains = !!process.env.GRIDDO_RENDER_BY_DOMAINS;
8
+ const GRIDDO_RENDER_DOMAINS = process.env.GRIDDO_RENDER_DOMAINS || "";
9
+ const RENDER_BY_DOMAIN = process.env.GRIDDO_RENDER_BY_DOMAINS || "";
9
10
 
10
11
  async function startRender() {
11
12
  try {
12
- if (renderByDomains) {
13
- const [domain] = process.argv.slice(2);
14
- await gatsbyRenderDomain(domain);
13
+ // DOMAINS
14
+ // This block is just for the local instance renders.
15
+ if (GRIDDO_RENDER_DOMAINS) {
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);
15
40
  } else {
16
- console.log("- LEGACY RENDER MODE -");
41
+ showExporterVersion();
42
+
43
+ console.log("( Legacy Render Mode )\n");
44
+
17
45
  const domains = await getInstanceDomains();
46
+
18
47
  for (const domain of domains) {
19
- await gatsbyRenderDomain(domain);
48
+ await renderDomainsWithGatsbyAdapter(domain);
49
+ await sendGriddoDefaultAlerts();
20
50
  }
51
+ process.exit(0);
21
52
  }
22
-
23
- return;
24
53
  } catch (error) {
25
54
  if (error instanceof RenderError) {
26
- console.log(brush.red("GRIDDO_ERROR InternalCXError"));
55
+ errorLabelLog("GRIDDO_ERROR InternalCXError");
27
56
  process.exit(1);
28
57
  }
29
58
 
30
- console.log(brush.red("GRIDDO_ERROR UnknownError"));
59
+ errorLabelLog("GRIDDO_ERROR UnknownError");
31
60
  console.error(error);
32
61
  process.exit(1);
33
62
  }
34
63
  }
35
64
 
36
- async function main() {
37
- checkEnvironmentHealth();
38
- await AuthService.login();
39
- await startRender();
40
- }
41
-
42
- main().catch((err) => {
65
+ startRender().catch((err) => {
43
66
  console.error("Error", err?.stdout?.toString() || err);
44
67
  process.exit(1);
45
68
  });