nuxt-chatgpt
Version:
ChatGPT integration for Nuxt 3
60 lines (56 loc) • 1.66 kB
JavaScript
import { fileURLToPath } from 'url';
import { defineNuxtModule, createResolver, addImportsDir, addServerHandler } from '@nuxt/kit';
import { defu } from 'defu';
const configKey = "chatgpt";
const moduleName = "nuxt-chatgpt";
const nuxtVersion = "^3.0.0";
const module = defineNuxtModule({
meta: {
name: moduleName,
configKey,
compatibility: {
nuxt: nuxtVersion
}
},
// Default configuration options of the Nuxt module
defaults: {
isEnabled: true
},
setup(options, nuxt) {
const { resolve } = createResolver(import.meta.url);
const runtimeDir = fileURLToPath(new URL("./runtime", import.meta.url));
if (!options.apiKey) {
return console.warn(`[${moduleName}]: No '${configKey}.apiKey' option provided!`);
}
if (!options.isEnabled) {
return console.warn(`[${moduleName}] module is disabled and will not be loaded.`);
}
nuxt.options.runtimeConfig[configKey] = defu(nuxt.options.runtimeConfig[configKey], {
apiKey: options.apiKey
});
addImportsDir(resolve("./runtime/composables"));
addServerHandler(
{
route: "/api/chat",
method: "post",
handler: resolve(runtimeDir, "server/api/chat")
}
);
addServerHandler(
{
route: "/api/chat-completion",
method: "post",
handler: resolve(runtimeDir, "server/api/chat-completion")
}
);
addServerHandler(
{
route: "/api/image-generate",
method: "post",
handler: resolve(runtimeDir, "server/api/image-generate")
}
);
nuxt.options.build.transpile.push(runtimeDir);
}
});
export { module as default };