nuxt-apollo
Version:
Apollo client for Nuxt 3
72 lines (68 loc) • 1.79 kB
JavaScript
import { defineNuxtModule, logger, createResolver, addPlugin, addImports } from '@nuxt/kit';
import { defu } from 'defu';
const name = "nuxt-apollo";
const version = "0.2.1";
const module = defineNuxtModule({
meta: {
name,
version,
configKey: "apollo",
compatibility: {
nuxt: "^3.0.0"
}
},
defaults: {
httpEndpoint: "",
credentials: "same-origin",
proxyCookies: true
},
setup(options, nuxt) {
if (!options.httpEndpoint) {
logger.warn("[nuxt-apollo] Please make sure to set httpEndpoint");
}
const { resolve } = createResolver(import.meta.url);
if (options.wsEndpoint) {
addPlugin(resolve("./runtime/plugins/apolloWithWs.client"));
addPlugin(resolve("./runtime/plugins/apolloWithWs.server"));
} else {
addPlugin(resolve("./runtime/plugins/apolloWithoutWs"));
}
nuxt.options.runtimeConfig.public = defu(
nuxt.options.runtimeConfig.public,
{
apollo: {
httpEndpoint: options.httpEndpoint,
wsEndpoint: options.wsEndpoint,
credentials: options.credentials,
proxyCookies: options.proxyCookies
}
}
);
const apolloComposables = [
"useQuery",
"useMutation",
"useSubscription",
"useLazyQuery",
"useApolloClient",
"useQueryLoading",
"useMutationLoading",
"useSubscriptionLoading",
"useGlobalQueryLoading",
"useGlobalMutationLoading",
"useGlobalSubscriptionLoading"
];
apolloComposables.forEach((name2) => {
addImports({
name: name2,
as: name2,
from: "@vue/apollo-composable"
});
});
addImports({
name: "gql",
as: "gql",
from: "graphql-tag"
});
}
});
export { module as default };