sass-template-common 0.10.1 → 0.10.10

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 CHANGED
@@ -1,36 +1,36 @@
1
- # sass-template-common
2
-
3
- Librería web, maqueta de configuración y componentes para proyectos sass.
4
-
5
- ## Publicar nueva versión
6
-
7
- Para que los cambios se reflejen al publicar:
8
-
9
- 1. **Subir versión** (obligatorio; si no, npm rechaza o se usa la misma versión):
10
- ```bash
11
- pnpm version:patch # 0.3.21 → 0.3.22
12
- # o
13
- pnpm version:minor # 0.3.21 → 0.4.0
14
- pnpm version:major # 0.3.21 → 1.0.0
15
- ```
16
-
17
- 2. **Build limpio + publicar**:
18
- ```bash
19
- pnpm run clean && pnpm run build && pnpm publish
20
- ```
21
- O en un solo paso (patch):
22
- ```bash
23
- pnpm release:patch
24
- ```
25
-
26
- 3. **`prepublishOnly`**: Antes de cada `pnpm publish` se ejecuta `clean` + `build`, así siempre se publica un build nuevo.
27
-
28
- 4. **En proyectos que consumen la lib**: Actualizar la dependencia y reinstalar:
29
- ```bash
30
- pnpm update sass-template-common
31
- # o cambiar la versión en package.json y luego
32
- pnpm install
33
- ```
34
- Si usan versión fija (`"0.3.21"`), hay que actualizarla a la nueva (p. ej. `"0.3.22"`).
35
-
36
- **Si no ves los cambios:** comprueba que subiste la versión (`version:patch` o similar), que hiciste `clean` + `build` antes de publicar, y que el proyecto consumidor tiene actualizada la dependencia (o `^0.3.21` y ha ejecutado `pnpm update`).
1
+ # sass-template-common
2
+
3
+ Librería web, maqueta de configuración y componentes para proyectos sass.
4
+
5
+ ## Publicar nueva versión
6
+
7
+ Para que los cambios se reflejen al publicar:
8
+
9
+ 1. **Subir versión** (obligatorio; si no, npm rechaza o se usa la misma versión):
10
+ ```bash
11
+ pnpm version:patch # 0.3.21 → 0.3.22
12
+ # o
13
+ pnpm version:minor # 0.3.21 → 0.4.0
14
+ pnpm version:major # 0.3.21 → 1.0.0
15
+ ```
16
+
17
+ 2. **Build limpio + publicar**:
18
+ ```bash
19
+ pnpm run clean && pnpm run build && pnpm publish
20
+ ```
21
+ O en un solo paso (patch):
22
+ ```bash
23
+ pnpm release:patch
24
+ ```
25
+
26
+ 3. **`prepublishOnly`**: Antes de cada `pnpm publish` se ejecuta `clean` + `build`, así siempre se publica un build nuevo.
27
+
28
+ 4. **En proyectos que consumen la lib**: Actualizar la dependencia y reinstalar:
29
+ ```bash
30
+ pnpm update sass-template-common
31
+ # o cambiar la versión en package.json y luego
32
+ pnpm install
33
+ ```
34
+ Si usan versión fija (`"0.3.21"`), hay que actualizarla a la nueva (p. ej. `"0.3.22"`).
35
+
36
+ **Si no ves los cambios:** comprueba que subiste la versión (`version:patch` o similar), que hiciste `clean` + `build` antes de publicar, y que el proyecto consumidor tiene actualizada la dependencia (o `^0.3.21` y ha ejecutado `pnpm update`).
@@ -51,6 +51,8 @@ export declare type Analytics = {
51
51
  comscore: string | undefined;
52
52
  };
53
53
 
54
+ export declare const assetsImagesPrefixer: (imagePath: string, assetsClient?: string) => string;
55
+
54
56
  export declare const AssetsPreconnect: () => false | "" | JSX.Element | undefined;
55
57
 
56
58
  export declare function auditConfigOrigin(entry: ConfigOriginAuditEntry): void;
@@ -179,15 +181,14 @@ export declare const bannersReplace: (bannerLineAd: string, replaces?: {
179
181
  }) => string;
180
182
 
181
183
  /**
182
- * Splits a single large news-list fetch into `batchCount` parallel requests
183
- * of `batchSize` items each, then combines results in order.
184
- *
185
- * Page mapping (batchCount=3, newsListLimit=45 batchSize=15):
186
- * userPage=1 API pages 1, 2, 3 (items 1–45)
187
- * userPage=2 → API pages 4, 5, 6 (items 46–90)
184
+ * Variante metadata: mismo split que `createBatchedFetch` pero devuelve
185
+ * `hasNextPage` (último batch lleno) y el primer response crudo, para derivar
186
+ * next/prev y el título de sección. Lee el conteo de batches del MISMO
187
+ * `CONFIG_batchedFetch` que el render (vía `resolveBatchCount`), de modo que la
188
+ * paginación de metadata y la lista visible nunca discrepan.
188
189
  *
189
- * hasNextPage is true when the last batch came back full (length === batchSize),
190
- * which is equivalent to the original `data.length === newsListLimit` check.
190
+ * `ceil` (antes `floor`) alinea la matemática con `createBatchedFetch`; para los
191
+ * totales usados en prod (45, 15) ambos coinciden por ser divisibles.
191
192
  */
192
193
  export declare function batchedNewsFetch({ fetchFn, baseParams, userPage, newsListLimit, batchCount, }: BatchFetchParams): Promise<BatchFetchResult>;
193
194
 
@@ -808,6 +809,25 @@ declare interface CreateAssessmentParams {
808
809
  userIpAddress?: string;
809
810
  }
810
811
 
812
+ /**
813
+ * Divide un fetch de lista en `batches` requests paralelos de `ceil(totalSize/
814
+ * batches)` ítems cada uno (páginas contiguas del upstream) y concatena los
815
+ * resultados en orden, devolviendo el MISMO envelope que un fetch único
816
+ * (`{ data: { data: [] } }`) para que caiga directo en un `PromiseArray` con
817
+ * `custom_extractData: getResponse`.
818
+ *
819
+ * Mapeo de páginas (batches=5, totalSize=45 → batchSize=9):
820
+ * userPage=1 → API pages 1..5 (ítems 1–45)
821
+ * userPage=2 → API pages 6..10 (ítems 46–90)
822
+ *
823
+ * `fetchFn` recibe `(size, page)` y devuelve la respuesta del CMS o `undefined`.
824
+ */
825
+ export declare function createBatchedFetch(fetchFn: (size: number, page: number) => Promise<any> | undefined, totalSize: number, userPage: number, batches?: number): Promise<{
826
+ data: {
827
+ data: any[];
828
+ };
829
+ }>;
830
+
811
831
  export declare const cutString: (text: string, length?: number) => string;
812
832
 
813
833
  export declare interface DataNews {
@@ -1056,6 +1076,18 @@ export declare type FetchConfig = {
1056
1076
  newsType: string;
1057
1077
  };
1058
1078
 
1079
+ /**
1080
+ * Envuelve `fetchFn` con batch SI la ruta está activada en config; si no, hace
1081
+ * el fetch único (comportamiento de master). Behavior-preserving cuando el batch
1082
+ * está off, así que es seguro envolver todas las rutas de lista de una — solo
1083
+ * las que estén en `CONFIG_batchedFetch.routes` cambian de comportamiento.
1084
+ */
1085
+ export declare function fetchMaybeBatched(route: string, fetchFn: (size: number, page: number) => Promise<any> | undefined, totalSize: number, userPage: number): Promise<{
1086
+ data: {
1087
+ data: any[];
1088
+ };
1089
+ }>;
1090
+
1059
1091
  /**
1060
1092
  * Cache in-memory + deduplicación de requests en vuelo (misma clave → misma promesa).
1061
1093
  * TTL corto pensado para SSR: evita 4–5 GETs repetidos de menú/banners por instancia.
@@ -1431,6 +1463,16 @@ export declare const HeaderSectionComponent: FC<Props_12>;
1431
1463
 
1432
1464
  export declare function HomeCard(props: SectionCardProps_3): JSX.Element;
1433
1465
 
1466
+ /**
1467
+ * Genera el string HTML de una HomeCard de tipo "imagen" sin pasar por React.
1468
+ * Reemplaza a <HomeCard> para el tipo imagen en LandingTemplate.
1469
+ *
1470
+ * - `priorityHigh` (lo decide el caller) → fetchpriority="high" / loading="eager".
1471
+ * Por default false → low/lazy.
1472
+ * - Sin espacio extra en la clase homeCardImage cuando no hay preRenderClass.
1473
+ */
1474
+ export declare function homeCardImagenToHTMLString(item: NewListResponseData, index: number, paths: RoutePathConfig, share?: Omit<NoteShare, 'googleProfile'>, priorityHigh?: boolean): string;
1475
+
1434
1476
  declare interface ICommonServices {
1435
1477
  config?: Config;
1436
1478
  imgSizes?: any;
@@ -1559,6 +1601,14 @@ export declare const isHomePath: (pathname?: string) => boolean;
1559
1601
 
1560
1602
  export declare const isPhotoGallery: (news: NewListResponseData) => boolean | undefined;
1561
1603
 
1604
+ /**
1605
+ * ¿La ruta tiene batch activo? Precedencia:
1606
+ * 1. `CONFIG_batchedFetch.routes[route]` explícito (true/false) gana.
1607
+ * 2. Retro-compat: el legacy `CONFIG_sectionBatchedFetch` solo cubría `seccion`.
1608
+ * 3. Off por default.
1609
+ */
1610
+ export declare function isRouteBatched(route: string): boolean;
1611
+
1562
1612
  export declare class IssuuServices {
1563
1613
  private issuuApi;
1564
1614
  private api;
@@ -1666,12 +1716,45 @@ export declare type LibraryConfig = {
1666
1716
  */
1667
1717
  CONFIG_sectionMetaInfo?: boolean;
1668
1718
  /**
1669
- * [renderizado] Cuando es `true`, la lista de sección se obtiene con
1670
- * `batchedNewsFetch` (N fetches paralelos en lugar de uno). Hoy implementado
1671
- * en el sitio soyfutbol; se formaliza acá como opt-in. Default `false`
1672
- * un único fetch (comportamiento de master).
1719
+ * @deprecated Reemplazado por `CONFIG_batchedFetch.routes.seccion`. Se mantiene
1720
+ * como shim de retro-compatibilidad: si `CONFIG_batchedFetch` no está seteado y
1721
+ * este flag es `true`, el batch de sección (solo metadata next/prev) sigue
1722
+ * funcionando con el conteo default. Cuando ambos están, `CONFIG_batchedFetch`
1723
+ * gana. Remover cuando todos los sitios migren a `CONFIG_batchedFetch`.
1673
1724
  */
1674
1725
  CONFIG_sectionBatchedFetch?: boolean;
1726
+ /**
1727
+ * [renderizado] Formaliza el fetch de listas de noticias por batches: divide un
1728
+ * único fetch de `config.newsListLimit` ítems en `batches` fetches paralelos
1729
+ * (páginas contiguas del upstream) y los concatena, devolviendo el MISMO
1730
+ * envelope que un fetch único. Es la versión canónica del sistema que vivía
1731
+ * suelto en soyfutbol (`newsListBatches` + `batchFetchRoutes`).
1732
+ *
1733
+ * - `batches`: número de fetches paralelos por lista. Sin la key (o 1) → un
1734
+ * único fetch = comportamiento de master (aditivo, cero cambio por default).
1735
+ * - `routes`: opt-in por ruta (`home`/`seccion`/`tema`/`ultimas-noticias`/
1736
+ * `autor`/...). Solo las rutas en `true` se batchean; el resto hace fetch único.
1737
+ *
1738
+ * Unifica render y metadata: cuando una ruta está activa acá, tanto la lista
1739
+ * visible como la derivación next/prev usan el MISMO `batches`, evitando el
1740
+ * desajuste "next dice que hay más pero la página muestra un solo fetch".
1741
+ * Reemplaza al legacy `CONFIG_sectionBatchedFetch`.
1742
+ */
1743
+ CONFIG_batchedFetch?: {
1744
+ /** N fetches paralelos por lista. Default efectivo 3 si algo lo activa sin fijarlo. */
1745
+ batches?: number;
1746
+ /** Opt-in por ruta. Claves = route keys de `MetadataDefaultsKeys`. */
1747
+ routes?: Record<string, boolean>;
1748
+ };
1749
+ /**
1750
+ * [render] Cuando es `true`, `LandingTemplate` renderiza las cards de tipo
1751
+ * `imagen` con el fast-render HTML-string (`homeCardImagenToHTMLString`) en
1752
+ * lugar del componente React `<HomeCard>`, ahorrando reconciliación/hidratación.
1753
+ * El fast-render se saltea online cuando la URL de preview no es absoluta y
1754
+ * SIEMPRE cae a `<HomeCard>` en offline (el path HTML-string no pasa por el
1755
+ * hidratador de imágenes offline). Default `false` → usa `<HomeCard>` React.
1756
+ */
1757
+ CONFIG_landingFastRender?: boolean;
1675
1758
  CONFIG_deferBanners?: {
1676
1759
  common?: boolean;
1677
1760
  middle?: boolean;
@@ -3113,6 +3196,13 @@ export declare interface ResilientFetchOptions {
3113
3196
  baseDelayMs?: number;
3114
3197
  }
3115
3198
 
3199
+ /**
3200
+ * Conteo de batches efectivo leído de `getConfig().CONFIG_batchedFetch.batches`.
3201
+ * Default `3` cuando algo activa el batch sin fijar el número (preserva el
3202
+ * comportamiento histórico del path de metadata, cuyo default era 3).
3203
+ */
3204
+ export declare function resolveBatchCount(): number;
3205
+
3116
3206
  export declare function resolveBucketMenuSubtype(path?: string): string;
3117
3207
 
3118
3208
  export declare function resolveBucketOriginUrl(bucket: BucketOriginConfig, servicePrefix: string | undefined, type: 'menu' | 'banners', subtype: string): string;