@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
package/cli.mjs DELETED
@@ -1,136 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { execSync } from "node:child_process";
4
- import { dirname } from "node:path";
5
- import { fileURLToPath } from "node:url";
6
-
7
- const __dirname = dirname(fileURLToPath(import.meta.url));
8
-
9
- export const AVAILABLE_COMMANDS = [
10
- {
11
- name: "prepare-domains-render",
12
- description: "Prepare domains for rendering",
13
- requiresDomain: false,
14
- script: "prepare-domains-render",
15
- },
16
- {
17
- name: "prepare-assets-directory",
18
- description: "Prepare assets directory (internal local only)",
19
- requiresDomain: true,
20
- script: "prepare-assets-directory",
21
- },
22
- {
23
- name: "start-render",
24
- description: "Start rendering for a domain",
25
- requiresDomain: true,
26
- script: "start-render",
27
- },
28
- {
29
- name: "end-render",
30
- description: "End rendering for a domain",
31
- requiresDomain: true,
32
- script: "end-render",
33
- },
34
- {
35
- name: "upload-search-content",
36
- description: "Upload search content for a domain",
37
- requiresDomain: false,
38
- script: "upload-search-content",
39
- },
40
- {
41
- name: "reset-render",
42
- description: "Reset render state",
43
- requiresDomain: false,
44
- script: "reset-render",
45
- },
46
- ];
47
-
48
- function showHelp() {
49
- console.log("Griddo CX CLI - Available commands:\n");
50
-
51
- AVAILABLE_COMMANDS.forEach((cmd) => {
52
- const domainArg = cmd.requiresDomain ? " <domain>" : "";
53
- console.log(` ${cmd.name}${domainArg} - ${cmd.description}`);
54
- });
55
-
56
- console.log("\nUsage:");
57
- console.log(" node exporter/commands/cli.mjs <command> [domain]");
58
- console.log(" node exporter/commands/cli.mjs --help");
59
- console.log("\nExamples:");
60
- console.log(" node exporter/commands/cli.mjs start-render mydomain.com");
61
- console.log(" node exporter/commands/cli.mjs get-design-system");
62
- console.log(" node exporter/commands/cli.mjs --help");
63
- }
64
-
65
- function findCommand(commandName) {
66
- return AVAILABLE_COMMANDS.find((cmd) => cmd.name === commandName);
67
- }
68
-
69
- function validateCommand(commandName, domain) {
70
- const command = findCommand(commandName);
71
-
72
- if (!command) {
73
- console.error(`Error: Unknown command '${commandName}'`);
74
- console.error("Use 'node exporter/commands/cli.mjs --help' to see available commands");
75
- process.exit(1);
76
- }
77
-
78
- if (command.requiresDomain && !domain) {
79
- console.error(`Error: Command '${commandName}' requires a domain argument`);
80
- console.error(`Usage: node exporter/commands/cli.mjs ${commandName} <domain>`);
81
- process.exit(1);
82
- }
83
-
84
- if (!command.requiresDomain && domain) {
85
- console.warn(
86
- `Warning: Command '${commandName}' doesn't require a domain, ignoring '${domain}'`,
87
- );
88
- }
89
-
90
- return { command, domain: command.requiresDomain ? domain : undefined };
91
- }
92
-
93
- function executeCommand(command, domain) {
94
- try {
95
- const scriptPath = `${__dirname}/build/commands/${command.script}`;
96
- const env = { ...process.env };
97
-
98
- if (domain) {
99
- execSync(`node ${scriptPath} ${domain}`, {
100
- stdio: "inherit",
101
- env,
102
- cwd: process.cwd(),
103
- });
104
- } else {
105
- execSync(`node ${scriptPath}`, {
106
- stdio: "inherit",
107
- env,
108
- cwd: process.cwd(),
109
- });
110
- }
111
- } catch (_error) {
112
- console.error(`Error executing command ${command.name}`);
113
- process.exit(1);
114
- }
115
- }
116
-
117
- function main() {
118
- const args = process.argv.slice(2);
119
-
120
- // Show help if no arguments or --help flag
121
- if (args.length === 0 || args.includes("--help") || args.includes("-h")) {
122
- showHelp();
123
- return;
124
- }
125
-
126
- const commandName = args[0];
127
- const domain = args[1];
128
-
129
- // Validate command and arguments
130
- const { command, domain: validatedDomain } = validateCommand(commandName, domain);
131
-
132
- // Execute the command
133
- executeCommand(command, validatedDomain);
134
- }
135
-
136
- main();
@@ -1,14 +0,0 @@
1
- import type { RenderContext } from "../shared/context";
2
- import type { SSG } from "../shared/types";
3
-
4
- import { removeDirs } from "../../../utils/folders";
5
-
6
- export async function cleanAction(context: RenderContext<SSG>) {
7
- const {
8
- cxArtifacts,
9
- ssg: { ssgArtifacts },
10
- } = context;
11
-
12
- await removeDirs(cxArtifacts.disposables);
13
- await removeDirs(ssgArtifacts.disposables);
14
- }
@@ -1,17 +0,0 @@
1
- import type { RenderContext } from "../shared/context";
2
- import type { SSG } from "../shared/types";
3
-
4
- import { removeDirs } from "../../../utils/folders";
5
- import { updateCommitFile } from "../../../utils/render";
6
-
7
- export async function closeAction(context: RenderContext<SSG>) {
8
- const {
9
- cxArtifacts,
10
- ssg: { ssgArtifacts },
11
- paths: { __cache },
12
- } = context;
13
-
14
- await removeDirs(cxArtifacts.disposables);
15
- await removeDirs(ssgArtifacts.disposables);
16
- await updateCommitFile({ basePath: __cache });
17
- }
@@ -1,25 +0,0 @@
1
- import type { RenderContext } from "../shared/context";
2
-
3
- import { createStore } from "../../../services/store";
4
- import { createAPICacheDir } from "../../../utils/cache";
5
-
6
- export async function dataAction(context: RenderContext) {
7
- const {
8
- domain,
9
- renderMode,
10
- renderMetadata: { griddoVersion },
11
- paths: { __root },
12
- } = context;
13
-
14
- await createAPICacheDir({ basePath: __root });
15
-
16
- const { pagesToCreate, pagesToDelete } = await createStore({
17
- domain,
18
- renderMode,
19
- griddoVersion,
20
- basePath: __root,
21
- });
22
-
23
- context.pagesToCreate = pagesToCreate;
24
- context.pagesToDelete = pagesToDelete;
25
- }
@@ -1,10 +0,0 @@
1
- import type { RenderContext } from "../shared/context";
2
-
3
- import { assertRenderIsValid, markRenderAsCompleted } from "../../../utils/render";
4
-
5
- export async function healthCheckAction(context: RenderContext) {
6
- const { domain } = context;
7
-
8
- await assertRenderIsValid(domain);
9
- await markRenderAsCompleted(domain);
10
- }
@@ -1,26 +0,0 @@
1
- import type { RenderContext } from "../shared/context";
2
-
3
- import fsp from "node:fs/promises";
4
- import path from "node:path";
5
-
6
- import { infoLog } from "../../../utils/loggin";
7
- import { markRenderAsStarted } from "../../../utils/render";
8
-
9
- export async function initAction(context: RenderContext) {
10
- const {
11
- domain,
12
- paths: { __root, __cache, __exports },
13
- renderMode,
14
- } = context;
15
-
16
- if (renderMode === "FROM_SCRATCH") {
17
- infoLog("Removing old files...\n");
18
-
19
- await fsp.rm(__cache, { force: true, recursive: true });
20
- await fsp.rm(path.join(__exports, "dist"), { force: true, recursive: true });
21
- await fsp.rm(path.join(__exports, "assets"), { force: true, recursive: true });
22
- await fsp.rm(path.join(__exports, domain), { force: true, recursive: true }); // only clocal
23
- }
24
-
25
- await markRenderAsStarted({ basePath: __root, domain });
26
- }
@@ -1,12 +0,0 @@
1
- import type { RenderContext } from "../shared/context";
2
- import type { SSG } from "../shared/types";
3
-
4
- import { saveDetailRenderLog } from "../../../utils/core-utils";
5
-
6
- export async function logsAction(context: RenderContext<SSG>) {
7
- const { domain } = context;
8
-
9
- if (process.env.GRIDDO_BUILD_LOGS) {
10
- await saveDetailRenderLog(domain);
11
- }
12
- }
@@ -1,16 +0,0 @@
1
- import type { RenderContext } from "../shared/context";
2
-
3
- import { RobotsService } from "../../../services/robots";
4
- import { generateBuildReport } from "../../../utils/render";
5
- import { generateSitemaps } from "../../../utils/sitemaps";
6
-
7
- export async function metaAction(context: RenderContext) {
8
- const {
9
- domain,
10
- paths: { __root },
11
- } = context;
12
-
13
- await generateBuildReport(domain);
14
- await generateSitemaps(domain);
15
- await RobotsService.writeFiles(domain);
16
- }
@@ -1,9 +0,0 @@
1
- import type { RenderContext } from "../shared/context";
2
-
3
- import { createDirs } from "../../../utils/folders";
4
-
5
- export async function prepareAction(context: RenderContext) {
6
- const { cxArtifacts } = context;
7
-
8
- await createDirs(cxArtifacts.initials);
9
- }
@@ -1,15 +0,0 @@
1
- import type { RenderContext } from "../shared/context";
2
-
3
- import fsp from "node:fs/promises";
4
- import path from "node:path";
5
-
6
- export async function relocationAction(context: RenderContext) {
7
- const {
8
- paths: { __root, __ssg },
9
- } = context;
10
-
11
- const src = path.join(__ssg, "public");
12
- const dst = path.join(__root, "dist");
13
-
14
- await fsp.rename(src, dst);
15
- }
@@ -1,36 +0,0 @@
1
- import type { RenderContext } from "../shared/context";
2
- import type { SSG } from "../shared/types";
3
-
4
- import path from "node:path";
5
-
6
- import { RENDER_MODE } from "../../../types/render";
7
- import { copyDirs, moveDirs, removeDirs, renamePath } from "../../../utils/folders";
8
-
9
- export async function restoreAction(context: RenderContext<SSG>) {
10
- const {
11
- renderMode,
12
- ssg: { ssgArtifacts },
13
- cxArtifacts,
14
- paths: { __components, __root, __cache, __exports, __ssg },
15
- } = context;
16
-
17
- await copyDirs(__components, __ssg, ["static"]);
18
-
19
- if (renderMode === RENDER_MODE.FROM_SCRATCH) {
20
- // NO RESTAURAMOS NADA!
21
- // De hecho hay que borrar los cacheables
22
- await removeDirs(
23
- cxArtifacts.cacheables.map((artifactName) => path.join(__cache, artifactName)),
24
- );
25
- await removeDirs(
26
- ssgArtifacts.cacheables.map((artifactName) => path.join(__cache, artifactName)),
27
- );
28
- }
29
-
30
- if (renderMode === RENDER_MODE.INCREMENTAL) {
31
- await moveDirs(__cache, __ssg, ssgArtifacts.cacheables);
32
- await moveDirs(__cache, __root, cxArtifacts.cacheables);
33
- await copyDirs(__exports, __root, cxArtifacts.restaurable);
34
- await renamePath(path.join(__root, "dist"), path.join(__root, "dist-restored"));
35
- }
36
- }
@@ -1,12 +0,0 @@
1
- import type { RenderContext } from "../shared/context";
2
- import type { SSG } from "../shared/types";
3
-
4
- import { gatsbyBuild } from "../shared/gatsby-build";
5
-
6
- export async function ssgAction(context: RenderContext<SSG>) {
7
- const {
8
- ssg: { assetPrefix },
9
- } = context;
10
-
11
- await gatsbyBuild(assetPrefix);
12
- }
@@ -1,71 +0,0 @@
1
- import type { RenderContext } from "../shared/context";
2
- import type { SSG } from "../shared/types";
3
-
4
- import fsp from "node:fs/promises";
5
- import path from "node:path";
6
-
7
- import { RENDER_MODE } from "../../../types/render";
8
- import {
9
- deleteDisposableSiteDirs,
10
- deleteEmptyDirectories,
11
- moveDirs,
12
- removeVirtualPages,
13
- } from "../../../utils/folders";
14
- import { extractAssetsFromDist } from "../shared/extract-assets";
15
- import { SyncRender } from "../shared/sync-render";
16
-
17
- export async function syncAction(context: RenderContext<SSG>) {
18
- const {
19
- renderMode,
20
- cxArtifacts,
21
- domain,
22
- pagesToCreate,
23
- pagesToDelete,
24
- paths: { __root, __ssg, __cache, __exports },
25
- ssg: { ssgArtifacts, assetPrefix },
26
- } = context;
27
-
28
- const needsAssetPrefix = !!assetPrefix && assetPrefix !== "";
29
- const distDir = path.join(__root, "dist");
30
- const distRestoredDir = path.join(__root, "dist-restored");
31
- const storeDir = path.join(__root, "store");
32
-
33
- // ESTO YA NO TIENE SENTIDO??? EL STORE???
34
- await removeVirtualPages(storeDir);
35
- // caching...
36
- await moveDirs(__root, __cache, cxArtifacts.cacheables);
37
- await moveDirs(__ssg, __cache, ssgArtifacts.cacheables);
38
-
39
- if (renderMode === RENDER_MODE.FROM_SCRATCH) {
40
- await deleteDisposableSiteDirs(distDir);
41
- }
42
-
43
- if (renderMode === RENDER_MODE.INCREMENTAL) {
44
- await deleteDisposableSiteDirs(distRestoredDir);
45
-
46
- const syncRender = new SyncRender({
47
- src: distDir,
48
- dst: distRestoredDir,
49
- pagesToCreate,
50
- pagesToDelete,
51
- artifactsToCopyToExports: ["build-report.json"],
52
- });
53
-
54
- await syncRender.execute();
55
-
56
- // elimina el dist recién creado, ya no hace falta porque lo hemos utilizado en syncRender.execute()
57
- await fsp.rm(distDir, { force: true, recursive: true });
58
- // renombra el nuevo dist-temporal que es el que aglutina todos los cambios -> dist
59
- await fsp.rename(distRestoredDir, distDir);
60
- await deleteEmptyDirectories(distDir);
61
- }
62
-
63
- if (needsAssetPrefix) {
64
- await extractAssetsFromDist(domain);
65
- }
66
-
67
- // archiving...
68
- await moveDirs(__root, __exports, cxArtifacts.archivables, {
69
- withBackup: true,
70
- });
71
- }
@@ -1,16 +0,0 @@
1
- import path from "node:path";
2
-
3
- import { getRenderPathsFromDB } from "../../../utils/render";
4
-
5
- export async function getGatsbyArtifacts(domain: string) {
6
- const { __ssg } = await getRenderPathsFromDB({ domain });
7
-
8
- return {
9
- disposables: [
10
- path.join(__ssg, "public"),
11
- path.join(__ssg, "static"),
12
- path.join(__ssg, ".cache"),
13
- ],
14
- cacheables: [".cache"],
15
- };
16
- }
@@ -1,50 +0,0 @@
1
- import type { Artifacts, PlaceholderPath } from "../../../types/global";
2
- import type { RenderMode } from "../../../types/render";
3
-
4
- interface RenderContextProps<T> {
5
- domain: string;
6
- renderMode: RenderMode;
7
- paths: Record<string, string>;
8
- ssg: T;
9
- renderMetadata: {
10
- proDomainPrefix: string;
11
- griddoVersion: string;
12
- buildReportFileName: string;
13
- };
14
- cxArtifacts: Artifacts;
15
- }
16
-
17
- /**
18
- * Encapsulates the state, configuration, and artifacts for a single SSG
19
- * render process.
20
- *
21
- * This class is instantiated at the beginning of a render and passed through
22
- * each lifecycle step, providing a centralized and consistent context for all
23
- * operations. It is agnostic to the specific SSG being used.
24
- */
25
- export class RenderContext<T = unknown> {
26
- readonly domain: string;
27
- readonly renderMode: RenderMode;
28
- readonly paths: Record<PlaceholderPath, string>;
29
- pagesToCreate: number[] = [];
30
- pagesToDelete: number[] = [];
31
- ssg: T;
32
- renderMetadata: { proDomainPrefix: string; griddoVersion: string; buildReportFileName: string };
33
- cxArtifacts: Artifacts;
34
-
35
- constructor({
36
- domain,
37
- renderMode,
38
- ssg,
39
- paths,
40
- renderMetadata,
41
- cxArtifacts,
42
- }: RenderContextProps<T>) {
43
- this.domain = domain;
44
- this.renderMode = renderMode;
45
- this.paths = paths;
46
- this.renderMetadata = renderMetadata;
47
- this.cxArtifacts = cxArtifacts;
48
- this.ssg = ssg;
49
- }
50
- }
@@ -1,113 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import fsp from "node:fs/promises";
3
- import { join } from "node:path";
4
-
5
- // Lista de patrones de los ficheros de assets más importantes.
6
- // Si estos no cambian, el webpackCompilationHash no debería cambiar.
7
- const _KEY_ASSET_PATTERNS = [/^app-.*\.js$/, /^framework-.*\.js$/, /^webpack-runtime-.*\.js$/];
8
-
9
- const KEY_ASSET_PATTERNS = [/\.js$/];
10
-
11
- /**
12
- * Calcula los hashes SHA256 del contenido de los assets clave en un directorio.
13
- * @param dir La ruta al directorio (ej. './public')
14
- * @returns Un Map donde la clave es el nombre del fichero y el valor es su hash.
15
- */
16
- async function getAssetHashes(dir: string): Promise<Map<string, string>> {
17
- const assetHashes = new Map<string, string>();
18
-
19
- try {
20
- const allFiles = await fsp.readdir(dir);
21
- const keyAssetFiles = allFiles.filter((fileName) =>
22
- KEY_ASSET_PATTERNS.some((pattern) => pattern.test(fileName)),
23
- );
24
-
25
- for (const fileName of keyAssetFiles) {
26
- const filePath = join(dir, fileName);
27
- const fileContent = await fsp.readFile(filePath);
28
- const hash = createHash("sha256").update(fileContent).digest("hex");
29
- assetHashes.set(fileName, hash);
30
- }
31
- } catch (error) {
32
- console.error(`Error procesando el directorio ${dir}:`, error);
33
- // Si un directorio no existe (ej. el de producción la primera vez),
34
- // lo tratamos como si no tuviera assets.
35
- }
36
-
37
- return assetHashes;
38
- }
39
-
40
- /**
41
- * Compara los assets clave entre dos directorios de build de Gatsby.
42
- * @param dir1 Ruta al primer directorio (ej. el de producción)
43
- * @param dir2 Ruta al segundo directorio (ej. el del nuevo build)
44
- * @returns `true` si hay diferencias, `false` si son idénticos.
45
- */
46
- export async function getAssetsDiffBetweenRenders(dir1: string, dir2: string): Promise<boolean> {
47
- const [hashes1, hashes2] = await Promise.all([getAssetHashes(dir1), getAssetHashes(dir2)]);
48
-
49
- // Si el número de assets clave es diferente, hay cambios.
50
- if (hashes1.size !== hashes2.size) {
51
- return true;
52
- }
53
-
54
- // Comparamos los hashes de cada fichero.
55
- for (const [fileName, hash1] of hashes1.entries()) {
56
- const hash2 = hashes2.get(fileName);
57
-
58
- // Si un fichero existe en el primero pero no en el segundo, hay cambios.
59
- if (!hash2) {
60
- return true;
61
- }
62
-
63
- // Si el contenido (hash) de un fichero ha cambiado.
64
- if (hash1 !== hash2) {
65
- return true;
66
- }
67
- }
68
-
69
- return false;
70
- }
71
-
72
- /**
73
- * Actualiza el webpackCompilationHash en un único fichero HTML.
74
- * @param filePath Ruta al fichero HTML.
75
- * @param newHash El nuevo hash a insertar.
76
- */
77
- export async function patchHtmlFile(filePath: string, newHash: string): Promise<void> {
78
- try {
79
- const content = await fsp.readFile(filePath, "utf-8");
80
-
81
- // Esta expresión regular captura tres grupos:
82
- // 1. La parte ANTES del hash (window.___webpackCompilationHash=")
83
- // 2. El hash ANTIGUO ([^"]*)
84
- // 3. La parte DESPUÉS del hash (";</script>)
85
- const regex = /(window\.___webpackCompilationHash=")([^"]*)(";<\/script>)/;
86
-
87
- // Solo reemplazamos el segundo grupo (el hash)
88
- const newContent = content.replace(regex, `$1${newHash}$3`);
89
-
90
- if (content === newContent) {
91
- console.warn(`WARN: No se encontró el hash en ${filePath}. El fichero no fue modificado.`);
92
- return;
93
- }
94
-
95
- await fsp.writeFile(filePath, newContent, "utf-8");
96
- } catch (error) {
97
- console.error(`ERROR: Fallo al procesar el fichero ${filePath}:`, error);
98
- }
99
- }
100
-
101
- // --- Ejemplo de uso ---
102
- // async function miScriptDeDeploy() {
103
- // const dirProduccion = '/ruta/a/produccion/public';
104
- // const dirNuevoBuild = './public';
105
-
106
- // const hayDiferencias = await getAssetsDiffBetweenRenders(dirProduccion, dirNuevoBuild);
107
-
108
- // if (hayDiferencias) {
109
- // // Lógica para el CAMINO A (cambio de código)
110
- // } else {
111
- // // Lógica para el CAMINO B (solo contenido)
112
- // }
113
- // }
@@ -1,61 +0,0 @@
1
- import fsp from "node:fs/promises";
2
- import path from "node:path";
3
-
4
- import { pathExists } from "../../../utils/folders";
5
- import { getRenderPathsFromDB } from "../../../utils/render";
6
-
7
- /**
8
- * Update the Griddo's `/dist` dir with the contents from `public` dir only
9
- * with files of type: js, json and css.
10
- * TODO: Explicar que el static se copia a assets porque el js va en el subdominio de assets.
11
- */
12
- async function extractAssetsFromDist(domain: string) {
13
- const { __root } = await getRenderPathsFromDB({ domain });
14
-
15
- // Archivos (no carpetas) válidos de public
16
- const filesFromDist = (await fsp.readdir(path.join(__root, "dist"))).filter(
17
- (file) =>
18
- path.extname(file) === ".js" ||
19
- path.extname(file) === ".json" ||
20
- path.extname(file) === ".css",
21
- );
22
-
23
- // Creamos assets si es necesario (needsAssetPrefix)
24
- await fsp.mkdir(path.join(__root, "assets"), { recursive: true });
25
- // page-data folder
26
- await fsp.cp(path.join(__root, "dist", "page-data"), path.join(__root, "assets", "page-data"), {
27
- preserveTimestamps: true,
28
- recursive: true,
29
- });
30
- // static folder si existe
31
- if (await pathExists(path.join(__root, "static"))) {
32
- await fsp.cp(path.join(__root, "static"), path.join(__root, "assets"), {
33
- force: false,
34
- preserveTimestamps: true,
35
- recursive: true,
36
- });
37
- }
38
- // dist/static -> assets/static
39
- await fsp.cp(path.join(__root, "dist", "static"), path.join(__root, "assets", "static"), {
40
- force: false,
41
- preserveTimestamps: true,
42
- recursive: true,
43
- });
44
- // otro static...
45
- if (await pathExists(path.join(__root, "static"))) {
46
- await fsp.cp(path.join(__root, "static"), path.join(__root, "dist", domain), {
47
- preserveTimestamps: true,
48
- recursive: true,
49
- force: false,
50
- });
51
- }
52
-
53
- // Copia el resto de archivos...
54
- for (const file of filesFromDist) {
55
- const fileSrc = path.join(__root, "dist", file);
56
- const fileDest = path.join(__root, "assets", file);
57
- await fsp.cp(fileSrc, fileDest, { preserveTimestamps: true, recursive: true });
58
- }
59
- }
60
-
61
- export { extractAssetsFromDist };