sass-template-common 0.10.41 → 0.11.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 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`).
@@ -853,20 +853,8 @@ export declare const ContentLayoutTema: FC<Props_38>;
853
853
  */
854
854
  export declare const contractWarn: (component: string, field: string, extra?: unknown) => void;
855
855
 
856
- export declare const createAssessment: ({ projectID, recaptchaKey, token, recaptchaAction, apiKey, userAgent, userIpAddress, }: CreateAssessmentParams) => Promise<number | null>;
856
+ export declare const createAssessment: ({ projectID, recaptchaKey, token, recaptchaAction, apiKey, userAgent, userIpAddress, config, }: CreateAssessmentParams) => Promise<number | null>;
857
857
 
858
- /**
859
- * Crea una evaluación para analizar el riesgo de una acción de la IU.
860
- * Usa la API REST de reCAPTCHA Enterprise (sin SDK, ~12MB menos en deploy).
861
- *
862
- * projectID: El ID del proyecto de Google Cloud.
863
- * recaptchaKey: La clave reCAPTCHA (site key) asociada con el sitio.
864
- * token: El token generado obtenido del cliente.
865
- * recaptchaAction: El nombre de la acción que corresponde al token.
866
- * apiKey: API key de Google Cloud para autenticar la petición REST.
867
- * userAgent: (opcional) User-Agent del request para mejor detección.
868
- * userIpAddress: (opcional) IP del usuario para mejor detección.
869
- */
870
858
  declare interface CreateAssessmentParams {
871
859
  projectID: string;
872
860
  recaptchaKey: string;
@@ -875,6 +863,7 @@ declare interface CreateAssessmentParams {
875
863
  apiKey: string;
876
864
  userAgent?: string;
877
865
  userIpAddress?: string;
866
+ config?: Pick<LibraryConfig, 'CONFIG_blockRecaptcha'>;
878
867
  }
879
868
 
880
869
  export declare const cutString: (text: string, length?: number) => string;
@@ -1328,9 +1317,11 @@ export declare function getBucketHttpClient(baseUrl: string, referer: string): A
1328
1317
  * <script src="https://www.google.com/recaptcha/enterprise.js?render=your_site_key"></script>
1329
1318
  * @param captchaAction Nombre de la acción para el captcha
1330
1319
  * @param siteKey La clave del sitio para el captcha
1320
+ * @param config Config del sitio (prop `API_ENV`) para leer el kill switch
1321
+ * `CONFIG_blockRecaptcha`. Si se omite se cae al singleton de `initLibrary`.
1331
1322
  * @returns Una promesa que se resuelve con el token del captcha
1332
1323
  */
1333
- export declare const getCaptchaToken: (captchaAction: captchaActionType, siteKey: string) => Promise<string>;
1324
+ export declare const getCaptchaToken: (captchaAction: captchaActionType, siteKey: string, config?: Pick<LibraryConfig, "CONFIG_blockRecaptcha">) => Promise<string>;
1334
1325
 
1335
1326
  export declare function getComments({ publication, path, size, sizereply, id, lastid, state, apiToken, API_ENV, }: GetCommentsParams): Promise<any>;
1336
1327
 
@@ -1735,6 +1726,21 @@ export declare const isHomePath: (pathname?: string) => boolean;
1735
1726
 
1736
1727
  export declare const isPhotoGallery: (news: NewListResponseData) => boolean | undefined;
1737
1728
 
1729
+ /**
1730
+ * ¿reCAPTCHA está desactivado? Fuente ÚNICA del kill switch
1731
+ * `CONFIG_blockRecaptcha`; la consumen todos los puntos de uso de reCAPTCHA de
1732
+ * la librería (script enterprise, widget v2, generación de token y las tres
1733
+ * verificaciones server-side).
1734
+ *
1735
+ * `cfg` explícito (típicamente el prop `API_ENV` de un componente cliente, o
1736
+ * las `COMMENTS_VARS` de un endpoint) GANA sobre el singleton de `initLibrary`,
1737
+ * que se usa como fallback: en el cliente el singleton puede no estar poblado
1738
+ * porque cada isla hidrata su propio grafo de módulos.
1739
+ *
1740
+ * Default `false` cuando nadie define el flag → comportamiento actual.
1741
+ */
1742
+ export declare function isRecaptchaBlocked(cfg?: Pick<LibraryConfig, 'CONFIG_blockRecaptcha'>): boolean;
1743
+
1738
1744
  export declare class IssuuServices {
1739
1745
  private issuuApi;
1740
1746
  private api;
@@ -1889,6 +1895,35 @@ export declare type LibraryConfig = {
1889
1895
  CAPTCHA_KEY?: string;
1890
1896
  COMMENTS_CAPTCHA_API_KEY?: string;
1891
1897
  CAPTCHA_KEY_V2?: string;
1898
+ /**
1899
+ * [kill switch] Desactiva TODOS los usos de reCAPTCHA de la librería en un
1900
+ * solo lugar. Con `true`:
1901
+ *
1902
+ * - no se inyecta el script de enterprise (`ReCaptchaRender`,
1903
+ * `CommentLazyLoader`),
1904
+ * - no se renderiza el widget v2 (`FormActions`, `ReportPop`),
1905
+ * - `getCaptchaToken` NO toca `window.grecaptcha` y devuelve el sentinel
1906
+ * `RECAPTCHA_DISABLED_TOKEN`,
1907
+ * - las verificaciones server-side (`createAssessment`,
1908
+ * `verifyCaptchaToken`, `verifyCaptchaTokenEnterprise`) cortan antes del
1909
+ * fetch a Google y devuelven "pasó" (score 1 / `true`),
1910
+ * - la validación de forms (`isFormValid`) deja de exigir token.
1911
+ *
1912
+ * Default `false`: el comportamiento es EXACTAMENTE el actual, así que subir
1913
+ * de versión sin declarar el flag no cambia nada en ningún repo (el flag es
1914
+ * puramente aditivo y retro-compatible).
1915
+ *
1916
+ * Es un flag de SEGURIDAD: en `true` los endpoints quedan sin protección
1917
+ * anti-bot, así que se usa para desbloquear un sitio (keys mal
1918
+ * configuradas, cuota agotada, captcha rompiendo el flujo), no como default.
1919
+ *
1920
+ * Los componentes cliente lo leen del prop `API_ENV` (el singleton de
1921
+ * `initLibrary` no está garantizado en cada isla de hidratación), por eso hay
1922
+ * que incluir `CONFIG_blockRecaptcha` en el `API_ENV_KEYS` de cada sitio que
1923
+ * pase config al cliente. Los helpers server-side lo leen del singleton, o
1924
+ * del parámetro explícito cuando lo reciben.
1925
+ */
1926
+ CONFIG_blockRecaptcha?: boolean;
1892
1927
  SHOW_TAG_BY_SECTION?: boolean;
1893
1928
  FETCH_SIZE_MORE_NEWS?: number;
1894
1929
  FETCH_SIZE_RELATED_NEWS?: number;
@@ -1998,9 +2033,11 @@ export declare class MainComponentServices {
1998
2033
  config: any;
1999
2034
  /**
2000
2035
  * @deprecated Ya no se lee: los tamaños salen de `this.contract` (§3). Bigfish
2001
- * pasa `imgSizesVideo` acá (quirk documentado en el snapshot de Fase 0), por eso
2002
- * `this.imgSizes.lg` valía `video.lg`; ahora eso se expresa como `contract.video.lg`.
2003
- * Se mantiene el parámetro posicional por retrocompat hasta Fase 3.
2036
+ * pasaba `imgSizesVideo` acá (quirk documentado en el snapshot de Fase 0), por
2037
+ * eso `this.imgSizes.lg` resolvía a `video.lg` dentro de los destacados. Ese
2038
+ * quirk quedó saldado: los destacados son de NOTAS y hoy leen slots de
2039
+ * `contract.note` (ver cada getter). Se mantiene el parámetro posicional por
2040
+ * retrocompat hasta Fase 3.
2004
2041
  */
2005
2042
  imgSizes: any;
2006
2043
  configVersion: string;
@@ -2671,6 +2708,7 @@ declare type PrefixConfig = {
2671
2708
  PUBLIC_SERVICE_PREFIX?: string;
2672
2709
  PUBLIC_IS_SUB_PUBLICATION?: string;
2673
2710
  FORCE_SUB_PUBLICATION_PREFIX?: string;
2711
+ LINK_REMOVE?: string;
2674
2712
  };
2675
2713
 
2676
2714
  export declare interface PreloadImage {
@@ -2807,6 +2845,8 @@ declare type Props_14 = {
2807
2845
  COGNITO_AUTH_PREFIX: string;
2808
2846
  PUBLIC_ENV: string;
2809
2847
  CAPTCHA_KEY: string;
2848
+ /** Kill switch de reCAPTCHA. Sin definir: captcha activo (como hoy). */
2849
+ CONFIG_blockRecaptcha?: boolean;
2810
2850
  PUBLIC_SERVICE_PREFIX?: string;
2811
2851
  PUBLIC_IS_SUB_PUBLICATION?: string;
2812
2852
  FORCE_SUB_PUBLICATION_PREFIX?: string;
@@ -2820,6 +2860,8 @@ declare type Props_15 = {
2820
2860
  COGNITO_AUTH_PREFIX: string;
2821
2861
  PUBLIC_ENV: string;
2822
2862
  CAPTCHA_KEY: string;
2863
+ /** Kill switch de reCAPTCHA. Sin definir: captcha activo (como hoy). */
2864
+ CONFIG_blockRecaptcha?: boolean;
2823
2865
  };
2824
2866
  termsAndConditionsUrl?: string;
2825
2867
  };
@@ -3239,9 +3281,17 @@ declare type Props_9 = {
3239
3281
 
3240
3282
  export declare const Readest: FC<Props_29>;
3241
3283
 
3284
+ /**
3285
+ * Token que devuelve `getCaptchaToken` cuando reCAPTCHA está desactivado por
3286
+ * `CONFIG_blockRecaptcha`. Es un placeholder no vacío a propósito: los call
3287
+ * sites cortan con "Captcha token no generado" ante un token falsy, y el
3288
+ * server ni lo mira porque su verificación también está gateada por el flag.
3289
+ */
3290
+ export declare const RECAPTCHA_DISABLED_TOKEN = "recaptcha-disabled";
3291
+
3242
3292
  export declare const ReCaptchaRender: ({ defaultRouteName }: {
3243
3293
  defaultRouteName: string;
3244
- }) => false | "" | JSX.Element | undefined;
3294
+ }) => false | "" | JSX.Element | null | undefined;
3245
3295
 
3246
3296
  export declare function RegisterForm({ texts, API_ENV, termsAndConditionsUrl }: Props_15): JSX.Element;
3247
3297
 
@@ -3797,11 +3847,22 @@ export declare const toISOWithTimeZone: (value: number | string, timeZone: strin
3797
3847
  * front prefix público. Se arma: origin público + front prefix + path sin el
3798
3848
  * service prefix. El origin ajeno queda normalizado como efecto.
3799
3849
  *
3850
+ * IMPORTANTE — el swap sólo se habilita si el sitio DECLARA que el service
3851
+ * prefix es un namespace interno, vía front prefix (`FORCE_SUB_PUBLICATION_PREFIX`
3852
+ * / `PUBLIC_IS_SUB_PUBLICATION`) o vía `LINK_REMOVE` apuntando al mismo prefijo.
3853
+ * Sin esa declaración el "swap" degeneraría en un BORRADO de segmento, y el
3854
+ * nombre del service prefix puede coincidir con el de una sección real: en
3855
+ * `futbol.radioformula.com.mx` (`PUBLIC_SERVICE_PREFIX=futbol`, sin front
3856
+ * prefix) el canonical `.../futbol/nota.html` apunta a la sección `/futbol`,
3857
+ * no a un namespace filtrado, y reescribirlo rompía la URL.
3858
+ *
3800
3859
  * Todo lo demás se devuelve sin tocar → retrocompatible:
3801
3860
  * - URL ya correcta (path bajo `/en`, no bajo `/soyfutbolen`),
3802
3861
  * - canónica cross-domain intencional de contenido sindicado (path NO bajo
3803
3862
  * el service prefix),
3804
3863
  * - publicación principal (sin service prefix → return temprano),
3864
+ * - sitio con service prefix pero sin front prefix ni `LINK_REMOVE` (no hay
3865
+ * namespace interno declarado → return temprano),
3805
3866
  * - subpublicación directa (`frontPrefix === servicePrefix`: el swap deja el
3806
3867
  * path igual y el origin ya es el propio → no-op).
3807
3868
  *
@@ -3875,14 +3936,17 @@ export declare const validateHttpUrl: (url: string) => string;
3875
3936
  * @param projectId El ID del proyecto de Google Cloud
3876
3937
  * @param captchaKey La clave del sitio de reCAPTCHA
3877
3938
  * @param captchaAction El nombre de la acción que corresponde al token
3939
+ * @param config Config del sitio para leer el kill switch
3940
+ * `CONFIG_blockRecaptcha`. Si se omite se cae al singleton de `initLibrary`.
3878
3941
  * @returns Una promesa que se resuelve con la puntuación de riesgo
3879
3942
  */
3880
- export declare const verifyCaptchaTokenEnterprise: ({ token, projectId, captchaKey, apiKey, captchaAction, }: {
3943
+ export declare const verifyCaptchaTokenEnterprise: ({ token, projectId, captchaKey, apiKey, captchaAction, config, }: {
3881
3944
  token: string;
3882
3945
  projectId: string;
3883
3946
  captchaKey: string;
3884
3947
  apiKey: string;
3885
3948
  captchaAction: captchaActionType;
3949
+ config?: Pick<LibraryConfig, "CONFIG_blockRecaptcha">;
3886
3950
  }) => Promise<number>;
3887
3951
 
3888
3952
  export declare const VideoBlock3: FC<Props_35>;