nuxt
Version:
[](https://nuxt.com)
26 lines (25 loc) • 1.17 kB
JavaScript
import { isReactive, isRef, isShallow, toRaw } from "vue";
import { definePayloadReducer } from "#app/composables/payload";
import { isNuxtError } from "#app/composables/error";
import { defineNuxtPlugin } from "#app/nuxt";
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.Island = (data) => data && data?.__nuxt_island;
}
export default defineNuxtPlugin({
name: "nuxt:revive-payload:server",
setup() {
for (const reducer in reducers) {
definePayloadReducer(reducer, reducers[reducer]);
}
}
});