@griddo/cx 11.2.4 → 11.2.5-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.
- package/build/adapters/gatsby/index.d.ts +1 -1
- package/build/commands/prepare-domains-render.d.ts +1 -0
- package/build/commands/upload-search-content.d.ts +2 -0
- package/build/constants/envs.d.ts +2 -1
- package/build/end-render.js +25 -25
- package/build/end-render.js.map +4 -4
- package/build/index.d.ts +1 -2
- package/build/index.js +28 -51
- package/build/index.js.map +4 -4
- package/build/prepare-domains-render.js +73 -0
- package/build/prepare-domains-render.js.map +7 -0
- package/build/reset-render.js +21 -21
- package/build/reset-render.js.map +4 -4
- package/build/services/sites.d.ts +5 -1
- package/build/start-render.js +41 -38
- package/build/start-render.js.map +4 -4
- package/build/types/global.d.ts +5 -4
- package/build/types/sites.d.ts +7 -0
- package/build/upload-search-content.js +18 -18
- package/build/upload-search-content.js.map +4 -4
- package/build/utils/core-utils.d.ts +4 -8
- package/build/utils/create-build-data.d.ts +2 -2
- package/build/utils/domains.d.ts +9 -1
- package/build/utils/publish.d.ts +7 -0
- package/build/utils/render.d.ts +1 -1
- package/build/utils/sites.d.ts +2 -2
- package/build/utils/store.d.ts +28 -3
- package/exporter/adapters/gatsby/index.ts +124 -126
- package/exporter/build.sh +5 -5
- package/exporter/commands/end-render.ts +107 -0
- package/exporter/commands/prepare-domains-render.ts +89 -0
- package/exporter/commands/start-render.ts +68 -0
- package/exporter/{scripts → commands}/upload-search-content.ts +1 -1
- package/exporter/constants/envs.ts +4 -2
- package/exporter/constants/index.ts +1 -0
- package/exporter/index.ts +0 -2
- package/exporter/services/sites.ts +26 -0
- package/exporter/services/store.ts +33 -81
- package/exporter/types/global.ts +6 -2
- package/exporter/types/sites.ts +7 -0
- package/exporter/utils/core-utils.ts +5 -21
- package/exporter/utils/create-build-data.ts +2 -2
- package/exporter/utils/domains.ts +1 -1
- package/exporter/utils/folders.ts +2 -1
- package/exporter/utils/loggin.ts +7 -4
- package/exporter/utils/publish.ts +29 -0
- package/exporter/utils/render.ts +2 -1
- package/exporter/utils/sites.ts +12 -52
- package/exporter/utils/store.ts +88 -42
- package/package.json +7 -4
- package/start-render.js +1 -1
- package/build/run-start-render.js +0 -97
- package/build/run-start-render.js.map +0 -7
- package/build/scripts/end-render.d.ts +0 -20
- package/build/scripts/start-render.d.ts +0 -3
- package/exporter/scripts/end-render.ts +0 -102
- package/exporter/scripts/run-start-render.ts +0 -5
- package/exporter/scripts/start-render.ts +0 -25
- /package/build/{scripts/reset-render.d.ts → commands/end-render.d.ts} +0 -0
- /package/build/{scripts → commands}/move-assets.d.ts +0 -0
- /package/build/{scripts/run-start-render.d.ts → commands/reset-render.d.ts} +0 -0
- /package/build/{scripts/upload-search-content.d.ts → commands/start-render.d.ts} +0 -0
- /package/exporter/{scripts → commands}/move-assets.ts +0 -0
- /package/exporter/{scripts → commands}/reset-render.ts +0 -0
package/exporter/utils/sites.ts
CHANGED
|
@@ -5,14 +5,14 @@ import path from "node:path";
|
|
|
5
5
|
import fs from "fs-extra";
|
|
6
6
|
import { parse } from "js2xmlparser";
|
|
7
7
|
|
|
8
|
+
import { envs } from "../constants";
|
|
8
9
|
import { getConfig } from "./core-utils";
|
|
9
10
|
import { buildLog, verboseLog } from "./loggin";
|
|
10
11
|
import { getBuildMetadata } from "./store";
|
|
11
|
-
import { envs } from "../constants";
|
|
12
12
|
import { AuthService } from "../services/auth";
|
|
13
13
|
import {
|
|
14
14
|
endSiteRender,
|
|
15
|
-
|
|
15
|
+
getAllSitesFromDomain,
|
|
16
16
|
getSiteInfo,
|
|
17
17
|
getSiteLanguages,
|
|
18
18
|
getSitemap,
|
|
@@ -25,60 +25,20 @@ const config = getConfig();
|
|
|
25
25
|
/**
|
|
26
26
|
* Check the instance sites and returns site prepared to be published and unpublished.
|
|
27
27
|
*/
|
|
28
|
-
async function
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
// Login to API
|
|
32
|
-
await AuthService.login();
|
|
33
|
-
|
|
34
|
-
// Get all sites. An array of Site
|
|
35
|
-
const allSites = await getAllSites();
|
|
36
|
-
|
|
37
|
-
// Filter the array of sites to get only the ones to build/render
|
|
38
|
-
const validSites = envs.GRIDDO_RENDER_ALL_SITES
|
|
39
|
-
? allSites.filter(
|
|
40
|
-
(site) =>
|
|
41
|
-
!envs.GRIDDO_RENDER_SITE || site.id === envs.GRIDDO_RENDER_SITE,
|
|
42
|
-
)
|
|
43
|
-
: allSites.filter((site) =>
|
|
44
|
-
envs.GRIDDO_RENDER_SITE
|
|
45
|
-
? site.id === envs.GRIDDO_RENDER_SITE
|
|
46
|
-
: !!site.shouldBeUpdated,
|
|
47
|
-
);
|
|
48
|
-
|
|
49
|
-
// If there are valid sites...
|
|
50
|
-
if (validSites.length) {
|
|
51
|
-
for (const site of validSites) {
|
|
52
|
-
const { items } = await getSiteLanguages(site.id);
|
|
53
|
-
|
|
54
|
-
// Añadimos la prop domains con el dominio "cocinado" con los idiomas y teniendo en cuenta solo el dominio actual
|
|
55
|
-
site.domains = items
|
|
56
|
-
.filter(
|
|
57
|
-
(item) =>
|
|
58
|
-
item.domain &&
|
|
59
|
-
(item.domain.slug === domain || item.domain.slug === `/${domain}`),
|
|
60
|
-
)
|
|
61
|
-
.map((item) => ({ [item.id]: `${item.domain.slug}${item.path}` }));
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Sites with domains as empty arrays are sites that are not from the
|
|
66
|
-
// current domain.
|
|
67
|
-
const validSitesFromCurrentDomain = validSites.filter(
|
|
68
|
-
(site) => site.domains.length > 0,
|
|
69
|
-
);
|
|
28
|
+
async function getSitesToRender(domain: string) {
|
|
29
|
+
const allSites = await getAllSitesFromDomain(domain);
|
|
70
30
|
|
|
71
31
|
// Save sites object to publish
|
|
72
|
-
const sitesToPublish =
|
|
73
|
-
envs.GRIDDO_RENDER_SITE
|
|
32
|
+
const sitesToPublish = allSites.filter((site) => {
|
|
33
|
+
return envs.GRIDDO_RENDER_SITE
|
|
74
34
|
? site.id === envs.GRIDDO_RENDER_SITE
|
|
75
|
-
: !!site.isPublished
|
|
76
|
-
);
|
|
35
|
+
: !!site.isPublished;
|
|
36
|
+
});
|
|
77
37
|
|
|
78
38
|
// Save sites object to unpublish
|
|
79
|
-
const sitesToUnpublish =
|
|
80
|
-
|
|
81
|
-
);
|
|
39
|
+
const sitesToUnpublish = allSites.filter((site) => {
|
|
40
|
+
return !site.isPublished && site.shouldBeUpdated;
|
|
41
|
+
});
|
|
82
42
|
|
|
83
43
|
return {
|
|
84
44
|
sitesToPublish,
|
|
@@ -301,9 +261,9 @@ function saveFile(filePath: string, content: string) {
|
|
|
301
261
|
}
|
|
302
262
|
|
|
303
263
|
export {
|
|
304
|
-
checkSites,
|
|
305
264
|
generateBuildReport,
|
|
306
265
|
generateSitemaps,
|
|
307
266
|
getSiteData,
|
|
267
|
+
getSitesToRender,
|
|
308
268
|
unpublishSites,
|
|
309
269
|
};
|
package/exporter/utils/store.ts
CHANGED
|
@@ -21,9 +21,7 @@ const config = getConfig();
|
|
|
21
21
|
*
|
|
22
22
|
* @param domain - The domain to get the pages from.
|
|
23
23
|
*/
|
|
24
|
-
function getBuildPagesFromCachedStore<PageType extends GriddoPageObject>(
|
|
25
|
-
domain: string,
|
|
26
|
-
) {
|
|
24
|
+
function getBuildPagesFromCachedStore<PageType extends GriddoPageObject>(domain: string) {
|
|
27
25
|
const { __cache } = config.paths(domain);
|
|
28
26
|
return getBuildPagesFromStore<PageType>({
|
|
29
27
|
basePath: path.join(__cache, "store"),
|
|
@@ -47,9 +45,7 @@ function* getBuildPagesFromStore<PageType extends GriddoPageObject>(args?: {
|
|
|
47
45
|
const { __cx } = config.paths();
|
|
48
46
|
const pagesDirPath = basePath || path.join(__cx, "store");
|
|
49
47
|
|
|
50
|
-
const jsonFilePaths = walkStore(pagesDirPath).filter(
|
|
51
|
-
(file) => path.extname(file) === ".json",
|
|
52
|
-
);
|
|
48
|
+
const jsonFilePaths = walkStore(pagesDirPath).filter((file) => path.extname(file) === ".json");
|
|
53
49
|
|
|
54
50
|
for (const filePath of jsonFilePaths) {
|
|
55
51
|
try {
|
|
@@ -81,9 +77,7 @@ function getBuildPagesPath() {
|
|
|
81
77
|
const { __cx } = config.paths();
|
|
82
78
|
|
|
83
79
|
const PAGES_DIR = path.join(__cx, "store");
|
|
84
|
-
const PAGE_FILES = walk(PAGES_DIR).filter(
|
|
85
|
-
(file) => path.extname(file) === ".json",
|
|
86
|
-
);
|
|
80
|
+
const PAGE_FILES = walk(PAGES_DIR).filter((file) => path.extname(file) === ".json");
|
|
87
81
|
|
|
88
82
|
return PAGE_FILES;
|
|
89
83
|
}
|
|
@@ -126,10 +120,7 @@ function createStoreDir() {
|
|
|
126
120
|
function saveRenderInfoInStore(renderInfo: RenderInfo) {
|
|
127
121
|
const { __cx } = config.paths();
|
|
128
122
|
|
|
129
|
-
fs.writeFileSync(
|
|
130
|
-
path.join(__cx, "render-metadata.json"),
|
|
131
|
-
JSON.stringify(renderInfo),
|
|
132
|
-
);
|
|
123
|
+
fs.writeFileSync(path.join(__cx, "render-metadata.json"), JSON.stringify(renderInfo));
|
|
133
124
|
}
|
|
134
125
|
|
|
135
126
|
/**
|
|
@@ -189,10 +180,7 @@ function getPageInStoreDir(basePath: string): Array<number> {
|
|
|
189
180
|
* Save the pages into the file system.
|
|
190
181
|
* @param pages - An array of Griddo page objects to be saved.
|
|
191
182
|
*/
|
|
192
|
-
function savePagesInStore(
|
|
193
|
-
siteFolderName: string,
|
|
194
|
-
pages: Array<GriddoPageObject>,
|
|
195
|
-
) {
|
|
183
|
+
function savePagesInStore(siteFolderName: string, pages: Array<GriddoPageObject>) {
|
|
196
184
|
const { __cx } = config.paths();
|
|
197
185
|
|
|
198
186
|
try {
|
|
@@ -211,7 +199,7 @@ function savePagesInStore(
|
|
|
211
199
|
* Remove files from dir.
|
|
212
200
|
* @param filenames - An array of ids representing file page names.
|
|
213
201
|
*/
|
|
214
|
-
function
|
|
202
|
+
function removeSitePagesFromStore(siteDirName: string, filenames: Array<number>) {
|
|
215
203
|
const { __cx } = config.paths();
|
|
216
204
|
|
|
217
205
|
if (filenames.length === 0) {
|
|
@@ -238,7 +226,7 @@ function removePagesFromStore(siteDirName: string, filenames: Array<number>) {
|
|
|
238
226
|
* @param props.changedPages - Array of pages that have been modified in the site.
|
|
239
227
|
* @returns - An object containing the pages to be created and deleted in the site.
|
|
240
228
|
*/
|
|
241
|
-
async function
|
|
229
|
+
async function getSitePagesToCreateOrDelete(sitePages: {
|
|
242
230
|
sitesToPublish: Array<Site>;
|
|
243
231
|
validPagesIds: Array<number>;
|
|
244
232
|
changedPages: Array<number>;
|
|
@@ -255,9 +243,7 @@ async function getPagesToCreateOrDelete(sitePages: {
|
|
|
255
243
|
|
|
256
244
|
// Array<ids> que están el `validPagesIds` pero no están por algún
|
|
257
245
|
// motivo en el store. Se incluyen porque deben ser creadas.
|
|
258
|
-
const pagesMissingInStore = validPagesIds.filter(
|
|
259
|
-
(page) => !pagesInStore.includes(page),
|
|
260
|
-
);
|
|
246
|
+
const pagesMissingInStore = validPagesIds.filter((page) => !pagesInStore.includes(page));
|
|
261
247
|
|
|
262
248
|
// Array<ids> para enviar al store, que son las que han cambiado y
|
|
263
249
|
// las missings.
|
|
@@ -276,21 +262,63 @@ async function getPagesToCreateOrDelete(sitePages: {
|
|
|
276
262
|
(page) => !pagesToDeleteFromStore.includes(page),
|
|
277
263
|
);
|
|
278
264
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
265
|
+
return {
|
|
266
|
+
pagesInStore,
|
|
267
|
+
pagesMissingInStore,
|
|
268
|
+
pagesToDeleteFromStore: [
|
|
269
|
+
...pagesToDeleteFromStore,
|
|
270
|
+
// ...pagesFromInvalidSites,
|
|
271
|
+
],
|
|
272
|
+
pagesToWriteToStore,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Returns pages that need to be created or deleted for a site in the store based on the provided arguments.
|
|
278
|
+
* @param sitePages - Properties for page retrieval.
|
|
279
|
+
* @param props.storeDir - Absolute path of the Griddo store.
|
|
280
|
+
* @param props.pages - Exhaustive array of all pages in the site.
|
|
281
|
+
* @param props.validPagesIds - Array of valid pages in the site.
|
|
282
|
+
* @param props.changedPages - Array of pages that have been modified in the site.
|
|
283
|
+
* @returns - An object containing the pages to be created and deleted in the site.
|
|
284
|
+
*/
|
|
285
|
+
async function getSitePagesToCreateOrDeleteCached(sitePages: {
|
|
286
|
+
sitesToPublish: Array<Site>;
|
|
287
|
+
validPagesIds: Array<number>;
|
|
288
|
+
changedPages: Array<number>;
|
|
289
|
+
siteDirName: string;
|
|
290
|
+
domain: string;
|
|
291
|
+
}) {
|
|
292
|
+
const { changedPages, validPagesIds, siteDirName, domain } = sitePages;
|
|
293
|
+
|
|
294
|
+
const { __cache } = config.paths(domain);
|
|
295
|
+
const storeDir = path.join(__cache, "store");
|
|
296
|
+
|
|
297
|
+
// Array<ids> de las páginas que están físicamente en el store en el
|
|
298
|
+
// site actual del bucle.
|
|
299
|
+
const siteDirStorePath = path.join(storeDir, siteDirName);
|
|
300
|
+
const pagesInStore = getPageInStoreDir(siteDirStorePath);
|
|
301
|
+
|
|
302
|
+
// Array<ids> que están el `validPagesIds` pero no están por algún
|
|
303
|
+
// motivo en el store. Se incluyen porque deben ser creadas.
|
|
304
|
+
const pagesMissingInStore = validPagesIds.filter((page) => !pagesInStore.includes(page));
|
|
305
|
+
|
|
306
|
+
// Array<ids> para enviar al store, que son las que han cambiado y
|
|
307
|
+
// las missings.
|
|
308
|
+
const pagesToStore = pagesMissingInStore.concat(changedPages);
|
|
309
|
+
|
|
310
|
+
// Array<ids> de las páginas que han sido eliminadas para quitarlas
|
|
311
|
+
// físicamente de la carpeta store.
|
|
312
|
+
const pagesToDeleteFromStore = pagesInStore.filter((page) => {
|
|
313
|
+
// Las que no estén en validPages
|
|
314
|
+
return !validPagesIds.includes(page);
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
// 1 - Elimina del array final las páginas borradas.
|
|
318
|
+
// 2 - Elimina las posibles páginas (ids) duplicadas. (new Set)
|
|
319
|
+
const pagesToWriteToStore = Array.from(new Set(pagesToStore)).filter(
|
|
320
|
+
(page) => !pagesToDeleteFromStore.includes(page),
|
|
321
|
+
);
|
|
294
322
|
|
|
295
323
|
return {
|
|
296
324
|
pagesInStore,
|
|
@@ -303,6 +331,24 @@ async function getPagesToCreateOrDelete(sitePages: {
|
|
|
303
331
|
};
|
|
304
332
|
}
|
|
305
333
|
|
|
334
|
+
/**
|
|
335
|
+
* Removes sites from store that are not in `sitesToPublish` array.
|
|
336
|
+
*/
|
|
337
|
+
function deleteZombieSitesFoldersFromStore(sitesToPublish: Array<Site>) {
|
|
338
|
+
const { __cx } = getConfig().paths();
|
|
339
|
+
const storeDir = path.join(__cx, "store");
|
|
340
|
+
const siteDirs = fs.readdirSync(storeDir, { withFileTypes: true });
|
|
341
|
+
const siteIds = sitesToPublish.map((site) => `${site.id}`);
|
|
342
|
+
for (const dir of siteDirs) {
|
|
343
|
+
if (dir.isDirectory() && !siteIds.includes(dir.name)) {
|
|
344
|
+
fs.rmSync(path.join(storeDir, dir.name), {
|
|
345
|
+
force: true,
|
|
346
|
+
recursive: true,
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
306
352
|
/**
|
|
307
353
|
* Removes sites that exist in the store that should no longer be there because
|
|
308
354
|
* the domain has been changed. This is necessary because those sites will not
|
|
@@ -312,9 +358,7 @@ function removeOrphanSites(sitesToPublish: Array<Site>, domain: string) {
|
|
|
312
358
|
const { __cx } = getConfig().paths(domain);
|
|
313
359
|
const currentSitesInStore = fs.readdirSync(path.join(__cx, "store"));
|
|
314
360
|
const sitesFromAPI = sitesToPublish.map(({ id }) => `${id}`);
|
|
315
|
-
const sitesToDelete = currentSitesInStore.filter(
|
|
316
|
-
(site) => !sitesFromAPI.includes(site),
|
|
317
|
-
);
|
|
361
|
+
const sitesToDelete = currentSitesInStore.filter((site) => !sitesFromAPI.includes(site));
|
|
318
362
|
|
|
319
363
|
for (const site of sitesToDelete) {
|
|
320
364
|
fs.rmSync(path.join(__cx, "store", site), { recursive: true, force: true });
|
|
@@ -324,14 +368,16 @@ function removeOrphanSites(sitesToPublish: Array<Site>, domain: string) {
|
|
|
324
368
|
|
|
325
369
|
export {
|
|
326
370
|
createStoreDir,
|
|
371
|
+
deleteZombieSitesFoldersFromStore,
|
|
327
372
|
getBuildMetadata,
|
|
328
373
|
getBuildPagesFromCachedStore,
|
|
329
374
|
getBuildPagesFromStore,
|
|
330
375
|
getBuildPagesPath,
|
|
331
376
|
getPageInStoreDir,
|
|
332
|
-
|
|
377
|
+
getSitePagesToCreateOrDelete,
|
|
378
|
+
getSitePagesToCreateOrDeleteCached,
|
|
333
379
|
removeOrphanSites,
|
|
334
|
-
|
|
380
|
+
removeSitePagesFromStore,
|
|
335
381
|
savePagesInStore,
|
|
336
382
|
saveRenderInfoInStore,
|
|
337
383
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@griddo/cx",
|
|
3
3
|
"description": "Griddo SSG based on Gatsby",
|
|
4
|
-
"version": "11.2.
|
|
4
|
+
"version": "11.2.5-rc.1",
|
|
5
5
|
"authors": [
|
|
6
6
|
"Álvaro Sánchez' <alvaro.sanches@secuoyas.com>",
|
|
7
7
|
"Diego M. Béjar <diego.bejar@secuoyas.com>",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"url": "https://github.com/griddo/griddo"
|
|
17
17
|
},
|
|
18
18
|
"bin": {
|
|
19
|
-
"griddo-cx": "./start-render.js"
|
|
19
|
+
"griddo-cx": "./start-render.js",
|
|
20
|
+
"griddo-start-render": "./start-render.js"
|
|
20
21
|
},
|
|
21
22
|
"exports": {
|
|
22
23
|
".": {
|
|
@@ -44,7 +45,9 @@
|
|
|
44
45
|
"upload-search-content": "node ./build/upload-search-content.js",
|
|
45
46
|
"complete-render": "node ./build/end-render.js",
|
|
46
47
|
"end-render": "node ./build/end-render.js",
|
|
48
|
+
"start-render": "node ./build/start-render.js",
|
|
47
49
|
"reset-render": "node ./build/reset-render.js",
|
|
50
|
+
"prepare-domains-render": "node ./build/prepare-domains-render.js",
|
|
48
51
|
"// SSG": "",
|
|
49
52
|
"clean": "gatsby clean; rm -rf assets .cx-cache caches store apiCache build .render-sentinel",
|
|
50
53
|
"gatsby-build": "gatsby telemetry --disable && gatsby build --prefix-paths",
|
|
@@ -60,7 +63,7 @@
|
|
|
60
63
|
"@babel/preset-env": "7.26.0",
|
|
61
64
|
"@babel/preset-react": "7.26.3",
|
|
62
65
|
"@babel/preset-typescript": "7.26.0",
|
|
63
|
-
"@griddo/core": "11.2.
|
|
66
|
+
"@griddo/core": "11.2.5-rc.1",
|
|
64
67
|
"@svgr/webpack": "5.5.0",
|
|
65
68
|
"axios": "1.7.9",
|
|
66
69
|
"babel-loader": "9.2.1",
|
|
@@ -128,5 +131,5 @@
|
|
|
128
131
|
"publishConfig": {
|
|
129
132
|
"access": "public"
|
|
130
133
|
},
|
|
131
|
-
"gitHead": "
|
|
134
|
+
"gitHead": "ab766204bc991ccef66621f969cb492ba012464d"
|
|
132
135
|
}
|
package/start-render.js
CHANGED