AppManifest
interfaz
Todo lo que el servidor necesita para enrutar peticiones, fijado en el build. Los archivos son
claves de módulo relativas al proyecto, como /app/pages/index.meeko.
import type { AppManifest } from "@meekojs/meeko/server";Código fuente src/server/runtime/app.ts:81
Declaración #
interface AppManifest {
readonly version: 1
readonly routes: readonly RouteRecord[]
readonly errorPage?: ErrorPageRecord | undefined
readonly server: ServerManifest
readonly routeMiddleware: readonly string[]
readonly serverMiddleware: readonly string[]
readonly serverHandlers?: readonly { readonly route: string; readonly file: string }[]
readonly client: ClientAssets
readonly assets?: AssetManifest
readonly document?: DocumentConfig | undefined
readonly contentSecurityPolicy?: ContentSecurityPolicy | undefined
readonly headers?: ServerHeaders | undefined
readonly publicFileHeaders?: Readonly<Record<string, Readonly<Record<string, string>>>> | undefined
readonly buildId?: string | undefined
}Ejemplo #
import type { AppManifest } from "@meekojs/meeko/server";
const manifest: AppManifest = {
version: 1,
routes: [{ id: "/", file: "/app/pages/index.meeko", layouts: ["/app/app.meeko"] }],
errorPage: { file: "/app/error.meeko", layouts: ["/app/app.meeko"] },
server: { api: [], rpc: [], socket: [] },
routeMiddleware: [],
serverMiddleware: ["/server/middleware/10-headers.ts"],
client: { entry: "/assets/entry.js", css: [], preload: [] },
};Propiedades #
errorPage
#
readonly errorPage?: ErrorPageRecord | undefinedapp/error.meeko y sus layouts raíz; renderiza las URL sin ruta.
routeMiddleware
#
readonly routeMiddleware: readonly string[]Módulos de app/middleware globales, en orden de ejecución. Desde 1.6, los middleware con
nombre no están aquí: cada ruta lista los suyos en RouteRecord.middleware.
serverMiddleware
#
readonly serverMiddleware: readonly string[]Módulos de server/middleware, en orden de ejecución; los que añaden los módulos van primero.
serverHandlers
#
readonly serverHandlers?: readonly { readonly route: string; readonly file: string }[]Handlers que añaden los módulos con meeko.addServerHandler: ruta exacta y módulo cuyo export
por defecto es (request) => Response | Promise<Response>. Se ejecutan después del middleware.
document
#
readonly document?: DocumentConfig | undefineddocument de meeko.config.ts, con el head que añaden los módulos, fijado en el build.
contentSecurityPolicy
#
readonly contentSecurityPolicy?: ContentSecurityPolicy | undefinedserver.contentSecurityPolicy de meeko.config.ts en los adaptadores con servidor, fijado en
el build. En producción, la aplicación pone la cabecera en cada respuesta: con los hashes del
build, un nonce por petición o los hashes del HTML según la página, y
default-src 'none'; frame-ancestors 'none' en el JSON de API, RPC y navegación.
headers
#
readonly headers?: ServerHeaders | undefinedserver.headers de meeko.config.ts en los adaptadores con servidor, fijado en el build: las
cabeceras globales y por patrón de ruta que la aplicación añade a las respuestas que no las traen.
publicFileHeaders
#
readonly publicFileHeaders?: Readonly<Record<string, Readonly<Record<string, string>>>> | undefinedCabeceras de los archivos públicos que un módulo añade con addPublicFile, por el pathname
exacto que tiene una petición de ese archivo, ya codificado como URL (/font%20test.woff2). Se
aplican sobre las cabeceras globales de headers y bajo sus patrones de ruta, que sustituyen
sólo las cabeceras que fijan, sin distinguir mayúsculas de minúsculas.
buildId
#
readonly buildId?: string | undefinedIdentificador del build, distinto en cada meeko build. Entra en el ETag de las páginas con
cache, así que un despliegue nuevo invalida las copias del navegador. Sin él, cada proceso
usa uno aleatorio.