Saltar al contenido principal

Manifiesto de aplicación personalizada

Id del esquema: custom-app-manifest@1 Esquema legible por máquina: custom-app-manifest.schema.json

La descripción canónica de una aplicación React personalizada (sección 6.3): el remoto de Module Federation que el Shell de la plataforma carga para una aplicación escrita a mano en un entorno. Un manifiesto se valida de forma idéntica tanto si se registra a través del Centro de control de administración como si se envía mediante una llamada directa a la API, lo genera un asistente de IA o llega dentro de una importación de solución: la regla de una única vía de validación (sección 6.7).

Forma​

CampoTipoObligatorioNotas
logicalNamestringsíCon el prefijo del editor, en snake_case en minúsculas (p. ej., par_sales_dashboard). Se usa como id estable del artefacto de la aplicación: la audiencia de su App Context Token.
displayNamestringsíNombre legible que se muestra en la página de inicio del Shell.
descriptionstring | nullnoDescripción breve que se muestra en el mosaico de la aplicación.
entryFileNamestringnoEl archivo de entrada del contenedor dentro del paquete (p. ej., remoteEntry.js), copiado del propio manifiesto del archivo comprimido. Vacío en el modo hospedado, que no tiene paquete.
packageHashstring | nullnoSHA-256 en hexadecimal en minúsculas del archivo comprimido a partir del cual se registró esta aplicación. Nulo en el modo hospedado. Al importar una solución se comprueba frente a los bytes que viajaron en el paquete, para que lo que se sirve sea lo que se exportó.
remoteEntryUrlstringsíO bien una URL http(s) absoluta del remoteEntry.js del remoto (modo hospedado: su origen debe estar en la lista de permitidos del Shell del entorno, sección 6.3), o bien una referencia webresource:<logicalName> (modo empaquetado, sección 6.15): el paquete se almacena como recursos web y lo sirve la plataforma; el Shell lo resuelve en una URL de entrega de la plataforma y lo trata como propio.
scopestringsíEl nombre de ámbito global del contenedor de Module Federation (único por remoto), que coincide con el federation({ name }) del remoto.
modulestringsíLa ruta del módulo expuesto que carga el Shell (p. ej., ./App). Debe empezar por ./.
requestedScopesstring[]síÁmbitos que la aplicación declara necesitar; se solicitan al emitir su App Context Token y se intersecan con los del propio usuario. Puede estar vacío.
declaredEntitiesstring[]síEntidades a las que la aplicación declara acceder, para revisión y validación de dependencias. Puede estar vacío.

Dónde se valida​

  • Registro: la capa de aplicación valida el manifiesto con custom-app-manifest@1 y exige que logicalName empiece por el prefijo del editor propietario antes de registrar la aplicación en un entorno.
  • Importación de solución: cada manifiesto incluido en un paquete de solución se vuelve a validar con el mismo esquema antes de registrar la aplicación en el entorno de destino, para que un paquete editado a mano no pueda colar un remoto no válido.

Notas de seguridad​

Una aplicación React personalizada se ejecuta en el mismo entorno de JavaScript que el Shell (Module Federation, no un iframe; sección 6.3), así que el límite de confianza se aplica en otros puntos: el origen de remoteEntryUrl debe estar en la lista de permitidos del entorno (CSP), la aplicación solo puede cargarse si una solución la implementó en ese entorno, y cada llamada de datos que realiza a través del Runtime SDK se autoriza en el servidor frente a los ámbitos de su App Context Token. Declarar un ámbito en requestedScopes nunca lo concede: se interseca con lo que el usuario ya tiene.

Relacionado​

  • Referencia del Runtime SDK (cómo consume una aplicación personalizada useParswareRuntime()).
  • Paquete de solución: transporta estos manifiestos entre entornos en su matriz customApps.