@griddo/cx 10.4.19 → 10.4.21

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 (73) hide show
  1. package/README.md +11 -76
  2. package/build/adapters/gatsby/index.d.ts +2 -0
  3. package/build/adapters/gatsby/utils.d.ts +27 -0
  4. package/build/adapters/index.d.ts +3 -0
  5. package/build/browser/index.d.ts +5 -0
  6. package/build/build-complete.d.ts +18 -0
  7. package/build/build-complete.js +22 -22
  8. package/build/errors/index.d.ts +1 -0
  9. package/build/index.d.ts +29 -0
  10. package/build/index.js +37 -35
  11. package/build/move-assets.d.ts +1 -0
  12. package/build/react/index.d.ts +2 -0
  13. package/build/reset-render.d.ts +1 -0
  14. package/build/reset-render.js +22 -22
  15. package/build/run-start-render.d.ts +1 -0
  16. package/build/run-start-render.js +37 -35
  17. package/build/services/auth.d.ts +21 -0
  18. package/build/services/distributors.d.ts +45 -0
  19. package/build/services/domains.d.ts +8 -0
  20. package/build/services/navigation.d.ts +77 -0
  21. package/build/services/robots.d.ts +21 -0
  22. package/build/services/settings.d.ts +23 -0
  23. package/build/services/sites.d.ts +42 -0
  24. package/build/services/store.d.ts +6 -0
  25. package/build/start-render.d.ts +3 -0
  26. package/build/start-render.js +37 -35
  27. package/build/types/api.d.ts +130 -0
  28. package/build/types/global.d.ts +78 -0
  29. package/build/types/navigation.d.ts +28 -0
  30. package/build/types/pages.d.ts +128 -0
  31. package/build/types/sites.d.ts +43 -0
  32. package/build/types/templates.d.ts +8 -0
  33. package/build/upload-search-content.d.ts +1 -0
  34. package/build/upload-search-content.js +21 -21
  35. package/build/utils/api.d.ts +23 -0
  36. package/build/utils/cache.d.ts +35 -0
  37. package/build/utils/create-build-data.d.ts +8 -0
  38. package/build/utils/domains.d.ts +5 -0
  39. package/build/utils/folders.d.ts +48 -0
  40. package/build/utils/health-checks.d.ts +7 -0
  41. package/build/utils/instance.d.ts +21 -0
  42. package/build/utils/messages.d.ts +2 -0
  43. package/build/utils/pages.d.ts +34 -0
  44. package/build/utils/searches.d.ts +14 -0
  45. package/build/utils/shared.d.ts +110 -0
  46. package/build/utils/sites.d.ts +36 -0
  47. package/build/utils/store.d.ts +79 -0
  48. package/build/utils/temp-utils.d.ts +10 -0
  49. package/cx.config.js +1 -1
  50. package/exporter/adapters/gatsby/index.ts +6 -20
  51. package/exporter/adapters/gatsby/utils.ts +25 -1
  52. package/exporter/errors/index.ts +2 -0
  53. package/exporter/index.ts +6 -4
  54. package/exporter/services/robots.ts +4 -3
  55. package/exporter/services/store.ts +13 -4
  56. package/exporter/start-render.ts +1 -2
  57. package/exporter/types/global.ts +1 -1
  58. package/exporter/utils/cache.ts +25 -11
  59. package/exporter/utils/create-build-data.ts +3 -10
  60. package/exporter/utils/folders.ts +14 -15
  61. package/exporter/utils/searches.ts +4 -4
  62. package/exporter/utils/shared.ts +18 -8
  63. package/exporter/utils/sites.ts +10 -10
  64. package/exporter/utils/store.ts +77 -27
  65. package/exporter/utils/temp-utils.ts +12 -11
  66. package/gatsby-config.ts +2 -2
  67. package/gatsby-node.ts +9 -10
  68. package/package.json +12 -6
  69. package/src/components/Head.tsx +1 -1
  70. package/src/components/template.tsx +1 -1
  71. package/src/gatsby-node-utils.ts +13 -2
  72. package/src/types.ts +1 -1
  73. package/tsconfig.json +13 -3
package/README.md CHANGED
@@ -1,93 +1,28 @@
1
1
  # Griddo package
2
2
 
3
- ## TO-DO
4
-
5
- - [ ] Crear el store utilizando un HASH como nombre de archivo y no el ID.
6
- - [ ] Manejar el store teniendo en cuenta el ID de las páginas leyendo el objeto y no el nombre del archivo.
7
-
8
- ---
9
3
 
10
4
  El package `griddo-cx` está dividido en dos carpetas principales: una para la lógica de negocio en `/exporter` y otra para Gatsby (builder) `/src`.
11
5
 
12
- Estas dos carpetas estarían representando dos estados o fases diferenciadas en la ejecución de un "render/build de cx" completo.
6
+ ## `/exporter`
13
7
 
14
- 1. **Fetching**: Obtención, postprocesado y guardado de los datos en el sistema de archivos.
8
+ **Griddo Exporter** es el script _orquestador_ que debe llamar **una vez por cada dominio** a los distintos procesos que implican la realización de la publicación de una instancia.
15
9
 
16
- 2. **Rendering** Ejecución de Gatsby para construir los sites utilizando los datos descargados
10
+ En el exporter se desarrolla todo lo necesario para la conexión con API, post-procesado de los datos y generación de JSONS finales de los sites con "el estándar Griddo". Aquí es donde se ejecuta la mayor parte de la lógica: obtención de páginas, listados, distribuidores, idomas, etc. Todo está implementado como una _library_, nada se ejecuta por sí solo. Lo tiene que hacer el Adapter.
17
11
 
18
- ## 1. Fetching
12
+ **Adapter**
19
13
 
20
- En la fase de Griddo se desarrolla todo lo necesario para la conexión con API, post-procesado de los datos y generación de JSONS finales de los sites con "un formato Griddo". Aquí es donde se ejecuta la mayor parte de la lógica: obtención de páginas, listados, distribuidores, idomas, etc.
14
+ El adapter es una parte del código de CX que orquesta un render, utilizando como servicios la _library_ de CX y el framework de SSG disponible. Actualmente hay un SSG, Gatsby. Por lo tanto hay un adapter a Gatsby. Lógica de negocio y SSG ya no están mezclados.
21
15
 
22
16
  Si hay un requerimiento en CX es muy probable que sea en esta parte donde haya que trabajar.
23
17
 
24
- **Estructura de carpetas**
25
-
26
- ```text
27
- | src/
28
- | adapters/
29
- | gatsby/ # Adapta la salida (JSON) de Griddo -> Gatsby
30
- | services/
31
- | types/
32
- | utils/
33
- | create-build-data.ts
34
- | build-complete.ts
35
- | index.ts
36
- | reset-render.ts
37
- ```
38
-
39
- ## 2. Rendering (Gatsby)
40
-
41
- Esta fase se ejecuta inmediatamente después de la primera. Se ejecuta `yarn gatsby build` lo que generá un build utilizando todos los datos que se descargaron en la carpeta `store`.
42
-
43
- El código de Gatsby (por ahora el único SSG usado por Griddo) está en la carpeta `./src` junto con los archivos en el root: `gatsby-config.ts`, `gastsby-node.ts`, `gatsby-browser.ts` y `gatsby-ssr.ts`.
44
-
45
- ```text
46
- | src/
47
- | components/
48
- | Head.tsx
49
- | template.tsx
50
- | htm.tsx
51
- | gatsby-node-utils.ts
52
- | types.ts
53
- | utils.ts
54
- | gatsby-browser.ts
55
- | gatsby-config.ts
56
- | gatsby-node.ts
57
- | gatsby-ssr.ts
58
- ```
59
-
60
- # Griddo Exporter
61
-
62
- El punto de entrada para CX está en `src/index.js` que ejecuta **Griddo Exporter**, publicado en `./build/index.js` del cual podemos encontrar el código TypeScript en `./scripts/griddo-exporter.ts`
18
+ ## `/src`
63
19
 
64
- **Griddo Exporter** es el script _orquestador_ que llama **una vez por cada dominio** a los distintos procesos que implican la realización del build de un dominio.
20
+ Aquí es donde reside el SSG actual (Gatsby) junto a archivos en el raíz, como `gatsby-node`, etc. Este ssg será llamado por el Adapter dentro del `Data LifeCycle`. El SSG solo debe saber que hay una carpeta `/store/` con los .json que representan las páginas a renderizar. Desde la `cx-library` también podrá hacer uso de otras utilidades, servicios y componentes. Por ejemplo utilizará la función `getBuildPagesFromStore` para obtener las páginas anteriormente creadas desde el store. Es decir, El SSG "no sabe" dónde están las páginas, tan solo tiene una función que se las va a devolver.
65
21
 
66
- `BUILD-COMPLETO = PROCESOS * DOMINIOS`
67
22
 
68
- ## Los procesos
69
-
70
- Los distintos procesos llamados desde **Griddo Exporter** son:
71
-
72
- ### API Fetch
73
-
74
- **`yarn run api-fetch`**
75
-
76
- Realiza toda la consulta de datos a la API de los sites (páginas, distribuidores, etc...) de un dominio, post-procesa y construye los `pageObjets`. Estos `pageObjects` son guardados como archivos JSON en una carpeta del sistema de archivos, creando lo que llamamos un **Store**.
77
-
78
- Este Store no está acoplado con ningún sistema de renderización (Gatsby), son solo archivos JSON que describen los sites y páginas con el estándar que hemos diseñado desde Griddo.
79
-
80
- ### Gatsby build
81
-
82
- **`gatsby-build`**
83
-
84
- Se leen los JSON del store y se crean las páginas pasándolos directamente (0 pre/post procesado) a la función `creatPages` de Gatsby.
85
-
86
- ### Post build
23
+ ---
87
24
 
88
- - Se crean Robots
89
- - Se crean sitemaps.xml del render
90
- - Se crear un archivo **build_report**info.json para notificar a la API de la finalización del render
91
- - Se mueven el bundle generado por Gatsby de /public a /dist (esto se debería deprecar)
25
+ ## TO-DO
92
26
 
93
- **`post-build`**
27
+ - [ ] Crear el store utilizando un HASH como nombre de archivo y no el ID.
28
+ - [ ] Manejar el store teniendo en cuenta el ID de las páginas leyendo el objeto y no el nombre del archivo.
@@ -0,0 +1,2 @@
1
+ declare function runGatsbyAdapter(): Promise<void>;
2
+ export { runGatsbyAdapter };
@@ -0,0 +1,27 @@
1
+ import { Fields } from "@griddo/core";
2
+ declare const attempts: {
3
+ prepare: any;
4
+ restore: any;
5
+ data: any;
6
+ ssg: any;
7
+ relocation: any;
8
+ meta: any;
9
+ archive: any;
10
+ clean: any;
11
+ };
12
+ /**
13
+ * Return the assetPrefix url `assetPrefix/domain`
14
+ */
15
+ declare function getGatsbyAssetPrefixSlug(domain: string): string;
16
+ /**
17
+ * Format Cloudinary or DAM URL
18
+ *
19
+ * @param image The image url
20
+ * @param width With of the image
21
+ * @param height Height of the image
22
+ * @param format Format of the image
23
+ * @returns A composed URL for the Cloudinary or DAM service
24
+ */
25
+ declare function formatImage(image: Fields.Image | string, width: number, height: number, format?: string): string | null;
26
+ declare function gatsbyBuild(domain: string): void;
27
+ export { attempts, formatImage, gatsbyBuild, getGatsbyAssetPrefixSlug };
@@ -0,0 +1,3 @@
1
+ import { runGatsbyAdapter } from "./gatsby";
2
+ export type Adapters = "gatsby";
3
+ export { runGatsbyAdapter };
@@ -0,0 +1,5 @@
1
+ import { Core } from "@griddo/core";
2
+ declare function filterBodyIntegrationFromPosition(integrations: Array<Core.PageIntegration>, position: "start" | "end"): string[];
3
+ declare function filterHeadIntegrations(integrations: Array<Core.PageIntegration>): string[];
4
+ declare function filterPositionIntegrations(integrations: Array<Core.PageIntegration>, position: "head" | "start" | "end"): string[];
5
+ export { filterBodyIntegrationFromPosition, filterHeadIntegrations, filterPositionIntegrations, };
@@ -0,0 +1,18 @@
1
+ type Report = {
2
+ authControl: {
3
+ Authorization: string;
4
+ "Cache-Control": string;
5
+ lang?: string | undefined;
6
+ } | undefined;
7
+ sites: Array<{
8
+ siteId: number;
9
+ publishHashes: Array<string>;
10
+ siteHash: string | null;
11
+ unpublishHashes: Array<string>;
12
+ }>;
13
+ };
14
+ /**
15
+ * Informa a la API del estado de publicación de los sites: published y unpublished.
16
+ */
17
+ export declare function buildComplete(report: Report): Promise<void>;
18
+ export {};