UNPKG

@nuxtjs/sanity

Version:
49 lines (48 loc) 1.81 kB
import defu from "defu"; import { createSanityClient, useNuxtApp } from "#imports"; import { useSanityConfig } from "./useSanityConfig.js"; import { createLiveStore } from "../util/createLiveStore.js"; import { createQueryStore } from "../util/createQueryStore.js"; const createSanityHelper = (clientConfig) => { const sanityConfig = useSanityConfig(); const config = { ...clientConfig }; let client = createSanityClient(config); let queryStore = createQueryStore(sanityConfig.visualEditing, client); const liveStore = createLiveStore(sanityConfig.liveContent); return { client, config, // @ts-expect-error untyped args fetch: (...args) => client.fetch(...args), liveStore, queryStore, setToken(token) { config.token = token; client = createSanityClient(config); if (queryStore && sanityConfig.visualEditing) { queryStore = createQueryStore(sanityConfig.visualEditing, client); } } }; }; export function useSanity(_event, _client) { const client = typeof _event === "string" ? _event : _client || "default"; const nuxtApp = useNuxtApp(); if (nuxtApp._sanity?.[client]) { return nuxtApp._sanity[client]; } nuxtApp._sanity = nuxtApp._sanity || {}; const sanityConfig = useSanityConfig(); const { additionalClients = {}, liveContent, visualEditing, ...options } = sanityConfig; if (!options.disableSmartCdn && nuxtApp.$preview) { options.useCdn = false; } else if (!import.meta.dev && !options.useCdn && !options.token) { options.useCdn = true; } if (client === "default") { nuxtApp._sanity.default = createSanityHelper(options); return nuxtApp._sanity.default; } nuxtApp._sanity[client] = createSanityHelper(defu(additionalClients[client], options)); return nuxtApp._sanity[client]; }