UNPKG

nuxt

Version:

Nuxt is a free and open-source framework with an intuitive and extendable way to create type-safe, performant and production-grade full-stack web applications and websites with Vue.js.

43 lines (42 loc) 1.38 kB
import { createError as createH3Error } from "h3"; import { toRef } from "vue"; import { useNuxtApp } from "../nuxt.js"; import { useRouter } from "./router.js"; export const NUXT_ERROR_SIGNATURE = "__nuxt_error"; export const useError = /* @__NO_SIDE_EFFECTS__ */ () => toRef(useNuxtApp().payload, "error"); export const showError = (error) => { const nuxtError = createError(error); try { const error2 = /* @__PURE__ */ useError(); if (import.meta.client) { const nuxtApp = useNuxtApp(); nuxtApp.hooks.callHook("app:error", nuxtError); } error2.value ||= nuxtError; } catch { throw nuxtError; } return nuxtError; }; export const clearError = async (options = {}) => { const nuxtApp = useNuxtApp(); const error = /* @__PURE__ */ useError(); nuxtApp.callHook("app:error:cleared", options); if (options.redirect) { await useRouter().replace(options.redirect); } error.value = void 0; }; export const isNuxtError = (error) => !!error && typeof error === "object" && NUXT_ERROR_SIGNATURE in error; export const createError = (error) => { if (typeof error !== "string" && error.statusText) { error.message ??= error.statusText; } const nuxtError = createH3Error(error); Object.defineProperty(nuxtError, NUXT_ERROR_SIGNATURE, { value: true, configurable: false, writable: false }); return nuxtError; };