@nuxtjs/sanity
Version:
Sanity integration for Nuxt
38 lines (37 loc) • 1.14 kB
JavaScript
import { defu } from "defu";
import { createClient } from "../../client.js";
import { useRuntimeConfig } from "#imports";
const clients = {};
const createSanityHelper = (options) => {
const config = { ...options };
let client = createClient(config);
return {
client,
config,
fetch: client.fetch.bind(client),
setToken(token) {
config.token = token;
client = createClient(config);
}
};
};
export function useSanity(_event, _client) {
const client = (typeof _event === "string" ? _event : _client) || "default";
if (client in clients) {
return clients[client];
}
const $config = useRuntimeConfig(typeof _event === "string" ? void 0 : _event);
const sanityConfig = import.meta.client ? $config.public.sanity : defu($config.sanity, $config.public.sanity);
const {
additionalClients = {},
liveContent,
visualEditing,
...options
} = sanityConfig;
if (client === "default") {
clients.default = createSanityHelper(options);
return clients.default;
}
clients[client] = createSanityHelper(defu(additionalClients[client], options));
return clients[client];
}