UNPKG

@ozmos/viper-vue

Version:

Vue plugin for Viper

33 lines 1.16 kB
import { Page } from "./page"; export const ViperPlugin = { install(app, { formatTitle, router, queryClient, }) { const page = new Page({ formatTitle, queryClient, }); app.provide("viperPage", page); const pageJson = JSON.parse(document.getElementById("app")?.dataset.page ?? "{}"); page.updateFromPageJson(pageJson); router.beforeEach(async (to, from, next) => { const res = await fetch(to.fullPath, { headers: { "Content-Type": "application/json", Accept: "application/json", "X-Viper-Request": "true", }, }); const redirectUrl = res.headers.get("x-viper-location"); if (redirectUrl) { const url = new URL(redirectUrl); return next(url.pathname); } if (!res.ok) { return next(false); } page.updateFromPageJson(await res.json()); return next(); }); }, }; export { usePage } from "./page"; //# sourceMappingURL=index.js.map