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.

26 lines (25 loc) 1.21 kB
import { isReactive, isRef, isShallow, toRaw } from "vue"; import { definePayloadReducer } from "../composables/payload.js"; import { isNuxtError } from "../composables/error.js"; import { defineNuxtPlugin } from "../nuxt.js"; import { componentIslands } from "#build/nuxt.config.mjs"; const reducers = [ ["NuxtError", (data) => isNuxtError(data) && data.toJSON()], ["EmptyShallowRef", (data) => isRef(data) && isShallow(data) && !data.value && (typeof data.value === "bigint" ? "0n" : JSON.stringify(data.value) || "_")], ["EmptyRef", (data) => isRef(data) && !data.value && (typeof data.value === "bigint" ? "0n" : JSON.stringify(data.value) || "_")], ["ShallowRef", (data) => isRef(data) && isShallow(data) && data.value], ["ShallowReactive", (data) => isReactive(data) && isShallow(data) && toRaw(data)], ["Ref", (data) => isRef(data) && data.value], ["Reactive", (data) => isReactive(data) && toRaw(data)] ]; if (componentIslands) { reducers.push(["Island", (data) => data && data?.__nuxt_island]); } export default defineNuxtPlugin({ name: "nuxt:revive-payload:server", setup() { for (const [reducer, fn] of reducers) { definePayloadReducer(reducer, fn); } } });