@griddo/cx 11.9.7 → 11.9.8-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/README.md +78 -193
  2. package/build/commands/end-render.js +31 -0
  3. package/build/commands/end-render.js.map +7 -0
  4. package/build/commands/prepare-assets-directory.js +9 -0
  5. package/build/commands/prepare-assets-directory.js.map +7 -0
  6. package/build/commands/prepare-domains-render.js +38 -0
  7. package/build/commands/prepare-domains-render.js.map +7 -0
  8. package/build/commands/reset-render.js +31 -0
  9. package/build/commands/reset-render.js.map +7 -0
  10. package/build/commands/start-embeddings.js +31 -0
  11. package/build/commands/start-embeddings.js.map +7 -0
  12. package/build/commands/start-render.js +66 -0
  13. package/build/commands/start-render.js.map +7 -0
  14. package/build/commands/upload-search-content.js +31 -0
  15. package/build/commands/upload-search-content.js.map +7 -0
  16. package/build/core/GriddoLog.d.ts +16 -0
  17. package/build/core/db.d.ts +4 -0
  18. package/build/core/dist-rollback.d.ts +2 -0
  19. package/build/{errors/index.d.ts → core/errors.d.ts} +5 -4
  20. package/build/core/fs.d.ts +69 -0
  21. package/build/core/logger.d.ts +18 -0
  22. package/build/index.d.ts +10 -29
  23. package/build/index.js +406 -73
  24. package/build/services/auth.d.ts +2 -5
  25. package/build/services/manage-store.d.ts +48 -0
  26. package/build/services/render.d.ts +70 -0
  27. package/build/shared/envs.d.ts +19 -0
  28. package/build/{errors/errors-data.d.ts → shared/errors.d.ts} +5 -3
  29. package/build/shared/npm-modules/brush.d.ts +18 -0
  30. package/build/shared/npm-modules/find-up-simple.d.ts +34 -0
  31. package/build/shared/npm-modules/pkg-dir.d.ts +7 -0
  32. package/build/{types → shared/types}/api.d.ts +18 -18
  33. package/build/{types → shared/types}/global.d.ts +15 -16
  34. package/build/{types → shared/types}/navigation.d.ts +5 -5
  35. package/build/{types → shared/types}/pages.d.ts +9 -9
  36. package/build/shared/types/render.d.ts +54 -0
  37. package/build/{types → shared/types}/sites.d.ts +18 -19
  38. package/cli.mjs +239 -0
  39. package/exporter/build-esbuild.noop +42 -0
  40. package/exporter/build.sh +17 -28
  41. package/exporter/commands/README.md +151 -0
  42. package/exporter/commands/end-render.ts +65 -86
  43. package/exporter/commands/prepare-assets-directory.ts +34 -0
  44. package/exporter/commands/prepare-domains-render.ts +143 -35
  45. package/exporter/commands/reset-render.ts +12 -7
  46. package/exporter/commands/single-domain-upload-search-content.noop +206 -0
  47. package/exporter/commands/start-embeddings.ts +29 -0
  48. package/exporter/commands/start-render.ts +26 -64
  49. package/exporter/commands/upload-search-content.ts +201 -26
  50. package/exporter/core/GriddoLog.ts +45 -0
  51. package/exporter/core/check-env-health.ts +200 -0
  52. package/exporter/core/db-class.ts +54 -0
  53. package/exporter/core/db.ts +33 -0
  54. package/exporter/core/dist-rollback.ts +40 -0
  55. package/exporter/core/errors.ts +82 -0
  56. package/exporter/core/fs.ts +385 -0
  57. package/exporter/{utils → core}/images.ts +1 -6
  58. package/exporter/{utils → core}/instance.ts +9 -13
  59. package/exporter/core/life-cycle.ts +73 -0
  60. package/exporter/core/logger.ts +141 -0
  61. package/exporter/core/objects.ts +37 -0
  62. package/exporter/core/print-logos.ts +21 -0
  63. package/exporter/index.ts +14 -56
  64. package/exporter/services/api.ts +306 -0
  65. package/exporter/services/auth.ts +8 -10
  66. package/exporter/services/domains.ts +23 -8
  67. package/exporter/services/manage-sites.ts +116 -0
  68. package/exporter/services/manage-store.ts +235 -0
  69. package/exporter/services/navigation.ts +12 -18
  70. package/exporter/{utils → services}/pages.ts +27 -92
  71. package/exporter/services/reference-fields.ts +14 -32
  72. package/exporter/services/render-artifacts.ts +44 -0
  73. package/exporter/services/render.ts +229 -0
  74. package/exporter/services/robots.ts +33 -61
  75. package/exporter/services/sitemaps.ts +129 -0
  76. package/exporter/services/sites.ts +40 -28
  77. package/exporter/services/store.ts +386 -319
  78. package/exporter/shared/context.ts +49 -0
  79. package/exporter/{constants → shared}/endpoints.ts +12 -11
  80. package/exporter/shared/envs.ts +62 -0
  81. package/exporter/{errors/errors-data.ts → shared/errors.ts} +24 -14
  82. package/exporter/shared/npm-modules/README.md +36 -0
  83. package/exporter/shared/npm-modules/brush.ts +34 -0
  84. package/exporter/shared/npm-modules/find-up-simple.ts +100 -0
  85. package/exporter/shared/npm-modules/pkg-dir.ts +17 -0
  86. package/exporter/shared/npm-modules/xml-parser.ts +57 -0
  87. package/exporter/{types → shared/types}/api.ts +40 -41
  88. package/exporter/{types → shared/types}/global.ts +17 -21
  89. package/exporter/{types → shared/types}/navigation.ts +3 -3
  90. package/exporter/{types → shared/types}/pages.ts +10 -11
  91. package/exporter/shared/types/render.ts +63 -0
  92. package/exporter/{types → shared/types}/sites.ts +18 -19
  93. package/exporter/ssg-adapters/gatsby/actions/clean.ts +26 -0
  94. package/exporter/ssg-adapters/gatsby/actions/close.ts +17 -0
  95. package/exporter/ssg-adapters/gatsby/actions/data.ts +22 -0
  96. package/exporter/ssg-adapters/gatsby/actions/healthCheck.ts +10 -0
  97. package/exporter/ssg-adapters/gatsby/actions/init.ts +12 -0
  98. package/exporter/ssg-adapters/gatsby/actions/logs.ts +10 -0
  99. package/exporter/ssg-adapters/gatsby/actions/meta.ts +13 -0
  100. package/exporter/ssg-adapters/gatsby/actions/prepare.ts +9 -0
  101. package/exporter/ssg-adapters/gatsby/actions/relocation.ts +15 -0
  102. package/exporter/ssg-adapters/gatsby/actions/restore.ts +21 -0
  103. package/exporter/ssg-adapters/gatsby/actions/ssg.ts +12 -0
  104. package/exporter/ssg-adapters/gatsby/actions/sync.ts +65 -0
  105. package/exporter/ssg-adapters/gatsby/index.ts +114 -0
  106. package/exporter/ssg-adapters/gatsby/shared/artifacts.ts +16 -0
  107. package/exporter/ssg-adapters/gatsby/shared/diff-assets.ts +128 -0
  108. package/exporter/ssg-adapters/gatsby/shared/extract-assets.ts +75 -0
  109. package/exporter/ssg-adapters/gatsby/shared/gatsby-build.ts +58 -0
  110. package/exporter/ssg-adapters/gatsby/shared/sync-render.ts +300 -0
  111. package/exporter/ssg-adapters/gatsby/shared/types.ts +35 -0
  112. package/exporter/ssg-adapters/gatsby/shared/utils.ts +33 -0
  113. package/gatsby-browser.tsx +41 -58
  114. package/gatsby-config.ts +10 -17
  115. package/gatsby-node.ts +20 -80
  116. package/gatsby-ssr.tsx +2 -1
  117. package/package.json +41 -92
  118. package/plugins/gatsby-plugin-svgr-loader/gatsby-node.js +55 -0
  119. package/plugins/gatsby-plugin-svgr-loader/package.json +8 -0
  120. package/react/DynamicScript/index.tsx +33 -0
  121. package/{exporter/react/Favicon → react/GriddoFavicon}/index.tsx +3 -9
  122. package/{exporter/react → react}/GriddoIntegrations/index.tsx +17 -23
  123. package/{exporter/react → react}/GriddoIntegrations/utils.ts +24 -12
  124. package/react/GriddoOpenGraph/index.tsx +39 -0
  125. package/src/components/Head.tsx +30 -73
  126. package/src/components/template.tsx +8 -30
  127. package/src/gatsby-node-utils.ts +76 -2
  128. package/src/html.tsx +2 -11
  129. package/src/types.ts +5 -5
  130. package/tsconfig.commands.json +36 -0
  131. package/tsconfig.exporter.json +20 -0
  132. package/tsconfig.json +5 -3
  133. package/build/adapters/gatsby/index.d.ts +0 -4
  134. package/build/adapters/gatsby/utils.d.ts +0 -22
  135. package/build/artifacts/index.d.ts +0 -6
  136. package/build/commands/end-render.d.ts +0 -2
  137. package/build/commands/move-assets.d.ts +0 -1
  138. package/build/commands/prepare-domains-render.d.ts +0 -1
  139. package/build/commands/reset-render.d.ts +0 -2
  140. package/build/commands/start-render.d.ts +0 -2
  141. package/build/commands/upload-search-content.d.ts +0 -2
  142. package/build/constants/envs.d.ts +0 -37
  143. package/build/constants/index.d.ts +0 -57
  144. package/build/end-render.js +0 -74
  145. package/build/end-render.js.map +0 -7
  146. package/build/index.js.map +0 -7
  147. package/build/prepare-domains-render.js +0 -73
  148. package/build/prepare-domains-render.js.map +0 -7
  149. package/build/react/Favicon/index.d.ts +0 -5
  150. package/build/react/Favicon/utils.d.ts +0 -9
  151. package/build/react/GriddoIntegrations/index.d.ts +0 -20
  152. package/build/react/GriddoIntegrations/utils.d.ts +0 -26
  153. package/build/react/index.d.ts +0 -3
  154. package/build/react/index.js +0 -3
  155. package/build/registers/api.d.ts +0 -9
  156. package/build/registers/gatsby.d.ts +0 -9
  157. package/build/registers/index.d.ts +0 -3
  158. package/build/reset-render.js +0 -74
  159. package/build/reset-render.js.map +0 -7
  160. package/build/services/domains.d.ts +0 -6
  161. package/build/services/navigation.d.ts +0 -50
  162. package/build/services/reference-fields.d.ts +0 -20
  163. package/build/services/register.d.ts +0 -36
  164. package/build/services/robots.d.ts +0 -19
  165. package/build/services/settings.d.ts +0 -4
  166. package/build/services/sites.d.ts +0 -29
  167. package/build/services/store.d.ts +0 -6
  168. package/build/start-render.js +0 -100
  169. package/build/start-render.js.map +0 -7
  170. package/build/types/templates.d.ts +0 -8
  171. package/build/upload-search-content.js +0 -74
  172. package/build/upload-search-content.js.map +0 -7
  173. package/build/utils/alerts.d.ts +0 -3
  174. package/build/utils/api.d.ts +0 -23
  175. package/build/utils/cache.d.ts +0 -35
  176. package/build/utils/core-utils.d.ts +0 -107
  177. package/build/utils/create-build-data.d.ts +0 -8
  178. package/build/utils/domains.d.ts +0 -13
  179. package/build/utils/folders.d.ts +0 -53
  180. package/build/utils/health-checks.d.ts +0 -7
  181. package/build/utils/images.d.ts +0 -16
  182. package/build/utils/loggin.d.ts +0 -51
  183. package/build/utils/pages.d.ts +0 -34
  184. package/build/utils/render.d.ts +0 -13
  185. package/build/utils/searches.d.ts +0 -15
  186. package/build/utils/sites.d.ts +0 -31
  187. package/build/utils/store.d.ts +0 -81
  188. package/cx.config.d.ts +0 -5
  189. package/cx.config.js +0 -36
  190. package/exporter/adapters/gatsby/index.ts +0 -162
  191. package/exporter/adapters/gatsby/utils.ts +0 -161
  192. package/exporter/artifacts/README.md +0 -34
  193. package/exporter/artifacts/index.ts +0 -33
  194. package/exporter/commands/move-assets.ts +0 -11
  195. package/exporter/constants/envs.ts +0 -94
  196. package/exporter/constants/index.ts +0 -129
  197. package/exporter/errors/index.ts +0 -40
  198. package/exporter/react/index.tsx +0 -11
  199. package/exporter/registers/api.ts +0 -14
  200. package/exporter/registers/gatsby.ts +0 -14
  201. package/exporter/registers/index.ts +0 -4
  202. package/exporter/services/register.ts +0 -113
  203. package/exporter/services/settings.ts +0 -17
  204. package/exporter/utils/alerts.ts +0 -29
  205. package/exporter/utils/api.ts +0 -243
  206. package/exporter/utils/cache.ts +0 -142
  207. package/exporter/utils/core-utils.ts +0 -458
  208. package/exporter/utils/create-build-data.ts +0 -17
  209. package/exporter/utils/domains.ts +0 -39
  210. package/exporter/utils/folders.ts +0 -320
  211. package/exporter/utils/health-checks.ts +0 -64
  212. package/exporter/utils/loggin.ts +0 -184
  213. package/exporter/utils/render.ts +0 -71
  214. package/exporter/utils/searches.ts +0 -156
  215. package/exporter/utils/sites.ts +0 -312
  216. package/exporter/utils/store.ts +0 -314
  217. package/src/README.md +0 -7
  218. package/start-render.js +0 -7
  219. /package/build/{utils → core}/instance.d.ts +0 -0
  220. /package/build/{constants → shared}/endpoints.d.ts +0 -0
  221. /package/exporter/{types → shared/types}/templates.ts +0 -0
  222. /package/{exporter/react/Favicon → react/GriddoFavicon}/utils.ts +0 -0
@@ -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;
@@ -55,24 +55,22 @@ type Domain = {
55
55
  url: string;
56
56
  };
57
57
 
58
- type Domains = Array<Domain>;
58
+ type Domains = Domain[];
59
59
 
60
60
  /** Describes the type of build process data object. */
61
61
  type BuildProcessData = Record<string, EndSiteRenderBody>;
62
62
 
63
63
  type Robot = { path: string; content: string };
64
64
 
65
- type Robots = Array<Robot>;
65
+ type Robots = Robot[];
66
66
 
67
67
  interface RenderInfo {
68
68
  buildProcessData: BuildProcessData;
69
- createdPages: Array<number>;
70
- sitesToPublish: Array<Site>;
69
+ createdPages: number[];
70
+ sitesToPublish: Site[];
71
71
  }
72
72
 
73
- type LifeCycleSteps = Array<
74
- (...args: Array<unknown>) => unknown | Promise<unknown>
75
- >;
73
+ type LifeCycleAction = (...args: 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
- | "Archive"
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,11 @@ type PlaceholderPath =
97
94
  | "__components"
98
95
  | "__root"
99
96
  | "__exports_dist"
100
- | "__cx_dist";
97
+ | "__sites";
101
98
 
102
99
  interface CXConfig {
103
- proDomain: string;
104
100
  griddoVersion: string;
105
101
  buildReportFileName: string;
106
- paths: (domain?: string) => Record<PlaceholderPath, string>;
107
102
  }
108
103
 
109
104
  interface AIEmbeddingsResponse {
@@ -111,16 +106,17 @@ interface AIEmbeddingsResponse {
111
106
  message: string;
112
107
  }
113
108
 
114
- interface Artifacts {
115
- disposables: Array<string>;
116
- cacheables: Array<string>;
117
- initials: Array<string>;
118
- archivables: Array<string>;
109
+ interface RenderArtifacts {
110
+ disposables: string[];
111
+ cacheables: string[];
112
+ initials: string[];
113
+ archivables: string[];
114
+ restaurable: string[];
119
115
  }
120
116
 
121
117
  export type {
122
118
  AIEmbeddingsResponse,
123
- Artifacts,
119
+ RenderArtifacts,
124
120
  BuildProcessData,
125
121
  CXConfig,
126
122
  Domain,
@@ -134,5 +130,5 @@ export type {
134
130
  Robot,
135
131
  Robots,
136
132
  Settings,
137
- LifeCycleSteps,
133
+ LifeCycleAction,
138
134
  };
@@ -4,7 +4,7 @@ export type Header = {
4
4
  id: number;
5
5
  isDefault: boolean;
6
6
  language: number;
7
- navigationLanguages: Array<{ navigationId: number }>;
7
+ navigationLanguages: { navigationId: number }[];
8
8
  setAsDefault: boolean;
9
9
  theme: null | string;
10
10
  title: string;
@@ -17,9 +17,9 @@ export type Footer = {
17
17
  id: number;
18
18
  isDefault: boolean;
19
19
  language: number;
20
- navigationLanguages: Array<{ navigationId: number }>;
20
+ navigationLanguages: { navigationId: number }[];
21
21
  setAsDefault: boolean;
22
22
  theme: null | string;
23
23
  title: string;
24
- type: "header";
24
+ type: "footer";
25
25
  };
@@ -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`.
@@ -35,7 +35,7 @@ export type GriddoSinglePage = Core.Page & {
35
35
 
36
36
  export type GriddoListPage = Core.Page & {
37
37
  page: APIPageObject;
38
- pages: Array<Array<Fields.QueriedDataItem>>;
38
+ pages: Fields.QueriedDataItem[][];
39
39
  isRoot?: boolean;
40
40
  defaultLang?: Core.SiteLanguage;
41
41
  template: {
@@ -45,7 +45,7 @@ export type GriddoListPage = Core.Page & {
45
45
  activeSectionSlug: string;
46
46
  activeSectionBase: string;
47
47
  };
48
- totalQueriedItems: Array<Fields.QueriedDataItem>;
48
+ totalQueriedItems: Fields.QueriedDataItem[];
49
49
  };
50
50
 
51
51
  export type GriddoMultiPage = Core.Page & {
@@ -62,7 +62,7 @@ export interface AdditionalInfo {
62
62
  griddoVersion: string;
63
63
  instance?: string;
64
64
  publicBaseUrl: string;
65
- siteLangs: Array<Core.SiteLanguage>;
65
+ siteLangs: Core.SiteLanguage[];
66
66
  siteMetadata: Site["siteMetadata"];
67
67
  siteSlug: string;
68
68
  socials: SocialsResponse;
@@ -90,14 +90,14 @@ export interface PageAdditionalInfo extends AdditionalInfo {
90
90
  export type MultiPageElement = {
91
91
  component: string;
92
92
  title: string | Required<Fields.Heading>;
93
- elements: Array<Record<string, unknown>>;
94
- componentModules: Array<Record<string, unknown>>;
93
+ elements: Record<string, unknown>[];
94
+ componentModules: Record<string, unknown>[];
95
95
  sectionSlug: string;
96
96
  metaTitle: string;
97
97
  metaDescription: string;
98
98
  };
99
99
 
100
- export type MultiPageElements = Array<MultiPageElement>;
100
+ export type MultiPageElements = MultiPageElement[];
101
101
 
102
102
  /**
103
103
  * Gatsby page object format.
@@ -140,7 +140,7 @@ export type GriddoPageObject = {
140
140
  siteMetadata: Site["siteMetadata"];
141
141
  theme: string;
142
142
  title: string;
143
- siteLangs: Array<Core.SiteLanguage>;
143
+ siteLangs: Core.SiteLanguage[];
144
144
  siteOptions: AdditionalInfo["siteOptions"];
145
145
  siteScript: string;
146
146
  socials: SocialsResponse;
@@ -153,11 +153,10 @@ export interface Dimensions {
153
153
  values: Record<string, string> | null;
154
154
  contentSelect?: "group" | "individual" | null;
155
155
  groupSelect?: string;
156
- dimensionsSelect?: Array<string>;
156
+ dimensionsSelect?: 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,63 @@
1
+ import type { RenderInfo } from "./global";
2
+
3
+ const RENDER_MODE = {
4
+ FROM_SCRATCH: "FROM_SCRATCH",
5
+ INCREMENTAL: "INCREMENTAL",
6
+ IDLE: "IDLE",
7
+ ERROR: "ERROR",
8
+ COMPLETED: "COMPLETED",
9
+ } as const;
10
+
11
+ type RenderMode = (typeof RENDER_MODE)[keyof typeof RENDER_MODE];
12
+
13
+ export interface RenderModeTuple {
14
+ renderMode: RenderMode;
15
+ reason?: string;
16
+ }
17
+
18
+ type DomainLike = string;
19
+
20
+ type RenderDB = {
21
+ griddoVersion: string;
22
+ buildReportFileName: string;
23
+ sortedDomains: DomainLike[];
24
+ needsRollbackOnError: boolean;
25
+ currentRenderingDomain: string | null;
26
+ paths: {
27
+ root: string;
28
+ cx: string;
29
+ ssg: string;
30
+ cxCache: string;
31
+ components: string;
32
+ exportsDir: string;
33
+ exportsDirBackup: string;
34
+ };
35
+ domains: {
36
+ [key: DomainLike]: {
37
+ renderMode?: RenderMode;
38
+ shouldBeRendered?: boolean;
39
+ isRendering?: boolean;
40
+ renderInfo?: RenderInfo;
41
+ renderModeReason?: string;
42
+ };
43
+ };
44
+ };
45
+
46
+ interface Report {
47
+ authControl:
48
+ | {
49
+ Authorization: string;
50
+ "Cache-Control": string;
51
+ lang?: string | undefined;
52
+ }
53
+ | undefined;
54
+ sites: {
55
+ siteId: number;
56
+ publishHashes: string[];
57
+ siteHash: string | null;
58
+ unpublishHashes: string[];
59
+ publishPagesIds: number[];
60
+ }[];
61
+ }
62
+
63
+ export { RENDER_MODE, type RenderDB, type RenderMode, type Report };
@@ -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.
@@ -28,12 +28,12 @@ export interface Site
28
28
  > {
29
29
  author: string;
30
30
  deleted: number;
31
- domains: Array<Record<string, string>>;
32
- footers: Array<Footer>;
31
+ domains: Record<string, string>[];
32
+ footers: Footer[];
33
33
  hash: string | null;
34
- headers: Array<Header>;
35
- languages: Array<Core.SiteLanguage>; // in Core is Array<number>
36
- languageSites: Array<number>;
34
+ headers: Header[];
35
+ languages: Core.SiteLanguage[]; // in Core is number[]
36
+ languageSites: number[];
37
37
  navigationModules: { header?: string; footer?: string } | null;
38
38
  /**
39
39
  * Array of all pages (from day 0): published, unpublished and deleted
@@ -41,9 +41,8 @@ export interface Site
41
41
  * `select/site/33/pages` -> [{id,label}, {id,label}, {id,label}] // array of published, pending, unpublished... page objects
42
42
  * `select/site/33/pages?liveStatus=active` -> // array of publishedpage objects
43
43
  */
44
- pages: Array<number>;
45
- onlinePages: Array<number>;
46
- changedPages: Array<number>;
44
+ pages: number[];
45
+ onlinePages: number[];
47
46
  published: string;
48
47
  rendering: boolean;
49
48
  renderingHours: number;
@@ -52,23 +51,23 @@ export interface Site
52
51
  smallAvatar: string;
53
52
  updated: boolean;
54
53
  pagesStatus: {
55
- active: Array<number>;
56
- uploadPending: Array<number>;
57
- offlinePending: Array<number>;
58
- offline: Array<number>;
59
- deleted: Array<number>;
54
+ active: number[];
55
+ uploadPending: number[];
56
+ offlinePending: number[];
57
+ offline: number[];
58
+ deleted: number[];
60
59
  };
61
60
  }
62
61
 
63
62
  export interface SiteData {
64
63
  siteInfo: Site;
65
- validPagesIds: Array<number>;
64
+ validPagesIds: number[];
66
65
  siteHash: string | null;
67
- unpublishHashes: Array<string>;
68
- siteLangs: Array<Core.SiteLanguage>;
66
+ unpublishHashes: string[];
67
+ siteLangs: Core.SiteLanguage[];
69
68
  defaultLang: Core.SiteLanguage | undefined;
70
- headers: Array<Header>;
71
- footers: Array<Footer>;
69
+ headers: Header[];
70
+ footers: Footer[];
72
71
  socials: SocialsResponse;
73
72
  }
74
73
 
@@ -0,0 +1,26 @@
1
+ import type { RenderContext } from "../../../shared/context";
2
+ import type { SSG } from "../shared/types";
3
+
4
+ import fsp from "node:fs/promises";
5
+ import path from "node:path";
6
+
7
+ import { rmDirs } from "../../../core/fs";
8
+ import { RENDER_MODE } from "../../../shared/types/render";
9
+
10
+ export async function cleanAction(context: RenderContext<SSG>) {
11
+ const {
12
+ renderArtifacts,
13
+ ssg: { ssgArtifacts },
14
+ pathsHydratedWithDomain: { __cache, __exports },
15
+ renderMode,
16
+ } = context;
17
+
18
+ if (renderMode === RENDER_MODE.FROM_SCRATCH) {
19
+ await fsp.rm(path.join(__cache, ".cache"), { recursive: true, force: true });
20
+ await fsp.rm(path.join(__exports, "dist"), { recursive: true, force: true });
21
+ await fsp.rm(path.join(__exports, "assets"), { recursive: true, force: true });
22
+ }
23
+
24
+ await rmDirs(renderArtifacts.disposables);
25
+ await rmDirs(ssgArtifacts.disposables);
26
+ }
@@ -0,0 +1,17 @@
1
+ import type { RenderContext } from "../../../shared/context";
2
+ import type { SSG } from "../shared/types";
3
+
4
+ import { rmDirs } from "../../../core/fs";
5
+ import { updateCommitFile } from "../../../services/render";
6
+
7
+ export async function closeAction(context: RenderContext<SSG>) {
8
+ const {
9
+ renderArtifacts,
10
+ ssg: { ssgArtifacts },
11
+ pathsHydratedWithDomain: { __cache },
12
+ } = context;
13
+
14
+ await rmDirs(renderArtifacts.disposables);
15
+ await rmDirs(ssgArtifacts.disposables);
16
+ await updateCommitFile({ basePath: __cache });
17
+ }
@@ -0,0 +1,22 @@
1
+ import type { RenderContext } from "../../../shared/context";
2
+
3
+ import { createStore } from "../../../services/store";
4
+
5
+ export async function dataAction(context: RenderContext) {
6
+ const {
7
+ domain,
8
+ renderMode,
9
+ renderMetadata: { griddoVersion },
10
+ pathsHydratedWithDomain: { __root },
11
+ } = context;
12
+
13
+ const { pagesToCreate, pagesToDelete } = await createStore({
14
+ domain,
15
+ renderMode,
16
+ griddoVersion,
17
+ basePath: __root,
18
+ });
19
+
20
+ context.pagesToCreate = pagesToCreate;
21
+ context.pagesToDelete = pagesToDelete;
22
+ }
@@ -0,0 +1,10 @@
1
+ import type { RenderContext } from "../../../shared/context";
2
+
3
+ import { assertRenderIsValid, markRenderAsCompleted } from "../../../services/render";
4
+
5
+ export async function healthCheckAction(context: RenderContext) {
6
+ const { domain } = context;
7
+
8
+ await assertRenderIsValid(domain);
9
+ await markRenderAsCompleted(domain);
10
+ }
@@ -0,0 +1,12 @@
1
+ import type { RenderContext } from "../../../shared/context";
2
+
3
+ import { markRenderAsStarted } from "../../../services/render";
4
+
5
+ export async function initAction(context: RenderContext) {
6
+ const {
7
+ domain,
8
+ pathsHydratedWithDomain: { __root },
9
+ } = context;
10
+
11
+ await markRenderAsStarted({ basePath: __root, domain });
12
+ }
@@ -0,0 +1,10 @@
1
+ import type { RenderContext } from "../../../shared/context";
2
+ import type { SSG } from "../shared/types";
3
+
4
+ import { saveDetailRenderLog } from "../../../core/logger";
5
+
6
+ export async function logsAction(context: RenderContext<SSG>) {
7
+ const { domain } = context;
8
+
9
+ await saveDetailRenderLog(domain);
10
+ }
@@ -0,0 +1,13 @@
1
+ import type { RenderContext } from "../../../shared/context";
2
+
3
+ import { generateBuildReport } from "../../../services/render";
4
+ import { generateRobots } from "../../../services/robots";
5
+ import { generateSitemaps } from "../../../services/sitemaps";
6
+
7
+ export async function metaAction(context: RenderContext) {
8
+ const { domain } = context;
9
+
10
+ await generateBuildReport(domain);
11
+ await generateSitemaps(domain);
12
+ await generateRobots(domain);
13
+ }
@@ -0,0 +1,9 @@
1
+ import type { RenderContext } from "../../../shared/context";
2
+
3
+ import { mkDirs } from "../../../core/fs";
4
+
5
+ export async function prepareAction(context: RenderContext) {
6
+ const { renderArtifacts } = context;
7
+
8
+ await mkDirs(renderArtifacts.initials);
9
+ }
@@ -0,0 +1,15 @@
1
+ import type { RenderContext } from "../../../shared/context";
2
+
3
+ import fsp from "node:fs/promises";
4
+ import path from "node:path";
5
+
6
+ export async function relocationAction(context: RenderContext) {
7
+ const {
8
+ pathsHydratedWithDomain: { __root, __ssg },
9
+ } = context;
10
+
11
+ const src = path.join(__ssg, "public");
12
+ const dst = path.join(__root, "current-dist");
13
+
14
+ await fsp.rename(src, dst);
15
+ }
@@ -0,0 +1,21 @@
1
+ import type { RenderContext } from "../../../shared/context";
2
+ import type { SSG } from "../shared/types";
3
+
4
+ import { cpDirs, mvDirs } from "../../../core/fs";
5
+ import { RENDER_MODE } from "../../../shared/types/render";
6
+
7
+ export async function restoreAction(context: RenderContext<SSG>) {
8
+ const {
9
+ renderMode,
10
+ ssg: { ssgArtifacts },
11
+ renderArtifacts,
12
+ pathsHydratedWithDomain: { __components, __root, __cache, __ssg },
13
+ } = context;
14
+
15
+ await cpDirs(__components, __ssg, ["static"]);
16
+
17
+ if (renderMode === RENDER_MODE.INCREMENTAL) {
18
+ await mvDirs(__cache, __ssg, ssgArtifacts.cacheables);
19
+ await mvDirs(__cache, __root, renderArtifacts.cacheables);
20
+ }
21
+ }
@@ -0,0 +1,12 @@
1
+ import type { RenderContext } from "../../../shared/context";
2
+ import type { SSG } from "../shared/types";
3
+
4
+ import { gatsbyBuild } from "../shared/gatsby-build";
5
+
6
+ export async function ssgAction(context: RenderContext<SSG>) {
7
+ const {
8
+ ssg: { assetPrefix },
9
+ } = context;
10
+
11
+ await gatsbyBuild(assetPrefix);
12
+ }
@@ -0,0 +1,65 @@
1
+ import type { RenderContext } from "../../../shared/context";
2
+ import type { SSG } from "../shared/types";
3
+
4
+ import fsp from "node:fs/promises";
5
+ import path from "node:path";
6
+
7
+ import { deleteDisposableSiteDirs, deleteEmptyDirectories, mvDirs } from "../../../core/fs";
8
+ import { RENDER_MODE } from "../../../shared/types/render";
9
+ import { extractAssetsFromDist } from "../shared/extract-assets";
10
+ import { SyncRender } from "../shared/sync-render";
11
+
12
+ export async function syncAction(context: RenderContext<SSG>) {
13
+ const {
14
+ renderMode,
15
+ renderArtifacts,
16
+ domain,
17
+ pagesToCreate,
18
+ pagesToDelete,
19
+ pathsHydratedWithDomain: { __root, __ssg, __cache, __exports },
20
+ ssg: { ssgArtifacts, assetPrefix },
21
+ } = context;
22
+
23
+ const needsAssetPrefix = !!assetPrefix && assetPrefix !== "";
24
+ const currentDist = path.join(__root, "current-dist");
25
+ const previousDist = path.join(__exports, "dist");
26
+
27
+ // caching...
28
+ await mvDirs(__root, __cache, renderArtifacts.cacheables, { override: true });
29
+ await mvDirs(__ssg, __cache, ssgArtifacts.cacheables, { override: true });
30
+
31
+ if (renderMode === RENDER_MODE.FROM_SCRATCH) {
32
+ await deleteDisposableSiteDirs(currentDist);
33
+ // Es render nuevo, así que el current-dist generado por gatsby hay que renombrarlo a dist
34
+ // porque muchas de las acciones posteriores asumen ese nombre en ese path...
35
+ // TODO: Cambiar eso y atomizar más las acciones.
36
+ await fsp.rm(previousDist, { force: true, recursive: true });
37
+ await fsp.rename(currentDist, previousDist);
38
+ }
39
+
40
+ if (renderMode === RENDER_MODE.INCREMENTAL) {
41
+ await deleteDisposableSiteDirs(previousDist);
42
+
43
+ const syncRender = new SyncRender({
44
+ src: currentDist,
45
+ dst: previousDist,
46
+ pagesToCreate,
47
+ pagesToDelete,
48
+ artifactsToCopyToExports: ["build-report.json"],
49
+ });
50
+
51
+ await syncRender.execute();
52
+ // después syncRender.execute() currentDist (que lo hizo gatsby) ya no es necesario
53
+ // esta todo en __exports/dist
54
+ await fsp.rm(currentDist, { force: true, recursive: true });
55
+ await deleteEmptyDirectories(path.join(__exports, "dist"));
56
+ }
57
+
58
+ if (needsAssetPrefix) {
59
+ // TODO: Mejorar performance
60
+ await extractAssetsFromDist(domain);
61
+ }
62
+
63
+ // rsync assets
64
+ await mvDirs(__root, __exports, renderArtifacts.archivables, { override: true });
65
+ }