@griddo/cx 11.7.6-rc.1 → 11.7.6

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 (300) hide show
  1. package/README.md +228 -25
  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/move-assets.d.ts +1 -0
  6. package/build/commands/prepare-domains-render.d.ts +1 -0
  7. package/build/{exporter/constants → constants}/envs.d.ts +7 -1
  8. package/build/constants/index.d.ts +57 -0
  9. package/build/end-render.js +74 -0
  10. package/build/end-render.js.map +7 -0
  11. package/build/{exporter/constants/errors.d.ts → errors/errors-data.d.ts} +3 -5
  12. package/build/{exporter/utils/errors.d.ts → errors/index.d.ts} +3 -3
  13. package/build/index.d.ts +29 -0
  14. package/build/index.js +73 -0
  15. package/build/index.js.map +7 -0
  16. package/build/prepare-domains-render.js +73 -0
  17. package/build/prepare-domains-render.js.map +7 -0
  18. package/build/react/Favicon/index.d.ts +5 -0
  19. package/build/react/Favicon/utils.d.ts +9 -0
  20. package/build/react/GriddoIntegrations/index.d.ts +20 -0
  21. package/build/react/GriddoIntegrations/utils.d.ts +26 -0
  22. package/{react/index.tsx → build/react/index.d.ts} +0 -1
  23. package/build/react/index.js +3 -0
  24. package/build/registers/api.d.ts +9 -0
  25. package/build/registers/gatsby.d.ts +9 -0
  26. package/build/registers/index.d.ts +3 -0
  27. package/build/reset-render.js +74 -0
  28. package/build/reset-render.js.map +7 -0
  29. package/build/{exporter/services → services}/auth.d.ts +1 -1
  30. package/build/services/domains.d.ts +6 -0
  31. package/build/services/register.d.ts +36 -0
  32. package/build/{exporter/services → services}/robots.d.ts +6 -0
  33. package/build/services/settings.d.ts +4 -0
  34. package/build/{exporter/services → services}/sites.d.ts +2 -5
  35. package/build/services/store.d.ts +6 -0
  36. package/build/start-render.js +100 -0
  37. package/build/start-render.js.map +7 -0
  38. package/build/{exporter/types → types}/api.d.ts +4 -3
  39. package/build/{exporter/types → types}/global.d.ts +6 -6
  40. package/build/{exporter/types → types}/navigation.d.ts +1 -1
  41. package/build/{exporter/types → types}/sites.d.ts +2 -1
  42. package/build/upload-search-content.js +74 -0
  43. package/build/upload-search-content.js.map +7 -0
  44. package/build/utils/alerts.d.ts +3 -0
  45. package/build/{exporter/utils → utils}/cache.d.ts +12 -7
  46. package/build/utils/core-utils.d.ts +107 -0
  47. package/build/utils/create-build-data.d.ts +8 -0
  48. package/build/{exporter/utils → utils}/domains.d.ts +1 -1
  49. package/build/utils/folders.d.ts +53 -0
  50. package/build/{exporter/utils/check-health.d.ts → utils/health-checks.d.ts} +2 -2
  51. package/build/{exporter/utils → utils}/loggin.d.ts +16 -2
  52. package/build/{exporter/utils → utils}/pages.d.ts +2 -2
  53. package/build/utils/render.d.ts +13 -0
  54. package/build/utils/searches.d.ts +15 -0
  55. package/build/{exporter/utils → utils}/sites.d.ts +3 -3
  56. package/build/{exporter/utils → utils}/store.d.ts +38 -10
  57. package/cx.config.d.ts +5 -0
  58. package/cx.config.js +36 -0
  59. package/exporter/adapters/gatsby/index.ts +146 -60
  60. package/exporter/adapters/gatsby/utils.ts +161 -0
  61. package/exporter/artifacts/README.md +34 -0
  62. package/exporter/{utils/artifacts.ts → artifacts/index.ts} +8 -9
  63. package/exporter/build.sh +38 -5
  64. package/exporter/commands/end-render.ts +81 -56
  65. package/exporter/commands/move-assets.ts +11 -0
  66. package/exporter/commands/prepare-domains-render.ts +31 -149
  67. package/exporter/commands/reset-render.ts +3 -12
  68. package/exporter/commands/start-render.ts +47 -18
  69. package/exporter/commands/upload-search-content.ts +21 -206
  70. package/exporter/constants/envs.ts +51 -59
  71. package/exporter/constants/index.ts +129 -0
  72. package/exporter/{constants/errors.ts → errors/errors-data.ts} +15 -24
  73. package/exporter/{utils/errors.ts → errors/index.ts} +9 -10
  74. package/exporter/index.ts +82 -0
  75. package/{react → exporter/react}/Favicon/index.tsx +7 -1
  76. package/{react → exporter/react}/GriddoIntegrations/index.tsx +14 -6
  77. package/{react → exporter/react}/GriddoIntegrations/utils.ts +9 -4
  78. package/exporter/react/index.tsx +11 -0
  79. package/exporter/registers/api.ts +14 -0
  80. package/exporter/registers/gatsby.ts +14 -0
  81. package/exporter/registers/index.ts +4 -0
  82. package/exporter/services/auth.ts +6 -7
  83. package/exporter/services/domains.ts +16 -0
  84. package/exporter/services/navigation.ts +10 -4
  85. package/exporter/services/reference-fields.ts +23 -8
  86. package/exporter/services/register.ts +113 -0
  87. package/exporter/services/robots.ts +15 -8
  88. package/exporter/services/settings.ts +17 -0
  89. package/exporter/services/sites.ts +24 -35
  90. package/exporter/services/store.ts +76 -118
  91. package/exporter/types/api.ts +27 -24
  92. package/exporter/types/global.ts +10 -8
  93. package/exporter/types/navigation.ts +1 -1
  94. package/exporter/types/pages.ts +3 -2
  95. package/exporter/types/sites.ts +2 -1
  96. package/exporter/utils/alerts.ts +29 -0
  97. package/exporter/utils/api.ts +82 -46
  98. package/exporter/utils/cache.ts +59 -34
  99. package/exporter/utils/core-utils.ts +247 -86
  100. package/exporter/utils/create-build-data.ts +17 -0
  101. package/exporter/utils/domains.ts +7 -10
  102. package/exporter/utils/folders.ts +92 -161
  103. package/exporter/utils/health-checks.ts +64 -0
  104. package/exporter/utils/images.ts +6 -1
  105. package/exporter/utils/instance.ts +12 -9
  106. package/exporter/utils/loggin.ts +89 -24
  107. package/exporter/utils/pages.ts +88 -23
  108. package/exporter/utils/render.ts +48 -147
  109. package/exporter/utils/searches.ts +156 -0
  110. package/exporter/utils/sites.ts +77 -67
  111. package/exporter/utils/store.ts +178 -85
  112. package/gatsby-browser.tsx +58 -41
  113. package/gatsby-config.ts +12 -6
  114. package/gatsby-node.ts +77 -15
  115. package/gatsby-ssr.tsx +1 -2
  116. package/package.json +74 -33
  117. package/src/README.md +7 -0
  118. package/src/components/Head.tsx +46 -13
  119. package/src/components/template.tsx +30 -8
  120. package/src/gatsby-node-utils.ts +2 -91
  121. package/src/html.tsx +11 -2
  122. package/src/types.ts +5 -5
  123. package/start-render.js +3 -1
  124. package/tsconfig.json +2 -3
  125. package/build/adapters/gatsby/actions/clean.js +0 -10
  126. package/build/adapters/gatsby/actions/clean.js.map +0 -1
  127. package/build/adapters/gatsby/actions/close.js +0 -12
  128. package/build/adapters/gatsby/actions/close.js.map +0 -1
  129. package/build/adapters/gatsby/actions/data.js +0 -18
  130. package/build/adapters/gatsby/actions/data.js.map +0 -1
  131. package/build/adapters/gatsby/actions/healthCheck.js +0 -10
  132. package/build/adapters/gatsby/actions/healthCheck.js.map +0 -1
  133. package/build/adapters/gatsby/actions/init.js +0 -9
  134. package/build/adapters/gatsby/actions/init.js.map +0 -1
  135. package/build/adapters/gatsby/actions/meta.js +0 -14
  136. package/build/adapters/gatsby/actions/meta.js.map +0 -1
  137. package/build/adapters/gatsby/actions/prepare.js +0 -9
  138. package/build/adapters/gatsby/actions/prepare.js.map +0 -1
  139. package/build/adapters/gatsby/actions/relocation.js +0 -15
  140. package/build/adapters/gatsby/actions/relocation.js.map +0 -1
  141. package/build/adapters/gatsby/actions/restore.js +0 -26
  142. package/build/adapters/gatsby/actions/restore.js.map +0 -1
  143. package/build/adapters/gatsby/actions/ssg.js +0 -9
  144. package/build/adapters/gatsby/actions/ssg.js.map +0 -1
  145. package/build/adapters/gatsby/actions/sync.js +0 -50
  146. package/build/adapters/gatsby/actions/sync.js.map +0 -1
  147. package/build/adapters/gatsby/index.js +0 -74
  148. package/build/adapters/gatsby/index.js.map +0 -1
  149. package/build/adapters/gatsby/shared/context.js +0 -25
  150. package/build/adapters/gatsby/shared/context.js.map +0 -1
  151. package/build/adapters/gatsby/shared/extract-assets.js +0 -58
  152. package/build/adapters/gatsby/shared/extract-assets.js.map +0 -1
  153. package/build/adapters/gatsby/shared/gatsby-build.js +0 -49
  154. package/build/adapters/gatsby/shared/gatsby-build.js.map +0 -1
  155. package/build/adapters/gatsby/shared/sync-render.js +0 -208
  156. package/build/adapters/gatsby/shared/sync-render.js.map +0 -1
  157. package/build/adapters/gatsby/shared/types.js +0 -3
  158. package/build/adapters/gatsby/shared/types.js.map +0 -1
  159. package/build/commands/end-render.js +0 -63
  160. package/build/commands/end-render.js.map +0 -1
  161. package/build/commands/prepare-assets-directory.js +0 -32
  162. package/build/commands/prepare-assets-directory.js.map +0 -1
  163. package/build/commands/prepare-domains-render.js +0 -138
  164. package/build/commands/prepare-domains-render.js.map +0 -1
  165. package/build/commands/reset-render.js +0 -22
  166. package/build/commands/reset-render.js.map +0 -1
  167. package/build/commands/start-render.js +0 -35
  168. package/build/commands/start-render.js.map +0 -1
  169. package/build/commands/upload-search-content.js +0 -189
  170. package/build/commands/upload-search-content.js.map +0 -1
  171. package/build/constants/endpoints.js +0 -42
  172. package/build/constants/endpoints.js.map +0 -1
  173. package/build/constants/envs.js +0 -73
  174. package/build/constants/envs.js.map +0 -1
  175. package/build/constants/errors.js +0 -89
  176. package/build/constants/errors.js.map +0 -1
  177. package/build/exporter/adapters/gatsby/actions/clean.d.ts +0 -3
  178. package/build/exporter/adapters/gatsby/actions/close.d.ts +0 -3
  179. package/build/exporter/adapters/gatsby/actions/data.d.ts +0 -2
  180. package/build/exporter/adapters/gatsby/actions/healthCheck.d.ts +0 -2
  181. package/build/exporter/adapters/gatsby/actions/init.d.ts +0 -2
  182. package/build/exporter/adapters/gatsby/actions/meta.d.ts +0 -2
  183. package/build/exporter/adapters/gatsby/actions/prepare.d.ts +0 -2
  184. package/build/exporter/adapters/gatsby/actions/relocation.d.ts +0 -2
  185. package/build/exporter/adapters/gatsby/actions/restore.d.ts +0 -3
  186. package/build/exporter/adapters/gatsby/actions/ssg.d.ts +0 -3
  187. package/build/exporter/adapters/gatsby/actions/sync.d.ts +0 -3
  188. package/build/exporter/adapters/gatsby/index.d.ts +0 -9
  189. package/build/exporter/adapters/gatsby/shared/context.d.ts +0 -38
  190. package/build/exporter/adapters/gatsby/shared/extract-assets.d.ts +0 -7
  191. package/build/exporter/adapters/gatsby/shared/gatsby-build.d.ts +0 -7
  192. package/build/exporter/adapters/gatsby/shared/sync-render.d.ts +0 -36
  193. package/build/exporter/adapters/gatsby/shared/types.d.ts +0 -34
  194. package/build/exporter/commands/prepare-assets-directory.d.ts +0 -2
  195. package/build/exporter/commands/prepare-domains-render.d.ts +0 -2
  196. package/build/exporter/services/db.d.ts +0 -4
  197. package/build/exporter/services/store.d.ts +0 -15
  198. package/build/exporter/types/render.d.ts +0 -50
  199. package/build/exporter/utils/artifacts.d.ts +0 -6
  200. package/build/exporter/utils/brush.d.ts +0 -18
  201. package/build/exporter/utils/core-utils.d.ts +0 -77
  202. package/build/exporter/utils/folders.d.ts +0 -66
  203. package/build/exporter/utils/render.d.ts +0 -49
  204. package/build/services/auth.js +0 -39
  205. package/build/services/auth.js.map +0 -1
  206. package/build/services/db.js +0 -34
  207. package/build/services/db.js.map +0 -1
  208. package/build/services/navigation.js +0 -93
  209. package/build/services/navigation.js.map +0 -1
  210. package/build/services/reference-fields.js +0 -131
  211. package/build/services/reference-fields.js.map +0 -1
  212. package/build/services/robots.js +0 -58
  213. package/build/services/robots.js.map +0 -1
  214. package/build/services/sites.js +0 -109
  215. package/build/services/sites.js.map +0 -1
  216. package/build/services/store.js +0 -282
  217. package/build/services/store.js.map +0 -1
  218. package/build/types/api.js +0 -3
  219. package/build/types/api.js.map +0 -1
  220. package/build/types/global.js +0 -3
  221. package/build/types/global.js.map +0 -1
  222. package/build/types/navigation.js +0 -3
  223. package/build/types/navigation.js.map +0 -1
  224. package/build/types/pages.js +0 -3
  225. package/build/types/pages.js.map +0 -1
  226. package/build/types/render.js +0 -10
  227. package/build/types/render.js.map +0 -1
  228. package/build/types/sites.js +0 -3
  229. package/build/types/sites.js.map +0 -1
  230. package/build/types/templates.js +0 -3
  231. package/build/types/templates.js.map +0 -1
  232. package/build/utils/api.js +0 -161
  233. package/build/utils/api.js.map +0 -1
  234. package/build/utils/artifacts.js +0 -34
  235. package/build/utils/artifacts.js.map +0 -1
  236. package/build/utils/brush.js +0 -30
  237. package/build/utils/brush.js.map +0 -1
  238. package/build/utils/cache.js +0 -106
  239. package/build/utils/cache.js.map +0 -1
  240. package/build/utils/check-health.js +0 -68
  241. package/build/utils/check-health.js.map +0 -1
  242. package/build/utils/core-utils.js +0 -251
  243. package/build/utils/core-utils.js.map +0 -1
  244. package/build/utils/domains.js +0 -37
  245. package/build/utils/domains.js.map +0 -1
  246. package/build/utils/errors.js +0 -30
  247. package/build/utils/errors.js.map +0 -1
  248. package/build/utils/folders.js +0 -339
  249. package/build/utils/folders.js.map +0 -1
  250. package/build/utils/images.js +0 -45
  251. package/build/utils/images.js.map +0 -1
  252. package/build/utils/instance.js +0 -66
  253. package/build/utils/instance.js.map +0 -1
  254. package/build/utils/loggin.js +0 -102
  255. package/build/utils/loggin.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 -144
  259. package/build/utils/render.js.map +0 -1
  260. package/build/utils/sites.js +0 -239
  261. package/build/utils/sites.js.map +0 -1
  262. package/build/utils/store.js +0 -193
  263. package/build/utils/store.js.map +0 -1
  264. package/exporter/adapters/gatsby/actions/clean.ts +0 -14
  265. package/exporter/adapters/gatsby/actions/close.ts +0 -17
  266. package/exporter/adapters/gatsby/actions/data.ts +0 -25
  267. package/exporter/adapters/gatsby/actions/healthCheck.ts +0 -10
  268. package/exporter/adapters/gatsby/actions/init.ts +0 -12
  269. package/exporter/adapters/gatsby/actions/meta.ts +0 -18
  270. package/exporter/adapters/gatsby/actions/prepare.ts +0 -9
  271. package/exporter/adapters/gatsby/actions/relocation.ts +0 -15
  272. package/exporter/adapters/gatsby/actions/restore.ts +0 -36
  273. package/exporter/adapters/gatsby/actions/ssg.ts +0 -12
  274. package/exporter/adapters/gatsby/actions/sync.ts +0 -70
  275. package/exporter/adapters/gatsby/shared/context.ts +0 -50
  276. package/exporter/adapters/gatsby/shared/extract-assets.ts +0 -61
  277. package/exporter/adapters/gatsby/shared/gatsby-build.ts +0 -54
  278. package/exporter/adapters/gatsby/shared/sync-render.ts +0 -294
  279. package/exporter/adapters/gatsby/shared/types.ts +0 -35
  280. package/exporter/build-esbuild.noop +0 -42
  281. package/exporter/commands/prepare-assets-directory.ts +0 -33
  282. package/exporter/services/db.ts +0 -32
  283. package/exporter/types/render.ts +0 -59
  284. package/exporter/utils/brush.ts +0 -34
  285. package/exporter/utils/check-health.ts +0 -79
  286. package/plugins/gatsby-plugin-svgr-loader/gatsby-node.js +0 -55
  287. package/plugins/gatsby-plugin-svgr-loader/package.json +0 -8
  288. package/build/{exporter/commands → commands}/end-render.d.ts +0 -0
  289. package/build/{exporter/commands → commands}/reset-render.d.ts +0 -0
  290. package/build/{exporter/commands → commands}/start-render.d.ts +0 -0
  291. package/build/{exporter/commands → commands}/upload-search-content.d.ts +0 -0
  292. package/build/{exporter/constants → constants}/endpoints.d.ts +0 -0
  293. package/build/{exporter/services → services}/navigation.d.ts +0 -0
  294. package/build/{exporter/services → services}/reference-fields.d.ts +0 -0
  295. package/build/{exporter/types → types}/pages.d.ts +1 -1
  296. /package/build/{exporter/types → types}/templates.d.ts +0 -0
  297. /package/build/{exporter/utils → utils}/api.d.ts +0 -0
  298. /package/build/{exporter/utils → utils}/images.d.ts +0 -0
  299. /package/build/{exporter/utils → utils}/instance.d.ts +0 -0
  300. /package/{react → exporter/react}/Favicon/utils.ts +0 -0
@@ -1,4 +1,4 @@
1
- import type { BuildProcessData, Settings } from "../types/global";
1
+ import type { BuildProcessData } from "../types/global";
2
2
  import type {
3
3
  GriddoListPage,
4
4
  GriddoMultiPage,
@@ -6,24 +6,20 @@ import type {
6
6
  GriddoSinglePage,
7
7
  PageAdditionalInfo,
8
8
  } from "../types/pages";
9
- import type { RenderMode } from "../types/render";
10
9
 
11
10
  import fs from "node:fs";
12
11
  import path from "node:path";
13
12
 
14
13
  import pLimit from "p-limit";
15
14
 
16
- import { SETTINGS } from "../constants/endpoints";
17
- import {
18
- GRIDDO_API_CONCURRENCY_COUNT,
19
- GRIDDO_API_URL,
20
- GRIDDO_PUBLIC_API_URL,
21
- GRIDDO_REACT_APP_INSTANCE,
22
- } from "../constants/envs";
23
- import { get } from "../utils/api";
15
+ import { envs } from "../constants";
16
+ import { NavigationService } from "./navigation";
17
+ import { getReferenceFieldData } from "./reference-fields";
18
+ import { getAllSettings } from "./settings";
19
+ import { getPage } from "./sites";
24
20
  import { updatedSiteHash } from "../utils/cache";
25
- import { removeAllSiteDirsFromStore } from "../utils/core-utils";
26
- import { infoLog, listSitesLog } from "../utils/loggin";
21
+ import { getConfig, removeAllSiteDirsFromStore } from "../utils/core-utils";
22
+ import { buildLog, listSitesLog } from "../utils/loggin";
27
23
  import {
28
24
  createGriddoListPages,
29
25
  createGriddoMultiPages,
@@ -33,38 +29,26 @@ import {
33
29
  } from "../utils/pages";
34
30
  import { getSiteData, getSitesToRender, unpublishSites } from "../utils/sites";
35
31
  import {
32
+ getMissingPublishedPagesInStore,
36
33
  getZombiePagesInStore,
37
34
  removeOrphanSites,
38
35
  removeSitePagesFromStore,
39
36
  saveRenderInfoInStore,
40
37
  saveSitePagesInStore,
41
38
  } from "../utils/store";
42
- import { NavigationService } from "./navigation";
43
- import { getReferenceFieldData } from "./reference-fields";
44
- import { getPage } from "./sites";
45
39
 
46
- const renderId = Date.now().toString();
47
-
48
- function guessSiteNeedsToBeRenderedFromScratch() {
49
- return false;
50
- }
40
+ const renderId = new Date().valueOf().toString();
41
+ const { griddoVersion, paths } = getConfig();
42
+ const { __cx } = paths();
43
+ const storeDir = path.join(__cx, "store");
51
44
 
52
45
  /**
53
46
  * Fetch, process and save object pages and sites data into the file system to
54
47
  * be consumed by other services (Griddo itself, Adapters, etc.)
55
48
  */
56
- async function createStore(options: {
57
- domain: string;
58
- renderMode: RenderMode;
59
- griddoVersion: string;
60
- basePath: string;
61
- }) {
62
- console.info(`API calls with ${GRIDDO_API_CONCURRENCY_COUNT} threads`);
63
- console.info(`API URL ${GRIDDO_API_URL as string}`);
64
-
65
- const { renderMode, domain, griddoVersion, basePath } = options;
66
- const renderFromScratch = renderMode === "FROM_SCRATCH";
67
- const storeDir = path.join(basePath, "store");
49
+ async function createStore(domain: string) {
50
+ console.info(`API calls with ${envs.GRIDDO_API_CONCURRENCY_COUNT} threads`);
51
+ console.info(`API URL ${envs.GRIDDO_API_URL as string}`);
68
52
 
69
53
  try {
70
54
  // Vars to save later in the report file
@@ -74,7 +58,8 @@ async function createStore(options: {
74
58
  // Get sites objects to publish and unpublish from this domain
75
59
  const { sitesToPublish, sitesToUnpublish } = await getSitesToRender(domain);
76
60
 
77
- const domainHasSites = sitesToPublish.length > 0 || sitesToUnpublish.length > 0;
61
+ const domainHasSites =
62
+ sitesToPublish.length > 0 || sitesToUnpublish.length > 0;
78
63
 
79
64
  if (!domainHasSites) {
80
65
  console.warn(`There are no sites to update in the domain ${domain}`);
@@ -84,39 +69,20 @@ async function createStore(options: {
84
69
  listSitesLog("Sites to unpublish:", sitesToUnpublish);
85
70
 
86
71
  // Send unpublished sites to API.
72
+ // @todo ¿mover esta llamada al final del proceso de render?
73
+ // Aquí también se están eliminado físicamente los archivos json del
74
+ // store de los sites para despublicar.
87
75
  await unpublishSites(sitesToUnpublish);
88
76
 
89
77
  // Eliminamos posibles sites que estén en el store pero que no deberían
90
78
  // porque han sido cambiados de dominio. Si han sido despublicados ya se
91
79
  // despublican bien porque entran en `sitesToUnpublish`
92
- await removeOrphanSites(sitesToPublish, domain);
93
-
94
- const allPagesToRemoveFromBuild: Array<number> = [];
95
- // let numberOfFinalActivePages: Array<number> = [];
96
-
97
- for (const site of sitesToUnpublish) {
98
- const { pagesStatus } = site;
99
-
100
- // Añadimos a allPagesToRemoveFromBuild todas las páginas de un site
101
- // para despublicar.
102
- allPagesToRemoveFromBuild.push(
103
- ...pagesStatus.active,
104
- ...pagesStatus.offlinePending,
105
- ...pagesStatus.uploadPending,
106
- ...pagesStatus.deleted,
107
- ...pagesStatus.offline,
108
- );
109
- }
80
+ removeOrphanSites(sitesToPublish, domain);
110
81
 
82
+ // Solo los sites to publish...
111
83
  for (const site of sitesToPublish) {
112
84
  const { id: siteId, slug: siteSlug, theme, favicon, pagesStatus } = site;
113
85
  const siteDirName = siteId.toString();
114
- // numberOfFinalActivePages.push(
115
- // ...pagesStatus.active,
116
- // ...pagesStatus.uploadPending,
117
- // );
118
-
119
- allPagesToRemoveFromBuild.push(...pagesStatus.offlinePending, ...pagesStatus.deleted);
120
86
 
121
87
  const {
122
88
  siteInfo,
@@ -138,7 +104,7 @@ async function createStore(options: {
138
104
  avoidSelfReferenceCanonicals,
139
105
  avoidHrefLangXDefault,
140
106
  avoidDebugMetas,
141
- } = await get<Settings>({ endpoint: SETTINGS });
107
+ } = await getAllSettings();
142
108
 
143
109
  buildProcessData[siteId] = {
144
110
  siteHash,
@@ -152,7 +118,7 @@ async function createStore(options: {
152
118
 
153
119
  site.languages = siteLangs;
154
120
 
155
- const shouldUpdateSite = await updatedSiteHash(siteId, siteHash);
121
+ const shouldUpdateSite = updatedSiteHash(siteId, siteHash);
156
122
 
157
123
  const siteScript = siteInfo.siteScript;
158
124
 
@@ -163,9 +129,9 @@ async function createStore(options: {
163
129
  };
164
130
 
165
131
  const additionalInfo = {
166
- baseUrl: GRIDDO_API_URL,
167
- publicBaseUrl: GRIDDO_PUBLIC_API_URL,
168
- instance: GRIDDO_REACT_APP_INSTANCE,
132
+ baseUrl: envs.GRIDDO_API_URL,
133
+ publicBaseUrl: envs.GRIDDO_PUBLIC_API_URL,
134
+ instance: envs.GRIDDO_REACT_APP_INSTANCE,
169
135
  siteSlug,
170
136
  theme,
171
137
  siteMetadata,
@@ -185,7 +151,7 @@ async function createStore(options: {
185
151
  siteScript,
186
152
  };
187
153
 
188
- infoLog(`Getting pages from ${site.name} site`);
154
+ buildLog(`${site.name} site`);
189
155
 
190
156
  /// Creates the store directory for each site using the id
191
157
  fs.mkdirSync(path.join(storeDir, siteDirName), {
@@ -197,7 +163,10 @@ async function createStore(options: {
197
163
  // -------------------------------------------------------------------------
198
164
  // Async function that process every page for one site to use later in the
199
165
  // `Promise.all` with pLimit.
200
- const fetchSitePageAndSaveInStore = async (siteIdName: string, pageId: number) => {
166
+ const fetchSitePageAndSaveInStore = async (
167
+ siteIdName: string,
168
+ pageId: number,
169
+ ) => {
201
170
  // Here will be store every page returned by the API and processed
202
171
  let griddoPageObjects: Array<GriddoPageObject> = [];
203
172
 
@@ -216,7 +185,9 @@ async function createStore(options: {
216
185
  // SHAME: This new pageAdditionalInfo needs to be a copy because
217
186
  // additionalInfo referenced from outside this function and
218
187
  // its used by other pages.
219
- const pageAdditionalInfo = JSON.parse(JSON.stringify(additionalInfo)) as PageAdditionalInfo;
188
+ const pageAdditionalInfo = JSON.parse(
189
+ JSON.stringify(additionalInfo),
190
+ ) as PageAdditionalInfo;
220
191
 
221
192
  // Updated with navigations (header & footer)
222
193
  pageAdditionalInfo.navigations = NavService.getPageNavigations(page);
@@ -246,7 +217,8 @@ async function createStore(options: {
246
217
  // - Single: just one page
247
218
 
248
219
  // Griddo page types
249
- const isStaticListPage = page?.mode === "list" || page?.mode === "paginated-data";
220
+ const isStaticListPage =
221
+ page?.mode === "list" || page?.mode === "paginated-data";
250
222
  const isMultiPage = !isStaticListPage && multiPageElements;
251
223
  const isSinglePage = !isMultiPage && !isStaticListPage;
252
224
 
@@ -262,12 +234,10 @@ async function createStore(options: {
262
234
  } as GriddoListPage;
263
235
 
264
236
  // pageObjects = await createGriddoListPages({ adapter: "Gatsby" })
265
- griddoPageObjects = await createGriddoListPages(griddoListPage, pageAdditionalInfo);
266
-
267
- // ¿Por qué la añadimos a las páginas para borrar?
268
- // Porque este tipo de páginas no está manejada por API y se crean varias páginas con el mismo ID.
269
- // Esto hace que no se pueda rastrear bien el render.
270
- allPagesToRemoveFromBuild.push(page.id);
237
+ griddoPageObjects = await createGriddoListPages(
238
+ griddoListPage,
239
+ pageAdditionalInfo,
240
+ );
271
241
  }
272
242
 
273
243
  // >> Multi-page <<
@@ -279,12 +249,10 @@ async function createStore(options: {
279
249
  griddoMultipage.multiPageElements = multiPageElements;
280
250
  griddoMultipage.defaultLang = defaultLang;
281
251
 
282
- griddoPageObjects = await createGriddoMultiPages(griddoMultipage, pageAdditionalInfo);
283
-
284
- // ¿Por qué la añadimos a las páginas para borrar?
285
- // Porque este tipo de páginas no está manejada por API y se crean varias páginas con el mismo ID.
286
- // Esto hace que no se pueda rastrear bien el render.
287
- allPagesToRemoveFromBuild.push(page.id);
252
+ griddoPageObjects = await createGriddoMultiPages(
253
+ griddoMultipage,
254
+ pageAdditionalInfo,
255
+ );
288
256
  }
289
257
 
290
258
  // >> Single template <<
@@ -295,7 +263,9 @@ async function createStore(options: {
295
263
  griddoSinglePage.template = template;
296
264
  griddoSinglePage.defaultLang = defaultLang;
297
265
 
298
- griddoPageObjects = [await createGriddoSinglePage(griddoSinglePage, pageAdditionalInfo)];
266
+ griddoPageObjects = [
267
+ await createGriddoSinglePage(griddoSinglePage, pageAdditionalInfo),
268
+ ];
299
269
  }
300
270
 
301
271
  // Upload only the valid pages hashes or ids of pages that has
@@ -306,26 +276,25 @@ async function createStore(options: {
306
276
  }
307
277
 
308
278
  // Save build data to store
309
- await saveSitePagesInStore(siteIdName, griddoPageObjects);
279
+ saveSitePagesInStore(siteIdName, griddoPageObjects);
310
280
  };
311
281
 
312
- // Pages that needs to be fetched from the API and written to the store.
313
- const pagesToFetchFromAPI = pagesStatus.uploadPending;
314
-
315
- // Esto es necesario porque en la BBDD las páginas pueden estar
316
- // marcadas como activas (online) pero si es una máquina nueva hace
317
- // falta hacerlas de nuevo...
318
- // const sitePendingOfPublishing = site.isPublished && site.shouldBeUpdated;
319
- const sitePendingOfPublishing = guessSiteNeedsToBeRenderedFromScratch();
320
- // @todo: necesito tener un sistema par publicar todo de un site (cuando un site esté pending to publish)
321
- // algo como site.status = pending | published | unpublished...
322
- if (renderFromScratch || sitePendingOfPublishing) {
323
- pagesToFetchFromAPI.push(...pagesStatus.active);
324
- }
282
+ // Pages that needs to be fetched from the API and written to the
283
+ // store.
284
+ const pagesToFetchFromAPI = [
285
+ // These pages are news or has been updated.
286
+ ...pagesStatus.uploadPending,
287
+ // You should take into account the pages that, even though they are
288
+ // already published and therefore should be avoided from requesting
289
+ // them to the API, are not in the store, probably due to a failed
290
+ // render. In that case, you have to request them again from the API
291
+ // to include them in the store.
292
+ ...getMissingPublishedPagesInStore(siteDirName, pagesStatus.active),
293
+ ];
325
294
 
326
295
  // Create pages to the store. First requesting from API,
327
296
  // transform, etc., and then writing them to disk.
328
- const limit = pLimit(GRIDDO_API_CONCURRENCY_COUNT);
297
+ const limit = pLimit(envs.GRIDDO_API_CONCURRENCY_COUNT);
329
298
  const pagesToStore = pagesToFetchFromAPI.map((id: number) =>
330
299
  limit(() => fetchSitePageAndSaveInStore(siteDirName, id)),
331
300
  );
@@ -333,13 +302,13 @@ async function createStore(options: {
333
302
  await Promise.all(pagesToStore);
334
303
 
335
304
  // @ts-expect-error Mutate pagesStatus for reading pourposes.
336
- pagesStatus.zombie = await getZombiePagesInStore(siteDirName, [
305
+ pagesStatus.zombie = getZombiePagesInStore(siteDirName, [
337
306
  ...pagesStatus.active,
338
307
  ...pagesStatus.uploadPending,
339
308
  ]);
340
309
 
341
310
  // Delete pages from the store removing them from disk.
342
- await removeSitePagesFromStore(siteDirName, [
311
+ removeSitePagesFromStore(siteDirName, [
343
312
  pagesStatus.deleted,
344
313
  pagesStatus.offline,
345
314
  pagesStatus.offlinePending,
@@ -367,31 +336,20 @@ async function createStore(options: {
367
336
 
368
337
  if (domainHasSites) {
369
338
  // ( 1 )
370
- await saveRenderInfoInStore(
371
- {
372
- buildProcessData,
373
- createdPages,
374
- sitesToPublish,
375
- },
376
- domain,
377
- );
339
+ saveRenderInfoInStore({
340
+ buildProcessData,
341
+ createdPages,
342
+ sitesToPublish,
343
+ });
378
344
  } else {
379
345
  // ( 2 )
380
- await removeAllSiteDirsFromStore();
381
- await saveRenderInfoInStore(
382
- {
383
- buildProcessData,
384
- createdPages: [],
385
- sitesToPublish: [],
386
- },
387
- domain,
388
- );
346
+ removeAllSiteDirsFromStore();
347
+ saveRenderInfoInStore({
348
+ buildProcessData,
349
+ createdPages: [],
350
+ sitesToPublish: [],
351
+ });
389
352
  }
390
-
391
- return {
392
- pagesToCreate: createdPages,
393
- pagesToDelete: allPagesToRemoveFromBuild,
394
- };
395
353
  } catch (e) {
396
354
  const error = e as { message: string };
397
355
  console.error(error.message);
@@ -1,7 +1,7 @@
1
- import type { Core, Fields } from "@griddo/core";
2
1
  import type { Domains, Robots, Settings } from "./global";
3
2
  import type { APIPageObject } from "./pages";
4
3
  import type { Site } from "./sites";
4
+ import type { Core, Fields } from "@griddo/core";
5
5
 
6
6
  /** EndSiteRender Body */
7
7
  export type EndSiteRenderBody = {
@@ -29,28 +29,29 @@ export interface ReferenceFieldBody {
29
29
  }
30
30
 
31
31
  /** Describes the props of the body object for the get page */
32
- // interface PageBody {
33
- // /** The title of the page. */
34
- // title?: string;
35
- // /** The description of the page. */
36
- // description?: string;
37
- // /** The URL of the page's image. */
38
- // image?: string;
39
- // /** The ID of the page. */
40
- // pageId?: number;
41
- // /** The ID of the page's language. */
42
- // languageId?: number;
43
- // /** The ID of the page's site. */
44
- // siteId?: number;
45
- // /** The URL of the page. */
46
- // url?: string;
47
- // /** The template of the page. */
48
- // template?: string | null | number;
49
- // /** The content of the page. */
50
- // content?: string;
51
- // /** Additional properties. */
52
- // [key: string]: unknown;
53
- // }
32
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
33
+ interface PageBody {
34
+ /** The title of the page. */
35
+ title?: string;
36
+ /** The description of the page. */
37
+ description?: string;
38
+ /** The URL of the page's image. */
39
+ image?: string;
40
+ /** The ID of the page. */
41
+ pageId?: number;
42
+ /** The ID of the page's language. */
43
+ languageId?: number;
44
+ /** The ID of the page's site. */
45
+ siteId?: number;
46
+ /** The URL of the page. */
47
+ url?: string;
48
+ /** The template of the page. */
49
+ template?: string | null | number;
50
+ /** The content of the page. */
51
+ content?: string;
52
+ /** Additional properties. */
53
+ [key: string]: unknown;
54
+ }
54
55
 
55
56
  /** Describes an item in a sitemap. */
56
57
  interface SitemapItem {
@@ -119,8 +120,10 @@ export interface APIRequest {
119
120
  attempt?: number;
120
121
  /**
121
122
  * Headers for the post api fetch
123
+ * @shame any
124
+ * @todo type this correctly from axios types
122
125
  */
123
- headers?: Record<string, unknown>;
126
+ headers?: any; // Record<string, unknown>;
124
127
  /* Save results in apiCache folder */
125
128
  useApiCacheDir?: boolean;
126
129
  }
@@ -1,6 +1,6 @@
1
- import type { Core, Fields } from "@griddo/core";
2
1
  import type { EndSiteRenderBody } from "./api";
3
2
  import type { Site } from "./sites";
3
+ import type { Core, Fields } from "@griddo/core";
4
4
 
5
5
  interface Settings {
6
6
  apiVersion?: string;
@@ -70,7 +70,9 @@ interface RenderInfo {
70
70
  sitesToPublish: Array<Site>;
71
71
  }
72
72
 
73
- type LifeCycleAction = (...args: Array<unknown>) => void | Promise<void>;
73
+ type LifeCycleSteps = Array<
74
+ (...args: Array<unknown>) => unknown | Promise<unknown>
75
+ >;
74
76
 
75
77
  type LifeCyclesNames =
76
78
  | "Init"
@@ -80,11 +82,12 @@ type LifeCyclesNames =
80
82
  | "SSG"
81
83
  | "Relocation"
82
84
  | "Meta"
83
- | "Sync"
85
+ | "Archive"
84
86
  | "Clean"
85
87
  | "Close"
86
88
  | "HealthCheck"
87
- | "Close";
89
+ | "Close"
90
+ | "__DEBUG__";
88
91
 
89
92
  type PlaceholderPath =
90
93
  | "__exports"
@@ -94,13 +97,13 @@ type PlaceholderPath =
94
97
  | "__components"
95
98
  | "__root"
96
99
  | "__exports_dist"
97
- | "__cx_dist"
98
- | "__sites";
100
+ | "__cx_dist";
99
101
 
100
102
  interface CXConfig {
101
103
  proDomain: string;
102
104
  griddoVersion: string;
103
105
  buildReportFileName: string;
106
+ paths: (domain?: string) => Record<PlaceholderPath, string>;
104
107
  }
105
108
 
106
109
  interface AIEmbeddingsResponse {
@@ -113,7 +116,6 @@ interface Artifacts {
113
116
  cacheables: Array<string>;
114
117
  initials: Array<string>;
115
118
  archivables: Array<string>;
116
- restaurable: Array<string>;
117
119
  }
118
120
 
119
121
  export type {
@@ -132,5 +134,5 @@ export type {
132
134
  Robot,
133
135
  Robots,
134
136
  Settings,
135
- LifeCycleAction,
137
+ LifeCycleSteps,
136
138
  };
@@ -21,5 +21,5 @@ export type Footer = {
21
21
  setAsDefault: boolean;
22
22
  theme: null | string;
23
23
  title: string;
24
- type: "footer";
24
+ type: "header";
25
25
  };
@@ -1,7 +1,7 @@
1
- import type { Core, Fields } from "@griddo/core";
2
1
  import type { SocialsResponse } from "./api";
3
2
  import type { Settings } from "./global";
4
3
  import type { Site } from "./sites";
4
+ import type { Core, Fields } from "@griddo/core";
5
5
 
6
6
  // TODO: In @griddo/core the type Core.Page has header/footer as React-Types,
7
7
  // but API return `number | null`.
@@ -156,7 +156,8 @@ export interface Dimensions {
156
156
  dimensionsSelect?: Array<string>;
157
157
  }
158
158
 
159
- export interface GatsbyPageTemplateProps extends Omit<GriddoPageObject, "context"> {
159
+ export interface GatsbyPageTemplateProps
160
+ extends Omit<GriddoPageObject, "context"> {
160
161
  pageContext: GriddoPageObject["context"] & {
161
162
  page: Core.Page;
162
163
  };
@@ -1,6 +1,6 @@
1
- import type { Core } from "@griddo/core";
2
1
  import type { SocialsResponse } from "./api";
3
2
  import type { Footer, Header } from "./navigation";
3
+ import type { Core } from "@griddo/core";
4
4
 
5
5
  /**
6
6
  * Describes a Griddo site object from API.
@@ -43,6 +43,7 @@ export interface Site
43
43
  */
44
44
  pages: Array<number>;
45
45
  onlinePages: Array<number>;
46
+ changedPages: Array<number>;
46
47
  published: string;
47
48
  rendering: boolean;
48
49
  renderingHours: number;
@@ -0,0 +1,29 @@
1
+ import type { GriddoAlertRegisterProps } from "@griddo/core";
2
+
3
+ import axios from "axios";
4
+
5
+ import { endpoints } from "../constants";
6
+
7
+ // Esta función está duplicada de core de manera intencionada por si esta recibe
8
+ // cambios necesitados solo por CX.
9
+ // Nota: Sí estamos reutilizando el type.
10
+ async function insertAlert({
11
+ area,
12
+ description,
13
+ fullData,
14
+ instantNotification = false,
15
+ level,
16
+ }: Omit<GriddoAlertRegisterProps, "publicApiUrl">) {
17
+ const url = endpoints.ALERT;
18
+ const body = { level, area, description, fullData, instantNotification };
19
+
20
+ try {
21
+ await axios.post(url, body, {
22
+ headers: { "Content-Type": "application/json", Connection: "close" },
23
+ });
24
+ } catch (error) {
25
+ console.error("Error creating Griddo alert:", error);
26
+ }
27
+ }
28
+
29
+ export { insertAlert };