@griddo/cx 10.6.4 → 10.6.6

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 (87) hide show
  1. package/README.md +0 -2
  2. package/build/adapters/gatsby/index.d.ts +1 -1
  3. package/build/artifacts/cx.d.ts +6 -0
  4. package/build/artifacts/gatsby.d.ts +6 -0
  5. package/build/artifacts/index.d.ts +15 -0
  6. package/build/build-complete.js +74 -34
  7. package/build/constants/endpoints.d.ts +18 -0
  8. package/build/constants/envs.d.ts +33 -0
  9. package/build/constants/index.d.ts +53 -0
  10. package/build/index.d.ts +4 -3
  11. package/build/index.js +90 -49
  12. package/build/reset-render.js +74 -34
  13. package/build/run-start-render.js +90 -49
  14. package/build/services/navigation.d.ts +0 -27
  15. package/build/services/robots.d.ts +2 -21
  16. package/build/services/settings.d.ts +3 -22
  17. package/build/services/sites.d.ts +20 -37
  18. package/build/start-render.js +90 -49
  19. package/build/types/global.d.ts +10 -14
  20. package/build/upload-search-content.js +70 -30
  21. package/build/utils/core-utils.d.ts +18 -60
  22. package/build/utils/domains.d.ts +5 -1
  23. package/build/utils/folders.d.ts +38 -13
  24. package/build/utils/loggin.d.ts +49 -0
  25. package/build/utils/render.d.ts +11 -0
  26. package/build/utils/store.d.ts +0 -1
  27. package/cx.config.d.ts +0 -15
  28. package/cx.config.js +3 -16
  29. package/exporter/adapters/gatsby/index.ts +94 -253
  30. package/exporter/adapters/gatsby/utils.ts +11 -10
  31. package/exporter/artifacts/README.md +28 -0
  32. package/exporter/artifacts/cx.ts +26 -0
  33. package/exporter/artifacts/gatsby.ts +28 -0
  34. package/exporter/artifacts/index.ts +30 -0
  35. package/exporter/browser/index.ts +4 -4
  36. package/exporter/constants/endpoints.ts +42 -0
  37. package/exporter/constants/envs.ts +86 -0
  38. package/exporter/constants/index.ts +120 -0
  39. package/exporter/errors/index.ts +2 -2
  40. package/exporter/index.ts +11 -10
  41. package/exporter/react/GriddoIntegrations/index.tsx +3 -3
  42. package/exporter/{build-complete.ts → scripts/build-complete.ts} +4 -4
  43. package/exporter/{reset-render.ts → scripts/reset-render.ts} +3 -3
  44. package/exporter/scripts/start-render.ts +26 -0
  45. package/exporter/{upload-search-content.ts → scripts/upload-search-content.ts} +3 -3
  46. package/exporter/services/auth.ts +7 -5
  47. package/exporter/services/distributors.ts +12 -18
  48. package/exporter/services/domains.ts +2 -12
  49. package/exporter/services/navigation.ts +10 -35
  50. package/exporter/services/robots.ts +35 -58
  51. package/exporter/services/settings.ts +7 -44
  52. package/exporter/services/sites.ts +101 -160
  53. package/exporter/services/store.ts +24 -29
  54. package/exporter/types/api.ts +1 -2
  55. package/exporter/types/global.ts +14 -22
  56. package/exporter/types/pages.ts +0 -9
  57. package/exporter/types/sites.ts +0 -3
  58. package/exporter/utils/api.ts +11 -10
  59. package/exporter/utils/core-utils.ts +66 -181
  60. package/exporter/utils/domains.ts +21 -3
  61. package/exporter/utils/folders.ts +163 -50
  62. package/exporter/utils/health-checks.ts +4 -4
  63. package/exporter/utils/instance.ts +3 -3
  64. package/exporter/utils/integrations.ts +12 -12
  65. package/exporter/utils/loggin.ts +159 -0
  66. package/exporter/utils/pages.ts +15 -15
  67. package/exporter/utils/render.ts +49 -0
  68. package/exporter/utils/searches.ts +5 -5
  69. package/exporter/utils/sites.ts +42 -48
  70. package/exporter/utils/store.ts +9 -10
  71. package/gatsby-browser.tsx +46 -48
  72. package/gatsby-config.ts +5 -5
  73. package/gatsby-node.ts +7 -7
  74. package/package.json +23 -28
  75. package/src/components/Head.tsx +1 -1
  76. package/src/gatsby-node-utils.ts +1 -1
  77. package/src/types.ts +0 -1
  78. package/src/utils.ts +1 -1
  79. package/exporter/start-render.ts +0 -18
  80. /package/build/{build-complete.d.ts → scripts/build-complete.d.ts} +0 -0
  81. /package/build/{move-assets.d.ts → scripts/move-assets.d.ts} +0 -0
  82. /package/build/{reset-render.d.ts → scripts/reset-render.d.ts} +0 -0
  83. /package/build/{run-start-render.d.ts → scripts/run-start-render.d.ts} +0 -0
  84. /package/build/{start-render.d.ts → scripts/start-render.d.ts} +0 -0
  85. /package/build/{upload-search-content.d.ts → scripts/upload-search-content.d.ts} +0 -0
  86. /package/exporter/{move-assets.ts → scripts/move-assets.ts} +0 -0
  87. /package/exporter/{run-start-render.ts → scripts/run-start-render.ts} +0 -0
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Here are all the environment variables that the CX code uses.
3
+ */
4
+
5
+ import dotenv from "dotenv";
6
+
7
+ import { isTruthy } from "../utils/core-utils";
8
+
9
+ dotenv.config();
10
+
11
+ //
12
+ // Credentials
13
+ //
14
+ /* prettier-ignore */ const GRIDDO_API_URL = process.env.GRIDDO_API_URL || process.env.API_URL;
15
+ /* prettier-ignore */ const GRIDDO_PUBLIC_API_URL = process.env.GRIDDO_PUBLIC_API_URL || process.env.PUBLIC_API_URL;
16
+ /* prettier-ignore */ const GRIDDO_BOT_USER = process.env.botEmail;
17
+ /* prettier-ignore */ const GRIDDO_BOT_PASSWORD = process.env.botPassword;
18
+
19
+ //
20
+ // Rendering
21
+ //
22
+ /* prettier-ignore */ const GRIDDO_API_CONCURRENCY_COUNT = Number.parseInt( process.env.GRIDDO_API_CONCURRENCY_COUNT || "10");
23
+ /* prettier-ignore */ const GRIDDO_RENDER_ALL_SITES = isTruthy(process.env.GRIDDO_RENDER_ALL_SITES || process.env.updateAllSites);
24
+ /* prettier-ignore */ const GRIDDO_RENDER_SITE = Number.parseInt(process.env.GRIDDO_RENDER_SITE || "")
25
+ /* prettier-ignore */ const GRIDDO_RENDER_PAGES = (process.env.GRIDDO_RENDER_PAGES || "").split(",").map((item) => Number.parseInt(item)).filter(Boolean);
26
+ /* prettier-ignore */ const GRIDDO_SKIP_BUILD_CHECKS = isTruthy(process.env.GRIDDO_SKIP_BUILD_CHECKS)
27
+ /* prettier-ignore */ const GRIDDO_DEBUG_LOGS = isTruthy(process.env.GRIDDO_DEBUG_LOGS);
28
+ /* prettier-ignore */ const GRIDDO_BUILD_LOGS = isTruthy(process.env.GRIDDO_BUILD_LOGS);
29
+ /* prettier-ignore */ const GRIDDO_RENDER_BREAKPOINTS_FEATURE = isTruthy(process.env.GRIDDO_RENDER_BREAKPOINTS_FEATURE);
30
+ /* prettier-ignore */ const GRIDDO_SSG_VERBOSE_LOGS = isTruthy(process.env.GRIDDO_SSG_VERBOSE_LOGS)
31
+ /* prettier-ignore */ const GRIDDO_SEARCH_FEATURE = isTruthy(process.env.GRIDGRIDDO_SEARCH_FEATURE_FEATURE);
32
+ /* prettier-ignore */ const GRIDDO_ASSET_PREFIX = process.env.GRIDDO_ASSET_PREFIX || process.env.ASSET_PREFIX;
33
+ /* prettier-ignore */ const GRIDDO_REACT_APP_INSTANCE = process.env.GRIDDO_REACT_APP_INSTANCE || process.env.REACT_APP_INSTANCE;
34
+ /* prettier-ignore */ const GRIDDO_AI_EMBEDDINGS = isTruthy(process.env.GRIDDO_AI_EMBEDDINGS);
35
+ /* prettier-ignore */ const GRIDDO_VERBOSE_LOGS = isTruthy(process.env.GRIDDO_VERBOSE_LOGS);
36
+
37
+ //
38
+ // LifeCycle
39
+ //
40
+ /* prettier-ignore */ const GRIDDO_CLEAN_LIFECYCLE_MAX_ATTEMPTS = Number.parseInt(process.env.GRIDDO_CLEAN_LIFECYCLE_MAX_ATTEMPTS || "1");
41
+ /* prettier-ignore */ const GRIDDO_CLOSE_LIFECYCLE_MAX_ATTEMPTS = Number.parseInt(process.env.GRIDDO_CLOSE_LIFECYCLE_MAX_ATTEMPTS || "1");
42
+ /* prettier-ignore */ const GRIDDO_PREPARE_LIFECYCLE_MAX_ATTEMPTS = Number.parseInt(process.env.GRIDDO_PREPARE_LIFECYCLE_MAX_ATTEMPTS || "1");
43
+ /* prettier-ignore */ const GRIDDO_RESTORE_LIFECYCLE_MAX_ATTEMPTS = Number.parseInt(process.env.GRIDDO_RESTORE_LIFECYCLE_MAX_ATTEMPTS || "1");
44
+ /* prettier-ignore */ const GRIDDO_DATA_LIFECYCLE_MAX_ATTEMPTS = Number.parseInt(process.env.GRIDDO_DATA_LIFECYCLE_MAX_ATTEMPTS || "1");
45
+ /* prettier-ignore */ const GRIDDO_SSG_LIFECYCLE_MAX_ATTEMPTS = Number.parseInt(process.env.GRIDDO_SSG_LIFECYCLE_MAX_ATTEMPTS || "2");
46
+ /* prettier-ignore */ const GRIDDO_RELOCATION_LIFECYCLE_MAX_ATTEMPTS = Number.parseInt(process.env.GRIDDO_RELOCATION_LIFECYCLE_MAX_ATTEMPTS || "1");
47
+ /* prettier-ignore */ const GRIDDO_META_LIFECYCLE_MAX_ATTEMPTS = Number.parseInt(process.env.GRIDDO_META_LIFECYCLE_MAX_ATTEMPTS || "4");
48
+ /* prettier-ignore */ const GRIDDO_ARCHIVE_LIFECYCLE_MAX_ATTEMPTS = Number.parseInt(process.env.GRIDDO_ARCHIVE_LIFECYCLE_MAX_ATTEMPTS || "1");
49
+
50
+ //
51
+ // Testing
52
+ //
53
+ /* prettier-ignore */ const GRIDDO_FIXTURES_DOMAIN_NAMES = process.env.GRIDDO_CX_FIXTURES_DOMAIN_NAMES;
54
+ /* prettier-ignore */ const GRIDDO_FIXTURES_SITE_NAMES = process.env.GRIDDO_CX_FIXTURES_SITE_NAMES;
55
+
56
+ export {
57
+ GRIDDO_AI_EMBEDDINGS,
58
+ GRIDDO_API_CONCURRENCY_COUNT,
59
+ GRIDDO_API_URL,
60
+ GRIDDO_ARCHIVE_LIFECYCLE_MAX_ATTEMPTS,
61
+ GRIDDO_ASSET_PREFIX,
62
+ GRIDDO_BOT_PASSWORD,
63
+ GRIDDO_BOT_USER,
64
+ GRIDDO_BUILD_LOGS,
65
+ GRIDDO_CLEAN_LIFECYCLE_MAX_ATTEMPTS,
66
+ GRIDDO_CLOSE_LIFECYCLE_MAX_ATTEMPTS,
67
+ GRIDDO_DATA_LIFECYCLE_MAX_ATTEMPTS,
68
+ GRIDDO_DEBUG_LOGS,
69
+ GRIDDO_FIXTURES_DOMAIN_NAMES,
70
+ GRIDDO_FIXTURES_SITE_NAMES,
71
+ GRIDDO_META_LIFECYCLE_MAX_ATTEMPTS,
72
+ GRIDDO_PREPARE_LIFECYCLE_MAX_ATTEMPTS,
73
+ GRIDDO_PUBLIC_API_URL,
74
+ GRIDDO_REACT_APP_INSTANCE,
75
+ GRIDDO_RELOCATION_LIFECYCLE_MAX_ATTEMPTS,
76
+ GRIDDO_RENDER_ALL_SITES,
77
+ GRIDDO_RENDER_BREAKPOINTS_FEATURE,
78
+ GRIDDO_RENDER_PAGES,
79
+ GRIDDO_RENDER_SITE,
80
+ GRIDDO_RESTORE_LIFECYCLE_MAX_ATTEMPTS,
81
+ GRIDDO_SEARCH_FEATURE,
82
+ GRIDDO_SKIP_BUILD_CHECKS,
83
+ GRIDDO_SSG_LIFECYCLE_MAX_ATTEMPTS,
84
+ GRIDDO_SSG_VERBOSE_LOGS,
85
+ GRIDDO_VERBOSE_LOGS,
86
+ };
@@ -0,0 +1,120 @@
1
+ import type { LifeCyclesNames } from "../types/global";
2
+
3
+ import {
4
+ AI_EMBEDDINGS,
5
+ BUILD_END,
6
+ BUILD_START,
7
+ DOMAINS,
8
+ GET_ALL,
9
+ GET_PAGE,
10
+ GET_PAGES,
11
+ GET_REFERENCE_FIELD_DATA,
12
+ GET_SITEMAP,
13
+ INFO,
14
+ LANGUAGES,
15
+ LOGIN,
16
+ RESET_RENDER,
17
+ ROBOTS,
18
+ SEARCH,
19
+ SETTINGS,
20
+ SOCIALS,
21
+ } from "./endpoints";
22
+ import {
23
+ GRIDDO_AI_EMBEDDINGS,
24
+ GRIDDO_API_CONCURRENCY_COUNT,
25
+ GRIDDO_API_URL,
26
+ GRIDDO_ARCHIVE_LIFECYCLE_MAX_ATTEMPTS,
27
+ GRIDDO_ASSET_PREFIX,
28
+ GRIDDO_BOT_PASSWORD,
29
+ GRIDDO_BOT_USER,
30
+ GRIDDO_BUILD_LOGS,
31
+ GRIDDO_CLEAN_LIFECYCLE_MAX_ATTEMPTS,
32
+ GRIDDO_CLOSE_LIFECYCLE_MAX_ATTEMPTS,
33
+ GRIDDO_DATA_LIFECYCLE_MAX_ATTEMPTS,
34
+ GRIDDO_DEBUG_LOGS,
35
+ GRIDDO_FIXTURES_DOMAIN_NAMES,
36
+ GRIDDO_FIXTURES_SITE_NAMES,
37
+ GRIDDO_META_LIFECYCLE_MAX_ATTEMPTS,
38
+ GRIDDO_PREPARE_LIFECYCLE_MAX_ATTEMPTS,
39
+ GRIDDO_PUBLIC_API_URL,
40
+ GRIDDO_REACT_APP_INSTANCE,
41
+ GRIDDO_RELOCATION_LIFECYCLE_MAX_ATTEMPTS,
42
+ GRIDDO_RENDER_ALL_SITES,
43
+ GRIDDO_RENDER_BREAKPOINTS_FEATURE,
44
+ GRIDDO_RENDER_PAGES,
45
+ GRIDDO_RENDER_SITE,
46
+ GRIDDO_RESTORE_LIFECYCLE_MAX_ATTEMPTS,
47
+ GRIDDO_SEARCH_FEATURE,
48
+ GRIDDO_SKIP_BUILD_CHECKS,
49
+ GRIDDO_SSG_LIFECYCLE_MAX_ATTEMPTS,
50
+ GRIDDO_SSG_VERBOSE_LOGS,
51
+ GRIDDO_VERBOSE_LOGS,
52
+ } from "./envs";
53
+
54
+ const endpoints = {
55
+ AI_EMBEDDINGS,
56
+ BUILD_END,
57
+ BUILD_START,
58
+ DOMAINS,
59
+ GET_ALL,
60
+ GET_PAGE,
61
+ GET_PAGES,
62
+ GET_REFERENCE_FIELD_DATA,
63
+ GET_SITEMAP,
64
+ INFO,
65
+ LANGUAGES,
66
+ LOGIN,
67
+ RESET_RENDER,
68
+ ROBOTS,
69
+ SEARCH,
70
+ SETTINGS,
71
+ SOCIALS,
72
+ };
73
+
74
+ const envs = {
75
+ GRIDDO_AI_EMBEDDINGS,
76
+ GRIDDO_API_CONCURRENCY_COUNT,
77
+ GRIDDO_API_URL,
78
+ GRIDDO_ARCHIVE_LIFECYCLE_MAX_ATTEMPTS,
79
+ GRIDDO_ASSET_PREFIX,
80
+ GRIDDO_BOT_PASSWORD,
81
+ GRIDDO_BOT_USER,
82
+ GRIDDO_BUILD_LOGS,
83
+ GRIDDO_CLEAN_LIFECYCLE_MAX_ATTEMPTS,
84
+ GRIDDO_CLOSE_LIFECYCLE_MAX_ATTEMPTS,
85
+ GRIDDO_DATA_LIFECYCLE_MAX_ATTEMPTS,
86
+ GRIDDO_DEBUG_LOGS,
87
+ GRIDDO_FIXTURES_DOMAIN_NAMES,
88
+ GRIDDO_FIXTURES_SITE_NAMES,
89
+ GRIDDO_META_LIFECYCLE_MAX_ATTEMPTS,
90
+ GRIDDO_PREPARE_LIFECYCLE_MAX_ATTEMPTS,
91
+ GRIDDO_PUBLIC_API_URL,
92
+ GRIDDO_REACT_APP_INSTANCE,
93
+ GRIDDO_RELOCATION_LIFECYCLE_MAX_ATTEMPTS,
94
+ GRIDDO_RENDER_ALL_SITES,
95
+ GRIDDO_RENDER_BREAKPOINTS_FEATURE,
96
+ GRIDDO_RENDER_PAGES,
97
+ GRIDDO_RENDER_SITE,
98
+ GRIDDO_RESTORE_LIFECYCLE_MAX_ATTEMPTS,
99
+ GRIDDO_SEARCH_FEATURE,
100
+ GRIDDO_SKIP_BUILD_CHECKS,
101
+ GRIDDO_SSG_LIFECYCLE_MAX_ATTEMPTS,
102
+ GRIDDO_SSG_VERBOSE_LOGS,
103
+ GRIDDO_VERBOSE_LOGS,
104
+ };
105
+
106
+ const lifeCycleNames: Record<LifeCyclesNames, LifeCyclesNames> = {
107
+ HealthCheck: "HealthCheck",
108
+ __DEBUG__: "__DEBUG__",
109
+ Clean: "Clean",
110
+ Close: "Close",
111
+ Prepare: "Prepare",
112
+ Restore: "Restore",
113
+ Data: "Data",
114
+ SSG: "SSG",
115
+ Relocation: "Relocation",
116
+ Meta: "Meta",
117
+ Archive: "Archive",
118
+ } as const;
119
+
120
+ export { endpoints, envs, lifeCycleNames };
@@ -1,6 +1,6 @@
1
1
  import type { ErrorsType } from "./errors-data";
2
2
 
3
- import { logBox } from "../utils/core-utils";
3
+ import { boxLog } from "../utils/loggin";
4
4
 
5
5
  export type ErrorData = {
6
6
  id: number;
@@ -24,7 +24,7 @@ class RenderError extends Error {
24
24
  function throwError({ error, message, expected = "", hint = "" }: ErrorData) {
25
25
  const errorMessage = [message, expected, hint].filter(Boolean).join("\n");
26
26
 
27
- logBox(errorMessage, error, 1, 0);
27
+ boxLog(errorMessage, error, 1, 0);
28
28
  throw new RenderError();
29
29
  }
30
30
 
package/exporter/index.ts CHANGED
@@ -23,30 +23,31 @@
23
23
  /* prettier-ignore */ import type { AdditionalInfo, Dimensions, GriddoListPage, GriddoMultiPage, GriddoPageObject, GriddoSinglePage } from "./types/pages";
24
24
  /* prettier-ignore */ import type { Site } from "./types/sites";
25
25
 
26
- /* prettier-ignore */ import { startRender } from "./start-render";
27
- /* prettier-ignore */ import { getConfig, logInfo, logPageSize, verbose, walk } from "./utils/core-utils";
26
+ /* prettier-ignore */ import { startRender } from "./scripts/start-render";
27
+ /* prettier-ignore */ import { getConfig, walk } from "./utils/core-utils";
28
28
  /* prettier-ignore */ import { IS_COMPONENT_LIBRARY, PROJECT_ALIASES, resolveComponentsPath } from "./utils/instance";
29
+ /* prettier-ignore */ import { infoLog, pageSizeLog, verboseLog } from "./utils/loggin";
29
30
  /* prettier-ignore */ import { getBuildPagesFromCachedStore, getBuildPagesFromStore, getBuildPagesPath } from "./utils/store";
30
31
 
31
32
  export {
32
33
  AdditionalInfo,
33
34
  Dimensions,
35
+ getBuildPagesFromCachedStore,
36
+ getBuildPagesFromStore,
37
+ getBuildPagesPath,
38
+ getConfig,
34
39
  GriddoListPage,
35
40
  GriddoMultiPage,
36
41
  GriddoPageObject,
37
42
  GriddoSinglePage,
43
+ infoLog,
38
44
  IS_COMPONENT_LIBRARY,
45
+ pageSizeLog,
39
46
  PROJECT_ALIASES,
47
+ resolveComponentsPath,
40
48
  Site,
41
49
  SocialsResponse,
42
- getBuildPagesFromCachedStore,
43
- getBuildPagesFromStore,
44
- getBuildPagesPath,
45
- getConfig,
46
- logInfo,
47
- logPageSize,
48
- resolveComponentsPath,
49
50
  startRender,
50
- verbose,
51
+ verboseLog,
51
52
  walk,
52
53
  };
@@ -63,8 +63,8 @@ function GriddoIntegrations(props: GriddoIntegrationsProps) {
63
63
  siteScript,
64
64
  dimensions,
65
65
  pageInfo,
66
- generateAutomaticDimensions
67
- )
66
+ generateAutomaticDimensions,
67
+ )
68
68
  : { analyticsDimensions: null, analyticsScript: null };
69
69
 
70
70
  const analyticsScriptSrc =
@@ -86,7 +86,7 @@ function GriddoIntegrations(props: GriddoIntegrationsProps) {
86
86
  // AX?
87
87
  const fixedAnalyticsCode = Array.isArray(analyticsCodeSnippet)
88
88
  ? analyticsCodeSnippet.find((item) => item.type === "script") ||
89
- emptyCodeScript
89
+ emptyCodeScript
90
90
  : analyticsCodeSnippet;
91
91
 
92
92
  const {
@@ -3,8 +3,8 @@ import path from "node:path";
3
3
 
4
4
  import pkgDir from "pkg-dir";
5
5
 
6
- import { AuthService } from "./services/auth";
7
- import { SitesService } from "./services/sites";
6
+ import { AuthService } from "../services/auth";
7
+ import { endSiteRender } from "../services/sites";
8
8
 
9
9
  // Where we are going to find export dirs
10
10
  const execBasePath = pkgDir.sync(path.resolve(__dirname, "../.."))!;
@@ -41,7 +41,7 @@ export async function buildComplete(report: Report) {
41
41
 
42
42
  console.info(`Deploying ending call to site ${siteId}:`);
43
43
 
44
- await SitesService.endSiteRender(siteId, body);
44
+ await endSiteRender(siteId, body);
45
45
  }
46
46
 
47
47
  console.info(`Build end's signal sent for ${report.sites.length} site(s)`);
@@ -64,7 +64,7 @@ function getBuildReports(domains: Array<string>) {
64
64
  exportArchiveBasePath,
65
65
  domain,
66
66
  "dist",
67
- "__build-report__.json"
67
+ "__build-report__.json",
68
68
  );
69
69
 
70
70
  if (!fs.existsSync(buildReportFile)) {
@@ -1,9 +1,9 @@
1
- import { AuthService } from "./services/auth";
2
- import { SettingsService } from "./services/settings";
1
+ import { AuthService } from "../services/auth";
2
+ import { resetRender } from "../services/settings";
3
3
 
4
4
  async function main() {
5
5
  await AuthService.login();
6
- await SettingsService.resetRender();
6
+ await resetRender();
7
7
  }
8
8
 
9
9
  main().catch((err) => {
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ /* eslint-disable node/shebang */
3
+
4
+ import { runGatsbyAdapter } from "../adapters";
5
+ import { measureExecutionTime } from "../utils/core-utils";
6
+ import { getInstanceDomainsOrThrow } from "../utils/domains";
7
+ import { boxLog } from "../utils/loggin";
8
+
9
+ async function startRender() {
10
+ try {
11
+ const domains = await getInstanceDomainsOrThrow();
12
+ const exeTime = await measureExecutionTime([
13
+ () => runGatsbyAdapter(domains),
14
+ ]);
15
+
16
+ boxLog(`All domains rendered in ${exeTime}s.`, "", 1, 0);
17
+
18
+ process.exit(0);
19
+ } catch (error) {
20
+ console.log(error);
21
+
22
+ process.exit(1);
23
+ }
24
+ }
25
+
26
+ export { startRender };
@@ -2,12 +2,12 @@ import fs from "node:fs";
2
2
 
3
3
  import dotenv from "dotenv";
4
4
 
5
- import { getConfig, isTruthy } from "./utils/core-utils";
6
- import { getInstanceDomains } from "./utils/domains";
5
+ import { getConfig, isTruthy } from "../utils/core-utils";
6
+ import { getInstanceDomains } from "../utils/domains";
7
7
  import {
8
8
  startAIEmbeddings,
9
9
  uploadRenderedSearchContentToAPI,
10
- } from "./utils/searches";
10
+ } from "../utils/searches";
11
11
 
12
12
  dotenv.config();
13
13
 
@@ -1,6 +1,8 @@
1
1
  import axios from "axios";
2
2
  import chalk from "chalk";
3
3
 
4
+ import { endpoints, envs } from "../constants";
5
+
4
6
  /**
5
7
  * Service for authentication in the Griddo Private API
6
8
  */
@@ -13,15 +15,15 @@ class AuthService {
13
15
  | undefined;
14
16
 
15
17
  constructor() {
16
- this.user = process.env.botEmail;
17
- this.password = process.env.botPassword;
18
- this.baseUrl = process.env.API_URL;
18
+ this.user = envs.GRIDDO_BOT_USER;
19
+ this.password = envs.GRIDDO_BOT_PASSWORD;
20
+ this.baseUrl = envs.GRIDDO_API_URL;
19
21
  }
20
22
 
21
23
  async login() {
22
24
  try {
23
25
  const response = await axios({
24
- url: `${this.baseUrl}/login_check`,
26
+ url: endpoints.LOGIN,
25
27
  method: "POST",
26
28
  headers: {
27
29
  "Content-Type": "application/json",
@@ -50,7 +52,7 @@ class AuthService {
50
52
  │ Access credentials failure │
51
53
  │ Check that the login details are correct in your .env file │
52
54
  ╰────────────────────────────────────────────────────────────╯
53
- `)
55
+ `),
54
56
  );
55
57
 
56
58
  process.exit(1);
@@ -6,8 +6,8 @@ import type {
6
6
  Reference,
7
7
  } from "@griddo/core/dist/types/api-response-fields";
8
8
 
9
- import { SitesService } from "./sites";
10
- import { logBox } from "../utils/core-utils";
9
+ import { getDistributorData } from "./sites";
10
+ import { boxLog } from "../utils/loggin";
11
11
 
12
12
  /**
13
13
  * Service to work with distributors.
@@ -60,7 +60,7 @@ class DistributorService {
60
60
  }
61
61
 
62
62
  console.log(
63
- `Error: Distribuidor mode: ${mode} is not recognized on page ${page?.id}.`
63
+ `Error: Distribuidor mode: ${mode} is not recognized on page ${page?.id}.`,
64
64
  );
65
65
 
66
66
  return data;
@@ -84,9 +84,9 @@ class DistributorService {
84
84
 
85
85
  // Distrubutor with `hasDistributorDat: true` but without `data` prop
86
86
  if (!data) {
87
- logBox(
87
+ boxLog(
88
88
  `Error: Page ${page.id} has \`hasDistributorData: true\` but it doesn't have a \`data\` prop`,
89
- "No data in ReferenceField"
89
+ "No data in ReferenceField",
90
90
  );
91
91
 
92
92
  return [];
@@ -94,9 +94,9 @@ class DistributorService {
94
94
 
95
95
  // Avoid fetch distributors with empty `data.sources`
96
96
  if (Array.isArray(data.sources) && data.sources.length < 1) {
97
- logBox(
97
+ boxLog(
98
98
  `Warning: Page with id: ${page.id} has a ReferenceField with empty \`data.sources\``,
99
- "Empty data.sources in ReferenceField"
99
+ "Empty data.sources in ReferenceField",
100
100
  );
101
101
 
102
102
  return [];
@@ -106,21 +106,15 @@ class DistributorService {
106
106
 
107
107
  // Infor that the distributor has not dat.sources
108
108
  if (!data.sources && data.mode === "auto") {
109
- logBox(
109
+ boxLog(
110
110
  `Warning: Page with id: ${page.id} has a ReferenceField with \`undefined\` \`data.sources\``,
111
- "undefined data.sources in ReferenceField"
111
+ "undefined data.sources in ReferenceField",
112
112
  );
113
113
  }
114
114
 
115
115
  const body = this.getBody(data, page);
116
116
 
117
- const response = await SitesService.getDistributorData(
118
- page,
119
- body,
120
- cacheKey,
121
- site,
122
- lang
123
- );
117
+ const response = await getDistributorData(page, body, cacheKey, site, lang);
124
118
 
125
119
  return response;
126
120
  }
@@ -147,7 +141,7 @@ class DistributorService {
147
141
  hasDistributorData?: boolean;
148
142
  queriedItems: QueriedData<unknown>;
149
143
  },
150
- level = 1
144
+ level = 1,
151
145
  ) => {
152
146
  // If it doesn't a "template strcuture"
153
147
  if (!templateChunk || typeof templateChunk !== "object") return;
@@ -165,7 +159,7 @@ class DistributorService {
165
159
  if (key === "queriedItems") continue;
166
160
 
167
161
  const _key = key as "hasDistributorData" | "queriedItems";
168
- const component = (templateChunk[_key] as unknown) as {
162
+ const component = templateChunk[_key] as unknown as {
169
163
  data: Reference<unknown>;
170
164
  queriedItems: QueriedData<unknown>;
171
165
  hasDistributorData: boolean;
@@ -1,24 +1,14 @@
1
1
  import type { Domains } from "../types/global";
2
2
 
3
+ import { endpoints } from "../constants";
3
4
  import { get } from "../utils/api";
4
5
 
5
- // Envs
6
- const API_URL = process.env.API_URL;
7
-
8
- // Consts
9
- const ENDPOINTS = {
10
- GET_ALL: `${API_URL}/domains`,
11
- };
12
-
13
6
  /**
14
7
  * Get an array of domains availables.
15
8
  */
16
9
  class DomainsService {
17
10
  static async getAll() {
18
- const { GET_ALL } = ENDPOINTS;
19
- const response = await get<Domains>({ endpoint: GET_ALL });
20
-
21
- return response;
11
+ return await get<Domains>({ endpoint: endpoints.DOMAINS });
22
12
  }
23
13
  }
24
14
 
@@ -1,9 +1,6 @@
1
1
  import type { Footer, Header } from "../types/navigation";
2
2
  import type { APIPageObject } from "../types/pages";
3
3
 
4
- /**
5
- * TODO: JSDoc
6
- */
7
4
  class NavigationService {
8
5
  private _defaultHeaders: Record<string, Header>;
9
6
  private _defaultFooters: Record<string, Footer>;
@@ -21,29 +18,20 @@ class NavigationService {
21
18
  this._defaultFooters = {};
22
19
  }
23
20
 
24
- /**
25
- * TODO: JSDoc
26
- */
27
21
  set navigations(navigations) {
28
22
  this._navigations = navigations;
29
23
  this._defaultFooters = this.getDefaultFooters();
30
24
  this._defaultHeaders = this.getDefaultHeaders();
31
25
  }
32
26
 
33
- /**
34
- * TODO: JSDoc
35
- */
36
27
  get navigations() {
37
28
  return this._navigations;
38
29
  }
39
30
 
40
- /**
41
- * TODO: JSDoc
42
- */
43
31
  getDefaultFooters() {
44
32
  const safeFooters = [...this.navigations.footers];
45
33
  const defaultFooters = safeFooters.filter(
46
- (footer) => !!footer.setAsDefault
34
+ (footer) => !!footer.setAsDefault,
47
35
  );
48
36
  const defaultFootersByLang = defaultFooters.reduce((prev, footer) => {
49
37
  const { language } = footer;
@@ -54,13 +42,10 @@ class NavigationService {
54
42
  return defaultFootersByLang;
55
43
  }
56
44
 
57
- /**
58
- * TODO: JSDoc
59
- */
60
45
  getDefaultHeaders() {
61
46
  const safeHeaders = [...this.navigations.headers];
62
47
  const defaultHeaders = safeHeaders.filter(
63
- (header) => !!header.setAsDefault
48
+ (header) => !!header.setAsDefault,
64
49
  );
65
50
  const defaultHeadersByLang = defaultHeaders.reduce((prev, header) => {
66
51
  const { language } = header;
@@ -71,9 +56,6 @@ class NavigationService {
71
56
  return defaultHeadersByLang;
72
57
  }
73
58
 
74
- /**
75
- * TODO: JSDoc
76
- */
77
59
  getRightLanguage(
78
60
  list: Array<{
79
61
  language: number;
@@ -81,7 +63,7 @@ class NavigationService {
81
63
  id: number;
82
64
  }>,
83
65
  id: number,
84
- language: number
66
+ language: number,
85
67
  ) {
86
68
  if (!list || !id) {
87
69
  return null;
@@ -90,7 +72,9 @@ class NavigationService {
90
72
  const rightLanguageItem = list.find(
91
73
  (item) =>
92
74
  item.language === language &&
93
- item.navigationLanguages?.find((version) => version.navigationId === id)
75
+ item.navigationLanguages?.find(
76
+ (version) => version.navigationId === id,
77
+ ),
94
78
  );
95
79
 
96
80
  const result = rightLanguageItem || list.find((item) => item.id === id);
@@ -98,23 +82,14 @@ class NavigationService {
98
82
  return result ? { ...result } : null;
99
83
  }
100
84
 
101
- /**
102
- * TODO: JSDoc
103
- */
104
85
  getPageHeader(id: number, language: number) {
105
86
  return this.getRightLanguage(this.navigations.headers, id, language);
106
87
  }
107
88
 
108
- /**
109
- * TODO: JSDoc
110
- */
111
89
  getPageFooter(id: number, language: number) {
112
90
  return this.getRightLanguage(this.navigations.footers, id, language);
113
91
  }
114
92
 
115
- /**
116
- * TODO: JSDoc
117
- */
118
93
  getPageNavigations(page: APIPageObject) {
119
94
  const {
120
95
  header: pageHeader,
@@ -149,14 +124,14 @@ class NavigationService {
149
124
  const header = headerID
150
125
  ? this.getPageHeader(headerID, language)
151
126
  : headerID === 0
152
- ? null
153
- : this._defaultHeaders[language];
127
+ ? null
128
+ : this._defaultHeaders[language];
154
129
 
155
130
  const footer = footerID
156
131
  ? this.getPageFooter(footerID, language)
157
132
  : footerID === 0
158
- ? null
159
- : this._defaultFooters[language];
133
+ ? null
134
+ : this._defaultFooters[language];
160
135
 
161
136
  return {
162
137
  header,