UNPKG

@adonisjs/inertia

Version:

Official Inertia.js adapter for AdonisJS

48 lines (47 loc) 1.83 kB
import { t as InertiaManager } from "../inertia_manager-BGHA4cDP.js"; import { t as InertiaHeaders } from "../headers-DafWEpBh.js"; import { t as debug_default } from "../debug-CBMTuPUm.js"; const MUTATION_METHODS = [ "PUT", "PATCH", "DELETE" ]; var BaseInertiaMiddleware = class { getValidationErrors(ctx) { if (!ctx.session) return {}; const inputErrors = ctx.session.flashMessages.get("inputErrorsBag", {}); const errors = Object.entries(inputErrors).reduce((result, [field, messages]) => { result[field] = Array.isArray(messages) ? messages[0] : messages; return result; }, {}); const errorBag = ctx.request.header(InertiaHeaders.ErrorBag); if (errorBag) return { [errorBag]: errors }; return errors; } async init(ctx) { debug_default("initiating inertia"); ctx.inertia = (await ctx.containerResolver.make(InertiaManager)).createForRequest(ctx); if (this.share) ctx.inertia.share(() => this.share(ctx)); } dispose(ctx) { const requestInfo = ctx.inertia.requestInfo(); if (!requestInfo.isInertiaRequest) return; debug_default("disposing as inertia request"); ctx.response.header("Vary", InertiaHeaders.Inertia); const method = ctx.request.method(); if (ctx.response.getStatus() === 302 && MUTATION_METHODS.includes(method)) { debug_default("upgrading response status from 302 to 303"); ctx.response.status(303); } const version = ctx.inertia.getVersion(); const clientVersion = requestInfo.version ?? ""; if (method === "GET" && clientVersion !== version) { debug_default("version mis-match. Reloading page"); if (ctx.session) ctx.session.reflash(); ctx.response.removeHeader(InertiaHeaders.Inertia); ctx.response.header(InertiaHeaders.Location, ctx.request.url(true)); ctx.response.status(409); } } }; export { BaseInertiaMiddleware as default };