Skip to main content

Entornos y configuración

Archivos de entorno​

El código importa environment desde src/environments/environment (por ejemplo src/app/core/services/api/auth.service.ts). En el build de producción angular.json reemplaza src/environments/environment.ts por src/environments/environment.prod.ts (fileReplacements).

:::caution Los archivos no están en el repositorio .gitignore excluye /src/environments/*, así que ni environment.ts ni environment.prod.ts existen en el árbol versionado. Cada persona o pipeline debe crearlos. main.ts lee environment.production para llamar a enableProdMode(). :::

Claves leídas por el código​

Obtenidas con una búsqueda de environment.<clave> en src/app:

ClaveUsada enDescripción
productionmain.tsHabilita el modo de producción de Angular
apiUrl43 referencias en servicios de APIBase de la API REST (incluye /api/v1 en los ejemplos del Dockerfile)
socketUrlchat-socket.service.ts, internal-chat-socket.service.tsBase del servidor Socket.IO; los sockets se conectan a <socketUrl>/chat
fileUrlimage-load.service.tsBase para construir URLs de imágenes
apiReportsUrlreport.service.tsAPI de reportes (heredada)
AES_GCM_AADencryption.service.tsAAD opcional del cifrado híbrido
PUBLIC_KEY_FINGERPRINTencryption.service.tsHuella SHA-256 esperada de la clave pública del backend
allowedParentOriginsframe-bridge.service.tsLista de orígenes permitidos para postMessage en modo iframe (ver Frame)

Los valores son configuración del despliegue; no se documentan aquí. Para las dependencias que consumen estas claves (node-forge, crypto-js, socket.io-client) ver Librerías.

Plantilla de referencia​

export const environment = {
production: false,
apiUrl: '<URL de la API>/api/v1',
socketUrl: '<URL del servidor de sockets>',
fileUrl: '<URL de archivos>',
apiReportsUrl: '<URL de reportes>',
AES_GCM_AAD: '<opcional>',
PUBLIC_KEY_FINGERPRINT: '<huella SHA-256>',
allowedParentOrigins: ['<origen del padre>'],
};

Inconsistencias observadas​

  • El workflow .github/workflows/main-aws.yml genera un environment.prod.ts con production, apiUrl, casinoUrl, fileUrl, siteUrl, betResolverUrl, AES_GCM_AAD, PUBLIC_KEY_FINGERPRINT y apiReportsUrl. No incluye socketUrl ni allowedParentOrigins, que el código sí lee; casinoUrl, siteUrl y betResolverUrl no se referencian en src/app. Un build hecho con ese archivo no tendría socketUrl definido.
  • El Dockerfile reescribe con sed dos URLs literales dentro de environment.prod.ts (la de la API con /api/v1 y la base del socket). Eso presupone que el archivo ya existe en el contexto de build con esos valores de ejemplo; ver Build y despliegue.
  • StorageService cifra la sesión con una clave fija en el código fuente (storage.service.ts), no con una variable de entorno. Es ofuscación, no un secreto.

Otras configuraciones​

ArchivoContenido
angular.jsonoutputPath: dist/backoffice, presupuestos de 9 MB (initial y anyComponentStyle), allowedCommonJsDependencies
tsconfig.jsonstrict, strictTemplates, noImplicitReturns, target ES2022
.prettierrcsingleQuote, tabWidth: 2, printWidth: 100, trailingComma: es5, bracketSameLine
.gitleaks.tomlReglas por defecto de gitleaks + regla de secretos literales (ver Testing y calidad)