@griddo/cx 11.7.4 → 11.7.6-rc.0

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 +30 -89
  217. package/gatsby-ssr.tsx +2 -1
  218. package/package.json +32 -73
  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
@@ -23,9 +23,9 @@ declare function getSiteData(siteID: number): Promise<SiteData>;
23
23
  /**
24
24
  * Save a file with the end of build process to use as `build-end` signal.
25
25
  */
26
- declare function generateBuildReport(): Promise<void>;
26
+ declare function generateBuildReport(domain: string): Promise<void>;
27
27
  /**
28
28
  * Generate sitemaps and save them into file system.
29
29
  */
30
- declare function generateSitemaps(): Promise<void>;
31
- export { generateBuildReport, generateSitemaps, getSiteData, getSitesToRender, unpublishSites, };
30
+ declare function generateSitemaps(domain: string): Promise<void>;
31
+ export { generateBuildReport, generateSitemaps, getSiteData, getSitesToRender, unpublishSites };
@@ -2,55 +2,31 @@ import type { BuildMetaData } from "../types/api";
2
2
  import type { RenderInfo } from "../types/global";
3
3
  import type { GriddoPageObject } from "../types/pages";
4
4
  import type { Site } from "../types/sites";
5
- /**
6
- * Read all path pages stored in the `store` Griddo directory and returns the
7
- * absolute file path.
8
- *
9
- * @param domain - The domain to get the pages from.
10
- */
11
- declare function getBuildPagesFromCachedStore<PageType extends GriddoPageObject>(domain: string): Generator<PageType, void, unknown>;
12
- /**
13
- * Read all pages stored in the `store` Griddo directory and returns one by one
14
- * with a generator.
15
- *
16
- * @param basePath - Base directory to get pages from.
17
- * @param options.withSizeProp - Add size prop to the page object.
18
- * @todo throw error if the basePath is not an store folder
19
- */
20
- declare function getBuildPagesFromStore<PageType extends GriddoPageObject>(args?: {
21
- basePath?: string;
22
- withSizeProp?: boolean;
23
- }): Generator<PageType, void, unknown>;
24
- /**
25
- * Read all pages stored in `store` Griddo directory and return the absolute
26
- * path.
27
- */
28
- declare function getBuildPagesPath(): string[];
29
5
  /**
30
6
  * Get the build metadata from the Store.
31
7
  */
32
- declare function getBuildMetadata(): Promise<BuildMetaData>;
8
+ declare function getBuildMetadata(domain: string): Promise<BuildMetaData>;
33
9
  /**
34
10
  * Write render info into a file.
35
11
  * @param renderInfo - Data that will be saved related to the render process.
36
12
  */
37
- declare function saveRenderInfoInStore(renderInfo: RenderInfo): void;
13
+ declare function saveRenderInfoInStore(renderInfo: RenderInfo, domain: string): Promise<void>;
38
14
  /**
39
15
  * Return an array of ids only from `.json` files (no dirs) in the `basePath` dir based in the file name and filtered by the pages ids in a concrete site.
40
16
  * @param basePath - Absolute path of the dir from which files will be read.
41
17
  * @returns A Array<number> of pages ids in `basePath` dir filtered by pages ids in a concrete site.
42
18
  */
43
19
  /**
44
- * Return an array of ids only from `.json` files (no dirs) in the `basePath` dir based in the file name.
20
+ * Return an array of paths only from `.json` files (no dirs) in the `basePath` dir based in the file name.
45
21
  * @param basePath - Absolute path of the dir from which files will be read.
46
22
  * @returns A Array<number> of pages ids in `basePath` dir.
47
23
  */
48
- declare function getPageInStoreDir(basePath: string): Array<number>;
24
+ declare function getPageInStoreDir(basePath: string): Promise<string[]>;
49
25
  /**
50
26
  * Save the pages into the file system.
51
27
  * @param pages - An array of Griddo page objects to be saved.
52
28
  */
53
- declare function saveSitePagesInStore(siteDirName: string, pages: Array<GriddoPageObject>): void;
29
+ declare function saveSitePagesInStore(siteDirName: string, pages: Array<GriddoPageObject>): Promise<void>;
54
30
  /**
55
31
  * Removes JSON files from the specified site directory based on the provided arrays of page numbers.
56
32
  * For each number in the arrays, a corresponding file with the format `<number>.json` is removed if it exists.
@@ -62,20 +38,16 @@ declare function saveSitePagesInStore(siteDirName: string, pages: Array<GriddoPa
62
38
  * @param siteDirName - The name of the site directory containing the pages.
63
39
  * @param pageIdsArray - A two-dimensional array where each inner array contains numbers representing page files to be removed.
64
40
  */
65
- declare function removeSitePagesFromStore(siteDirName: string, pageIdsArray: Array<Array<number>>): void;
41
+ declare function removeSitePagesFromStore(siteDirName: string, pageIdsArray: Array<Array<number>>): Promise<void>;
66
42
  /**
67
43
  * Removes sites that exist in the store that should no longer be there because
68
44
  * the domain has been changed. This is necessary because those sites will not
69
45
  * be marked as `sitesToUnpublish` so they must be removed manually.
70
46
  */
71
- declare function removeOrphanSites(sitesToPublish: Array<Site>, domain: string): void;
72
- /**
73
- * Returns the list of `activePages` pages that do not currently exist in a
74
- * site's store (probably due to a failed render).
75
- */
76
- declare function getMissingPublishedPagesInStore(siteName: string, activePages: Array<number>): number[];
47
+ declare function removeOrphanSites(sitesToPublish: Array<Site>, domain: string): Promise<void>;
77
48
  /**
78
49
  * Get pages that are not active anymore but are in the store.
79
50
  */
80
- declare function getZombiePagesInStore(siteDir: string, activePages: Array<number>): number[];
81
- export { getBuildMetadata, getBuildPagesFromCachedStore, getBuildPagesFromStore, getBuildPagesPath, getMissingPublishedPagesInStore, getPageInStoreDir, getZombiePagesInStore, removeOrphanSites, removeSitePagesFromStore, saveSitePagesInStore, saveRenderInfoInStore, };
51
+ declare function getZombiePagesInStore(siteDir: string, activePages: Array<number>): Promise<number[]>;
52
+ declare function writeUniqueFileSync(filePath: string, content: string): Promise<void>;
53
+ export { getBuildMetadata, getPageInStoreDir, getZombiePagesInStore, removeOrphanSites, removeSitePagesFromStore, saveRenderInfoInStore, saveSitePagesInStore, writeUniqueFileSync, };
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthService = void 0;
4
+ const endpoints_1 = require("../constants/endpoints");
5
+ const envs_1 = require("../constants/envs");
6
+ const errors_1 = require("../constants/errors");
7
+ const errors_2 = require("../utils/errors");
8
+ /**
9
+ * Service for authentication in the Griddo Private API
10
+ */
11
+ class AuthService {
12
+ async login() {
13
+ try {
14
+ const response = await fetch(endpoints_1.LOGIN, {
15
+ method: "POST",
16
+ headers: { "Content-Type": "application/json", Connection: "close" },
17
+ body: JSON.stringify({
18
+ username: envs_1.GRIDDO_BOT_USER,
19
+ password: envs_1.GRIDDO_BOT_PASSWORD,
20
+ }),
21
+ });
22
+ if (!response.ok) {
23
+ throw new Error("Error while login in the API");
24
+ }
25
+ const { token } = await response.json();
26
+ this.headers = {
27
+ Authorization: `bearer ${token}`,
28
+ "Cache-Control": "no-store",
29
+ };
30
+ return this.headers;
31
+ }
32
+ catch (e) {
33
+ (0, errors_2.throwError)(errors_1.LoginError, e);
34
+ }
35
+ }
36
+ }
37
+ const authService = new AuthService();
38
+ exports.AuthService = authService;
39
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../exporter/services/auth.ts"],"names":[],"mappings":";;;AAEA,sDAA+C;AAC/C,4CAAyE;AACzE,gDAAiD;AACjD,4CAA6C;AAE7C;;GAEG;AACH,MAAM,WAAW;IAGhB,KAAK,CAAC,KAAK;QACV,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iBAAK,EAAE;gBACnC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,EAAE;gBACpE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACpB,QAAQ,EAAE,sBAAe;oBACzB,QAAQ,EAAE,0BAAmB;iBAC7B,CAAC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,OAAO,GAAG;gBACd,aAAa,EAAE,UAAU,KAAK,EAAE;gBAChC,eAAe,EAAE,UAAU;aAC3B,CAAC;YAEF,OAAO,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,IAAA,mBAAU,EAAC,mBAAU,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;CACD;AAED,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEd,kCAAW"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.readDB = readDB;
7
+ exports.writeDB = writeDB;
8
+ const promises_1 = __importDefault(require("node:fs/promises"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const folders_1 = require("../utils/folders");
11
+ const root = (0, folders_1.pkgDirSync)({ cwd: node_path_1.default.resolve(__dirname, "../../..") }) || "";
12
+ const cache = node_path_1.default.join(root, ".cx-cache");
13
+ const dbFilePath = node_path_1.default.join(cache, "db.json");
14
+ async function readDB(customDBPath = "") {
15
+ const file = customDBPath || dbFilePath;
16
+ try {
17
+ return JSON.parse(await promises_1.default.readFile(file, "utf-8"));
18
+ }
19
+ catch (error) {
20
+ console.error(`Failed to read DB file at ${file}:`, error);
21
+ throw error;
22
+ }
23
+ }
24
+ async function writeDB(renderDB, customDBPath = "") {
25
+ const file = customDBPath || dbFilePath;
26
+ try {
27
+ await promises_1.default.writeFile(file, JSON.stringify(renderDB));
28
+ }
29
+ catch (error) {
30
+ console.error(`Failed to write DB file at ${file}:`, error);
31
+ throw error;
32
+ }
33
+ }
34
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../exporter/services/db.ts"],"names":[],"mappings":";;;;;AA+BS,wBAAM;AAAE,0BAAO;AA7BxB,gEAAmC;AACnC,0DAA6B;AAE7B,8CAA8C;AAE9C,MAAM,IAAI,GAAG,IAAA,oBAAU,EAAC,EAAE,GAAG,EAAE,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AAC5E,MAAM,KAAK,GAAG,mBAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAC3C,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAE/C,KAAK,UAAU,MAAM,CAAC,YAAY,GAAG,EAAE;IACtC,MAAM,IAAI,GAAG,YAAY,IAAI,UAAU,CAAC;IACxC,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,kBAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAa,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,6BAA6B,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,QAAkB,EAAE,YAAY,GAAG,EAAE;IAC3D,MAAM,IAAI,GAAG,YAAY,IAAI,UAAU,CAAC;IACxC,IAAI,CAAC;QACJ,MAAM,kBAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NavigationService = void 0;
4
+ class NavigationService {
5
+ constructor() {
6
+ this._navigations = {
7
+ footers: [],
8
+ headers: [],
9
+ };
10
+ this._defaultHeaders = {};
11
+ this._defaultFooters = {};
12
+ }
13
+ set navigations(navigations) {
14
+ this._navigations = navigations;
15
+ this._defaultFooters = this.getDefaultFooters();
16
+ this._defaultHeaders = this.getDefaultHeaders();
17
+ }
18
+ get navigations() {
19
+ return this._navigations;
20
+ }
21
+ getDefaultFooters() {
22
+ const footers = [...this.navigations.footers];
23
+ const defaultFooters = footers.filter((footer) => footer.setAsDefault);
24
+ const defaultFootersByLang = {};
25
+ for (const item of defaultFooters) {
26
+ defaultFootersByLang[item.language] = item;
27
+ }
28
+ return defaultFootersByLang;
29
+ }
30
+ getDefaultHeaders() {
31
+ const headers = [...this.navigations.headers];
32
+ const defaultHeaders = headers.filter((header) => header.setAsDefault);
33
+ const defaultHeadersByLang = {};
34
+ for (const item of defaultHeaders) {
35
+ defaultHeadersByLang[item.language] = item;
36
+ }
37
+ return defaultHeadersByLang;
38
+ }
39
+ getRightLanguage(list, id, language) {
40
+ if (!list || !id) {
41
+ return null;
42
+ }
43
+ const rightLanguageItem = list.find((item) => item.language === language &&
44
+ item.navigationLanguages?.find((version) => version.navigationId === id));
45
+ const result = rightLanguageItem || list.find((item) => item.id === id);
46
+ return result ? { ...result } : null;
47
+ }
48
+ getPageHeader(id, language) {
49
+ return this.getRightLanguage(this.navigations.headers, id, language);
50
+ }
51
+ getPageFooter(id, language) {
52
+ return this.getRightLanguage(this.navigations.footers, id, language);
53
+ }
54
+ getPageNavigations(page) {
55
+ const { header: pageHeader, footer: pageFooter, language, template, templateConfig } = page;
56
+ const { templateType } = template;
57
+ const { defaultHeader, defaultFooter, templates } = templateConfig;
58
+ // The navigations would be:
59
+ // - The one with the page or ...
60
+ // - The one defined for that template or ...
61
+ // - The one you have defined for that data package
62
+ const getValidNavigation = (values) => {
63
+ const fineNavigation = values.find((item) => typeof item === "number");
64
+ return typeof fineNavigation === "number" ? fineNavigation : null;
65
+ };
66
+ const headerID = getValidNavigation([
67
+ pageHeader,
68
+ templates?.[templateType]?.defaultHeader,
69
+ defaultHeader,
70
+ ]);
71
+ const footerID = getValidNavigation([
72
+ pageFooter,
73
+ templates?.[templateType]?.defaultFooter,
74
+ defaultFooter,
75
+ ]);
76
+ const header = headerID
77
+ ? this.getPageHeader(headerID, language)
78
+ : headerID === 0
79
+ ? null
80
+ : this._defaultHeaders[language];
81
+ const footer = footerID
82
+ ? this.getPageFooter(footerID, language)
83
+ : footerID === 0
84
+ ? null
85
+ : this._defaultFooters[language];
86
+ return {
87
+ header,
88
+ footer,
89
+ };
90
+ }
91
+ }
92
+ exports.NavigationService = NavigationService;
93
+ //# sourceMappingURL=navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../exporter/services/navigation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getReferenceFieldData = getReferenceFieldData;
4
+ const loggin_1 = require("../utils/loggin");
5
+ const sites_1 = require("./sites");
6
+ /**
7
+ * Get the body data from a ReferenceField.
8
+ * `auto`, `manual` or `navigation` mode.
9
+ *
10
+ * @param data The ReferenceField props.
11
+ * @returns The props for one of the ReferenceField mode.
12
+ */
13
+ function getBody(data, page) {
14
+ const { order, sources, quantity, mode, fixed, fullRelations = false, allLanguages = false, preferenceLanguage = false, referenceId, fields, } = data;
15
+ if (mode === "auto") {
16
+ return {
17
+ mode,
18
+ order,
19
+ sources,
20
+ quantity,
21
+ fullRelations,
22
+ allLanguages,
23
+ preferenceLanguage,
24
+ fields,
25
+ };
26
+ }
27
+ if (mode === "manual") {
28
+ return { mode, fixed, fullRelations, fields };
29
+ }
30
+ if (mode === "navigation") {
31
+ return {
32
+ mode,
33
+ order,
34
+ quantity,
35
+ fullRelations,
36
+ referenceId: referenceId || page?.structuredDataContent?.id,
37
+ fields,
38
+ };
39
+ }
40
+ console.log(`Error: ReferenceField mode: ${mode} is not recognized on page ${page?.id}.`);
41
+ return data;
42
+ }
43
+ /**
44
+ * Gets ContentType data from API
45
+ *
46
+ * @param props
47
+ * @param props.page The Page object
48
+ * @param props.component.data The ReferenceField, always in the data prop.
49
+ * @param props.cacheKey A cache key to manage cached files or using fetch
50
+ * @returns The ContentType data.
51
+ */
52
+ async function fetchContentTypeData(props) {
53
+ const { page, component, cacheKey } = props;
54
+ const { data } = component;
55
+ // Distrubutor with `hasDistributorData: true` / `getStaticData: true` but without `data` prop
56
+ if (!data) {
57
+ (0, loggin_1.boxLog)(`Error: Page ${page.id} has \`hasDistributorData: true\` or \`getStaticData: true\` but it doesn't have a \`data\` property.`, "No `data` in `ReferenceField`");
58
+ return [];
59
+ }
60
+ // Avoid fetch ReferenceField with empty `data.sources`
61
+ if (Array.isArray(data.sources) && data.sources.length < 1) {
62
+ (0, loggin_1.boxLog)(`Warning: Page with id: ${page.id} has a ReferenceField with empty \`data.sources\``, "Empty data.sources in ReferenceField");
63
+ return [];
64
+ }
65
+ const { site, lang } = data;
66
+ // Inform that the ReferenceField has not `data.sources`
67
+ if (!data.sources && data.mode === "auto") {
68
+ (0, loggin_1.boxLog)(`Warning: Page with id: ${page.id} has a ReferenceField with \`undefined\` \`data.sources\``, "undefined data.sources in ReferenceField");
69
+ }
70
+ const body = getBody(data, page);
71
+ const response = await (0, sites_1.getReferenceFieldSiteData)(page, body, cacheKey, site, lang);
72
+ return response;
73
+ }
74
+ /**
75
+ * Compose the queriedItems prop from a ReferenceField data of a page.
76
+ *
77
+ * @param props
78
+ * @param props.page The APIPage object
79
+ * @param props.cacheKey A cache key to manage cached files or using fetch
80
+ */
81
+ async function getReferenceFieldData({ page, cacheKey = "", }) {
82
+ try {
83
+ const { template } = page;
84
+ const checkReferenceFields = async (templateChunk, level = 1) => {
85
+ // If it doesn't a "template strcuture"
86
+ if (!templateChunk || typeof templateChunk !== "object") {
87
+ return;
88
+ }
89
+ const hasRequestForData = JSON.stringify(templateChunk).includes('"hasDistributorData":true') ||
90
+ JSON.stringify(templateChunk).includes('"getStaticData":true');
91
+ if (!hasRequestForData) {
92
+ return;
93
+ }
94
+ // For each prop in the "template"
95
+ for (const key in templateChunk) {
96
+ // Si la key es `queriedItems` saltamos al siguiente `key`
97
+ if (key === "queriedItems") {
98
+ continue;
99
+ }
100
+ const _key = key;
101
+ const component = templateChunk[_key];
102
+ // Si el elemento no existe o no es un objeto saltamos al siguiente `key`
103
+ if (!component || typeof component !== "object") {
104
+ continue;
105
+ }
106
+ const componentHasRequestForData = component.hasDistributorData || component.getStaticData;
107
+ if (componentHasRequestForData) {
108
+ component.queriedItems = await fetchContentTypeData({
109
+ page,
110
+ cacheKey,
111
+ component,
112
+ });
113
+ }
114
+ await checkReferenceFields(component, level + 1);
115
+ }
116
+ };
117
+ const getReferenceFields = async (template) => {
118
+ // `template` es un array para que también revise la propia template como objeto.
119
+ // @ts-expect-error remove the array
120
+ await checkReferenceFields([template]);
121
+ return template;
122
+ };
123
+ const response = await getReferenceFields(template);
124
+ return response;
125
+ }
126
+ catch (err) {
127
+ console.error(`Error in getReferenceFieldData ${err}`);
128
+ process.exit(1);
129
+ }
130
+ }
131
+ //# sourceMappingURL=reference-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-fields.js","sourceRoot":"","sources":["../../exporter/services/reference-fields.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RobotsService = void 0;
7
+ const promises_1 = __importDefault(require("node:fs/promises"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const endpoints_1 = require("../constants/endpoints");
10
+ const api_1 = require("../utils/api");
11
+ const folders_1 = require("../utils/folders");
12
+ const loggin_1 = require("../utils/loggin");
13
+ const render_1 = require("../utils/render");
14
+ class RobotsService {
15
+ constructor() {
16
+ this.robots = [];
17
+ this.settings = {};
18
+ }
19
+ async getRobots() {
20
+ try {
21
+ const apiRobots = await (0, api_1.get)({ endpoint: endpoints_1.ROBOTS });
22
+ this.robots =
23
+ apiRobots
24
+ ?.filter((r) => !!r.path)
25
+ .map(({ path, content }) => ({
26
+ path,
27
+ content: content || "User-agent: *\n\r\n\rAllow: /",
28
+ })) || [];
29
+ }
30
+ catch (e) {
31
+ console.warn(`${this.constructor.name}: ${e.message}`);
32
+ }
33
+ }
34
+ /**
35
+ * Write robots.txt files for the domain.
36
+ */
37
+ async writeFiles(domain) {
38
+ const { __cx } = await (0, render_1.getRenderPathsFromDB)({ domain });
39
+ const distDirectory = node_path_1.default.join(__cx, "dist");
40
+ await this.getRobots();
41
+ const robot = this.robots.find(({ path }) => path === `/${domain}`);
42
+ if (!robot) {
43
+ console.log(`Robots not found for ${domain}`);
44
+ return;
45
+ }
46
+ if (await (0, folders_1.pathExists)(distDirectory)) {
47
+ const fileLocation = node_path_1.default.join(distDirectory, "robots.txt");
48
+ await promises_1.default.writeFile(fileLocation, robot?.content);
49
+ (0, loggin_1.verboseLog)(`wrote robots.txt to ${fileLocation}`);
50
+ }
51
+ else {
52
+ console.log(`${distDirectory} not found`);
53
+ }
54
+ }
55
+ }
56
+ const robotsService = new RobotsService();
57
+ exports.RobotsService = robotsService;
58
+ //# sourceMappingURL=robots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"robots.js","sourceRoot":"","sources":["../../exporter/services/robots.ts"],"names":[],"mappings":";;;;;;AAEA,gEAAmC;AACnC,0DAA6B;AAE7B,sDAAgD;AAChD,sCAAmC;AACnC,8CAA8C;AAC9C,4CAA6C;AAC7C,4CAAuD;AAEvD,MAAM,aAAa;IAIlB;QACC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,SAAS;QACtB,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,MAAM,IAAA,SAAG,EAAS,EAAE,QAAQ,EAAE,kBAAM,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM;gBACV,SAAS;oBACR,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;qBACxB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC5B,IAAI;oBACJ,OAAO,EAAE,OAAO,IAAI,+BAA+B;iBACnD,CAAC,CAAC,IAAI,EAAE,CAAC;QACb,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;IACF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,MAAc;QAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,6BAAoB,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,mBAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE9C,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;YAC9C,OAAO;QACR,CAAC;QAED,IAAI,MAAM,IAAA,oBAAU,EAAC,aAAa,CAAC,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YAC5D,MAAM,kBAAG,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAClD,IAAA,mBAAU,EAAC,uBAAuB,YAAY,EAAE,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,GAAG,aAAa,YAAY,CAAC,CAAC;QAC3C,CAAC;IACF,CAAC;CACD;AAED,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAEhB,sCAAa"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.endSiteRender = endSiteRender;
4
+ exports.getAllSites = getAllSites;
5
+ exports.getAllSitesFromDomain = getAllSitesFromDomain;
6
+ exports.getPage = getPage;
7
+ exports.getReferenceFieldSiteData = getReferenceFieldSiteData;
8
+ exports.getSiteInfo = getSiteInfo;
9
+ exports.getSiteLanguages = getSiteLanguages;
10
+ exports.getSitemap = getSitemap;
11
+ exports.getSiteSocials = getSiteSocials;
12
+ exports.startSiteRender = startSiteRender;
13
+ const endpoints_1 = require("../constants/endpoints");
14
+ const api_1 = require("../utils/api");
15
+ /**
16
+ * Get a list of site objects.
17
+ */
18
+ async function getAllSites(domain) {
19
+ return (0, api_1.get)({
20
+ endpoint: `${endpoints_1.GET_ALL}?domainSlug=${domain}`,
21
+ });
22
+ }
23
+ /**
24
+ * Get a list of site objects from a domain.
25
+ */
26
+ async function getAllSitesFromDomain(domain) {
27
+ const allSites = await (0, api_1.get)({ endpoint: endpoints_1.GET_ALL });
28
+ if (allSites.length) {
29
+ for (const site of allSites) {
30
+ const { items } = await getSiteLanguages(site.id);
31
+ // Añadimos la prop domains con el dominio "cocinado" con los
32
+ // idiomas y teniendo en cuenta solo el dominio actual.
33
+ site.domains = items
34
+ .filter((item) => item.domain && (item.domain.slug === domain || item.domain.slug === `/${domain}`))
35
+ .map((item) => ({ [item.id]: `${item.domain.slug}${item.path}` }));
36
+ }
37
+ }
38
+ return allSites.filter((site) => site.domains.length > 0);
39
+ }
40
+ /**
41
+ * Fetch a page object from API.
42
+ */
43
+ async function getPage(id, cacheKey) {
44
+ return (0, api_1.get)({
45
+ endpoint: `${endpoints_1.GET_PAGE}/${id}`,
46
+ cacheKey,
47
+ });
48
+ }
49
+ /**
50
+ * Get site info
51
+ */
52
+ async function getSiteInfo(id, cacheKey = "") {
53
+ const [prefix, suffix] = endpoints_1.INFO;
54
+ return (0, api_1.get)({
55
+ endpoint: `${prefix}${id}${suffix}`,
56
+ cacheKey,
57
+ });
58
+ }
59
+ async function getSiteLanguages(id, cacheKey = "") {
60
+ const [prefix, suffix] = endpoints_1.LANGUAGES;
61
+ return (0, api_1.get)({
62
+ endpoint: `${prefix}${id}${suffix}`,
63
+ cacheKey,
64
+ });
65
+ }
66
+ async function startSiteRender(id) {
67
+ const [prefix, suffix] = endpoints_1.BUILD_START;
68
+ return (0, api_1.get)({
69
+ endpoint: `${prefix}${id}${suffix}`,
70
+ });
71
+ }
72
+ /**
73
+ * Send the end signal to API for a render site.
74
+ */
75
+ async function endSiteRender(id, body) {
76
+ const [prefix, suffix] = endpoints_1.BUILD_END;
77
+ return (0, api_1.post)({
78
+ endpoint: `${prefix}${id}${suffix}`,
79
+ body,
80
+ useApiCacheDir: false,
81
+ });
82
+ }
83
+ async function getReferenceFieldSiteData(page, body, cacheKey, dataSiteId, dataLangID) {
84
+ const [prefix, suffix] = endpoints_1.GET_REFERENCE_FIELD_DATA;
85
+ const site = dataSiteId || page.site;
86
+ const lang = dataLangID || page.language;
87
+ return (0, api_1.post)({
88
+ endpoint: `${prefix}${site}${suffix}`,
89
+ body,
90
+ headers: { lang },
91
+ cacheKey,
92
+ });
93
+ }
94
+ async function getSitemap(options) {
95
+ const { siteId, headers } = options;
96
+ const [prefix, suffix] = endpoints_1.GET_SITEMAP;
97
+ return (0, api_1.get)({
98
+ endpoint: `${prefix}${siteId}${suffix}`,
99
+ headers,
100
+ });
101
+ }
102
+ async function getSiteSocials(id, cacheKey = "") {
103
+ const [prefix, suffix] = endpoints_1.SOCIALS;
104
+ return (0, api_1.get)({
105
+ endpoint: `${prefix}${id}${suffix}`,
106
+ cacheKey,
107
+ });
108
+ }
109
+ //# sourceMappingURL=sites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sites.js","sourceRoot":"","sources":["../../exporter/services/sites.ts"],"names":[],"mappings":"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"}