@griddo/cx 11.7.10 → 11.7.12-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 (302) hide show
  1. package/README.md +27 -226
  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 +14 -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 +22 -0
  11. package/build/adapters/gatsby/actions/init.js.map +1 -0
  12. package/build/adapters/gatsby/actions/logs.js +9 -0
  13. package/build/adapters/gatsby/actions/logs.js.map +1 -0
  14. package/build/adapters/gatsby/actions/meta.js +13 -0
  15. package/build/adapters/gatsby/actions/meta.js.map +1 -0
  16. package/build/adapters/gatsby/actions/prepare.js +9 -0
  17. package/build/adapters/gatsby/actions/prepare.js.map +1 -0
  18. package/build/adapters/gatsby/actions/relocation.js +15 -0
  19. package/build/adapters/gatsby/actions/relocation.js.map +1 -0
  20. package/build/adapters/gatsby/actions/restore.js +26 -0
  21. package/build/adapters/gatsby/actions/restore.js.map +1 -0
  22. package/build/adapters/gatsby/actions/ssg.js +9 -0
  23. package/build/adapters/gatsby/actions/ssg.js.map +1 -0
  24. package/build/adapters/gatsby/actions/sync.js +51 -0
  25. package/build/adapters/gatsby/actions/sync.js.map +1 -0
  26. package/build/adapters/gatsby/index.js +78 -0
  27. package/build/adapters/gatsby/index.js.map +1 -0
  28. package/build/adapters/gatsby/shared/artifacts.js +20 -0
  29. package/build/adapters/gatsby/shared/artifacts.js.map +1 -0
  30. package/build/adapters/gatsby/shared/context.js +31 -0
  31. package/build/adapters/gatsby/shared/context.js.map +1 -0
  32. package/build/adapters/gatsby/shared/diff-assets.js +101 -0
  33. package/build/adapters/gatsby/shared/diff-assets.js.map +1 -0
  34. package/build/adapters/gatsby/shared/extract-assets.js +58 -0
  35. package/build/adapters/gatsby/shared/extract-assets.js.map +1 -0
  36. package/build/adapters/gatsby/shared/gatsby-build.js +55 -0
  37. package/build/adapters/gatsby/shared/gatsby-build.js.map +1 -0
  38. package/build/adapters/gatsby/shared/sync-render.js +210 -0
  39. package/build/adapters/gatsby/shared/sync-render.js.map +1 -0
  40. package/build/adapters/gatsby/shared/types.js +3 -0
  41. package/build/adapters/gatsby/shared/types.js.map +1 -0
  42. package/build/commands/end-render.js +87 -0
  43. package/build/commands/end-render.js.map +1 -0
  44. package/build/commands/prepare-assets-directory.js +30 -0
  45. package/build/commands/prepare-assets-directory.js.map +1 -0
  46. package/build/commands/prepare-domains-render.js +133 -0
  47. package/build/commands/prepare-domains-render.js.map +1 -0
  48. package/build/commands/reset-render.js +21 -0
  49. package/build/commands/reset-render.js.map +1 -0
  50. package/build/commands/start-render.js +44 -0
  51. package/build/commands/start-render.js.map +1 -0
  52. package/build/commands/upload-search-content.js +180 -0
  53. package/build/commands/upload-search-content.js.map +1 -0
  54. package/build/constants/endpoints.js +43 -0
  55. package/build/constants/endpoints.js.map +1 -0
  56. package/build/constants/envs.js +68 -0
  57. package/build/constants/envs.js.map +1 -0
  58. package/build/constants/errors.js +81 -0
  59. package/build/constants/errors.js.map +1 -0
  60. package/build/services/auth.js +40 -0
  61. package/build/services/auth.js.map +1 -0
  62. package/build/services/db-class.js +49 -0
  63. package/build/services/db-class.js.map +1 -0
  64. package/build/services/db.js +34 -0
  65. package/build/services/db.js.map +1 -0
  66. package/build/services/navigation.js +96 -0
  67. package/build/services/navigation.js.map +1 -0
  68. package/build/services/reference-fields.js +131 -0
  69. package/build/services/reference-fields.js.map +1 -0
  70. package/build/services/robots.js +60 -0
  71. package/build/services/robots.js.map +1 -0
  72. package/build/services/sites.js +110 -0
  73. package/build/services/sites.js.map +1 -0
  74. package/build/services/store.js +257 -0
  75. package/build/services/store.js.map +1 -0
  76. package/build/types/api.js +3 -0
  77. package/build/types/api.js.map +1 -0
  78. package/build/types/global.js +3 -0
  79. package/build/types/global.js.map +1 -0
  80. package/build/types/navigation.js +3 -0
  81. package/build/types/navigation.js.map +1 -0
  82. package/build/types/pages.js +3 -0
  83. package/build/types/pages.js.map +1 -0
  84. package/build/types/render.js +10 -0
  85. package/build/types/render.js.map +1 -0
  86. package/build/types/sites.js +3 -0
  87. package/build/types/sites.js.map +1 -0
  88. package/build/types/templates.js +3 -0
  89. package/build/types/templates.js.map +1 -0
  90. package/build/utils/api.js +165 -0
  91. package/build/utils/api.js.map +1 -0
  92. package/build/utils/artifacts.js +38 -0
  93. package/build/utils/artifacts.js.map +1 -0
  94. package/build/utils/brush.js +30 -0
  95. package/build/utils/brush.js.map +1 -0
  96. package/build/utils/cache.js +106 -0
  97. package/build/utils/cache.js.map +1 -0
  98. package/build/utils/check-environment-health.js +69 -0
  99. package/build/utils/check-environment-health.js.map +1 -0
  100. package/build/utils/core-utils.js +270 -0
  101. package/build/utils/core-utils.js.map +1 -0
  102. package/build/utils/domains.js +37 -0
  103. package/build/utils/domains.js.map +1 -0
  104. package/build/utils/errors.js +30 -0
  105. package/build/utils/errors.js.map +1 -0
  106. package/build/utils/folders.js +341 -0
  107. package/build/utils/folders.js.map +1 -0
  108. package/build/utils/images.js +45 -0
  109. package/build/utils/images.js.map +1 -0
  110. package/build/utils/instance.js +66 -0
  111. package/build/utils/instance.js.map +1 -0
  112. package/build/utils/loggin.js +119 -0
  113. package/build/utils/loggin.js.map +1 -0
  114. package/build/utils/npm-deps/find-up-simple.js +75 -0
  115. package/build/utils/npm-deps/find-up-simple.js.map +1 -0
  116. package/build/utils/npm-deps/pkg-dir.js +20 -0
  117. package/build/utils/npm-deps/pkg-dir.js.map +1 -0
  118. package/build/utils/npm-deps/xml-parser.js +49 -0
  119. package/build/utils/npm-deps/xml-parser.js.map +1 -0
  120. package/build/utils/pages.js +359 -0
  121. package/build/utils/pages.js.map +1 -0
  122. package/build/utils/render.js +168 -0
  123. package/build/utils/render.js.map +1 -0
  124. package/build/utils/sitemaps.js +110 -0
  125. package/build/utils/sitemaps.js.map +1 -0
  126. package/build/utils/sites.js +105 -0
  127. package/build/utils/sites.js.map +1 -0
  128. package/build/utils/store.js +193 -0
  129. package/build/utils/store.js.map +1 -0
  130. package/exporter/adapters/gatsby/actions/clean.ts +14 -0
  131. package/exporter/adapters/gatsby/actions/close.ts +20 -0
  132. package/exporter/adapters/gatsby/actions/data.ts +25 -0
  133. package/exporter/adapters/gatsby/actions/healthCheck.ts +10 -0
  134. package/exporter/adapters/gatsby/actions/init.ts +26 -0
  135. package/exporter/adapters/gatsby/actions/logs.ts +10 -0
  136. package/exporter/adapters/gatsby/actions/meta.ts +16 -0
  137. package/exporter/adapters/gatsby/actions/prepare.ts +9 -0
  138. package/exporter/adapters/gatsby/actions/relocation.ts +15 -0
  139. package/exporter/adapters/gatsby/actions/restore.ts +36 -0
  140. package/exporter/adapters/gatsby/actions/ssg.ts +12 -0
  141. package/exporter/adapters/gatsby/actions/sync.ts +71 -0
  142. package/exporter/adapters/gatsby/index.ts +73 -153
  143. package/exporter/adapters/gatsby/shared/artifacts.ts +16 -0
  144. package/exporter/adapters/gatsby/shared/context.ts +50 -0
  145. package/exporter/adapters/gatsby/shared/diff-assets.ts +113 -0
  146. package/exporter/adapters/gatsby/shared/extract-assets.ts +61 -0
  147. package/exporter/adapters/gatsby/shared/gatsby-build.ts +58 -0
  148. package/exporter/adapters/gatsby/shared/sync-render.ts +276 -0
  149. package/exporter/adapters/gatsby/shared/types.ts +35 -0
  150. package/exporter/build-esbuild.noop +42 -0
  151. package/exporter/build.sh +4 -38
  152. package/exporter/commands/end-render.ts +72 -70
  153. package/exporter/commands/prepare-assets-directory.ts +30 -0
  154. package/exporter/commands/prepare-domains-render.ts +143 -31
  155. package/exporter/commands/reset-render.ts +10 -3
  156. package/exporter/commands/start-render.ts +22 -45
  157. package/exporter/commands/upload-search-content.ts +194 -21
  158. package/exporter/constants/endpoints.ts +2 -1
  159. package/exporter/constants/envs.ts +57 -55
  160. package/exporter/{errors/errors-data.ts → constants/errors.ts} +24 -14
  161. package/exporter/services/auth.ts +7 -6
  162. package/exporter/services/db-class.ts +54 -0
  163. package/exporter/services/db.ts +32 -0
  164. package/exporter/services/navigation.ts +4 -10
  165. package/exporter/services/reference-fields.ts +9 -24
  166. package/exporter/services/robots.ts +9 -16
  167. package/exporter/services/sites.ts +36 -24
  168. package/exporter/services/store.ts +107 -96
  169. package/exporter/types/api.ts +27 -28
  170. package/exporter/types/global.ts +8 -11
  171. package/exporter/types/navigation.ts +1 -1
  172. package/exporter/types/pages.ts +2 -3
  173. package/exporter/types/render.ts +59 -0
  174. package/exporter/types/sites.ts +1 -2
  175. package/exporter/utils/api.ts +55 -75
  176. package/exporter/utils/artifacts.ts +38 -0
  177. package/exporter/utils/brush.ts +34 -0
  178. package/exporter/utils/cache.ts +37 -62
  179. package/exporter/utils/check-environment-health.ts +80 -0
  180. package/exporter/utils/core-utils.ts +133 -272
  181. package/exporter/utils/domains.ts +10 -7
  182. package/exporter/{errors/index.ts → utils/errors.ts} +10 -9
  183. package/exporter/utils/folders.ts +163 -98
  184. package/exporter/utils/images.ts +1 -6
  185. package/exporter/utils/instance.ts +9 -13
  186. package/exporter/utils/loggin.ts +44 -91
  187. package/exporter/utils/npm-deps/find-up-simple.ts +100 -0
  188. package/exporter/utils/npm-deps/pkg-dir.ts +17 -0
  189. package/exporter/utils/npm-deps/xml-parser.ts +57 -0
  190. package/exporter/utils/pages.ts +23 -88
  191. package/exporter/utils/render.ts +180 -48
  192. package/exporter/utils/sitemaps.ts +129 -0
  193. package/exporter/utils/sites.ts +19 -197
  194. package/exporter/utils/store.ts +87 -180
  195. package/gatsby-browser.tsx +41 -58
  196. package/gatsby-config.ts +10 -17
  197. package/gatsby-node.ts +17 -78
  198. package/gatsby-ssr.tsx +2 -1
  199. package/package.json +35 -86
  200. package/plugins/gatsby-plugin-svgr-loader/gatsby-node.js +55 -0
  201. package/plugins/gatsby-plugin-svgr-loader/package.json +8 -0
  202. package/react/DynamicScript/index.tsx +33 -0
  203. package/{exporter/react → react}/Favicon/index.tsx +1 -7
  204. package/{exporter/react → react}/GriddoIntegrations/index.tsx +16 -22
  205. package/{exporter/react → react}/GriddoIntegrations/utils.ts +21 -9
  206. package/{build/react/index.d.ts → react/index.tsx} +1 -0
  207. package/src/components/Head.tsx +13 -46
  208. package/src/components/template.tsx +8 -30
  209. package/src/gatsby-node-utils.ts +73 -2
  210. package/src/html.tsx +2 -11
  211. package/src/types.ts +5 -5
  212. package/tsconfig.commands.json +36 -0
  213. package/tsconfig.exporter.json +19 -0
  214. package/tsconfig.json +5 -3
  215. package/build/adapters/gatsby/index.d.ts +0 -4
  216. package/build/adapters/gatsby/utils.d.ts +0 -22
  217. package/build/artifacts/index.d.ts +0 -6
  218. package/build/commands/end-render.d.ts +0 -2
  219. package/build/commands/move-assets.d.ts +0 -1
  220. package/build/commands/prepare-domains-render.d.ts +0 -1
  221. package/build/commands/reset-render.d.ts +0 -2
  222. package/build/commands/start-render.d.ts +0 -2
  223. package/build/commands/upload-search-content.d.ts +0 -2
  224. package/build/constants/endpoints.d.ts +0 -19
  225. package/build/constants/envs.d.ts +0 -37
  226. package/build/constants/index.d.ts +0 -57
  227. package/build/end-render.js +0 -74
  228. package/build/end-render.js.map +0 -7
  229. package/build/errors/errors-data.d.ts +0 -22
  230. package/build/errors/index.d.ts +0 -15
  231. package/build/index.d.ts +0 -29
  232. package/build/index.js +0 -73
  233. package/build/index.js.map +0 -7
  234. package/build/prepare-domains-render.js +0 -73
  235. package/build/prepare-domains-render.js.map +0 -7
  236. package/build/react/Favicon/index.d.ts +0 -5
  237. package/build/react/Favicon/utils.d.ts +0 -9
  238. package/build/react/GriddoIntegrations/index.d.ts +0 -20
  239. package/build/react/GriddoIntegrations/utils.d.ts +0 -26
  240. package/build/react/index.js +0 -3
  241. package/build/registers/api.d.ts +0 -9
  242. package/build/registers/gatsby.d.ts +0 -9
  243. package/build/registers/index.d.ts +0 -3
  244. package/build/reset-render.js +0 -74
  245. package/build/reset-render.js.map +0 -7
  246. package/build/services/auth.d.ts +0 -10
  247. package/build/services/domains.d.ts +0 -6
  248. package/build/services/navigation.d.ts +0 -50
  249. package/build/services/reference-fields.d.ts +0 -20
  250. package/build/services/register.d.ts +0 -36
  251. package/build/services/robots.d.ts +0 -19
  252. package/build/services/settings.d.ts +0 -4
  253. package/build/services/sites.d.ts +0 -29
  254. package/build/services/store.d.ts +0 -6
  255. package/build/start-render.js +0 -100
  256. package/build/start-render.js.map +0 -7
  257. package/build/types/api.d.ts +0 -142
  258. package/build/types/global.d.ts +0 -84
  259. package/build/types/navigation.d.ts +0 -28
  260. package/build/types/pages.d.ts +0 -144
  261. package/build/types/sites.d.ts +0 -57
  262. package/build/types/templates.d.ts +0 -8
  263. package/build/upload-search-content.js +0 -74
  264. package/build/upload-search-content.js.map +0 -7
  265. package/build/utils/alerts.d.ts +0 -3
  266. package/build/utils/api.d.ts +0 -23
  267. package/build/utils/cache.d.ts +0 -35
  268. package/build/utils/core-utils.d.ts +0 -107
  269. package/build/utils/create-build-data.d.ts +0 -8
  270. package/build/utils/domains.d.ts +0 -13
  271. package/build/utils/folders.d.ts +0 -53
  272. package/build/utils/health-checks.d.ts +0 -7
  273. package/build/utils/images.d.ts +0 -16
  274. package/build/utils/instance.d.ts +0 -21
  275. package/build/utils/loggin.d.ts +0 -51
  276. package/build/utils/pages.d.ts +0 -34
  277. package/build/utils/render.d.ts +0 -13
  278. package/build/utils/searches.d.ts +0 -15
  279. package/build/utils/sites.d.ts +0 -31
  280. package/build/utils/store.d.ts +0 -81
  281. package/cx.config.d.ts +0 -5
  282. package/cx.config.js +0 -36
  283. package/exporter/adapters/gatsby/utils.ts +0 -161
  284. package/exporter/artifacts/README.md +0 -34
  285. package/exporter/artifacts/index.ts +0 -33
  286. package/exporter/commands/move-assets.ts +0 -11
  287. package/exporter/constants/index.ts +0 -129
  288. package/exporter/index.ts +0 -82
  289. package/exporter/react/index.tsx +0 -11
  290. package/exporter/registers/api.ts +0 -14
  291. package/exporter/registers/gatsby.ts +0 -14
  292. package/exporter/registers/index.ts +0 -4
  293. package/exporter/services/domains.ts +0 -16
  294. package/exporter/services/register.ts +0 -113
  295. package/exporter/services/settings.ts +0 -17
  296. package/exporter/utils/alerts.ts +0 -29
  297. package/exporter/utils/create-build-data.ts +0 -17
  298. package/exporter/utils/health-checks.ts +0 -64
  299. package/exporter/utils/searches.ts +0 -156
  300. package/src/README.md +0 -7
  301. package/start-render.js +0 -7
  302. /package/{exporter/react → react}/Favicon/utils.ts +0 -0
@@ -0,0 +1,110 @@
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
+ logToFile: false,
82
+ });
83
+ }
84
+ async function getReferenceFieldSiteData(page, body, cacheKey, dataSiteId, dataLangID) {
85
+ const [prefix, suffix] = endpoints_1.GET_REFERENCE_FIELD_DATA;
86
+ const site = dataSiteId || page.site;
87
+ const lang = dataLangID || page.language;
88
+ return (0, api_1.post)({
89
+ endpoint: `${prefix}${site}${suffix}`,
90
+ body,
91
+ headers: { lang },
92
+ cacheKey,
93
+ });
94
+ }
95
+ async function getSitemap(options) {
96
+ const { siteId, headers } = options;
97
+ const [prefix, suffix] = endpoints_1.GET_SITEMAP;
98
+ return (0, api_1.get)({
99
+ endpoint: `${prefix}${siteId}${suffix}`,
100
+ headers,
101
+ });
102
+ }
103
+ async function getSiteSocials(id, cacheKey = "") {
104
+ const [prefix, suffix] = endpoints_1.SOCIALS;
105
+ return (0, api_1.get)({
106
+ endpoint: `${prefix}${id}${suffix}`,
107
+ cacheKey,
108
+ });
109
+ }
110
+ //# sourceMappingURL=sites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sites.js","sourceRoot":"","sources":["../../exporter/services/sites.ts"],"names":[],"mappings":";;QAyJC,aAAa;QACb,WAAW;QACX,qBAAqB;QACrB,OAAO;QACP,yBAAyB;QACzB,WAAW;QACX,gBAAgB;QAChB,UAAU;QACV,cAAc;QACd,eAAe;AAnJhB,sDAUgC;AAChC,sCAAyC;AAEzC;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE;IAC1C,OAAO,IAAA,SAAG,EAAkB;QAC3B,QAAQ,EAAE,GAAG,mBAAO,eAAe,MAAM,EAAE;KAC3C,CAAC,CAAC;AAAA,CACH;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAAC,MAAc,EAAE;IACpD,MAAM,QAAQ,GAAG,MAAM,IAAA,SAAG,EAAkB,EAAE,QAAQ,EAAE,mBAAO,EAAE,CAAC,CAAC;IAEnE,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAElD,8DAA6D;YAC7D,uDAAuD;YACvD,IAAI,CAAC,OAAO,GAAG,KAAK;iBAClB,MAAM,CACN,CAAC,IAAI,EAAE,EAAE,CACR,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC,CAClF;iBACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;IACF,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAAA,CAC1D;AAED;;GAEG;AACH,KAAK,UAAU,OAAO,CAAC,EAAU,EAAE,QAAgB,EAAE;IACpD,OAAO,IAAA,SAAG,EAAe;QACxB,QAAQ,EAAE,GAAG,oBAAQ,IAAI,EAAE,EAAE;QAC7B,QAAQ;KACR,CAAC,CAAC;AAAA,CACH;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,EAAU,EAAE,QAAQ,GAAG,EAAE,EAAE;IACrD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAI,CAAC;IAE9B,OAAO,IAAA,SAAG,EAAO;QAChB,QAAQ,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE;QACnC,QAAQ;KACR,CAAC,CAAC;AAAA,CACH;AAED,KAAK,UAAU,gBAAgB,CAAC,EAAU,EAAE,QAAQ,GAAG,EAAE,EAAE;IAC1D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,qBAAS,CAAC;IAEnC,OAAO,IAAA,SAAG,EAAoB;QAC7B,QAAQ,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE;QACnC,QAAQ;KACR,CAAC,CAAC;AAAA,CACH;AAED,KAAK,UAAU,eAAe,CAAC,EAAU,EAAE;IAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,uBAAW,CAAC;IAErC,OAAO,IAAA,SAAG,EAA0B;QACnC,QAAQ,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE;KACnC,CAAC,CAAC;AAAA,CACH;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,EAAU,EAAE,IAAuB,EAAE;IACjE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,qBAAS,CAAC;IAEnC,OAAO,IAAA,UAAI,EAAsB;QAChC,QAAQ,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE;QACnC,IAAI;QACJ,cAAc,EAAE,KAAK;QACrB,SAAS,EAAE,KAAK;KAChB,CAAC,CAAC;AAAA,CACH;AAED,KAAK,UAAU,yBAAyB,CACvC,IAAe,EACf,IAAwB,EACxB,QAAgB,EAChB,UAAmB,EACnB,UAAmB,EAClB;IACD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,oCAAwB,CAAC;IAClD,MAAM,IAAI,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC;IAEzC,OAAO,IAAA,UAAI,EAAyB;QACnC,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE;QACrC,IAAI;QACJ,OAAO,EAAE,EAAE,IAAI,EAAE;QACjB,QAAQ;KACR,CAAC,CAAC;AAAA,CACH;AAED,KAAK,UAAU,UAAU,CAAC,OAA6D,EAAE;IACxF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACpC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,uBAAW,CAAC;IAErC,OAAO,IAAA,SAAG,EAAqB;QAC9B,QAAQ,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE;QACvC,OAAO;KACP,CAAC,CAAC;AAAA,CACH;AAED,KAAK,UAAU,cAAc,CAAC,EAAU,EAAE,QAAQ,GAAG,EAAE,EAAE;IACxD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,mBAAO,CAAC;IAEjC,OAAO,IAAA,SAAG,EAAkB;QAC3B,QAAQ,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE;QACnC,QAAQ;KACR,CAAC,CAAC;AAAA,CACH"}
@@ -0,0 +1,257 @@
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.createStore = createStore;
7
+ const promises_1 = __importDefault(require("node:fs/promises"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const p_limit_1 = __importDefault(require("p-limit"));
10
+ const endpoints_1 = require("../constants/endpoints");
11
+ const envs_1 = require("../constants/envs");
12
+ const api_1 = require("../utils/api");
13
+ const cache_1 = require("../utils/cache");
14
+ const loggin_1 = require("../utils/loggin");
15
+ const pages_1 = require("../utils/pages");
16
+ const sites_1 = require("../utils/sites");
17
+ const store_1 = require("../utils/store");
18
+ const navigation_1 = require("./navigation");
19
+ const reference_fields_1 = require("./reference-fields");
20
+ const sites_2 = require("./sites");
21
+ const renderId = Date.now().toString();
22
+ function guessSiteNeedsToBeRenderedFromScratch() {
23
+ return false;
24
+ }
25
+ /**
26
+ * Fetch, process and save object pages and sites data into the file system to
27
+ * be consumed by other services (Griddo itself, Adapters, etc.)
28
+ */
29
+ async function createStore(options) {
30
+ console.info(`API calls with ${envs_1.GRIDDO_API_CONCURRENCY_COUNT} threads`);
31
+ console.info(`API URL ${envs_1.GRIDDO_API_URL}`);
32
+ const { renderMode, domain, griddoVersion, basePath } = options;
33
+ const renderFromScratch = renderMode === "FROM_SCRATCH";
34
+ const storeDir = node_path_1.default.join(basePath, "store");
35
+ try {
36
+ // Vars to save later in the report file
37
+ const createdPages = [];
38
+ const buildProcessData = {};
39
+ // Get sites objects to publish and unpublish from this domain
40
+ const { sitesToPublish, sitesToUnpublish } = await (0, sites_1.getSitesToRender)(domain);
41
+ (0, loggin_1.listSitesLog)("Sites to publish:", sitesToPublish);
42
+ (0, loggin_1.listSitesLog)("Sites to unpublish:", sitesToUnpublish);
43
+ // Send unpublished sites to API.
44
+ await (0, sites_1.unpublishSites)(sitesToUnpublish);
45
+ // Eliminamos posibles sites que estén en el store pero que no deberían
46
+ // porque han sido cambiados de dominio. Si han sido despublicados ya se
47
+ // despublican bien porque entran en `sitesToUnpublish`
48
+ await (0, store_1.removeOrphanSites)(sitesToPublish, domain);
49
+ const allPagesToRemoveFromBuild = [];
50
+ // let numberOfFinalActivePages: Array<number> = [];
51
+ for (const site of sitesToUnpublish) {
52
+ const { pagesStatus } = site;
53
+ // Añadimos a allPagesToRemoveFromBuild todas las páginas de un site
54
+ // para despublicar.
55
+ allPagesToRemoveFromBuild.push(...pagesStatus.active, ...pagesStatus.offlinePending, ...pagesStatus.uploadPending, ...pagesStatus.deleted, ...pagesStatus.offline);
56
+ }
57
+ for (const site of sitesToPublish) {
58
+ const { id: siteId, slug: siteSlug, theme, favicon, pagesStatus } = site;
59
+ const siteDirName = siteId.toString();
60
+ // numberOfFinalActivePages.push(
61
+ // ...pagesStatus.active,
62
+ // ...pagesStatus.uploadPending,
63
+ // );
64
+ allPagesToRemoveFromBuild.push(...pagesStatus.offlinePending, ...pagesStatus.deleted);
65
+ const { siteInfo, siteHash, unpublishHashes, siteLangs, defaultLang, headers, footers, socials, } = await (0, sites_1.getSiteData)(siteId);
66
+ const { cloudinaryName, useMetaTitle, useMetaKeywords, showBasicMetaRobots, avoidHrefLangsOnCanonicals, avoidSelfReferenceCanonicals, avoidHrefLangXDefault, avoidDebugMetas, } = await (0, api_1.get)({ endpoint: endpoints_1.SETTINGS });
67
+ buildProcessData[siteId] = {
68
+ siteHash,
69
+ unpublishHashes,
70
+ publishHashes: [],
71
+ publishPagesIds: [],
72
+ };
73
+ const NavService = new navigation_1.NavigationService();
74
+ NavService.navigations = { headers, footers };
75
+ site.languages = siteLangs;
76
+ const shouldUpdateSite = await (0, cache_1.updatedSiteHash)(siteId, siteHash);
77
+ const siteScript = siteInfo.siteScript;
78
+ const siteMetadata = {
79
+ siteUrl: siteInfo.slug,
80
+ title: siteInfo.name,
81
+ favicon,
82
+ };
83
+ const additionalInfo = {
84
+ baseUrl: envs_1.GRIDDO_API_URL,
85
+ publicBaseUrl: envs_1.GRIDDO_PUBLIC_API_URL,
86
+ instance: envs_1.GRIDDO_REACT_APP_INSTANCE,
87
+ siteSlug,
88
+ theme,
89
+ siteMetadata,
90
+ socials,
91
+ siteLangs,
92
+ cloudinaryName,
93
+ griddoVersion,
94
+ siteOptions: {
95
+ useMetaTitle,
96
+ useMetaKeywords,
97
+ showBasicMetaRobots,
98
+ avoidHrefLangsOnCanonicals,
99
+ avoidSelfReferenceCanonicals,
100
+ avoidHrefLangXDefault,
101
+ avoidDebugMetas,
102
+ },
103
+ siteScript,
104
+ };
105
+ (0, loggin_1.infoLog)(`Getting pages from ${site.name} site`);
106
+ /// Creates the store directory for each site using the id
107
+ await promises_1.default.mkdir(node_path_1.default.join(storeDir, siteDirName), {
108
+ recursive: true,
109
+ });
110
+ // -------------------------------------------------------------------------
111
+ // Pages loop promise creation
112
+ // -------------------------------------------------------------------------
113
+ // Async function that process every page for one site to use later in the
114
+ // `Promise.all` with pLimit.
115
+ const fetchSitePageAndSaveInStore = async (siteIdName, pageId) => {
116
+ // Here will be store every page returned by the API and processed
117
+ let griddoPageObjects = [];
118
+ // Get page data
119
+ const page = await (0, sites_2.getPage)(pageId, shouldUpdateSite);
120
+ // Probably a 404
121
+ if (!page) {
122
+ return;
123
+ }
124
+ // Update Array of page ids
125
+ createdPages.push(pageId);
126
+ // TODO: Use structuredClone() when node 18 is available.
127
+ // SHAME: This new pageAdditionalInfo needs to be a copy because
128
+ // additionalInfo referenced from outside this function and
129
+ // its used by other pages.
130
+ const pageAdditionalInfo = JSON.parse(JSON.stringify(additionalInfo));
131
+ // Updated with navigations (header & footer)
132
+ pageAdditionalInfo.navigations = NavService.getPageNavigations(page);
133
+ // Content Type Data Query.
134
+ // Where the pair `hasDistributorData:true` /
135
+ // `getStaticData:true` and `data` prop exists, this function
136
+ // will attach a `queriedItems` prop with the result of the
137
+ // fetch for the data.
138
+ const template = await (0, reference_fields_1.getReferenceFieldData)({
139
+ page,
140
+ cacheKey: renderId,
141
+ });
142
+ // MultiPage Query
143
+ // Where the pair `hasGriddoMultiPage:true` prop exists, this function
144
+ // will process the schema and return a multiPageElemtens array to use
145
+ // in `createGriddoMultiPages()`
146
+ const multiPageElements = await (0, pages_1.getMultiPageElements)(template);
147
+ // -----------------------------------------------------------------------
148
+ // Build Griddo page objects.
149
+ // -----------------------------------------------------------------------
150
+ // A page from the API could be one of those:
151
+ // - List with pagination (static list template): needs to be splitted in n pages
152
+ // - Multi-page module: needs to be splitted in n pages
153
+ // - Single: just one page
154
+ // Griddo page types
155
+ const isStaticListPage = page?.mode === "list" || page?.mode === "paginated-data";
156
+ const isMultiPage = !isStaticListPage && multiPageElements;
157
+ const isSinglePage = !isMultiPage && !isStaticListPage;
158
+ // >> List (static list template) <<
159
+ if (isStaticListPage) {
160
+ const griddoListPage = {
161
+ page: page,
162
+ pages: (0, pages_1.getPaginatedPages)(template),
163
+ isRoot: false,
164
+ defaultLang: defaultLang,
165
+ template: template,
166
+ totalQueriedItems: template.queriedItems,
167
+ };
168
+ // pageObjects = await createGriddoListPages({ adapter: "Gatsby" })
169
+ griddoPageObjects = await (0, pages_1.createGriddoListPages)(griddoListPage, pageAdditionalInfo);
170
+ // ¿Por qué la añadimos a las páginas para borrar?
171
+ // Porque este tipo de páginas no está manejada por API y se crean varias páginas con el mismo ID.
172
+ // Esto hace que no se pueda rastrear bien el render.
173
+ allPagesToRemoveFromBuild.push(page.id);
174
+ }
175
+ // >> Multi-page <<
176
+ if (isMultiPage) {
177
+ const griddoMultipage = page;
178
+ // The `template` key with the (maybe) data (ReferenceField) items queried
179
+ griddoMultipage.template = template;
180
+ griddoMultipage.multiPageElements = multiPageElements;
181
+ griddoMultipage.defaultLang = defaultLang;
182
+ griddoPageObjects = await (0, pages_1.createGriddoMultiPages)(griddoMultipage, pageAdditionalInfo);
183
+ // ¿Por qué la añadimos a las páginas para borrar?
184
+ // Porque este tipo de páginas no está manejada por API y se crean varias páginas con el mismo ID.
185
+ // Esto hace que no se pueda rastrear bien el render.
186
+ allPagesToRemoveFromBuild.push(page.id);
187
+ }
188
+ // >> Single template <<
189
+ if (isSinglePage) {
190
+ const griddoSinglePage = page;
191
+ // The `template` key with the (maybe) data (ReferenceField) items queried
192
+ griddoSinglePage.template = template;
193
+ griddoSinglePage.defaultLang = defaultLang;
194
+ griddoPageObjects = [await (0, pages_1.createGriddoSinglePage)(griddoSinglePage, pageAdditionalInfo)];
195
+ }
196
+ // Upload only the valid pages hashes or ids of pages that has
197
+ // been changed or created.
198
+ if (page.hash !== null) {
199
+ buildProcessData[siteId].publishHashes.push(page.hash);
200
+ buildProcessData[siteId].publishPagesIds.push(page.id);
201
+ }
202
+ // Save build data to store
203
+ await (0, store_1.saveSitePagesInStore)(siteIdName, griddoPageObjects);
204
+ };
205
+ // Pages that needs to be fetched from the API and written to the store.
206
+ const pagesToFetchFromAPI = pagesStatus.uploadPending;
207
+ // Esto es necesario porque en la BBDD las páginas pueden estar
208
+ // marcadas como activas (online) pero si es una máquina nueva hace
209
+ // falta hacerlas de nuevo...
210
+ // const sitePendingOfPublishing = site.isPublished && site.shouldBeUpdated;
211
+ const sitePendingOfPublishing = guessSiteNeedsToBeRenderedFromScratch();
212
+ // @todo: necesito tener un sistema par publicar todo de un site (cuando un site esté pending to publish)
213
+ // algo como site.status = pending | published | unpublished...
214
+ if (renderFromScratch || sitePendingOfPublishing) {
215
+ pagesToFetchFromAPI.push(...pagesStatus.active);
216
+ }
217
+ // Create pages to the store. First requesting from API,
218
+ // transform, etc., and then writing them to disk.
219
+ const limit = (0, p_limit_1.default)(envs_1.GRIDDO_API_CONCURRENCY_COUNT);
220
+ const pagesToStore = pagesToFetchFromAPI.map((id) => limit(() => fetchSitePageAndSaveInStore(siteDirName, id)));
221
+ await Promise.all(pagesToStore);
222
+ // @ts-expect-error Mutate pagesStatus for reading pourposes.
223
+ pagesStatus.zombie = await (0, store_1.getZombiePagesInStore)(siteDirName, [
224
+ ...pagesStatus.active,
225
+ ...pagesStatus.uploadPending,
226
+ ]);
227
+ // Delete pages from the store removing them from disk.
228
+ await (0, store_1.removeSitePagesFromStore)(siteDirName, [
229
+ pagesStatus.deleted,
230
+ pagesStatus.offline,
231
+ pagesStatus.offlinePending,
232
+ // @ts-expect-error Mutate pagesStatus for reading pourposes.
233
+ pagesStatus.zombie,
234
+ ]);
235
+ }
236
+ // Después de guardar en el store todos los sites y sus páginas (las que
237
+ // sean que hayan cambiado etc.) guardamos un archivo con la información
238
+ // del render para usos posteriores.
239
+ // Render de dominios con sites para publicar o despublicar. Se
240
+ // guarda la infor del render normalmente.
241
+ await (0, store_1.saveRenderInfoInStore)({
242
+ buildProcessData,
243
+ createdPages,
244
+ sitesToPublish,
245
+ }, domain);
246
+ return {
247
+ pagesToCreate: createdPages,
248
+ pagesToDelete: allPagesToRemoveFromBuild,
249
+ };
250
+ }
251
+ catch (e) {
252
+ const error = e;
253
+ console.error(error.message);
254
+ process.exit(1);
255
+ }
256
+ }
257
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../exporter/services/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../exporter/types/api.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.js","sourceRoot":"","sources":["../../exporter/types/global.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../exporter/types/navigation.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../exporter/types/pages.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RENDER_MODE = void 0;
4
+ const RENDER_MODE = {
5
+ FROM_SCRATCH: "FROM_SCRATCH",
6
+ INCREMENTAL: "INCREMENTAL",
7
+ IDLE: "IDLE",
8
+ };
9
+ exports.RENDER_MODE = RENDER_MODE;
10
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../exporter/types/render.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW,GAAG;IACnB,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,MAAM;CACH,CAAC;QAoDF,WAAW"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=sites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sites.js","sourceRoot":"","sources":["../../exporter/types/sites.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../exporter/types/templates.ts"],"names":[],"mappings":""}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.get = getApi;
4
+ exports.post = postApi;
5
+ exports.put = putApi;
6
+ const auth_1 = require("../services/auth");
7
+ const brush_1 = require("./brush");
8
+ const cache_1 = require("./cache");
9
+ const core_utils_1 = require("./core-utils");
10
+ const loggin_1 = require("./loggin");
11
+ // Envs
12
+ const { env } = process;
13
+ const { RETRY_WAIT_SECONDS = "4", RETRY_ATTEMPTS = "4" } = env;
14
+ /**
15
+ * Make a GET/PUT/POST request to the Griddo API.
16
+ *
17
+ * @template T Response Type returned.
18
+ * @returns {Promise<T>} A promise that is resolved with the data from the API response.
19
+ *
20
+ * @example
21
+ * const response = await requestAPI<Site>(
22
+ * { endpoint: "...", cacheKey: "...", ... },
23
+ * "get",
24
+ * "..."
25
+ * );
26
+ */
27
+ async function requestAPI(props, method, appendToLog = "") {
28
+ const { endpoint, body, cacheKey = "", attempt = 1, headers, useApiCacheDir = true, logToFile = true, } = props;
29
+ const cacheOptions = { endpoint, body, headers, cacheKey };
30
+ // Cache
31
+ if (cacheKey && useApiCacheDir) {
32
+ const start = new Date();
33
+ const cacheData = await (0, cache_1.searchCacheData)(cacheOptions);
34
+ if (cacheData) {
35
+ const siteId = (0, core_utils_1.getSafeSiteId)(cacheData);
36
+ const siteIdMsg = siteId ? `site: ${siteId}` : "";
37
+ const duration = (0, core_utils_1.msToSec)(Date.now() - start.getTime());
38
+ if (logToFile) {
39
+ await (0, loggin_1.appendLogToFile)(`${method} (cache) ${siteIdMsg} ${endpoint} - ${duration}s ${appendToLog}`);
40
+ }
41
+ return cacheData;
42
+ }
43
+ }
44
+ // Network
45
+ try {
46
+ const start = new Date();
47
+ // Prepare fetch options
48
+ const fetchOptions = {
49
+ method: method.toUpperCase(),
50
+ headers: Object.assign({}, headers, auth_1.AuthService.headers),
51
+ };
52
+ // Add body for non-GET requests
53
+ if (method.toLowerCase() !== "get" && body) {
54
+ fetchOptions.body = JSON.stringify(body);
55
+ if (!fetchOptions.headers)
56
+ fetchOptions.headers = {};
57
+ fetchOptions.headers["Content-Type"] = "application/json";
58
+ }
59
+ const response = await fetch(endpoint, fetchOptions);
60
+ // Handle non-2xx responses
61
+ if (!response.ok) {
62
+ if (response.status === 404) {
63
+ // @ts-expect-error page maybe will be 404
64
+ return null;
65
+ }
66
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
67
+ }
68
+ const data = await response.json();
69
+ const siteId = (0, core_utils_1.getSafeSiteId)(data);
70
+ const siteIdMsg = siteId ? `site: ${siteId}` : "";
71
+ const duration = (0, core_utils_1.msToSec)(Date.now() - start.getTime());
72
+ if (logToFile) {
73
+ await (0, loggin_1.appendLogToFile)(`${method} (fetch) ${siteIdMsg} ${endpoint} - ${duration}s ${appendToLog}`);
74
+ }
75
+ if (useApiCacheDir) {
76
+ await (0, cache_1.saveCache)(cacheOptions, data);
77
+ }
78
+ return data;
79
+ }
80
+ catch (e) {
81
+ const error = e;
82
+ if (attempt > parseInt(RETRY_ATTEMPTS)) {
83
+ console.log(`
84
+ Max attempts ${RETRY_ATTEMPTS} reached
85
+ --------------------------------------
86
+ - ${method.toUpperCase()} ${endpoint}
87
+ - BODY: ${JSON.stringify(body)}
88
+ - HEADERS: ${JSON.stringify(headers)}
89
+ - ERROR: ${error.message}
90
+ --------------------------------------
91
+ `);
92
+ console.log(JSON.stringify(error, null, 2));
93
+ process.exit(1);
94
+ }
95
+ showApiError(error, {
96
+ callInfo: { endpoint, body },
97
+ });
98
+ console.warn(`Waiting for retry: ${method}`, endpoint);
99
+ await (0, core_utils_1.delay)(parseInt(RETRY_WAIT_SECONDS) * 1000);
100
+ return requestAPI({
101
+ endpoint,
102
+ body,
103
+ headers,
104
+ cacheKey,
105
+ attempt: attempt + 1,
106
+ }, method, appendToLog);
107
+ }
108
+ }
109
+ /**
110
+ * Make a GET request to the Griddo API.
111
+ *
112
+ * @template T Response Type returned.
113
+ * @returns A promise that is resolved with the data from the API response.
114
+ */
115
+ async function getApi(props) {
116
+ return requestAPI(props, "get");
117
+ }
118
+ /**
119
+ * Make a PUT request to the Griddo API.
120
+ *
121
+ * @template T Response Type returned.
122
+ * @returns A promise that is resolved with the data from the API response.
123
+ */
124
+ async function putApi(props) {
125
+ return requestAPI(props, "put");
126
+ }
127
+ /**
128
+ * Make a POST request to the Griddo API.
129
+ *
130
+ * @template T Response Type returned.
131
+ * @returns A promise that is resolved with the data from the API response.
132
+ */
133
+ async function postApi(props) {
134
+ const { endpoint, body, headers } = props;
135
+ const referenceFieldBodyParams = endpoint.endsWith("/distributor") &&
136
+ `# ReferenceField body: ${JSON.stringify(body)} lang: ${JSON.stringify(headers?.lang)}`;
137
+ return requestAPI(props, "post", referenceFieldBodyParams || "");
138
+ }
139
+ /**
140
+ * Shows an API error through the terminal.
141
+ */
142
+ function showApiError(error, options) {
143
+ const { message, stack } = error;
144
+ const { callInfo } = options;
145
+ const callInfoArray = [];
146
+ for (const item of Object.keys(callInfo)) {
147
+ callInfoArray.push(`${item}: ${typeof callInfo[item] === "object" ? JSON.stringify(callInfo[item]) : callInfo[item]}`);
148
+ }
149
+ // Compose the errors output
150
+ const callInfoStr = callInfoArray.join("\n");
151
+ const errorDetailsStr = `${message}\n${stack}`;
152
+ // Print the error
153
+ console.warn(brush_1.brush.red(`
154
+ =============
155
+
156
+ { Call info }
157
+ ${callInfoStr}
158
+
159
+ { Error details }
160
+ ${errorDetailsStr}
161
+
162
+ =============
163
+ `));
164
+ }
165
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../exporter/utils/api.ts"],"names":[],"mappings":"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"}