@griddo/cx 11.7.6 → 11.7.7-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.
- package/README.md +27 -226
- package/build/adapters/gatsby/actions/clean.js +10 -0
- package/build/adapters/gatsby/actions/clean.js.map +1 -0
- package/build/adapters/gatsby/actions/close.js +12 -0
- package/build/adapters/gatsby/actions/close.js.map +1 -0
- package/build/adapters/gatsby/actions/data.js +18 -0
- package/build/adapters/gatsby/actions/data.js.map +1 -0
- package/build/adapters/gatsby/actions/healthCheck.js +10 -0
- package/build/adapters/gatsby/actions/healthCheck.js.map +1 -0
- package/build/adapters/gatsby/actions/init.js +9 -0
- package/build/adapters/gatsby/actions/init.js.map +1 -0
- package/build/adapters/gatsby/actions/meta.js +14 -0
- package/build/adapters/gatsby/actions/meta.js.map +1 -0
- package/build/adapters/gatsby/actions/prepare.js +9 -0
- package/build/adapters/gatsby/actions/prepare.js.map +1 -0
- package/build/adapters/gatsby/actions/relocation.js +15 -0
- package/build/adapters/gatsby/actions/relocation.js.map +1 -0
- package/build/adapters/gatsby/actions/restore.js +26 -0
- package/build/adapters/gatsby/actions/restore.js.map +1 -0
- package/build/adapters/gatsby/actions/ssg.js +9 -0
- package/build/adapters/gatsby/actions/ssg.js.map +1 -0
- package/build/adapters/gatsby/actions/sync.js +51 -0
- package/build/adapters/gatsby/actions/sync.js.map +1 -0
- package/build/adapters/gatsby/index.js +79 -0
- package/build/adapters/gatsby/index.js.map +1 -0
- package/build/adapters/gatsby/shared/context.js +31 -0
- package/build/adapters/gatsby/shared/context.js.map +1 -0
- package/build/adapters/gatsby/shared/diff-assets.js +101 -0
- package/build/adapters/gatsby/shared/diff-assets.js.map +1 -0
- package/build/adapters/gatsby/shared/extract-assets.js +58 -0
- package/build/adapters/gatsby/shared/extract-assets.js.map +1 -0
- package/build/adapters/gatsby/shared/gatsby-build.js +49 -0
- package/build/adapters/gatsby/shared/gatsby-build.js.map +1 -0
- package/build/adapters/gatsby/shared/sync-render.js +210 -0
- package/build/adapters/gatsby/shared/sync-render.js.map +1 -0
- package/build/adapters/gatsby/shared/types.js +3 -0
- package/build/adapters/gatsby/shared/types.js.map +1 -0
- package/build/commands/end-render.js +88 -0
- package/build/commands/end-render.js.map +1 -0
- package/build/commands/prepare-assets-directory.js +32 -0
- package/build/commands/prepare-assets-directory.js.map +1 -0
- package/build/commands/prepare-domains-render.js +133 -0
- package/build/commands/prepare-domains-render.js.map +1 -0
- package/build/commands/reset-render.js +22 -0
- package/build/commands/reset-render.js.map +1 -0
- package/build/commands/start-render.js +45 -0
- package/build/commands/start-render.js.map +1 -0
- package/build/commands/upload-search-content.js +180 -0
- package/build/commands/upload-search-content.js.map +1 -0
- package/build/constants/endpoints.js +42 -0
- package/build/constants/endpoints.js.map +1 -0
- package/build/constants/envs.js +68 -0
- package/build/constants/envs.js.map +1 -0
- package/build/constants/errors.js +81 -0
- package/build/constants/errors.js.map +1 -0
- package/build/services/auth.js +40 -0
- package/build/services/auth.js.map +1 -0
- package/build/services/db-class.js +49 -0
- package/build/services/db-class.js.map +1 -0
- package/build/services/db.js +34 -0
- package/build/services/db.js.map +1 -0
- package/build/services/navigation.js +96 -0
- package/build/services/navigation.js.map +1 -0
- package/build/services/reference-fields.js +131 -0
- package/build/services/reference-fields.js.map +1 -0
- package/build/services/robots.js +60 -0
- package/build/services/robots.js.map +1 -0
- package/build/services/sites.js +109 -0
- package/build/services/sites.js.map +1 -0
- package/build/services/store.js +282 -0
- package/build/services/store.js.map +1 -0
- package/build/types/api.js +3 -0
- package/build/types/api.js.map +1 -0
- package/build/types/global.js +3 -0
- package/build/types/global.js.map +1 -0
- package/build/types/navigation.js +3 -0
- package/build/types/navigation.js.map +1 -0
- package/build/types/pages.js +3 -0
- package/build/types/pages.js.map +1 -0
- package/build/types/render.js +10 -0
- package/build/types/render.js.map +1 -0
- package/build/types/sites.js +3 -0
- package/build/types/sites.js.map +1 -0
- package/build/types/templates.js +3 -0
- package/build/types/templates.js.map +1 -0
- package/build/utils/api.js +161 -0
- package/build/utils/api.js.map +1 -0
- package/build/utils/artifacts.js +34 -0
- package/build/utils/artifacts.js.map +1 -0
- package/build/utils/brush.js +30 -0
- package/build/utils/brush.js.map +1 -0
- package/build/utils/cache.js +106 -0
- package/build/utils/cache.js.map +1 -0
- package/build/utils/check-health.js +68 -0
- package/build/utils/check-health.js.map +1 -0
- package/build/utils/core-utils.js +283 -0
- package/build/utils/core-utils.js.map +1 -0
- package/build/utils/domains.js +37 -0
- package/build/utils/domains.js.map +1 -0
- package/build/utils/errors.js +30 -0
- package/build/utils/errors.js.map +1 -0
- package/build/utils/folders.js +362 -0
- package/build/utils/folders.js.map +1 -0
- package/build/utils/images.js +45 -0
- package/build/utils/images.js.map +1 -0
- package/build/utils/instance.js +66 -0
- package/build/utils/instance.js.map +1 -0
- package/build/utils/loggin.js +108 -0
- package/build/utils/loggin.js.map +1 -0
- package/build/utils/pages.js +359 -0
- package/build/utils/pages.js.map +1 -0
- package/build/utils/render.js +144 -0
- package/build/utils/render.js.map +1 -0
- package/build/utils/sites.js +240 -0
- package/build/utils/sites.js.map +1 -0
- package/build/utils/store.js +193 -0
- package/build/utils/store.js.map +1 -0
- package/exporter/adapters/gatsby/actions/clean.ts +14 -0
- package/exporter/adapters/gatsby/actions/close.ts +17 -0
- package/exporter/adapters/gatsby/actions/data.ts +25 -0
- package/exporter/adapters/gatsby/actions/healthCheck.ts +10 -0
- package/exporter/adapters/gatsby/actions/init.ts +12 -0
- package/exporter/adapters/gatsby/actions/meta.ts +18 -0
- package/exporter/adapters/gatsby/actions/prepare.ts +9 -0
- package/exporter/adapters/gatsby/actions/relocation.ts +15 -0
- package/exporter/adapters/gatsby/actions/restore.ts +36 -0
- package/exporter/adapters/gatsby/actions/ssg.ts +12 -0
- package/exporter/adapters/gatsby/actions/sync.ts +71 -0
- package/exporter/adapters/gatsby/index.ts +67 -147
- package/exporter/adapters/gatsby/shared/context.ts +50 -0
- package/exporter/adapters/gatsby/shared/diff-assets.ts +113 -0
- package/exporter/adapters/gatsby/shared/extract-assets.ts +61 -0
- package/exporter/adapters/gatsby/shared/gatsby-build.ts +54 -0
- package/exporter/adapters/gatsby/shared/sync-render.ts +276 -0
- package/exporter/adapters/gatsby/shared/types.ts +35 -0
- package/exporter/build-esbuild.noop +42 -0
- package/exporter/build.sh +4 -38
- package/exporter/commands/end-render.ts +73 -69
- package/exporter/commands/prepare-assets-directory.ts +33 -0
- package/exporter/commands/prepare-domains-render.ts +144 -31
- package/exporter/commands/reset-render.ts +10 -1
- package/exporter/commands/start-render.ts +23 -44
- package/exporter/commands/upload-search-content.ts +194 -20
- package/exporter/constants/envs.ts +57 -55
- package/exporter/{errors/errors-data.ts → constants/errors.ts} +24 -14
- package/exporter/services/auth.ts +7 -6
- package/exporter/services/db-class.ts +54 -0
- package/exporter/services/db.ts +32 -0
- package/exporter/services/navigation.ts +4 -10
- package/exporter/services/reference-fields.ts +8 -23
- package/exporter/services/robots.ts +9 -16
- package/exporter/services/sites.ts +35 -24
- package/exporter/services/store.ts +120 -78
- package/exporter/types/api.ts +24 -27
- package/exporter/types/global.ts +7 -10
- package/exporter/types/navigation.ts +1 -1
- package/exporter/types/pages.ts +2 -3
- package/exporter/types/render.ts +59 -0
- package/exporter/types/sites.ts +1 -2
- package/exporter/utils/api.ts +46 -82
- package/exporter/utils/artifacts.ts +34 -0
- package/exporter/utils/brush.ts +34 -0
- package/exporter/utils/cache.ts +37 -62
- package/exporter/utils/check-health.ts +79 -0
- package/exporter/utils/core-utils.ts +129 -248
- package/exporter/utils/domains.ts +10 -7
- package/exporter/{errors/index.ts → utils/errors.ts} +10 -9
- package/exporter/utils/folders.ts +187 -95
- package/exporter/utils/images.ts +1 -6
- package/exporter/utils/instance.ts +9 -12
- package/exporter/utils/loggin.ts +32 -91
- package/exporter/utils/pages.ts +23 -88
- package/exporter/utils/render.ts +149 -48
- package/exporter/utils/sites.ts +81 -90
- package/exporter/utils/store.ts +87 -180
- package/gatsby-browser.tsx +41 -58
- package/gatsby-config.ts +6 -12
- package/gatsby-node.ts +15 -77
- package/gatsby-ssr.tsx +2 -1
- package/package.json +36 -78
- package/plugins/gatsby-plugin-svgr-loader/gatsby-node.js +55 -0
- package/plugins/gatsby-plugin-svgr-loader/package.json +8 -0
- package/{exporter/react → react}/Favicon/index.tsx +1 -7
- package/{exporter/react → react}/GriddoIntegrations/index.tsx +6 -14
- package/{exporter/react → react}/GriddoIntegrations/utils.ts +4 -9
- package/{build/react/index.d.ts → react/index.tsx} +1 -0
- package/src/components/Head.tsx +13 -46
- package/src/components/template.tsx +8 -30
- package/src/gatsby-node-utils.ts +91 -2
- package/src/html.tsx +2 -11
- package/src/types.ts +5 -5
- package/tsconfig.json +5 -3
- package/build/adapters/gatsby/index.d.ts +0 -4
- package/build/adapters/gatsby/utils.d.ts +0 -22
- package/build/artifacts/index.d.ts +0 -6
- package/build/commands/end-render.d.ts +0 -2
- package/build/commands/move-assets.d.ts +0 -1
- package/build/commands/prepare-domains-render.d.ts +0 -1
- package/build/commands/reset-render.d.ts +0 -2
- package/build/commands/start-render.d.ts +0 -2
- package/build/commands/upload-search-content.d.ts +0 -2
- package/build/constants/endpoints.d.ts +0 -19
- package/build/constants/envs.d.ts +0 -37
- package/build/constants/index.d.ts +0 -57
- package/build/end-render.js +0 -74
- package/build/end-render.js.map +0 -7
- package/build/errors/errors-data.d.ts +0 -22
- package/build/errors/index.d.ts +0 -15
- package/build/index.d.ts +0 -29
- package/build/index.js +0 -73
- package/build/index.js.map +0 -7
- package/build/prepare-domains-render.js +0 -73
- package/build/prepare-domains-render.js.map +0 -7
- package/build/react/Favicon/index.d.ts +0 -5
- package/build/react/Favicon/utils.d.ts +0 -9
- package/build/react/GriddoIntegrations/index.d.ts +0 -20
- package/build/react/GriddoIntegrations/utils.d.ts +0 -26
- package/build/react/index.js +0 -3
- package/build/registers/api.d.ts +0 -9
- package/build/registers/gatsby.d.ts +0 -9
- package/build/registers/index.d.ts +0 -3
- package/build/reset-render.js +0 -74
- package/build/reset-render.js.map +0 -7
- package/build/services/auth.d.ts +0 -10
- package/build/services/domains.d.ts +0 -6
- package/build/services/navigation.d.ts +0 -50
- package/build/services/reference-fields.d.ts +0 -20
- package/build/services/register.d.ts +0 -36
- package/build/services/robots.d.ts +0 -19
- package/build/services/settings.d.ts +0 -4
- package/build/services/sites.d.ts +0 -29
- package/build/services/store.d.ts +0 -6
- package/build/start-render.js +0 -100
- package/build/start-render.js.map +0 -7
- package/build/types/api.d.ts +0 -142
- package/build/types/global.d.ts +0 -84
- package/build/types/navigation.d.ts +0 -28
- package/build/types/pages.d.ts +0 -144
- package/build/types/sites.d.ts +0 -57
- package/build/types/templates.d.ts +0 -8
- package/build/upload-search-content.js +0 -74
- package/build/upload-search-content.js.map +0 -7
- package/build/utils/alerts.d.ts +0 -3
- package/build/utils/api.d.ts +0 -23
- package/build/utils/cache.d.ts +0 -35
- package/build/utils/core-utils.d.ts +0 -107
- package/build/utils/create-build-data.d.ts +0 -8
- package/build/utils/domains.d.ts +0 -13
- package/build/utils/folders.d.ts +0 -53
- package/build/utils/health-checks.d.ts +0 -7
- package/build/utils/images.d.ts +0 -16
- package/build/utils/instance.d.ts +0 -21
- package/build/utils/loggin.d.ts +0 -51
- package/build/utils/pages.d.ts +0 -34
- package/build/utils/render.d.ts +0 -13
- package/build/utils/searches.d.ts +0 -15
- package/build/utils/sites.d.ts +0 -31
- package/build/utils/store.d.ts +0 -81
- package/cx.config.d.ts +0 -5
- package/cx.config.js +0 -36
- package/exporter/adapters/gatsby/utils.ts +0 -161
- package/exporter/artifacts/README.md +0 -34
- package/exporter/artifacts/index.ts +0 -33
- package/exporter/commands/move-assets.ts +0 -11
- package/exporter/constants/index.ts +0 -129
- package/exporter/index.ts +0 -82
- package/exporter/react/index.tsx +0 -11
- package/exporter/registers/api.ts +0 -14
- package/exporter/registers/gatsby.ts +0 -14
- package/exporter/registers/index.ts +0 -4
- package/exporter/services/domains.ts +0 -16
- package/exporter/services/register.ts +0 -113
- package/exporter/services/settings.ts +0 -17
- package/exporter/utils/alerts.ts +0 -29
- package/exporter/utils/create-build-data.ts +0 -17
- package/exporter/utils/health-checks.ts +0 -64
- package/exporter/utils/searches.ts +0 -156
- package/src/README.md +0 -7
- package/start-render.js +0 -7
- /package/{exporter/react → react}/Favicon/utils.ts +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BuildProcessData } from "../types/global";
|
|
1
|
+
import type { BuildProcessData, Settings } from "../types/global";
|
|
2
2
|
import type {
|
|
3
3
|
GriddoListPage,
|
|
4
4
|
GriddoMultiPage,
|
|
@@ -6,20 +6,24 @@ import type {
|
|
|
6
6
|
GriddoSinglePage,
|
|
7
7
|
PageAdditionalInfo,
|
|
8
8
|
} from "../types/pages";
|
|
9
|
+
import type { RenderMode } from "../types/render";
|
|
9
10
|
|
|
10
|
-
import
|
|
11
|
+
import fsp from "node:fs/promises";
|
|
11
12
|
import path from "node:path";
|
|
12
13
|
|
|
13
14
|
import pLimit from "p-limit";
|
|
14
15
|
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
import { SETTINGS } from "../constants/endpoints";
|
|
17
|
+
import {
|
|
18
|
+
GRIDDO_API_CONCURRENCY_COUNT,
|
|
19
|
+
GRIDDO_API_URL,
|
|
20
|
+
GRIDDO_PUBLIC_API_URL,
|
|
21
|
+
GRIDDO_REACT_APP_INSTANCE,
|
|
22
|
+
} from "../constants/envs";
|
|
23
|
+
import { get } from "../utils/api";
|
|
20
24
|
import { updatedSiteHash } from "../utils/cache";
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
25
|
+
import { removeAllSiteDirsFromStore } from "../utils/core-utils";
|
|
26
|
+
import { infoLog, listSitesLog } from "../utils/loggin";
|
|
23
27
|
import {
|
|
24
28
|
createGriddoListPages,
|
|
25
29
|
createGriddoMultiPages,
|
|
@@ -29,26 +33,38 @@ import {
|
|
|
29
33
|
} from "../utils/pages";
|
|
30
34
|
import { getSiteData, getSitesToRender, unpublishSites } from "../utils/sites";
|
|
31
35
|
import {
|
|
32
|
-
getMissingPublishedPagesInStore,
|
|
33
36
|
getZombiePagesInStore,
|
|
34
37
|
removeOrphanSites,
|
|
35
38
|
removeSitePagesFromStore,
|
|
36
39
|
saveRenderInfoInStore,
|
|
37
40
|
saveSitePagesInStore,
|
|
38
41
|
} from "../utils/store";
|
|
42
|
+
import { NavigationService } from "./navigation";
|
|
43
|
+
import { getReferenceFieldData } from "./reference-fields";
|
|
44
|
+
import { getPage } from "./sites";
|
|
39
45
|
|
|
40
|
-
const renderId =
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
46
|
+
const renderId = Date.now().toString();
|
|
47
|
+
|
|
48
|
+
function guessSiteNeedsToBeRenderedFromScratch() {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
44
51
|
|
|
45
52
|
/**
|
|
46
53
|
* Fetch, process and save object pages and sites data into the file system to
|
|
47
54
|
* be consumed by other services (Griddo itself, Adapters, etc.)
|
|
48
55
|
*/
|
|
49
|
-
async function createStore(
|
|
50
|
-
|
|
51
|
-
|
|
56
|
+
async function createStore(options: {
|
|
57
|
+
domain: string;
|
|
58
|
+
renderMode: RenderMode;
|
|
59
|
+
griddoVersion: string;
|
|
60
|
+
basePath: string;
|
|
61
|
+
}) {
|
|
62
|
+
console.info(`API calls with ${GRIDDO_API_CONCURRENCY_COUNT} threads`);
|
|
63
|
+
console.info(`API URL ${GRIDDO_API_URL as string}`);
|
|
64
|
+
|
|
65
|
+
const { renderMode, domain, griddoVersion, basePath } = options;
|
|
66
|
+
const renderFromScratch = renderMode === "FROM_SCRATCH";
|
|
67
|
+
const storeDir = path.join(basePath, "store");
|
|
52
68
|
|
|
53
69
|
try {
|
|
54
70
|
// Vars to save later in the report file
|
|
@@ -58,8 +74,7 @@ async function createStore(domain: string) {
|
|
|
58
74
|
// Get sites objects to publish and unpublish from this domain
|
|
59
75
|
const { sitesToPublish, sitesToUnpublish } = await getSitesToRender(domain);
|
|
60
76
|
|
|
61
|
-
const domainHasSites =
|
|
62
|
-
sitesToPublish.length > 0 || sitesToUnpublish.length > 0;
|
|
77
|
+
const domainHasSites = sitesToPublish.length > 0 || sitesToUnpublish.length > 0;
|
|
63
78
|
|
|
64
79
|
if (!domainHasSites) {
|
|
65
80
|
console.warn(`There are no sites to update in the domain ${domain}`);
|
|
@@ -69,20 +84,39 @@ async function createStore(domain: string) {
|
|
|
69
84
|
listSitesLog("Sites to unpublish:", sitesToUnpublish);
|
|
70
85
|
|
|
71
86
|
// Send unpublished sites to API.
|
|
72
|
-
// @todo ¿mover esta llamada al final del proceso de render?
|
|
73
|
-
// Aquí también se están eliminado físicamente los archivos json del
|
|
74
|
-
// store de los sites para despublicar.
|
|
75
87
|
await unpublishSites(sitesToUnpublish);
|
|
76
88
|
|
|
77
89
|
// Eliminamos posibles sites que estén en el store pero que no deberían
|
|
78
90
|
// porque han sido cambiados de dominio. Si han sido despublicados ya se
|
|
79
91
|
// despublican bien porque entran en `sitesToUnpublish`
|
|
80
|
-
removeOrphanSites(sitesToPublish, domain);
|
|
92
|
+
await removeOrphanSites(sitesToPublish, domain);
|
|
93
|
+
|
|
94
|
+
const allPagesToRemoveFromBuild: Array<number> = [];
|
|
95
|
+
// let numberOfFinalActivePages: Array<number> = [];
|
|
96
|
+
|
|
97
|
+
for (const site of sitesToUnpublish) {
|
|
98
|
+
const { pagesStatus } = site;
|
|
99
|
+
|
|
100
|
+
// Añadimos a allPagesToRemoveFromBuild todas las páginas de un site
|
|
101
|
+
// para despublicar.
|
|
102
|
+
allPagesToRemoveFromBuild.push(
|
|
103
|
+
...pagesStatus.active,
|
|
104
|
+
...pagesStatus.offlinePending,
|
|
105
|
+
...pagesStatus.uploadPending,
|
|
106
|
+
...pagesStatus.deleted,
|
|
107
|
+
...pagesStatus.offline,
|
|
108
|
+
);
|
|
109
|
+
}
|
|
81
110
|
|
|
82
|
-
// Solo los sites to publish...
|
|
83
111
|
for (const site of sitesToPublish) {
|
|
84
112
|
const { id: siteId, slug: siteSlug, theme, favicon, pagesStatus } = site;
|
|
85
113
|
const siteDirName = siteId.toString();
|
|
114
|
+
// numberOfFinalActivePages.push(
|
|
115
|
+
// ...pagesStatus.active,
|
|
116
|
+
// ...pagesStatus.uploadPending,
|
|
117
|
+
// );
|
|
118
|
+
|
|
119
|
+
allPagesToRemoveFromBuild.push(...pagesStatus.offlinePending, ...pagesStatus.deleted);
|
|
86
120
|
|
|
87
121
|
const {
|
|
88
122
|
siteInfo,
|
|
@@ -104,7 +138,7 @@ async function createStore(domain: string) {
|
|
|
104
138
|
avoidSelfReferenceCanonicals,
|
|
105
139
|
avoidHrefLangXDefault,
|
|
106
140
|
avoidDebugMetas,
|
|
107
|
-
} = await
|
|
141
|
+
} = await get<Settings>({ endpoint: SETTINGS });
|
|
108
142
|
|
|
109
143
|
buildProcessData[siteId] = {
|
|
110
144
|
siteHash,
|
|
@@ -118,7 +152,7 @@ async function createStore(domain: string) {
|
|
|
118
152
|
|
|
119
153
|
site.languages = siteLangs;
|
|
120
154
|
|
|
121
|
-
const shouldUpdateSite = updatedSiteHash(siteId, siteHash);
|
|
155
|
+
const shouldUpdateSite = await updatedSiteHash(siteId, siteHash);
|
|
122
156
|
|
|
123
157
|
const siteScript = siteInfo.siteScript;
|
|
124
158
|
|
|
@@ -129,9 +163,9 @@ async function createStore(domain: string) {
|
|
|
129
163
|
};
|
|
130
164
|
|
|
131
165
|
const additionalInfo = {
|
|
132
|
-
baseUrl:
|
|
133
|
-
publicBaseUrl:
|
|
134
|
-
instance:
|
|
166
|
+
baseUrl: GRIDDO_API_URL,
|
|
167
|
+
publicBaseUrl: GRIDDO_PUBLIC_API_URL,
|
|
168
|
+
instance: GRIDDO_REACT_APP_INSTANCE,
|
|
135
169
|
siteSlug,
|
|
136
170
|
theme,
|
|
137
171
|
siteMetadata,
|
|
@@ -151,10 +185,10 @@ async function createStore(domain: string) {
|
|
|
151
185
|
siteScript,
|
|
152
186
|
};
|
|
153
187
|
|
|
154
|
-
|
|
188
|
+
infoLog(`Getting pages from ${site.name} site`);
|
|
155
189
|
|
|
156
190
|
/// Creates the store directory for each site using the id
|
|
157
|
-
|
|
191
|
+
await fsp.mkdir(path.join(storeDir, siteDirName), {
|
|
158
192
|
recursive: true,
|
|
159
193
|
});
|
|
160
194
|
|
|
@@ -163,10 +197,7 @@ async function createStore(domain: string) {
|
|
|
163
197
|
// -------------------------------------------------------------------------
|
|
164
198
|
// Async function that process every page for one site to use later in the
|
|
165
199
|
// `Promise.all` with pLimit.
|
|
166
|
-
const fetchSitePageAndSaveInStore = async (
|
|
167
|
-
siteIdName: string,
|
|
168
|
-
pageId: number,
|
|
169
|
-
) => {
|
|
200
|
+
const fetchSitePageAndSaveInStore = async (siteIdName: string, pageId: number) => {
|
|
170
201
|
// Here will be store every page returned by the API and processed
|
|
171
202
|
let griddoPageObjects: Array<GriddoPageObject> = [];
|
|
172
203
|
|
|
@@ -185,9 +216,7 @@ async function createStore(domain: string) {
|
|
|
185
216
|
// SHAME: This new pageAdditionalInfo needs to be a copy because
|
|
186
217
|
// additionalInfo referenced from outside this function and
|
|
187
218
|
// its used by other pages.
|
|
188
|
-
const pageAdditionalInfo = JSON.parse(
|
|
189
|
-
JSON.stringify(additionalInfo),
|
|
190
|
-
) as PageAdditionalInfo;
|
|
219
|
+
const pageAdditionalInfo = JSON.parse(JSON.stringify(additionalInfo)) as PageAdditionalInfo;
|
|
191
220
|
|
|
192
221
|
// Updated with navigations (header & footer)
|
|
193
222
|
pageAdditionalInfo.navigations = NavService.getPageNavigations(page);
|
|
@@ -217,8 +246,7 @@ async function createStore(domain: string) {
|
|
|
217
246
|
// - Single: just one page
|
|
218
247
|
|
|
219
248
|
// Griddo page types
|
|
220
|
-
const isStaticListPage =
|
|
221
|
-
page?.mode === "list" || page?.mode === "paginated-data";
|
|
249
|
+
const isStaticListPage = page?.mode === "list" || page?.mode === "paginated-data";
|
|
222
250
|
const isMultiPage = !isStaticListPage && multiPageElements;
|
|
223
251
|
const isSinglePage = !isMultiPage && !isStaticListPage;
|
|
224
252
|
|
|
@@ -234,10 +262,12 @@ async function createStore(domain: string) {
|
|
|
234
262
|
} as GriddoListPage;
|
|
235
263
|
|
|
236
264
|
// pageObjects = await createGriddoListPages({ adapter: "Gatsby" })
|
|
237
|
-
griddoPageObjects = await createGriddoListPages(
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
265
|
+
griddoPageObjects = await createGriddoListPages(griddoListPage, pageAdditionalInfo);
|
|
266
|
+
|
|
267
|
+
// ¿Por qué la añadimos a las páginas para borrar?
|
|
268
|
+
// Porque este tipo de páginas no está manejada por API y se crean varias páginas con el mismo ID.
|
|
269
|
+
// Esto hace que no se pueda rastrear bien el render.
|
|
270
|
+
allPagesToRemoveFromBuild.push(page.id);
|
|
241
271
|
}
|
|
242
272
|
|
|
243
273
|
// >> Multi-page <<
|
|
@@ -249,10 +279,12 @@ async function createStore(domain: string) {
|
|
|
249
279
|
griddoMultipage.multiPageElements = multiPageElements;
|
|
250
280
|
griddoMultipage.defaultLang = defaultLang;
|
|
251
281
|
|
|
252
|
-
griddoPageObjects = await createGriddoMultiPages(
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
282
|
+
griddoPageObjects = await createGriddoMultiPages(griddoMultipage, pageAdditionalInfo);
|
|
283
|
+
|
|
284
|
+
// ¿Por qué la añadimos a las páginas para borrar?
|
|
285
|
+
// Porque este tipo de páginas no está manejada por API y se crean varias páginas con el mismo ID.
|
|
286
|
+
// Esto hace que no se pueda rastrear bien el render.
|
|
287
|
+
allPagesToRemoveFromBuild.push(page.id);
|
|
256
288
|
}
|
|
257
289
|
|
|
258
290
|
// >> Single template <<
|
|
@@ -263,9 +295,7 @@ async function createStore(domain: string) {
|
|
|
263
295
|
griddoSinglePage.template = template;
|
|
264
296
|
griddoSinglePage.defaultLang = defaultLang;
|
|
265
297
|
|
|
266
|
-
griddoPageObjects = [
|
|
267
|
-
await createGriddoSinglePage(griddoSinglePage, pageAdditionalInfo),
|
|
268
|
-
];
|
|
298
|
+
griddoPageObjects = [await createGriddoSinglePage(griddoSinglePage, pageAdditionalInfo)];
|
|
269
299
|
}
|
|
270
300
|
|
|
271
301
|
// Upload only the valid pages hashes or ids of pages that has
|
|
@@ -276,25 +306,26 @@ async function createStore(domain: string) {
|
|
|
276
306
|
}
|
|
277
307
|
|
|
278
308
|
// Save build data to store
|
|
279
|
-
saveSitePagesInStore(siteIdName, griddoPageObjects);
|
|
309
|
+
await saveSitePagesInStore(siteIdName, griddoPageObjects);
|
|
280
310
|
};
|
|
281
311
|
|
|
282
|
-
// Pages that needs to be fetched from the API and written to the
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
312
|
+
// Pages that needs to be fetched from the API and written to the store.
|
|
313
|
+
const pagesToFetchFromAPI = pagesStatus.uploadPending;
|
|
314
|
+
|
|
315
|
+
// Esto es necesario porque en la BBDD las páginas pueden estar
|
|
316
|
+
// marcadas como activas (online) pero si es una máquina nueva hace
|
|
317
|
+
// falta hacerlas de nuevo...
|
|
318
|
+
// const sitePendingOfPublishing = site.isPublished && site.shouldBeUpdated;
|
|
319
|
+
const sitePendingOfPublishing = guessSiteNeedsToBeRenderedFromScratch();
|
|
320
|
+
// @todo: necesito tener un sistema par publicar todo de un site (cuando un site esté pending to publish)
|
|
321
|
+
// algo como site.status = pending | published | unpublished...
|
|
322
|
+
if (renderFromScratch || sitePendingOfPublishing) {
|
|
323
|
+
pagesToFetchFromAPI.push(...pagesStatus.active);
|
|
324
|
+
}
|
|
294
325
|
|
|
295
326
|
// Create pages to the store. First requesting from API,
|
|
296
327
|
// transform, etc., and then writing them to disk.
|
|
297
|
-
const limit = pLimit(
|
|
328
|
+
const limit = pLimit(GRIDDO_API_CONCURRENCY_COUNT);
|
|
298
329
|
const pagesToStore = pagesToFetchFromAPI.map((id: number) =>
|
|
299
330
|
limit(() => fetchSitePageAndSaveInStore(siteDirName, id)),
|
|
300
331
|
);
|
|
@@ -302,13 +333,13 @@ async function createStore(domain: string) {
|
|
|
302
333
|
await Promise.all(pagesToStore);
|
|
303
334
|
|
|
304
335
|
// @ts-expect-error Mutate pagesStatus for reading pourposes.
|
|
305
|
-
pagesStatus.zombie = getZombiePagesInStore(siteDirName, [
|
|
336
|
+
pagesStatus.zombie = await getZombiePagesInStore(siteDirName, [
|
|
306
337
|
...pagesStatus.active,
|
|
307
338
|
...pagesStatus.uploadPending,
|
|
308
339
|
]);
|
|
309
340
|
|
|
310
341
|
// Delete pages from the store removing them from disk.
|
|
311
|
-
removeSitePagesFromStore(siteDirName, [
|
|
342
|
+
await removeSitePagesFromStore(siteDirName, [
|
|
312
343
|
pagesStatus.deleted,
|
|
313
344
|
pagesStatus.offline,
|
|
314
345
|
pagesStatus.offlinePending,
|
|
@@ -336,20 +367,31 @@ async function createStore(domain: string) {
|
|
|
336
367
|
|
|
337
368
|
if (domainHasSites) {
|
|
338
369
|
// ( 1 )
|
|
339
|
-
saveRenderInfoInStore(
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
370
|
+
await saveRenderInfoInStore(
|
|
371
|
+
{
|
|
372
|
+
buildProcessData,
|
|
373
|
+
createdPages,
|
|
374
|
+
sitesToPublish,
|
|
375
|
+
},
|
|
376
|
+
domain,
|
|
377
|
+
);
|
|
344
378
|
} else {
|
|
345
379
|
// ( 2 )
|
|
346
|
-
removeAllSiteDirsFromStore();
|
|
347
|
-
saveRenderInfoInStore(
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
380
|
+
await removeAllSiteDirsFromStore();
|
|
381
|
+
await saveRenderInfoInStore(
|
|
382
|
+
{
|
|
383
|
+
buildProcessData,
|
|
384
|
+
createdPages: [],
|
|
385
|
+
sitesToPublish: [],
|
|
386
|
+
},
|
|
387
|
+
domain,
|
|
388
|
+
);
|
|
352
389
|
}
|
|
390
|
+
|
|
391
|
+
return {
|
|
392
|
+
pagesToCreate: createdPages,
|
|
393
|
+
pagesToDelete: allPagesToRemoveFromBuild,
|
|
394
|
+
};
|
|
353
395
|
} catch (e) {
|
|
354
396
|
const error = e as { message: string };
|
|
355
397
|
console.error(error.message);
|
package/exporter/types/api.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import type { Core, Fields } from "@griddo/core";
|
|
1
2
|
import type { Domains, Robots, Settings } from "./global";
|
|
2
3
|
import type { APIPageObject } from "./pages";
|
|
3
4
|
import type { Site } from "./sites";
|
|
4
|
-
import type { Core, Fields } from "@griddo/core";
|
|
5
5
|
|
|
6
6
|
/** EndSiteRender Body */
|
|
7
7
|
export type EndSiteRenderBody = {
|
|
@@ -29,29 +29,28 @@ export interface ReferenceFieldBody {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
/** Describes the props of the body object for the get page */
|
|
32
|
-
//
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
32
|
+
// interface PageBody {
|
|
33
|
+
// /** The title of the page. */
|
|
34
|
+
// title?: string;
|
|
35
|
+
// /** The description of the page. */
|
|
36
|
+
// description?: string;
|
|
37
|
+
// /** The URL of the page's image. */
|
|
38
|
+
// image?: string;
|
|
39
|
+
// /** The ID of the page. */
|
|
40
|
+
// pageId?: number;
|
|
41
|
+
// /** The ID of the page's language. */
|
|
42
|
+
// languageId?: number;
|
|
43
|
+
// /** The ID of the page's site. */
|
|
44
|
+
// siteId?: number;
|
|
45
|
+
// /** The URL of the page. */
|
|
46
|
+
// url?: string;
|
|
47
|
+
// /** The template of the page. */
|
|
48
|
+
// template?: string | null | number;
|
|
49
|
+
// /** The content of the page. */
|
|
50
|
+
// content?: string;
|
|
51
|
+
// /** Additional properties. */
|
|
52
|
+
// [key: string]: unknown;
|
|
53
|
+
// }
|
|
55
54
|
|
|
56
55
|
/** Describes an item in a sitemap. */
|
|
57
56
|
interface SitemapItem {
|
|
@@ -120,10 +119,8 @@ export interface APIRequest {
|
|
|
120
119
|
attempt?: number;
|
|
121
120
|
/**
|
|
122
121
|
* Headers for the post api fetch
|
|
123
|
-
* @shame any
|
|
124
|
-
* @todo type this correctly from axios types
|
|
125
122
|
*/
|
|
126
|
-
headers?:
|
|
123
|
+
headers?: Record<string, unknown>;
|
|
127
124
|
/* Save results in apiCache folder */
|
|
128
125
|
useApiCacheDir?: boolean;
|
|
129
126
|
}
|
package/exporter/types/global.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { Core, Fields } from "@griddo/core";
|
|
1
2
|
import type { EndSiteRenderBody } from "./api";
|
|
2
3
|
import type { Site } from "./sites";
|
|
3
|
-
import type { Core, Fields } from "@griddo/core";
|
|
4
4
|
|
|
5
5
|
interface Settings {
|
|
6
6
|
apiVersion?: string;
|
|
@@ -70,9 +70,7 @@ interface RenderInfo {
|
|
|
70
70
|
sitesToPublish: Array<Site>;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
type
|
|
74
|
-
(...args: Array<unknown>) => unknown | Promise<unknown>
|
|
75
|
-
>;
|
|
73
|
+
type LifeCycleAction = (...args: Array<unknown>) => void | Promise<void>;
|
|
76
74
|
|
|
77
75
|
type LifeCyclesNames =
|
|
78
76
|
| "Init"
|
|
@@ -82,12 +80,11 @@ type LifeCyclesNames =
|
|
|
82
80
|
| "SSG"
|
|
83
81
|
| "Relocation"
|
|
84
82
|
| "Meta"
|
|
85
|
-
| "
|
|
83
|
+
| "Sync"
|
|
86
84
|
| "Clean"
|
|
87
85
|
| "Close"
|
|
88
86
|
| "HealthCheck"
|
|
89
|
-
| "Close"
|
|
90
|
-
| "__DEBUG__";
|
|
87
|
+
| "Close";
|
|
91
88
|
|
|
92
89
|
type PlaceholderPath =
|
|
93
90
|
| "__exports"
|
|
@@ -97,13 +94,12 @@ type PlaceholderPath =
|
|
|
97
94
|
| "__components"
|
|
98
95
|
| "__root"
|
|
99
96
|
| "__exports_dist"
|
|
100
|
-
| "
|
|
97
|
+
| "__sites";
|
|
101
98
|
|
|
102
99
|
interface CXConfig {
|
|
103
100
|
proDomain: string;
|
|
104
101
|
griddoVersion: string;
|
|
105
102
|
buildReportFileName: string;
|
|
106
|
-
paths: (domain?: string) => Record<PlaceholderPath, string>;
|
|
107
103
|
}
|
|
108
104
|
|
|
109
105
|
interface AIEmbeddingsResponse {
|
|
@@ -116,6 +112,7 @@ interface Artifacts {
|
|
|
116
112
|
cacheables: Array<string>;
|
|
117
113
|
initials: Array<string>;
|
|
118
114
|
archivables: Array<string>;
|
|
115
|
+
restaurable: Array<string>;
|
|
119
116
|
}
|
|
120
117
|
|
|
121
118
|
export type {
|
|
@@ -134,5 +131,5 @@ export type {
|
|
|
134
131
|
Robot,
|
|
135
132
|
Robots,
|
|
136
133
|
Settings,
|
|
137
|
-
|
|
134
|
+
LifeCycleAction,
|
|
138
135
|
};
|
package/exporter/types/pages.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import type { Core, Fields } from "@griddo/core";
|
|
1
2
|
import type { SocialsResponse } from "./api";
|
|
2
3
|
import type { Settings } from "./global";
|
|
3
4
|
import type { Site } from "./sites";
|
|
4
|
-
import type { Core, Fields } from "@griddo/core";
|
|
5
5
|
|
|
6
6
|
// TODO: In @griddo/core the type Core.Page has header/footer as React-Types,
|
|
7
7
|
// but API return `number | null`.
|
|
@@ -156,8 +156,7 @@ export interface Dimensions {
|
|
|
156
156
|
dimensionsSelect?: Array<string>;
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
export interface GatsbyPageTemplateProps
|
|
160
|
-
extends Omit<GriddoPageObject, "context"> {
|
|
159
|
+
export interface GatsbyPageTemplateProps extends Omit<GriddoPageObject, "context"> {
|
|
161
160
|
pageContext: GriddoPageObject["context"] & {
|
|
162
161
|
page: Core.Page;
|
|
163
162
|
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { RenderInfo } from "./global";
|
|
2
|
+
|
|
3
|
+
const RENDER_MODE = {
|
|
4
|
+
FROM_SCRATCH: "FROM_SCRATCH",
|
|
5
|
+
INCREMENTAL: "INCREMENTAL",
|
|
6
|
+
IDLE: "IDLE",
|
|
7
|
+
} as const;
|
|
8
|
+
|
|
9
|
+
type RenderMode = (typeof RENDER_MODE)[keyof typeof RENDER_MODE];
|
|
10
|
+
|
|
11
|
+
export interface RenderModeTuple {
|
|
12
|
+
renderMode: RenderMode;
|
|
13
|
+
reason?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
type DomainLike = string;
|
|
17
|
+
|
|
18
|
+
type RenderDB = {
|
|
19
|
+
proDomain: string;
|
|
20
|
+
griddoVersion: string;
|
|
21
|
+
buildReportFileName: string;
|
|
22
|
+
sortedDomains: Array<DomainLike>;
|
|
23
|
+
paths: {
|
|
24
|
+
root: string;
|
|
25
|
+
cx: string;
|
|
26
|
+
ssg: string;
|
|
27
|
+
cxCache: string;
|
|
28
|
+
components: string;
|
|
29
|
+
exportsDir: string;
|
|
30
|
+
};
|
|
31
|
+
domains: {
|
|
32
|
+
[key: DomainLike]: {
|
|
33
|
+
renderMode?: RenderMode;
|
|
34
|
+
shouldBeRendered?: boolean;
|
|
35
|
+
isRendering?: boolean;
|
|
36
|
+
renderInfo?: RenderInfo;
|
|
37
|
+
renderModeReason?: string;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
interface Report {
|
|
43
|
+
authControl:
|
|
44
|
+
| {
|
|
45
|
+
Authorization: string;
|
|
46
|
+
"Cache-Control": string;
|
|
47
|
+
lang?: string | undefined;
|
|
48
|
+
}
|
|
49
|
+
| undefined;
|
|
50
|
+
sites: Array<{
|
|
51
|
+
siteId: number;
|
|
52
|
+
publishHashes: Array<string>;
|
|
53
|
+
siteHash: string | null;
|
|
54
|
+
unpublishHashes: Array<string>;
|
|
55
|
+
publishPagesIds: Array<number>;
|
|
56
|
+
}>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { RENDER_MODE, type RenderDB, type RenderMode, type Report };
|
package/exporter/types/sites.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { Core } from "@griddo/core";
|
|
1
2
|
import type { SocialsResponse } from "./api";
|
|
2
3
|
import type { Footer, Header } from "./navigation";
|
|
3
|
-
import type { Core } from "@griddo/core";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Describes a Griddo site object from API.
|
|
@@ -43,7 +43,6 @@ export interface Site
|
|
|
43
43
|
*/
|
|
44
44
|
pages: Array<number>;
|
|
45
45
|
onlinePages: Array<number>;
|
|
46
|
-
changedPages: Array<number>;
|
|
47
46
|
published: string;
|
|
48
47
|
rendering: boolean;
|
|
49
48
|
renderingHours: number;
|