@griddo/cx 11.7.5 → 11.7.6-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/README.md +25 -228
  2. package/build/adapters/gatsby/actions/clean.js +10 -0
  3. package/build/adapters/gatsby/actions/clean.js.map +1 -0
  4. package/build/adapters/gatsby/actions/close.js +12 -0
  5. package/build/adapters/gatsby/actions/close.js.map +1 -0
  6. package/build/adapters/gatsby/actions/data.js +18 -0
  7. package/build/adapters/gatsby/actions/data.js.map +1 -0
  8. package/build/adapters/gatsby/actions/healthCheck.js +10 -0
  9. package/build/adapters/gatsby/actions/healthCheck.js.map +1 -0
  10. package/build/adapters/gatsby/actions/init.js +9 -0
  11. package/build/adapters/gatsby/actions/init.js.map +1 -0
  12. package/build/adapters/gatsby/actions/meta.js +14 -0
  13. package/build/adapters/gatsby/actions/meta.js.map +1 -0
  14. package/build/adapters/gatsby/actions/prepare.js +9 -0
  15. package/build/adapters/gatsby/actions/prepare.js.map +1 -0
  16. package/build/adapters/gatsby/actions/relocation.js +15 -0
  17. package/build/adapters/gatsby/actions/relocation.js.map +1 -0
  18. package/build/adapters/gatsby/actions/restore.js +26 -0
  19. package/build/adapters/gatsby/actions/restore.js.map +1 -0
  20. package/build/adapters/gatsby/actions/ssg.js +9 -0
  21. package/build/adapters/gatsby/actions/ssg.js.map +1 -0
  22. package/build/adapters/gatsby/actions/sync.js +50 -0
  23. package/build/adapters/gatsby/actions/sync.js.map +1 -0
  24. package/build/adapters/gatsby/index.js +74 -0
  25. package/build/adapters/gatsby/index.js.map +1 -0
  26. package/build/adapters/gatsby/shared/context.js +25 -0
  27. package/build/adapters/gatsby/shared/context.js.map +1 -0
  28. package/build/adapters/gatsby/shared/extract-assets.js +58 -0
  29. package/build/adapters/gatsby/shared/extract-assets.js.map +1 -0
  30. package/build/adapters/gatsby/shared/gatsby-build.js +49 -0
  31. package/build/adapters/gatsby/shared/gatsby-build.js.map +1 -0
  32. package/build/adapters/gatsby/shared/sync-render.js +208 -0
  33. package/build/adapters/gatsby/shared/sync-render.js.map +1 -0
  34. package/build/adapters/gatsby/shared/types.js +3 -0
  35. package/build/adapters/gatsby/shared/types.js.map +1 -0
  36. package/build/commands/end-render.js +63 -0
  37. package/build/commands/end-render.js.map +1 -0
  38. package/build/commands/prepare-assets-directory.js +32 -0
  39. package/build/commands/prepare-assets-directory.js.map +1 -0
  40. package/build/commands/prepare-domains-render.js +138 -0
  41. package/build/commands/prepare-domains-render.js.map +1 -0
  42. package/build/commands/reset-render.js +22 -0
  43. package/build/commands/reset-render.js.map +1 -0
  44. package/build/commands/start-render.js +35 -0
  45. package/build/commands/start-render.js.map +1 -0
  46. package/build/commands/upload-search-content.js +189 -0
  47. package/build/commands/upload-search-content.js.map +1 -0
  48. package/build/constants/endpoints.js +42 -0
  49. package/build/constants/endpoints.js.map +1 -0
  50. package/build/constants/envs.js +73 -0
  51. package/build/constants/envs.js.map +1 -0
  52. package/build/constants/errors.js +89 -0
  53. package/build/constants/errors.js.map +1 -0
  54. package/build/exporter/adapters/gatsby/actions/clean.d.ts +3 -0
  55. package/build/exporter/adapters/gatsby/actions/close.d.ts +3 -0
  56. package/build/exporter/adapters/gatsby/actions/data.d.ts +2 -0
  57. package/build/exporter/adapters/gatsby/actions/healthCheck.d.ts +2 -0
  58. package/build/exporter/adapters/gatsby/actions/init.d.ts +2 -0
  59. package/build/exporter/adapters/gatsby/actions/meta.d.ts +2 -0
  60. package/build/exporter/adapters/gatsby/actions/prepare.d.ts +2 -0
  61. package/build/exporter/adapters/gatsby/actions/relocation.d.ts +2 -0
  62. package/build/exporter/adapters/gatsby/actions/restore.d.ts +3 -0
  63. package/build/exporter/adapters/gatsby/actions/ssg.d.ts +3 -0
  64. package/build/exporter/adapters/gatsby/actions/sync.d.ts +3 -0
  65. package/build/exporter/adapters/gatsby/index.d.ts +9 -0
  66. package/build/exporter/adapters/gatsby/shared/context.d.ts +38 -0
  67. package/build/exporter/adapters/gatsby/shared/extract-assets.d.ts +7 -0
  68. package/build/exporter/adapters/gatsby/shared/gatsby-build.d.ts +7 -0
  69. package/build/exporter/adapters/gatsby/shared/sync-render.d.ts +36 -0
  70. package/build/exporter/adapters/gatsby/shared/types.d.ts +34 -0
  71. package/build/exporter/commands/start-render.d.ts +2 -0
  72. package/build/exporter/commands/upload-search-content.d.ts +2 -0
  73. package/build/{constants → exporter/constants}/envs.d.ts +1 -7
  74. package/build/{errors/errors-data.d.ts → exporter/constants/errors.d.ts} +5 -3
  75. package/build/{services → exporter/services}/auth.d.ts +1 -1
  76. package/build/exporter/services/db.d.ts +4 -0
  77. package/build/{services → exporter/services}/robots.d.ts +0 -6
  78. package/build/{services → exporter/services}/sites.d.ts +5 -2
  79. package/build/exporter/services/store.d.ts +15 -0
  80. package/build/{types → exporter/types}/api.d.ts +3 -4
  81. package/build/{types → exporter/types}/global.d.ts +6 -6
  82. package/build/{types → exporter/types}/navigation.d.ts +1 -1
  83. package/build/exporter/types/render.d.ts +50 -0
  84. package/build/{types → exporter/types}/sites.d.ts +1 -2
  85. package/build/exporter/utils/artifacts.d.ts +6 -0
  86. package/build/exporter/utils/brush.d.ts +18 -0
  87. package/build/{utils → exporter/utils}/cache.d.ts +7 -12
  88. package/build/{utils/health-checks.d.ts → exporter/utils/check-health.d.ts} +2 -2
  89. package/build/exporter/utils/core-utils.d.ts +77 -0
  90. package/build/{utils → exporter/utils}/domains.d.ts +1 -1
  91. package/build/{errors/index.d.ts → exporter/utils/errors.d.ts} +3 -3
  92. package/build/exporter/utils/folders.d.ts +66 -0
  93. package/build/{utils → exporter/utils}/loggin.d.ts +2 -16
  94. package/build/{utils → exporter/utils}/pages.d.ts +2 -2
  95. package/build/exporter/utils/render.d.ts +49 -0
  96. package/build/{utils → exporter/utils}/sites.d.ts +3 -3
  97. package/build/{utils → exporter/utils}/store.d.ts +10 -38
  98. package/build/services/auth.js +39 -0
  99. package/build/services/auth.js.map +1 -0
  100. package/build/services/db.js +34 -0
  101. package/build/services/db.js.map +1 -0
  102. package/build/services/navigation.js +93 -0
  103. package/build/services/navigation.js.map +1 -0
  104. package/build/services/reference-fields.js +131 -0
  105. package/build/services/reference-fields.js.map +1 -0
  106. package/build/services/robots.js +58 -0
  107. package/build/services/robots.js.map +1 -0
  108. package/build/services/sites.js +109 -0
  109. package/build/services/sites.js.map +1 -0
  110. package/build/services/store.js +282 -0
  111. package/build/services/store.js.map +1 -0
  112. package/build/types/api.js +3 -0
  113. package/build/types/api.js.map +1 -0
  114. package/build/types/global.js +3 -0
  115. package/build/types/global.js.map +1 -0
  116. package/build/types/navigation.js +3 -0
  117. package/build/types/navigation.js.map +1 -0
  118. package/build/types/pages.js +3 -0
  119. package/build/types/pages.js.map +1 -0
  120. package/build/types/render.js +10 -0
  121. package/build/types/render.js.map +1 -0
  122. package/build/types/sites.js +3 -0
  123. package/build/types/sites.js.map +1 -0
  124. package/build/types/templates.js +3 -0
  125. package/build/types/templates.js.map +1 -0
  126. package/build/utils/api.js +161 -0
  127. package/build/utils/api.js.map +1 -0
  128. package/build/utils/artifacts.js +34 -0
  129. package/build/utils/artifacts.js.map +1 -0
  130. package/build/utils/brush.js +30 -0
  131. package/build/utils/brush.js.map +1 -0
  132. package/build/utils/cache.js +106 -0
  133. package/build/utils/cache.js.map +1 -0
  134. package/build/utils/check-health.js +68 -0
  135. package/build/utils/check-health.js.map +1 -0
  136. package/build/utils/core-utils.js +251 -0
  137. package/build/utils/core-utils.js.map +1 -0
  138. package/build/utils/domains.js +37 -0
  139. package/build/utils/domains.js.map +1 -0
  140. package/build/utils/errors.js +30 -0
  141. package/build/utils/errors.js.map +1 -0
  142. package/build/utils/folders.js +339 -0
  143. package/build/utils/folders.js.map +1 -0
  144. package/build/utils/images.js +45 -0
  145. package/build/utils/images.js.map +1 -0
  146. package/build/utils/instance.js +66 -0
  147. package/build/utils/instance.js.map +1 -0
  148. package/build/utils/loggin.js +102 -0
  149. package/build/utils/loggin.js.map +1 -0
  150. package/build/utils/pages.js +359 -0
  151. package/build/utils/pages.js.map +1 -0
  152. package/build/utils/render.js +144 -0
  153. package/build/utils/render.js.map +1 -0
  154. package/build/utils/sites.js +239 -0
  155. package/build/utils/sites.js.map +1 -0
  156. package/build/utils/store.js +193 -0
  157. package/build/utils/store.js.map +1 -0
  158. package/exporter/adapters/gatsby/actions/clean.ts +14 -0
  159. package/exporter/adapters/gatsby/actions/close.ts +17 -0
  160. package/exporter/adapters/gatsby/actions/data.ts +25 -0
  161. package/exporter/adapters/gatsby/actions/healthCheck.ts +10 -0
  162. package/exporter/adapters/gatsby/actions/init.ts +12 -0
  163. package/exporter/adapters/gatsby/actions/meta.ts +18 -0
  164. package/exporter/adapters/gatsby/actions/prepare.ts +9 -0
  165. package/exporter/adapters/gatsby/actions/relocation.ts +15 -0
  166. package/exporter/adapters/gatsby/actions/restore.ts +36 -0
  167. package/exporter/adapters/gatsby/actions/ssg.ts +12 -0
  168. package/exporter/adapters/gatsby/actions/sync.ts +70 -0
  169. package/exporter/adapters/gatsby/index.ts +60 -146
  170. package/exporter/adapters/gatsby/shared/context.ts +50 -0
  171. package/exporter/adapters/gatsby/shared/extract-assets.ts +61 -0
  172. package/exporter/adapters/gatsby/shared/gatsby-build.ts +54 -0
  173. package/exporter/adapters/gatsby/shared/sync-render.ts +294 -0
  174. package/exporter/adapters/gatsby/shared/types.ts +35 -0
  175. package/exporter/build-esbuild.noop +42 -0
  176. package/exporter/build.sh +5 -38
  177. package/exporter/commands/end-render.ts +56 -81
  178. package/exporter/commands/prepare-assets-directory.ts +33 -0
  179. package/exporter/commands/prepare-domains-render.ts +149 -31
  180. package/exporter/commands/reset-render.ts +12 -3
  181. package/exporter/commands/start-render.ts +18 -47
  182. package/exporter/commands/upload-search-content.ts +206 -21
  183. package/exporter/constants/envs.ts +59 -51
  184. package/exporter/{errors/errors-data.ts → constants/errors.ts} +24 -15
  185. package/exporter/services/auth.ts +7 -6
  186. package/exporter/services/db.ts +32 -0
  187. package/exporter/services/navigation.ts +4 -10
  188. package/exporter/services/reference-fields.ts +8 -23
  189. package/exporter/services/robots.ts +8 -15
  190. package/exporter/services/sites.ts +35 -24
  191. package/exporter/services/store.ts +118 -76
  192. package/exporter/types/api.ts +24 -27
  193. package/exporter/types/global.ts +8 -10
  194. package/exporter/types/navigation.ts +1 -1
  195. package/exporter/types/pages.ts +2 -3
  196. package/exporter/types/render.ts +59 -0
  197. package/exporter/types/sites.ts +1 -2
  198. package/exporter/utils/api.ts +46 -82
  199. package/exporter/{artifacts/index.ts → utils/artifacts.ts} +9 -8
  200. package/exporter/utils/brush.ts +34 -0
  201. package/exporter/utils/cache.ts +34 -59
  202. package/exporter/utils/check-health.ts +79 -0
  203. package/exporter/utils/core-utils.ts +86 -247
  204. package/exporter/utils/domains.ts +10 -7
  205. package/exporter/{errors/index.ts → utils/errors.ts} +10 -9
  206. package/exporter/utils/folders.ts +161 -92
  207. package/exporter/utils/images.ts +1 -6
  208. package/exporter/utils/instance.ts +9 -12
  209. package/exporter/utils/loggin.ts +24 -89
  210. package/exporter/utils/pages.ts +23 -88
  211. package/exporter/utils/render.ts +147 -48
  212. package/exporter/utils/sites.ts +67 -77
  213. package/exporter/utils/store.ts +85 -178
  214. package/gatsby-browser.tsx +41 -58
  215. package/gatsby-config.ts +6 -12
  216. package/gatsby-node.ts +15 -77
  217. package/gatsby-ssr.tsx +2 -1
  218. package/package.json +33 -74
  219. package/plugins/gatsby-plugin-svgr-loader/gatsby-node.js +55 -0
  220. package/plugins/gatsby-plugin-svgr-loader/package.json +8 -0
  221. package/{exporter/react → react}/Favicon/index.tsx +1 -7
  222. package/{exporter/react → react}/GriddoIntegrations/index.tsx +6 -14
  223. package/{exporter/react → react}/GriddoIntegrations/utils.ts +4 -9
  224. package/{build/react/index.d.ts → react/index.tsx} +1 -0
  225. package/src/components/Head.tsx +13 -46
  226. package/src/components/template.tsx +8 -30
  227. package/src/gatsby-node-utils.ts +91 -2
  228. package/src/html.tsx +2 -11
  229. package/src/types.ts +5 -5
  230. package/start-render.js +1 -3
  231. package/tsconfig.json +3 -2
  232. package/build/adapters/gatsby/index.d.ts +0 -4
  233. package/build/adapters/gatsby/utils.d.ts +0 -22
  234. package/build/artifacts/index.d.ts +0 -6
  235. package/build/commands/move-assets.d.ts +0 -1
  236. package/build/commands/prepare-domains-render.d.ts +0 -1
  237. package/build/constants/index.d.ts +0 -57
  238. package/build/end-render.js +0 -74
  239. package/build/end-render.js.map +0 -7
  240. package/build/index.d.ts +0 -29
  241. package/build/index.js +0 -73
  242. package/build/index.js.map +0 -7
  243. package/build/prepare-domains-render.js +0 -73
  244. package/build/prepare-domains-render.js.map +0 -7
  245. package/build/react/Favicon/index.d.ts +0 -5
  246. package/build/react/Favicon/utils.d.ts +0 -9
  247. package/build/react/GriddoIntegrations/index.d.ts +0 -20
  248. package/build/react/GriddoIntegrations/utils.d.ts +0 -26
  249. package/build/react/index.js +0 -3
  250. package/build/registers/api.d.ts +0 -9
  251. package/build/registers/gatsby.d.ts +0 -9
  252. package/build/registers/index.d.ts +0 -3
  253. package/build/reset-render.js +0 -74
  254. package/build/reset-render.js.map +0 -7
  255. package/build/services/domains.d.ts +0 -6
  256. package/build/services/register.d.ts +0 -36
  257. package/build/services/settings.d.ts +0 -4
  258. package/build/services/store.d.ts +0 -6
  259. package/build/start-render.js +0 -100
  260. package/build/start-render.js.map +0 -7
  261. package/build/upload-search-content.js +0 -74
  262. package/build/upload-search-content.js.map +0 -7
  263. package/build/utils/alerts.d.ts +0 -3
  264. package/build/utils/core-utils.d.ts +0 -107
  265. package/build/utils/create-build-data.d.ts +0 -8
  266. package/build/utils/folders.d.ts +0 -53
  267. package/build/utils/render.d.ts +0 -13
  268. package/build/utils/searches.d.ts +0 -15
  269. package/cx.config.d.ts +0 -5
  270. package/cx.config.js +0 -36
  271. package/exporter/adapters/gatsby/utils.ts +0 -161
  272. package/exporter/artifacts/README.md +0 -34
  273. package/exporter/commands/move-assets.ts +0 -11
  274. package/exporter/constants/index.ts +0 -129
  275. package/exporter/index.ts +0 -82
  276. package/exporter/react/index.tsx +0 -11
  277. package/exporter/registers/api.ts +0 -14
  278. package/exporter/registers/gatsby.ts +0 -14
  279. package/exporter/registers/index.ts +0 -4
  280. package/exporter/services/domains.ts +0 -16
  281. package/exporter/services/register.ts +0 -113
  282. package/exporter/services/settings.ts +0 -17
  283. package/exporter/utils/alerts.ts +0 -29
  284. package/exporter/utils/create-build-data.ts +0 -17
  285. package/exporter/utils/health-checks.ts +0 -64
  286. package/exporter/utils/searches.ts +0 -179
  287. package/src/README.md +0 -7
  288. package/build/{commands → exporter/commands}/end-render.d.ts +0 -0
  289. package/build/{commands/reset-render.d.ts → exporter/commands/prepare-assets-directory.d.ts} +0 -0
  290. package/build/{commands/start-render.d.ts → exporter/commands/prepare-domains-render.d.ts} +0 -0
  291. package/build/{commands/upload-search-content.d.ts → exporter/commands/reset-render.d.ts} +0 -0
  292. package/build/{constants → exporter/constants}/endpoints.d.ts +0 -0
  293. package/build/{services → exporter/services}/navigation.d.ts +0 -0
  294. package/build/{services → exporter/services}/reference-fields.d.ts +0 -0
  295. package/build/{types → exporter/types}/pages.d.ts +1 -1
  296. /package/build/{types → exporter/types}/templates.d.ts +0 -0
  297. /package/build/{utils → exporter/utils}/api.d.ts +0 -0
  298. /package/build/{utils → exporter/utils}/images.d.ts +0 -0
  299. /package/build/{utils → exporter/utils}/instance.d.ts +0 -0
  300. /package/{exporter/react → react}/Favicon/utils.ts +0 -0
@@ -1,14 +1,14 @@
1
- import fs from "node:fs";
1
+ import type { MakeDirectoryOptions } from "node:fs";
2
+
3
+ import fsp from "node:fs/promises";
2
4
  import path from "node:path";
3
5
 
4
- import fsx, { type MakeDirectoryOptions } from "fs-extra";
6
+ import { findUp, findUpSync } from "find-up-simple";
5
7
 
6
- import { throwError } from "../errors";
7
- import { getConfig, walkStore } from "./core-utils";
8
+ import { ArtifactError } from "../constants/errors";
9
+ import { walkStore } from "./core-utils";
10
+ import { throwError } from "./errors";
8
11
  import { verboseLog } from "./loggin";
9
- import { ArtifactError } from "../errors/errors-data";
10
-
11
- const config = getConfig();
12
12
 
13
13
  /**
14
14
  * Remove an empty directory from the basePath recursively.
@@ -16,37 +16,34 @@ const config = getConfig();
16
16
  *
17
17
  * @param baseDir - The base directory.
18
18
  */
19
- function deleteDisposableSiteDirs() {
20
- const { __cx } = config.paths();
21
- const baseDir = path.join(__cx, "dist");
22
-
23
- if (!fs.existsSync(baseDir)) {
19
+ async function deleteDisposableSiteDirs(baseDir: string) {
20
+ if (!(await pathExists(baseDir))) {
24
21
  return;
25
22
  }
26
23
 
27
- const sitesDirs = fs
28
- .readdirSync(baseDir, { withFileTypes: true })
29
- .filter((file) => file.isDirectory());
24
+ const sitesDirs = (await fsp.readdir(baseDir, { withFileTypes: true })).filter((file) =>
25
+ file.isDirectory(),
26
+ );
30
27
 
31
28
  for (const siteDir of sitesDirs) {
32
29
  const sitePath = path.join(baseDir, siteDir.name);
33
- if (siteIsEmpty(sitePath)) {
34
- fs.rmSync(sitePath, { recursive: true });
30
+ if (await siteIsEmpty(sitePath)) {
31
+ await fsp.rm(sitePath, { recursive: true });
35
32
  }
36
33
  }
37
34
  }
38
35
 
39
36
  /**
40
- * Creates multiple directories.
37
+ * Creates multiple artifact directories.
41
38
  *
42
39
  * @param dirs - An array of directory paths.
43
40
  * @param options - Same option as `fs.mkdirSync()`
44
41
  */
45
- function createArtifacts(dirs: Array<string>, options?: MakeDirectoryOptions) {
42
+ async function createDirs(dirs: Array<string>, options?: MakeDirectoryOptions) {
46
43
  for (const dir of dirs) {
47
44
  try {
48
- if (!fs.existsSync(dir)) {
49
- fs.mkdirSync(dir, { recursive: true, ...options });
45
+ if (!(await pathExists(dir))) {
46
+ await fsp.mkdir(dir, { recursive: true, ...options });
50
47
  verboseLog(`create directory: ${dir}`);
51
48
  }
52
49
  } catch (error) {
@@ -55,10 +52,10 @@ function createArtifacts(dirs: Array<string>, options?: MakeDirectoryOptions) {
55
52
  }
56
53
  }
57
54
 
58
- function renameArtifact(src: string, dst: string) {
55
+ async function renamePath(src: string, dst: string) {
59
56
  try {
60
- if (fs.existsSync(src)) {
61
- fs.renameSync(src, dst);
57
+ if (await pathExists(src)) {
58
+ await fsp.rename(src, dst);
62
59
  verboseLog(`rename ${src} to ${dst}`);
63
60
  }
64
61
  } catch (error) {
@@ -74,7 +71,7 @@ function renameArtifact(src: string, dst: string) {
74
71
  * @param dirs - Directories to copy.
75
72
  * @param options.withBackup - Create a previous backup before copy.
76
73
  */
77
- function copyArtifacts(
74
+ async function copyDirs(
78
75
  src: string,
79
76
  dst: string,
80
77
  dirs: Array<string>,
@@ -88,41 +85,39 @@ function copyArtifacts(
88
85
  const dstCompose = path.join(dst, dir);
89
86
 
90
87
  // The dir we want to copy, doesn't exist.
91
- if (!fsx.existsSync(srcCompose)) {
92
- console.log(
93
- `(Maybe first render) Source directory does not exist: ${srcCompose}`,
94
- );
88
+ if (!(await pathExists(srcCompose))) {
89
+ console.log(`(Maybe first render) Source directory does not exist: ${srcCompose}`);
95
90
  continue;
96
91
  }
97
92
 
98
93
  // Create the backup
99
94
  if (withBackup) {
100
- createBackup(dstCompose);
95
+ await createBackup(dstCompose);
101
96
  verboseLog(`create backup: ${dstCompose}`);
102
97
  }
103
98
 
104
99
  // Copy directory
105
100
  try {
106
101
  // First clean destination
107
- if (fsx.existsSync(dstCompose)) {
108
- fs.rmSync(dstCompose, { recursive: true, force: true });
102
+ if (await pathExists(dstCompose)) {
103
+ await fsp.rm(dstCompose, { recursive: true, force: true });
109
104
  verboseLog(`clean destination: ${dstCompose}`);
110
105
  }
111
106
 
112
107
  // Then copy src to dst
113
- fs.cpSync(srcCompose, dstCompose, {
108
+ await fsp.cp(srcCompose, dstCompose, {
114
109
  recursive: true,
115
110
  preserveTimestamps: true,
116
111
  });
117
112
  verboseLog(`copy: ${srcCompose} to ${dstCompose}`);
118
113
 
119
114
  if (withBackup) {
120
- deleteBackup(dstCompose);
115
+ await deleteBackup(dstCompose);
121
116
  verboseLog(`delete backup: ${dstCompose}`);
122
117
  }
123
118
  } catch (error) {
124
119
  if (withBackup) {
125
- restoreBackup(dstCompose);
120
+ await restoreBackup(dstCompose);
126
121
  console.log("Backup has been restored.");
127
122
  }
128
123
 
@@ -139,7 +134,7 @@ function copyArtifacts(
139
134
  * @param dirs - Directories to move.
140
135
  * @param options - Options.
141
136
  */
142
- function moveArtifacts(
137
+ async function moveDirs(
143
138
  src: string,
144
139
  dst: string,
145
140
  dirs: Array<string>,
@@ -151,29 +146,29 @@ function moveArtifacts(
151
146
  const srcCompose = path.join(src, dir);
152
147
  const dstCompose = path.join(dst, dir);
153
148
 
154
- if (!fsx.existsSync(srcCompose)) {
149
+ if (!(await pathExists(srcCompose))) {
155
150
  continue;
156
151
  }
157
152
 
158
153
  if (withBackup) {
159
- createBackup(dstCompose);
154
+ await createBackup(dstCompose);
160
155
  }
161
156
 
162
157
  try {
163
158
  // Clean destination
164
- if (override && fsx.existsSync(dstCompose)) {
165
- fs.rmSync(dstCompose, { recursive: true, force: true });
159
+ if (override && (await pathExists(dstCompose))) {
160
+ await fsp.rm(dstCompose, { recursive: true, force: true });
166
161
  }
167
162
 
168
- fs.renameSync(srcCompose, dstCompose);
163
+ await fsp.rename(srcCompose, dstCompose);
169
164
  verboseLog(`moved: ${srcCompose} to ${dstCompose}`);
170
165
 
171
166
  if (withBackup) {
172
- deleteBackup(dstCompose);
167
+ await deleteBackup(dstCompose);
173
168
  }
174
169
  } catch (error) {
175
170
  if (withBackup) {
176
- restoreBackup(dstCompose);
171
+ await restoreBackup(dstCompose);
177
172
  console.log("Backup has been restored.");
178
173
  }
179
174
 
@@ -185,30 +180,23 @@ function moveArtifacts(
185
180
  /**
186
181
  * Removes multiple artifact directories.
187
182
  *
188
- * @param artifacts - An array of artifact directory paths.
183
+ * @param dirs - An array of directory paths.
189
184
  */
190
- function removeArtifacts(artifacts: Array<string>) {
191
- for (const dir of artifacts) {
192
- if (!dir) {
193
- continue;
194
- }
195
-
185
+ async function removeDirs(dirs: Array<string>) {
186
+ for (const dir of dirs) {
196
187
  try {
197
- if (fsx.existsSync(dir)) {
198
- const kind = fs.statSync(dir).isDirectory() ? "dir" : "file";
199
- fs.rmSync(dir, { recursive: true, force: true });
200
- verboseLog(`artifact (${kind}) removed: ${dir}`);
201
- }
188
+ await fsp.rm(dir, { recursive: true, force: true });
189
+ verboseLog(`artifact removed: ${dir}`);
202
190
  } catch (error) {
203
191
  throwError(ArtifactError, error);
204
192
  }
205
193
  }
206
194
  }
207
195
 
208
- function restoreBackup(src: string, suffix = "-BACKUP") {
196
+ async function restoreBackup(src: string, suffix = "-BACKUP") {
209
197
  const dst = src + suffix;
210
198
  try {
211
- fs.renameSync(dst, src);
199
+ await fsp.rename(dst, src);
212
200
  console.log(`Backup ${dst} has been restored`);
213
201
  } catch (error) {
214
202
  console.log(error);
@@ -216,15 +204,15 @@ function restoreBackup(src: string, suffix = "-BACKUP") {
216
204
  }
217
205
  }
218
206
 
219
- function deleteBackup(src: string, suffix = "-BACKUP") {
207
+ async function deleteBackup(src: string, suffix = "-BACKUP") {
220
208
  const dst = src + suffix;
221
209
 
222
- if (!fsx.existsSync(dst)) {
210
+ if (!(await pathExists(dst))) {
223
211
  return;
224
212
  }
225
213
 
226
214
  try {
227
- fs.rmSync(dst, { recursive: true, force: true });
215
+ await fsp.rm(dst, { recursive: true, force: true });
228
216
  console.log(`Backup ${dst} has been deleted`);
229
217
  } catch (error) {
230
218
  console.log(error);
@@ -232,20 +220,20 @@ function deleteBackup(src: string, suffix = "-BACKUP") {
232
220
  }
233
221
  }
234
222
 
235
- function createBackup(src: string, suffix = "-BACKUP") {
223
+ async function createBackup(src: string, suffix = "-BACKUP") {
236
224
  const dst = src + suffix;
237
225
 
238
- if (!fsx.existsSync(src)) {
226
+ if (!(await pathExists(src))) {
239
227
  return;
240
228
  }
241
229
 
242
- if (fsx.existsSync(dst)) {
230
+ if (await pathExists(dst)) {
243
231
  console.log(`Destination ${dst} already exists`);
244
232
  return;
245
233
  }
246
234
 
247
235
  try {
248
- fs.renameSync(src, dst);
236
+ await fsp.rename(src, dst);
249
237
  console.log(`Backup of ${src} has been created in ${dst}`);
250
238
  } catch (error) {
251
239
  console.log(`Error while coping ${src} to ${dst} backup`);
@@ -254,25 +242,23 @@ function createBackup(src: string, suffix = "-BACKUP") {
254
242
  }
255
243
 
256
244
  /**
257
- * Elimina todas las páginas del store (de todos los sites) cuyo nombre empiece con un guión "-".
258
- * Estas páginas son "virtuales" y no tienen ids desde API por lo que mantenerlas en el store es un problema cuando se hacen modificaciones en la página "madre".
259
- * La solución por ahora es borrarlas del store y rehacerlas en todos los renders.
245
+ * Elimina todas las páginas del store (de todos los sites) cuyo nombre empiece
246
+ * con un guión "-". Estas páginas son "virtuales" y no tienen ids desde API por
247
+ * lo que mantenerlas en el store es un problema cuando se hacen modificaciones
248
+ * en la página "madre". La solución por ahora es borrarlas del store y
249
+ * rehacerlas en todos los renders.
260
250
  */
261
- async function removeVirtualPagesFromStore() {
262
- const { __cx } = config.paths();
263
- const storePath = path.join(__cx, "store");
264
-
251
+ async function removeVirtualPages(dirPath: string) {
265
252
  try {
266
- const allJsonPageFilesPath = walkStore(storePath);
267
-
268
- for (const filePath of allJsonPageFilesPath) {
253
+ // Procesamos archivos uno por uno para evitar cargar todos en memoria
254
+ for await (const filePath of walkStore(dirPath)) {
269
255
  if (path.basename(filePath).startsWith("-")) {
270
- fs.unlinkSync(filePath);
256
+ await fsp.unlink(filePath);
271
257
  }
272
258
  }
273
259
  } catch (error) {
274
260
  console.info(
275
- "`store` folder does not exist. Skipping multipage or static list template cleaning.",
261
+ `${dirPath} folder does not exist. Skipping multipage or static list template cleaning.`,
276
262
  error,
277
263
  );
278
264
  }
@@ -281,15 +267,13 @@ async function removeVirtualPagesFromStore() {
281
267
  /**
282
268
  * Return true if the site folder is empty or only has xml files. (Recursively)
283
269
  */
284
- function siteIsEmpty(sitePath: string) {
285
- const siteFiles = fs
286
- .readdirSync(sitePath, {
270
+ async function siteIsEmpty(sitePath: string) {
271
+ const siteFiles = (
272
+ await fsp.readdir(sitePath, {
287
273
  withFileTypes: true,
288
274
  recursive: true,
289
275
  })
290
- .filter(
291
- (file) => file.isFile() && !path.basename(file.name).startsWith("."),
292
- );
276
+ ).filter((file) => file.isFile() && !path.basename(file.name).startsWith("."));
293
277
 
294
278
  const xmlFiles = siteFiles.filter((file) => file.name.endsWith(".xml"));
295
279
 
@@ -298,23 +282,108 @@ function siteIsEmpty(sitePath: string) {
298
282
  }
299
283
  }
300
284
 
301
- function prependFileSync(filePath: string, content: string) {
285
+ async function prependFileSync(filePath: string, content: string) {
302
286
  let currentContent = "";
303
287
 
304
- if (fs.existsSync(filePath)) {
305
- currentContent = fs.readFileSync(filePath, "utf8");
288
+ if (await pathExists(filePath)) {
289
+ currentContent = await fsp.readFile(filePath, "utf8");
306
290
  }
307
291
 
308
- fs.writeFileSync(filePath, content + currentContent, "utf8");
292
+ await fsp.writeFile(filePath, content + currentContent, "utf8");
293
+ }
294
+
295
+ /**
296
+ * Delete empty directories from the given directory in a recursive way.
297
+ */
298
+ async function deleteEmptyDirectories(dirPath: string) {
299
+ try {
300
+ const stats = await fsp.stat(dirPath);
301
+
302
+ // Si no es un directorio, no hacemos nada
303
+ if (!stats.isDirectory()) {
304
+ return;
305
+ }
306
+
307
+ let filesInDirectory: string[];
308
+ try {
309
+ filesInDirectory = await fsp.readdir(dirPath);
310
+ } catch (err: any) {
311
+ // Si el directorio no existe o no se puede leer (ej. permisos), lo saltamos.
312
+ if (err.code === "ENOENT") {
313
+ console.warn(`El directorio "${dirPath}" no existe. Se omite.`);
314
+ return;
315
+ }
316
+ console.error(`Error al leer el directorio "${dirPath}":`, err);
317
+ throw err; // Re-lanza el error para que sea manejado por el llamador
318
+ }
319
+
320
+ // Recorrer los contenidos del directorio
321
+ for (const file of filesInDirectory) {
322
+ const fullPath = path.join(dirPath, file);
323
+ await deleteEmptyDirectories(fullPath); // Llamada recursiva síncrona
324
+ }
325
+
326
+ // Después de procesar todos los subdirectorios, verifica si el directorio actual está vacío
327
+ const remainingFiles = await fsp.readdir(dirPath);
328
+
329
+ if (remainingFiles.length === 0) {
330
+ try {
331
+ await fsp.rmdir(dirPath);
332
+ console.log(`Remove empty directory: ${dirPath}`);
333
+ } catch (err: any) {
334
+ // Puede que haya habido un problema de concurrencia o permisos
335
+ if (err.code === "ENOENT") {
336
+ console.warn(
337
+ `El directorio "${dirPath}" ya no existe. Posiblemente fue borrado por otra operación.`,
338
+ );
339
+ } else {
340
+ console.error(`Error al borrar el directorio "${dirPath}":`, err);
341
+ }
342
+ }
343
+ }
344
+ } catch (err: any) {
345
+ if (err.code === "ENOENT") {
346
+ // El directorio ya no existe, no es un error para nosotros en este contexto
347
+ console.warn(`El directorio "${dirPath}" no existe o ya ha sido procesado.`);
348
+ } else {
349
+ console.error(`Error general al procesar "${dirPath}":`, err);
350
+ throw err;
351
+ }
352
+ }
353
+ }
354
+
355
+ async function pathExists(dir: string) {
356
+ try {
357
+ await fsp.access(dir);
358
+ return true;
359
+ } catch {
360
+ return false;
361
+ }
362
+ }
363
+
364
+ async function pkgDir(options?: { readonly cwd?: string }) {
365
+ const { cwd } = options || {};
366
+ const filePath = await findUp("package.json", { cwd });
367
+ return filePath && path.dirname(filePath);
368
+ }
369
+
370
+ function pkgDirSync(options?: { readonly cwd?: string }) {
371
+ const { cwd } = options || {};
372
+ const filePath = findUpSync("package.json", { cwd });
373
+ return filePath && path.dirname(filePath);
309
374
  }
310
375
 
311
376
  export {
312
- copyArtifacts,
313
- createArtifacts,
377
+ copyDirs,
378
+ createDirs,
314
379
  deleteDisposableSiteDirs,
315
- moveArtifacts,
380
+ deleteEmptyDirectories,
381
+ moveDirs,
382
+ pathExists,
383
+ pkgDir,
384
+ pkgDirSync,
316
385
  prependFileSync,
317
- removeArtifacts,
318
- removeVirtualPagesFromStore,
319
- renameArtifact,
386
+ removeDirs,
387
+ removeVirtualPages,
388
+ renamePath,
320
389
  };
@@ -13,12 +13,7 @@ import type { Fields } from "@griddo/core";
13
13
  * formatImage("https://images.griddo.io/tree", 300, 200, "jpg")
14
14
  * // https://images.griddo.io/tree/w/300/h/200/f/jpg
15
15
  */
16
- function formatImage(
17
- image: Fields.Image | string,
18
- width: number,
19
- height: number,
20
- format = "jpg",
21
- ) {
16
+ function formatImage(image: Fields.Image | string, width: number, height: number, format = "jpg") {
22
17
  const url = typeof image === "string" ? image : image?.url;
23
18
 
24
19
  if (!url) {
@@ -1,10 +1,10 @@
1
1
  import path from "node:path";
2
2
 
3
- import findUp from "find-up";
4
- import pkgDir from "pkg-dir";
3
+ import { findUpSync } from "find-up-simple";
5
4
 
6
- import { throwError } from "../errors";
7
- import { NoJSConfigFileFound } from "../errors/errors-data";
5
+ import { NoJSConfigFileFound } from "../constants/errors";
6
+ import { throwError } from "./errors";
7
+ import { pkgDirSync } from "./folders";
8
8
 
9
9
  // Consts
10
10
  const isComponentLibrary = __dirname.includes("node_modules");
@@ -17,22 +17,18 @@ const componentLibraryPathAlias = getComponentsLibAliases();
17
17
  */
18
18
  function resolveComponentsPath(customPath = "") {
19
19
  return isComponentLibrary
20
- ? path.resolve(pkgDir.sync(__dirname) as string, "../../../", customPath)
21
- : path.resolve(
22
- pkgDir.sync(__dirname) as string,
23
- "../griddo-components",
24
- customPath,
25
- );
20
+ ? path.resolve(pkgDirSync({ cwd: __dirname }) as string, "../../../", customPath)
21
+ : path.resolve(pkgDirSync({ cwd: __dirname }) as string, "../griddo-components", customPath);
26
22
  }
27
23
 
28
24
  /**
29
25
  * Return the instance or monorepo components {t|j}sconfig.json file.
30
26
  */
31
27
  function getComponentsJSConfig() {
32
- const jsConfigPath = findUp.sync("jsconfig.json", {
28
+ const jsConfigPath = findUpSync("jsconfig.json", {
33
29
  cwd: resolveComponentsPath(),
34
30
  });
35
- const tsConfigPath = findUp.sync("tsconfig.json", {
31
+ const tsConfigPath = findUpSync("tsconfig.json", {
36
32
  cwd: resolveComponentsPath(),
37
33
  });
38
34
 
@@ -57,6 +53,7 @@ function getComponentsLibAliases() {
57
53
  const absolutePath = resolveComponentsPath(relativePathToDir);
58
54
 
59
55
  return {
56
+ // biome-ignore lint/performance/noAccumulatingSpread: to be fixed
60
57
  ...currentAlias,
61
58
  [aliasKey]: absolutePath,
62
59
  };