@griddo/cx 11.9.9-rc.0 → 11.9.9-rc.2

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 (254) hide show
  1. package/README.md +240 -13
  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 +1 -0
  6. package/build/commands/reset-render.d.ts +1 -0
  7. package/build/commands/start-render.d.ts +1 -0
  8. package/build/commands/upload-search-content.d.ts +1 -0
  9. package/build/constants/envs.d.ts +37 -0
  10. package/build/constants/index.d.ts +57 -0
  11. package/build/end-render.js +74 -0
  12. package/build/end-render.js.map +7 -0
  13. package/build/{shared/errors.d.ts → errors/errors-data.d.ts} +3 -5
  14. package/build/errors/index.d.ts +15 -0
  15. package/build/index.d.ts +29 -10
  16. package/build/index.js +73 -406
  17. package/build/index.js.map +7 -0
  18. package/build/prepare-domains-render.js +73 -0
  19. package/build/prepare-domains-render.js.map +7 -0
  20. package/build/react/Favicon/index.d.ts +5 -0
  21. package/build/react/GriddoIntegrations/index.d.ts +4 -3
  22. package/build/react/GriddoIntegrations/utils.d.ts +6 -7
  23. package/build/react/index.d.ts +2 -3
  24. package/build/react/index.js +3 -1
  25. package/build/registers/api.d.ts +9 -0
  26. package/build/registers/gatsby.d.ts +9 -0
  27. package/build/registers/index.d.ts +3 -0
  28. package/build/reset-render.js +74 -0
  29. package/build/reset-render.js.map +7 -0
  30. package/build/services/auth.d.ts +5 -2
  31. package/build/services/domains.d.ts +4 -3
  32. package/build/services/navigation.d.ts +16 -16
  33. package/build/services/reference-fields.d.ts +3 -3
  34. package/build/services/register.d.ts +36 -0
  35. package/build/services/robots.d.ts +19 -2
  36. package/build/services/settings.d.ts +4 -0
  37. package/build/services/sites.d.ts +5 -8
  38. package/build/services/store.d.ts +1 -10
  39. package/build/start-render.js +100 -0
  40. package/build/start-render.js.map +7 -0
  41. package/build/{shared/types → types}/api.d.ts +18 -18
  42. package/build/{shared/types → types}/global.d.ts +16 -15
  43. package/build/{shared/types → types}/navigation.d.ts +5 -5
  44. package/build/{shared/types → types}/pages.d.ts +9 -9
  45. package/build/{shared/types → types}/sites.d.ts +19 -18
  46. package/build/upload-search-content.js +74 -0
  47. package/build/upload-search-content.js.map +7 -0
  48. package/build/utils/alerts.d.ts +3 -0
  49. package/build/{services → utils}/api.d.ts +1 -1
  50. package/build/utils/cache.d.ts +35 -0
  51. package/build/utils/core-utils.d.ts +107 -0
  52. package/build/utils/create-build-data.d.ts +8 -0
  53. package/build/utils/domains.d.ts +13 -0
  54. package/build/utils/folders.d.ts +53 -0
  55. package/build/{core/check-env-health.d.ts → utils/health-checks.d.ts} +2 -4
  56. package/build/utils/loggin.d.ts +51 -0
  57. package/build/{services → utils}/pages.d.ts +3 -3
  58. package/build/utils/render.d.ts +13 -0
  59. package/build/utils/searches.d.ts +15 -0
  60. package/build/utils/sites.d.ts +31 -0
  61. package/build/utils/store.d.ts +81 -0
  62. package/cx.config.d.ts +5 -0
  63. package/cx.config.js +36 -0
  64. package/exporter/adapters/gatsby/index.ts +162 -0
  65. package/exporter/adapters/gatsby/utils.ts +161 -0
  66. package/exporter/artifacts/README.md +34 -0
  67. package/exporter/artifacts/index.ts +33 -0
  68. package/exporter/build.sh +24 -16
  69. package/exporter/commands/end-render.ts +86 -65
  70. package/exporter/commands/move-assets.ts +11 -0
  71. package/exporter/commands/prepare-domains-render.ts +35 -147
  72. package/exporter/commands/reset-render.ts +8 -13
  73. package/exporter/commands/start-render.ts +64 -26
  74. package/exporter/commands/upload-search-content.ts +26 -201
  75. package/exporter/{shared → constants}/endpoints.ts +11 -12
  76. package/exporter/constants/envs.ts +94 -0
  77. package/exporter/constants/index.ts +129 -0
  78. package/exporter/{shared/errors.ts → errors/errors-data.ts} +14 -24
  79. package/exporter/errors/index.ts +40 -0
  80. package/exporter/index.ts +56 -14
  81. package/exporter/react/{GriddoFavicon → Favicon}/index.tsx +9 -3
  82. package/exporter/react/GriddoIntegrations/index.tsx +23 -17
  83. package/exporter/react/GriddoIntegrations/utils.ts +12 -24
  84. package/exporter/react/index.tsx +9 -3
  85. package/exporter/registers/api.ts +14 -0
  86. package/exporter/registers/gatsby.ts +14 -0
  87. package/exporter/registers/index.ts +4 -0
  88. package/exporter/services/auth.ts +10 -8
  89. package/exporter/services/domains.ts +8 -23
  90. package/exporter/services/navigation.ts +18 -12
  91. package/exporter/services/reference-fields.ts +32 -14
  92. package/exporter/services/register.ts +113 -0
  93. package/exporter/services/robots.ts +61 -33
  94. package/exporter/services/settings.ts +17 -0
  95. package/exporter/services/sites.ts +28 -40
  96. package/exporter/services/store.ts +321 -354
  97. package/exporter/{shared/types → types}/api.ts +41 -40
  98. package/exporter/{shared/types → types}/global.ts +21 -17
  99. package/exporter/{shared/types → types}/navigation.ts +3 -3
  100. package/exporter/{shared/types → types}/pages.ts +11 -10
  101. package/exporter/{shared/types → types}/sites.ts +19 -18
  102. package/exporter/utils/alerts.ts +29 -0
  103. package/exporter/utils/api.ts +243 -0
  104. package/exporter/utils/cache.ts +142 -0
  105. package/exporter/utils/core-utils.ts +458 -0
  106. package/exporter/utils/create-build-data.ts +17 -0
  107. package/exporter/utils/domains.ts +39 -0
  108. package/exporter/utils/folders.ts +320 -0
  109. package/exporter/utils/health-checks.ts +64 -0
  110. package/exporter/{core → utils}/images.ts +6 -1
  111. package/exporter/{core → utils}/instance.ts +13 -9
  112. package/exporter/utils/loggin.ts +184 -0
  113. package/exporter/{services → utils}/pages.ts +92 -27
  114. package/exporter/utils/render.ts +71 -0
  115. package/exporter/utils/searches.ts +156 -0
  116. package/exporter/utils/sites.ts +312 -0
  117. package/exporter/utils/store.ts +314 -0
  118. package/gatsby-browser.tsx +58 -41
  119. package/gatsby-config.ts +17 -10
  120. package/gatsby-node.ts +79 -20
  121. package/gatsby-ssr.tsx +1 -2
  122. package/package.json +80 -41
  123. package/src/README.md +7 -0
  124. package/src/components/Head.tsx +73 -28
  125. package/src/components/template.tsx +29 -6
  126. package/src/gatsby-node-utils.ts +2 -76
  127. package/src/html.tsx +11 -2
  128. package/src/types.ts +3 -3
  129. package/start-render.js +7 -0
  130. package/tsconfig.json +3 -5
  131. package/build/commands/end-render.js +0 -31
  132. package/build/commands/end-render.js.map +0 -7
  133. package/build/commands/prepare-assets-directory.js +0 -9
  134. package/build/commands/prepare-assets-directory.js.map +0 -7
  135. package/build/commands/prepare-domains-render.js +0 -38
  136. package/build/commands/prepare-domains-render.js.map +0 -7
  137. package/build/commands/reset-render.js +0 -31
  138. package/build/commands/reset-render.js.map +0 -7
  139. package/build/commands/single-domain-upload-search-content.d.ts +0 -1
  140. package/build/commands/start-render.js +0 -66
  141. package/build/commands/start-render.js.map +0 -7
  142. package/build/commands/upload-search-content.js +0 -31
  143. package/build/commands/upload-search-content.js.map +0 -7
  144. package/build/core/GriddoLog.d.ts +0 -16
  145. package/build/core/db-class.d.ts +0 -11
  146. package/build/core/db.d.ts +0 -4
  147. package/build/core/dist-rollback.d.ts +0 -11
  148. package/build/core/errors.d.ts +0 -26
  149. package/build/core/fs.d.ts +0 -69
  150. package/build/core/life-cycle.d.ts +0 -26
  151. package/build/core/logger.d.ts +0 -18
  152. package/build/core/objects.d.ts +0 -11
  153. package/build/core/print-logos.d.ts +0 -5
  154. package/build/react/DynamicScript/index.d.ts +0 -4
  155. package/build/react/GriddoFavicon/index.d.ts +0 -4
  156. package/build/react/GriddoOpenGraph/index.d.ts +0 -10
  157. package/build/services/manage-sites.d.ts +0 -22
  158. package/build/services/manage-store.d.ts +0 -32
  159. package/build/services/render-artifacts.d.ts +0 -6
  160. package/build/services/render.d.ts +0 -70
  161. package/build/services/sitemaps.d.ts +0 -5
  162. package/build/shared/context.d.ts +0 -36
  163. package/build/shared/envs.d.ts +0 -19
  164. package/build/shared/npm-modules/brush.d.ts +0 -18
  165. package/build/shared/npm-modules/find-up-simple.d.ts +0 -34
  166. package/build/shared/npm-modules/pkg-dir.d.ts +0 -7
  167. package/build/shared/npm-modules/xml-parser.d.ts +0 -4
  168. package/build/shared/types/render.d.ts +0 -54
  169. package/build/shared/types.d.ts +0 -15
  170. package/build/ssg-adapters/gatsby/actions/clean.d.ts +0 -3
  171. package/build/ssg-adapters/gatsby/actions/close.d.ts +0 -3
  172. package/build/ssg-adapters/gatsby/actions/data.d.ts +0 -2
  173. package/build/ssg-adapters/gatsby/actions/healthCheck.d.ts +0 -2
  174. package/build/ssg-adapters/gatsby/actions/init.d.ts +0 -2
  175. package/build/ssg-adapters/gatsby/actions/logs.d.ts +0 -3
  176. package/build/ssg-adapters/gatsby/actions/meta.d.ts +0 -2
  177. package/build/ssg-adapters/gatsby/actions/prepare.d.ts +0 -2
  178. package/build/ssg-adapters/gatsby/actions/relocation.d.ts +0 -2
  179. package/build/ssg-adapters/gatsby/actions/restore.d.ts +0 -3
  180. package/build/ssg-adapters/gatsby/actions/ssg.d.ts +0 -3
  181. package/build/ssg-adapters/gatsby/actions/sync.d.ts +0 -3
  182. package/build/ssg-adapters/gatsby/index.d.ts +0 -9
  183. package/build/ssg-adapters/gatsby/shared/artifacts.d.ts +0 -4
  184. package/build/ssg-adapters/gatsby/shared/diff-assets.d.ts +0 -15
  185. package/build/ssg-adapters/gatsby/shared/extract-assets.d.ts +0 -7
  186. package/build/ssg-adapters/gatsby/shared/gatsby-build.d.ts +0 -7
  187. package/build/ssg-adapters/gatsby/shared/render-rollback.d.ts +0 -18
  188. package/build/ssg-adapters/gatsby/shared/sync-render.d.ts +0 -26
  189. package/build/ssg-adapters/gatsby/shared/types.d.ts +0 -34
  190. package/cli.mjs +0 -231
  191. package/exporter/build-esbuild.noop +0 -42
  192. package/exporter/commands/README.md +0 -151
  193. package/exporter/commands/prepare-assets-directory.ts +0 -34
  194. package/exporter/commands/single-domain-upload-search-content.ts +0 -206
  195. package/exporter/core/GriddoLog.ts +0 -45
  196. package/exporter/core/check-env-health.ts +0 -204
  197. package/exporter/core/db-class.ts +0 -54
  198. package/exporter/core/db.ts +0 -33
  199. package/exporter/core/dist-rollback.ts +0 -49
  200. package/exporter/core/errors.ts +0 -92
  201. package/exporter/core/fs.ts +0 -385
  202. package/exporter/core/life-cycle.ts +0 -73
  203. package/exporter/core/logger.ts +0 -141
  204. package/exporter/core/objects.ts +0 -37
  205. package/exporter/core/print-logos.ts +0 -21
  206. package/exporter/react/DynamicScript/index.tsx +0 -33
  207. package/exporter/react/GriddoOpenGraph/index.tsx +0 -39
  208. package/exporter/services/api.ts +0 -306
  209. package/exporter/services/manage-sites.ts +0 -116
  210. package/exporter/services/manage-store.ts +0 -173
  211. package/exporter/services/render-artifacts.ts +0 -44
  212. package/exporter/services/render.ts +0 -229
  213. package/exporter/services/sitemaps.ts +0 -129
  214. package/exporter/shared/context.ts +0 -49
  215. package/exporter/shared/envs.ts +0 -62
  216. package/exporter/shared/npm-modules/README.md +0 -36
  217. package/exporter/shared/npm-modules/brush.ts +0 -34
  218. package/exporter/shared/npm-modules/find-up-simple.ts +0 -100
  219. package/exporter/shared/npm-modules/pkg-dir.ts +0 -17
  220. package/exporter/shared/npm-modules/xml-parser.ts +0 -57
  221. package/exporter/shared/types/render.ts +0 -63
  222. package/exporter/shared/types.ts +0 -15
  223. package/exporter/ssg-adapters/gatsby/actions/clean.ts +0 -26
  224. package/exporter/ssg-adapters/gatsby/actions/close.ts +0 -17
  225. package/exporter/ssg-adapters/gatsby/actions/data.ts +0 -22
  226. package/exporter/ssg-adapters/gatsby/actions/healthCheck.ts +0 -10
  227. package/exporter/ssg-adapters/gatsby/actions/init.ts +0 -12
  228. package/exporter/ssg-adapters/gatsby/actions/logs.ts +0 -10
  229. package/exporter/ssg-adapters/gatsby/actions/meta.ts +0 -13
  230. package/exporter/ssg-adapters/gatsby/actions/prepare.ts +0 -9
  231. package/exporter/ssg-adapters/gatsby/actions/relocation.ts +0 -15
  232. package/exporter/ssg-adapters/gatsby/actions/restore.ts +0 -21
  233. package/exporter/ssg-adapters/gatsby/actions/ssg.ts +0 -12
  234. package/exporter/ssg-adapters/gatsby/actions/sync.ts +0 -65
  235. package/exporter/ssg-adapters/gatsby/index.ts +0 -114
  236. package/exporter/ssg-adapters/gatsby/shared/artifacts.ts +0 -17
  237. package/exporter/ssg-adapters/gatsby/shared/diff-assets.ts +0 -128
  238. package/exporter/ssg-adapters/gatsby/shared/extract-assets.ts +0 -75
  239. package/exporter/ssg-adapters/gatsby/shared/gatsby-build.ts +0 -58
  240. package/exporter/ssg-adapters/gatsby/shared/render-rollback.ts +0 -33
  241. package/exporter/ssg-adapters/gatsby/shared/sync-render.ts +0 -298
  242. package/exporter/ssg-adapters/gatsby/shared/types.ts +0 -35
  243. package/plugins/gatsby-plugin-svgr-loader/gatsby-node.js +0 -55
  244. package/plugins/gatsby-plugin-svgr-loader/package.json +0 -8
  245. package/tsconfig.commands.json +0 -36
  246. package/tsconfig.exporter.json +0 -21
  247. /package/build/commands/{prepare-assets-directory.d.ts → move-assets.d.ts} +0 -0
  248. /package/build/{shared → constants}/endpoints.d.ts +0 -0
  249. /package/build/react/{GriddoFavicon → Favicon}/utils.d.ts +0 -0
  250. /package/build/{shared/types → types}/templates.d.ts +0 -0
  251. /package/build/{core → utils}/images.d.ts +0 -0
  252. /package/build/{core → utils}/instance.d.ts +0 -0
  253. /package/exporter/react/{GriddoFavicon → Favicon}/utils.ts +0 -0
  254. /package/exporter/{shared/types → types}/templates.ts +0 -0
@@ -2,6 +2,7 @@ import type { GatsbyBrowser } from "gatsby";
2
2
 
3
3
  import { SessionProvider } from "@griddo/core";
4
4
  import { browser } from "@griddo-instance";
5
+ import * as React from "react";
5
6
 
6
7
  export const disableCorePrefetching = () => {
7
8
  if (browser.disableCorePrefetching) {
@@ -21,7 +22,9 @@ export const onInitialClientRender = () => {
21
22
  }
22
23
  };
23
24
 
24
- export const onPostPrefetchPathname: GatsbyBrowser["onPostPrefetchPathname"] = (props) => {
25
+ export const onPostPrefetchPathname: GatsbyBrowser["onPostPrefetchPathname"] = (
26
+ props,
27
+ ) => {
25
28
  if (browser.onPostPrefetchPathname) {
26
29
  browser.onPostPrefetchPathname(props);
27
30
  }
@@ -33,61 +36,75 @@ export const onPreRouteUpdate: GatsbyBrowser["onPreRouteUpdate"] = (props) => {
33
36
  }
34
37
  };
35
38
 
36
- export const onPrefetchPathname: GatsbyBrowser["onPrefetchPathname"] = (props) => {
39
+ export const onPrefetchPathname: GatsbyBrowser["onPrefetchPathname"] = (
40
+ props,
41
+ ) => {
37
42
  if (browser.onPrefetchPathname) {
38
43
  browser.onPrefetchPathname(props);
39
44
  }
40
45
  };
41
46
 
42
- export const onRouteUpdateDelayed: GatsbyBrowser["onRouteUpdateDelayed"] = (props) => {
47
+ export const onRouteUpdateDelayed: GatsbyBrowser["onRouteUpdateDelayed"] = (
48
+ props,
49
+ ) => {
43
50
  if (browser.onServiceWorkerActive) {
44
51
  browser.onRouteUpdateDelayed(props);
45
52
  }
46
53
  };
47
54
 
48
- export const onServiceWorkerActive: GatsbyBrowser["onServiceWorkerActive"] = (props) => {
55
+ export const onServiceWorkerActive: GatsbyBrowser["onServiceWorkerActive"] = (
56
+ props,
57
+ ) => {
49
58
  if (browser.onServiceWorkerActive) {
50
59
  browser.onServiceWorkerActive(props);
51
60
  }
52
61
  };
53
62
 
54
- export const onServiceWorkerInstalled: GatsbyBrowser["onServiceWorkerInstalled"] = (props) => {
55
- if (browser.onServiceWorkerInstalled) {
56
- browser.onServiceWorkerInstalled(props);
57
- }
58
- };
59
-
60
- export const onServiceWorkerRedundant: GatsbyBrowser["onServiceWorkerRedundant"] = (props) => {
61
- if (browser.onServiceWorkerRedundant) {
62
- browser.onServiceWorkerRedundant(props);
63
- }
64
- };
65
-
66
- export const onServiceWorkerUpdateFound: GatsbyBrowser["onServiceWorkerUpdateFound"] = (props) => {
67
- if (browser.onServiceWorkerUpdateFound) {
68
- browser.onServiceWorkerUpdateFound(props);
69
- }
70
- };
71
-
72
- export const onServiceWorkerUpdateReady: GatsbyBrowser["onServiceWorkerUpdateReady"] = (props) => {
73
- if (browser.onServiceWorkerUpdateReady) {
74
- browser.onServiceWorkerUpdateReady(props);
75
- }
76
- };
77
-
78
- export const registerServiceWorker: GatsbyBrowser["registerServiceWorker"] = () => {
79
- if (browser.registerServiceWorker) {
80
- return browser.registerServiceWorker();
81
- }
82
- };
83
-
84
- export const replaceHydrateFunction: GatsbyBrowser["replaceHydrateFunction"] = () => {
85
- if (browser.replaceHydrateFunction) {
86
- return browser.replaceHydrateFunction();
87
- }
88
- };
89
-
90
- export const shouldUpdateScroll: GatsbyBrowser["shouldUpdateScroll"] = (props) => {
63
+ export const onServiceWorkerInstalled: GatsbyBrowser["onServiceWorkerInstalled"] =
64
+ (props) => {
65
+ if (browser.onServiceWorkerInstalled) {
66
+ browser.onServiceWorkerInstalled(props);
67
+ }
68
+ };
69
+
70
+ export const onServiceWorkerRedundant: GatsbyBrowser["onServiceWorkerRedundant"] =
71
+ (props) => {
72
+ if (browser.onServiceWorkerRedundant) {
73
+ browser.onServiceWorkerRedundant(props);
74
+ }
75
+ };
76
+
77
+ export const onServiceWorkerUpdateFound: GatsbyBrowser["onServiceWorkerUpdateFound"] =
78
+ (props) => {
79
+ if (browser.onServiceWorkerUpdateFound) {
80
+ browser.onServiceWorkerUpdateFound(props);
81
+ }
82
+ };
83
+
84
+ export const onServiceWorkerUpdateReady: GatsbyBrowser["onServiceWorkerUpdateReady"] =
85
+ (props) => {
86
+ if (browser.onServiceWorkerUpdateReady) {
87
+ browser.onServiceWorkerUpdateReady(props);
88
+ }
89
+ };
90
+
91
+ export const registerServiceWorker: GatsbyBrowser["registerServiceWorker"] =
92
+ () => {
93
+ if (browser.registerServiceWorker) {
94
+ return browser.registerServiceWorker();
95
+ }
96
+ };
97
+
98
+ export const replaceHydrateFunction: GatsbyBrowser["replaceHydrateFunction"] =
99
+ () => {
100
+ if (browser.replaceHydrateFunction) {
101
+ return browser.replaceHydrateFunction();
102
+ }
103
+ };
104
+
105
+ export const shouldUpdateScroll: GatsbyBrowser["shouldUpdateScroll"] = (
106
+ props,
107
+ ) => {
91
108
  if (browser.shouldUpdateScroll) {
92
109
  return browser.shouldUpdateScroll(props);
93
110
  }
package/gatsby-config.ts CHANGED
@@ -1,26 +1,33 @@
1
1
  import type { GatsbyConfig } from "gatsby";
2
2
 
3
- import { resolveComponentsPath } from "@griddo/cx";
3
+ import { resolveComponentsPath, verboseLog } from "@griddo/cx";
4
+ import dotenv from "dotenv";
5
+
6
+ dotenv.config();
4
7
 
5
8
  /**
6
9
  * Este process.env.SPAWN_ASSET_PREFIX_WITH_DOMAIN se lee porque
7
- * se ha introducido en el spawnSync del la función gatsbyBuild.
10
+ * se ha introducido en el spawnSync del la función runGatsbyBuildCommand.
8
11
  *
9
12
  * ...
10
- * env: {
11
- * ...process.env,
13
+ * env: Object.assign(process.env, {
14
+ * GRIDDO_EXPORTER: "true",
12
15
  * SPAWN_ASSET_PREFIX_WITH_DOMAIN: assetPrefixWithDomain, <--------------
13
16
  * NODE_OPTIONS: undefined,
14
- * },
17
+ * }),
18
+ *
19
+ * @see runGatsbyBuildCommand()
20
+ * @todo quiar el `... || undefined`
15
21
  */
16
- const griddoAssetPrefixWithDomain = process.env.SPAWN_ASSET_PREFIX_WITH_DOMAIN || undefined;
22
+ const griddoAssetPrefixWithDomain =
23
+ process.env.SPAWN_ASSET_PREFIX_WITH_DOMAIN || undefined;
17
24
 
18
- if (process.env.GRIDDO_SSG_VERBOSE_LOGS) {
19
- console.log(`set config.assetPrefix=${griddoAssetPrefixWithDomain}`);
20
- }
25
+ verboseLog(`set config.assetPrefix=${griddoAssetPrefixWithDomain}`);
21
26
 
22
27
  // Gatsby configuration file from client
23
- const { plugins, ...gatsbyConfig } = require(resolveComponentsPath("builder.config.js"));
28
+ const { plugins, ...gatsbyConfig } = require(
29
+ resolveComponentsPath("builder.config.js"),
30
+ );
24
31
 
25
32
  const config: GatsbyConfig = {
26
33
  // Client config
package/gatsby-node.ts CHANGED
@@ -1,34 +1,49 @@
1
- import type { GatsbyNode } from "gatsby";
2
1
  import type { GatsbyPageObject } from "./src/types";
2
+ import type { GatsbyNode } from "gatsby";
3
3
 
4
4
  import path from "node:path";
5
5
 
6
- import { addLogToBuffer, isComponentLibrary } from "@griddo/cx";
6
+ import {
7
+ buildLog,
8
+ debugLog,
9
+ envs,
10
+ getBuildPagesFromStore,
11
+ getConfig,
12
+ pageSizeLog,
13
+ verboseLog,
14
+ } from "@griddo/cx";
7
15
 
8
- import { getBuildPagesFromStore, pageSizeLog } from "./src/gatsby-node-utils";
16
+ import { gatsbyRegister } from "./exporter/registers";
17
+ import { insertAlert } from "./exporter/utils/alerts";
18
+
19
+ const showGriddoBuildLogs = envs.GRIDDO_BUILD_LOGS;
9
20
 
10
21
  // process.env available through gatsbyBuildCommand.
11
- const showGriddoBuildLogs = JSON.parse(process.env.GRIDDO_BUILD_LOGS || "false");
12
- const showSSGVerboseLogs = JSON.parse(process.env.GRIDDO_VERBOSE_SSG || "false");
13
22
  const assetPrefixWithDomain = process.env.SPAWN_ASSET_PREFIX_WITH_DOMAIN;
14
- const needsAssetDomainPrefix = !!assetPrefixWithDomain && assetPrefixWithDomain !== "";
15
- const nodeOptions = process.env.NODE_OPTIONS;
23
+ const sendAlertActive = JSON.parse(process.env.GRIDDO_ALERT_FEATURE || "false");
24
+ const avoidMatchPath = JSON.parse(
25
+ process.env.GRIDDO_EXPERIMENTAL_DO_NOT_USE_MATCH_PATH || "false",
26
+ );
27
+ const useMatchPaths = !avoidMatchPath;
28
+ const needsAssetDomainPrefix =
29
+ !!assetPrefixWithDomain && assetPrefixWithDomain !== "";
16
30
 
17
- const template = path.resolve("./src/components/template.tsx");
18
- const dbFilePath = isComponentLibrary
19
- ? path.resolve(__dirname, "../../..", ".griddo/cache/db.json")
20
- : path.resolve(__dirname, "../..", ".griddo/cache/db.json");
31
+ const { __ssg } = getConfig().paths();
32
+ const template = path.join(__ssg, "src/components/template.tsx");
21
33
 
22
34
  const pages = getBuildPagesFromStore<GatsbyPageObject>({
23
35
  withSizeProp: showGriddoBuildLogs,
24
- dbFilePath,
25
36
  });
26
37
 
27
38
  const createPages: GatsbyNode["createPages"] = async ({ actions }) => {
28
- if (showSSGVerboseLogs) {
29
- console.log(`read assetPrefixWithDomain=${assetPrefixWithDomain}`);
30
- console.log(`set needsAssetDomainPrefix=${needsAssetDomainPrefix}`);
31
- console.log(`using NODE_OPTIONS in gatsby-node.ts: ${nodeOptions}`);
39
+ verboseLog(`read assetPrefixWithDomain=${assetPrefixWithDomain}`);
40
+ verboseLog(`set needsAssetDomainPrefix=${needsAssetDomainPrefix}`);
41
+ console.log(
42
+ `using this NODE_OPTIONS in gatsby-node.ts: ${process.env.NODE_OPTIONS}`,
43
+ );
44
+
45
+ if (avoidMatchPath) {
46
+ console.log(`[!] GRIDDO EXPERIMENTAL: Avoiding use of matchPath`);
32
47
  }
33
48
 
34
49
  for await (const page of pages) {
@@ -36,16 +51,60 @@ const createPages: GatsbyNode["createPages"] = async ({ actions }) => {
36
51
  return;
37
52
  }
38
53
 
54
+ const matchPath =
55
+ needsAssetDomainPrefix && useMatchPaths
56
+ ? page.context.fullPath.compose
57
+ : "";
58
+
39
59
  page.component = template;
60
+ page.matchPath = matchPath;
40
61
 
41
62
  actions.createPage(page);
42
63
 
64
+ const path = page.path;
65
+ const id = page.context.id;
66
+ const size = pageSizeLog(Math.round(page.size || 0));
67
+
68
+ if (sendAlertActive && page.size) {
69
+ const pageMaxSizeReached =
70
+ page.size >
71
+ Number.parseInt(process.env.GRIDDO_SSG_MAX_PAGE_SIZE || "524288") /
72
+ 1024;
73
+
74
+ if (pageMaxSizeReached) {
75
+ gatsbyRegister.insert("GATSBY_PAGE_SIZE_TOO_BIG", {
76
+ path: page.path,
77
+ size: `${Math.round(page.size)}KB`,
78
+ });
79
+ }
80
+ }
81
+
43
82
  if (showGriddoBuildLogs) {
44
- const id = page.context.id;
45
- const path = page.path;
46
- const size = pageSizeLog(Math.round(page.size || 0));
47
- addLogToBuffer(`Creating page ${path} - ${id} - ${size}`);
83
+ buildLog(`Creating page ${path} - ${id} - ${size}`);
84
+ }
85
+ }
86
+
87
+ if (sendAlertActive) {
88
+ const registerContent = gatsbyRegister.get("GATSBY_PAGE_SIZE_TOO_BIG");
89
+
90
+ if (registerContent.entries.length < 1) {
91
+ return;
48
92
  }
93
+
94
+ debugLog("\nRender register report\n");
95
+ debugLog(registerContent);
96
+ debugLog();
97
+
98
+ await insertAlert({
99
+ description: "Render register report",
100
+ area: "Griddo",
101
+ level: "W",
102
+ fullData: {
103
+ output: registerContent,
104
+ date: new Date().toISOString(),
105
+ },
106
+ instantNotification: false,
107
+ });
49
108
  }
50
109
  };
51
110
 
package/gatsby-ssr.tsx CHANGED
@@ -1,9 +1,8 @@
1
1
  import type { GatsbySSR } from "gatsby";
2
2
 
3
- import * as React from "react";
4
-
5
3
  import { SessionProvider } from "@griddo/core";
6
4
  import { ssr } from "@griddo-instance";
5
+ import * as React from "react";
7
6
 
8
7
  export const wrapPageElement: GatsbySSR["wrapPageElement"] = (props) => {
9
8
  if (ssr.wrapPageElement) {
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@griddo/cx",
3
3
  "description": "Griddo SSG based on Gatsby",
4
- "version": "11.9.9-rc.0",
4
+ "version": "11.9.9-rc.2",
5
5
  "authors": [
6
- "Hisco <francis.vega@griddo.io>"
6
+ "Álvaro Sánchez' <alvaro.sanches@secuoyas.com>",
7
+ "Diego M. Béjar <diego.bejar@secuoyas.com>",
8
+ "Francis Vega <francis.vega@secuoyas.com>",
9
+ "Gonzalo Hernández <gonzalo.hernandez@secuoyas.com>",
10
+ "Sergio Ródenas <sergio.rodenas@secuoyas.com>"
7
11
  ],
8
12
  "license": "UNLICENSED",
9
13
  "homepage": "https://griddo.io",
@@ -11,6 +15,10 @@
11
15
  "type": "git",
12
16
  "url": "https://github.com/griddo/griddo"
13
17
  },
18
+ "bin": {
19
+ "griddo-cx": "./start-render.js",
20
+ "griddo-start-render": "./start-render.js"
21
+ },
14
22
  "exports": {
15
23
  ".": {
16
24
  "import": "./build/index.js",
@@ -27,69 +35,100 @@
27
35
  "// NPM": "",
28
36
  "prepare": "yarn run build",
29
37
  "// BUILD": "",
30
- "build": "rm -rf build && sh ./exporter/build.sh",
31
- "build:debug": "rm -rf build && sh ./exporter/build.sh --debug",
38
+ "build": "sh ./exporter/build.sh",
39
+ "build:debug": "sh ./exporter/build.sh --debug",
32
40
  "// TESTS": "",
33
- "test": "npm run test:compile && npm run test:create-render-fixtures && node --env-file=.env --test ./build/__tests__/* && npm run test:remove-render-fixtures",
34
- "test-exporter": "npm run test:compile && node --env-file=.env --test ./build/__tests__exporter__/",
35
- "test:create-render-fixtures": "node --env-file=.env ./build/__tests__/utils/create-fixtures",
36
- "test:remove-render-fixtures": "node --env-file=.env ./build/__tests__/utils/remove-fixtures",
37
- "test:compile": "tsgo --project tsconfig.tests.json",
41
+ "test": "NODE_OPTIONS='--import tsx' env-cmd node --test ./__tests__/*",
42
+ "test:create-render-fixtures": "env-cmd tsx ./__tests__/utils/create-fixtures.ts",
43
+ "test:remove-render-fixtures": "env-cmd tsx ./__tests__/utils/remove-fixtures.ts",
38
44
  "// INFRA SCRIPTS": "",
39
- "prepare-domains-render": "node ./build/commands/prepare-domains-render",
40
- "start-render": "node ./build/commands/start-render",
41
- "end-render": "node ./build/commands/end-render",
42
- "upload-search-content": "node ./build/commands/upload-search-content",
43
- "reset-render": "node ./build/commands/reset-render",
44
- "// ONLY LOCAL SCRIPTS": "",
45
- "prepare-assets-directory": "node ./build/commands/prepare-assets-directory",
46
- "create-rollback-copy": "rm -rf ../../exports-backup && cp -r ../../exports ../../exports-backup",
47
- "render": "npm run build && node --env-file=.env cli.mjs render",
48
- "// LINTER & FORMATTER": "",
49
- "lint": "biome check --write",
50
- "format": "biome format --write",
51
- "flint": "npm run lint && npm run format",
52
- "ts-lint": "tsgo --noEmit",
53
- "watch:ts-lint": "tsc --noEmit --watch"
45
+ "upload-search-content": "node ./build/upload-search-content.js",
46
+ "complete-render": "node ./build/end-render.js",
47
+ "end-render": "node ./build/end-render.js",
48
+ "start-render": "node ./build/start-render.js",
49
+ "reset-render": "node ./build/reset-render.js",
50
+ "prepare-domains-render": "node ./build/prepare-domains-render.js",
51
+ "// SSG": "",
52
+ "clean": "gatsby clean; rm -rf assets .cx-cache caches store apiCache build .render-sentinel",
53
+ "gatsby-build": "gatsby telemetry --disable && gatsby build --prefix-paths",
54
+ "// LINTER": "",
55
+ "run:ts-lint": "tsc --noEmit",
56
+ "watch:ts-lint": "tsc --noEmit --watch",
57
+ "run:eslint": "eslint .",
58
+ "run:lint": "yarn run:ts-lint && yarn run:eslint",
59
+ "// FORMATTER": "",
60
+ "run:format": "prettier --write ."
54
61
  },
55
62
  "dependencies": {
56
- "gatsby": "5.15.0",
57
- "typescript": "4.9.5"
63
+ "@babel/core": "7.26.0",
64
+ "@babel/plugin-transform-class-properties": "7.25.9",
65
+ "@babel/preset-env": "7.26.0",
66
+ "@babel/preset-react": "7.26.3",
67
+ "@babel/preset-typescript": "7.26.0",
68
+ "@griddo/core": "11.9.9-rc.2",
69
+ "@svgr/webpack": "5.5.0",
70
+ "axios": "1.7.9",
71
+ "babel-loader": "9.2.1",
72
+ "babel-plugin-transform-runtime": "6.23.0",
73
+ "babel-polyfill": "6.26.0",
74
+ "dotenv": "16.4.5",
75
+ "esbuild": "0.24.0",
76
+ "find-up": "5.0.0",
77
+ "fs-extra": "11.2.0",
78
+ "gatsby": "5.14.0",
79
+ "gatsby-plugin-svgr-loader": "0.1.0",
80
+ "html-react-parser": "5.2.0",
81
+ "js2xmlparser": "5.0.0",
82
+ "kleur": "4.1.5",
83
+ "p-limit": "3.1.0",
84
+ "path-browserify": "1.0.1",
85
+ "pkg-dir": "5.0.0",
86
+ "typescript": "5.7.2",
87
+ "webpack": "5.76.1"
58
88
  },
59
89
  "devDependencies": {
60
- "@biomejs/biome": "2.2.6",
61
- "@types/node": "20.19.4",
62
- "@typescript/native-preview": "latest",
63
- "cheerio": "1.1.2",
64
- "esbuild": "0.25.11",
65
- "p-limit": "7.2.0"
90
+ "@types/cheerio": "0.22.35",
91
+ "@types/eslint": "8.56.10",
92
+ "@types/fs-extra": "11.0.4",
93
+ "@types/node": "20.17.10",
94
+ "@types/webpack": "5.28.5",
95
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
96
+ "@typescript-eslint/parser": "^8.0.0",
97
+ "cheerio": "1.0.0",
98
+ "eslint": "^9.0.0",
99
+ "eslint-plugin-import": "2.31.0",
100
+ "eslint-plugin-node": "11.1.0",
101
+ "eslint-plugin-react": "7.37.4",
102
+ "eslint-plugin-react-hooks": "^4.6.0",
103
+ "eslint-plugin-testing-library": "^6.2.0",
104
+ "globals": "^16.0.0",
105
+ "prettier": "3.4.2"
66
106
  },
67
107
  "peerDependencies": {
68
- "@griddo/core": "*",
108
+ "@types/react": ">=18 <19",
109
+ "@types/react-dom": ">=18 <19",
69
110
  "react": ">=18 <19",
70
111
  "react-dom": ">=18 <19"
71
112
  },
72
113
  "engines": {
73
- "node": ">=20.19"
114
+ "node": ">=20"
74
115
  },
75
116
  "files": [
76
117
  "build",
77
118
  "exporter",
78
119
  "src",
79
- "react",
120
+ "cx.config.d.ts",
121
+ "cx.config.js",
80
122
  "gatsby-browser.tsx",
81
123
  "gatsby-config.ts",
82
124
  "gatsby-node.ts",
83
125
  "gatsby-ssr.tsx",
84
126
  "global.d.ts",
85
- "tsconfig.commands.json",
86
- "tsconfig.exporter.json",
87
- "tsconfig.json",
88
- "plugins",
89
- "cli.mjs"
127
+ "start-render.js",
128
+ "tsconfig.json"
90
129
  ],
91
130
  "publishConfig": {
92
131
  "access": "public"
93
132
  },
94
- "gitHead": "df9f9d683ad5f84b7f209c28b352c1b43d6d684f"
133
+ "gitHead": "40e12cbab48091331921da9166d2acd62906854a"
95
134
  }
package/src/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # Griddo CX + Gatsby
2
+
3
+ The `/src` dir and almost every file in the root dir is now 100% Gatsby related code along with the historical `/public`, `/dist`, `/apiCache`, `/store`, etc.. render dirs.
4
+
5
+ Griddo CX code (the business logic) is now in `/exporter` dir.
6
+
7
+ In the future, Griddo CX and Gatsby will split int their own packages dirs inside the mono-repo.
@@ -1,14 +1,7 @@
1
1
  import type { CustomHeadProps } from "../types";
2
2
 
3
- import { GriddoFavicon, GriddoIntegrations, GriddoOpenGraph } from "@griddo/cx/react";
4
-
5
- function cleanCommaSeparated(str: string) {
6
- return str
7
- .split(",")
8
- .map((item) => item.trim())
9
- .filter(Boolean)
10
- .join(",");
11
- }
3
+ import { Favicon, GriddoIntegrations } from "@griddo/cx/react";
4
+ import * as React from "react";
12
5
 
13
6
  /**
14
7
  * Gatsby Head API
@@ -19,7 +12,13 @@ const Head = (props: CustomHeadProps) => {
19
12
  pageContext: {
20
13
  locale,
21
14
  openGraph,
22
- page: { disableHrefLangs, fullUrl, defaultLang, integrations = [], dimensions },
15
+ page: {
16
+ disableHrefLangs,
17
+ fullUrl,
18
+ defaultLang,
19
+ integrations = [],
20
+ dimensions,
21
+ },
23
22
  pageMetadata,
24
23
  siteMetadata,
25
24
  siteOptions,
@@ -32,13 +31,19 @@ const Head = (props: CustomHeadProps) => {
32
31
  );
33
32
 
34
33
  const showMetaRobots =
35
- !!metaRobots && (siteOptions?.showBasicMetaRobots || metaRobots !== "index,follow");
34
+ !!metaRobots &&
35
+ (siteOptions?.showBasicMetaRobots || metaRobots !== "index,follow");
36
36
 
37
- const cleanPageLanguages = pageMetadata?.pageLanguages?.filter((item) => item.isLive) || [];
37
+ // Validate options
38
+ const cleanPageLanguages =
39
+ pageMetadata?.pageLanguages?.filter((item) => item.isLive) || [];
38
40
 
39
41
  const useCanonical =
40
42
  !!pageMetadata?.canonical &&
41
- !(siteOptions?.avoidSelfReferenceCanonicals && pageMetadata?.canonical === fullUrl);
43
+ !(
44
+ siteOptions?.avoidSelfReferenceCanonicals &&
45
+ pageMetadata?.canonical === fullUrl
46
+ );
42
47
 
43
48
  const useHrefLangs =
44
49
  !(
@@ -55,7 +60,8 @@ const Head = (props: CustomHeadProps) => {
55
60
  (useHrefLangs &&
56
61
  !siteOptions?.avoidHrefLangXDefault &&
57
62
  defaultLangId &&
58
- cleanPageLanguages.find((item) => item.languageId === defaultLangId)?.url) ||
63
+ cleanPageLanguages.find((item) => item.languageId === defaultLangId)
64
+ ?.url) ||
59
65
  null;
60
66
 
61
67
  return (
@@ -66,12 +72,15 @@ const Head = (props: CustomHeadProps) => {
66
72
  {!!pageMetadata?.description && (
67
73
  <meta name="description" content={pageMetadata?.description} />
68
74
  )}
69
- {siteOptions?.useMetaTitle && <meta name="title" content={pageMetadata?.title} />}
75
+ {siteOptions?.useMetaTitle && (
76
+ <meta name="title" content={pageMetadata?.title} />
77
+ )}
70
78
  {useCanonical && <link rel="canonical" href={pageMetadata?.canonical} />}
71
79
 
72
- <GriddoFavicon url={siteMetadata?.favicon} />
80
+ {/* Favicon images */}
81
+ <Favicon url={siteMetadata?.favicon} />
73
82
 
74
- {/* Alternate, only if the page is indexed and has translations */}
83
+ {/* Alternate, solo si se indexa la página y tiene traducciones */}
75
84
  {hrefLangXDefaultUrl && (
76
85
  <link rel="alternate" href={hrefLangXDefaultUrl} hrefLang="x-default" />
77
86
  )}
@@ -88,23 +97,51 @@ const Head = (props: CustomHeadProps) => {
88
97
  {/* Robots */}
89
98
  {showMetaRobots && <meta name="robots" content={metaRobots} />}
90
99
 
91
- {/* Griddo Metadatos */}
92
- {<meta name="griddo-render-date" content={new Date().toISOString()} />}
100
+ {/* Open Graph */}
101
+ {!!siteMetadata?.title && (
102
+ <meta property="og:site_name" content={siteMetadata?.title} />
103
+ )}
104
+ {!!locale && <meta property="og:locale" content={locale} />}
105
+ {(!!openGraph?.title || !!pageMetadata?.title) && (
106
+ <meta
107
+ property="og:title"
108
+ content={openGraph?.title || pageMetadata?.title}
109
+ />
110
+ )}
111
+ <meta property="og:type" content={openGraph?.type || "website"} />
112
+ {(!!openGraph?.description || !!pageMetadata?.description) && (
113
+ <meta
114
+ property="og:description"
115
+ content={openGraph?.description || pageMetadata?.description}
116
+ />
117
+ )}
118
+ {!!openGraph?.image && (
119
+ <meta property="og:image" content={openGraph?.image} />
120
+ )}
121
+ <meta
122
+ property="og:url"
123
+ content={pageMetadata?.canonical || fullUrl || ""}
124
+ />
125
+
126
+ {/* Twitter */}
127
+ <meta property="twitter:card" content="summary_large_image" />
128
+ {!!openGraph?.twitterImage && (
129
+ <meta property="twitter:image" content={openGraph?.twitterImage} />
130
+ )}
131
+
132
+ {/* Debug */}
133
+ {/* {!siteOptions?.avoidDebugMetas && (
134
+ <meta
135
+ property="debug"
136
+ content={`Griddo v${griddoVersion} @ ${renderDate}}`}
137
+ />
138
+ )} */}
93
139
 
94
140
  {/* Keywords */}
95
141
  {siteOptions?.useMetaKeywords && !!pageMetadata?.metaKeywords && (
96
142
  <meta name="keywords" content={pageMetadata.metaKeywords} />
97
143
  )}
98
144
 
99
- {/* Open Graph */}
100
- <GriddoOpenGraph
101
- openGraph={openGraph}
102
- pageMetadata={pageMetadata}
103
- siteMetadata={siteMetadata}
104
- locale={locale}
105
- fullUrl={fullUrl}
106
- />
107
-
108
145
  {/* Integrations */}
109
146
  <GriddoIntegrations
110
147
  id={fullUrl}
@@ -118,4 +155,12 @@ const Head = (props: CustomHeadProps) => {
118
155
  );
119
156
  };
120
157
 
158
+ function cleanCommaSeparated(str: string) {
159
+ return str
160
+ .split(",")
161
+ .map((item) => item.trim())
162
+ .filter(Boolean)
163
+ .join(",");
164
+ }
165
+
121
166
  export { Head };