diff --git a/packages/nuxt/src/runtime/modules/graphqlYoga/index.ts b/packages/nuxt/src/runtime/modules/graphqlYoga/index.ts index c2a4b29c..3ae75f57 100644 --- a/packages/nuxt/src/runtime/modules/graphqlYoga/index.ts +++ b/packages/nuxt/src/runtime/modules/graphqlYoga/index.ts @@ -1,5 +1,5 @@ import { basename, join, resolve } from 'node:path' -import { existsSync, writeFileSync } from 'node:fs' +import { cpSync, existsSync, mkdirSync, writeFileSync } from 'node:fs' import { addServerImportsDir, createResolver } from '@nuxt/kit' import { pascalCase } from 'scule' @@ -7,7 +7,6 @@ import { globbySync } from 'globby' import { definePergelModule } from '../../core/definePergel' import { useNitroImports } from '../../core/utils/useImports' import { generateModuleRuntimeConfig } from '../../core/utils/moduleRuntimeConfig' -import { createFolderModule } from '../../core/utils/createFolderModule' import type { GraphQLYogaConfig, ResolvedGraphQLYogaConfig } from './types' import { generateGraphQLTemplate } from './utils/generateGraphqlTemplate' @@ -25,26 +24,12 @@ export default definePergelModule( defaults({ rootOptions, options, nuxt }) { const documentDir = rootOptions.documentDir ? join(nuxt._pergel.rootDir, rootOptions.documentDir) : join(options.serverDir, 'documents') - const schemaDir = rootOptions.schemaDir ? join(nuxt._pergel.rootDir, rootOptions.schemaDir) : join(options.serverDir, 'graphql') + const schemaDir = rootOptions.schemaDir ? join(nuxt._pergel.rootDir, rootOptions.schemaDir) : join(options.serverDir, 'schemas') const clientConfigFile = rootOptions.codegen?.client?.configFilePath ? resolve(nuxt._pergel.rootDir, rootOptions.codegen?.client?.configFilePath) : resolve(options.serverDir, 'codegen/client.ts') const serverConfigFile = rootOptions.codegen?.server?.configFilePath ? resolve(nuxt._pergel.rootDir, rootOptions.codegen?.server?.configFilePath) : resolve(options.serverDir, 'codegen/server.ts') - rootOptions.documentDir ?? createFolderModule({ - nuxt, - serverDir: documentDir, - moduleName: options.moduleName, - projectName: options.projectName, - }) - - rootOptions.schemaDir ?? createFolderModule({ - nuxt, - serverDir: schemaDir, - moduleName: options.moduleName, - projectName: options.projectName, - }) - return { ...options, documentDir, @@ -138,11 +123,6 @@ export default definePergelModule( ], }) - generateGraphQLTemplate({ - nuxt, - options, - }) - if (nuxt._pergel.projects[options.projectName]?.drizzle && nuxt._pergel.projects[options.projectName]?.lucia) { if (!existsSync(resolve(options.serverDir, 'index.ts'))) { const files = globbySync(resolver.resolve(join('templates', 'drizzle-lucia', 'root'), '**/*'), { @@ -164,6 +144,26 @@ export default definePergelModule( } } } + + if (!existsSync(resolve(options.serverDir, 'documents'))) { + mkdirSync(resolve(options.serverDir, 'documents'), { + recursive: true, + }) + + cpSync(resolver.resolve(join('templates', 'drizzle-lucia', 'documents')), resolve(options.serverDir, 'documents'), { + recursive: true, + }) + } + + if (!existsSync(resolve(options.serverDir, 'schemas'))) { + mkdirSync(resolve(options.serverDir, 'schemas'), { + recursive: true, + }) + + cpSync(resolver.resolve(join('templates', 'drizzle-lucia', 'schemas')), resolve(options.serverDir, 'schemas'), { + recursive: true, + }) + } } else { if (!existsSync(resolve(options.serverDir, 'index.ts'))) { @@ -185,6 +185,26 @@ export default definePergelModule( }) } } + + if (!existsSync(resolve(options.serverDir, 'documents'))) { + mkdirSync(resolve(options.serverDir, 'documents'), { + recursive: true, + }) + + cpSync(resolver.resolve(join('templates', 'root', 'documents')), resolve(options.serverDir, 'documents'), { + recursive: true, + }) + } + + if (!existsSync(resolve(options.serverDir, 'schemas'))) { + mkdirSync(resolve(options.serverDir, 'schemas'), { + recursive: true, + }) + + cpSync(resolver.resolve(join('templates', 'root', 'schemas')), resolve(options.serverDir, 'schemas'), { + recursive: true, + }) + } } } @@ -206,5 +226,10 @@ export default definePergelModule( graphqlYoga: graphqlYoga, `, }) + + generateGraphQLTemplate({ + nuxt, + options, + }) }, }) diff --git a/packages/nuxt/src/runtime/modules/graphqlYoga/utils/generateCodegen.ts b/packages/nuxt/src/runtime/modules/graphqlYoga/utils/generateCodegen.ts index 6e62bf3e..ed047b0a 100644 --- a/packages/nuxt/src/runtime/modules/graphqlYoga/utils/generateCodegen.ts +++ b/packages/nuxt/src/runtime/modules/graphqlYoga/utils/generateCodegen.ts @@ -67,7 +67,7 @@ export async function useGenerateCodegen({ const { client, server } = useCodegen() const { printSchema, schema, loadDocument } = await loadGraphQLFiles({ - rootDir: nuxt._pergel.rootDir, + rootDir: nuxt._pergel.serverDir, documentDir, schemaDir, }) diff --git a/packages/nuxt/src/runtime/modules/graphqlYoga/utils/generateGraphqlTemplate.ts b/packages/nuxt/src/runtime/modules/graphqlYoga/utils/generateGraphqlTemplate.ts index b97296f3..619da83a 100644 --- a/packages/nuxt/src/runtime/modules/graphqlYoga/utils/generateGraphqlTemplate.ts +++ b/packages/nuxt/src/runtime/modules/graphqlYoga/utils/generateGraphqlTemplate.ts @@ -1,5 +1,4 @@ import { join } from 'node:path' -import { existsSync, writeFileSync } from 'node:fs' import { matchGlobs } from '../utils' import type { ResolvedGraphQLYogaConfig } from '../types' import { addModuleDTS } from '../../../core/utils/addModuleDTS' @@ -13,35 +12,6 @@ export function generateGraphQLTemplate(data: { }) { const { codegen, dir } = data.options - const schemaTemplate = `type Query { - book(id: ID!): Book! - books: [Book!]! -} - -type Book { - id: ID! - name: String! - email: String! - password: String! - createdAt: String! - updatedAt: String -} - ` - - const documentsTemplate = `query book { - book(id: 1) { - id - name - } -} - ` - - if (!existsSync(join(data.options.schemaDir, 'book.graphql'))) - writeFileSync(join(data.options.schemaDir, 'book.graphql'), schemaTemplate) - - if (!existsSync(join(data.options.documentDir, 'book.graphql'))) - writeFileSync(join(data.options.documentDir, 'book.graphql'), documentsTemplate) - addModuleDTS({ template: /* ts */` import type { H3Event } from 'h3' diff --git a/themes/pergel-auth/app.vue b/themes/pergel-auth/app.vue index b7aa28b1..3d0edfd7 100644 --- a/themes/pergel-auth/app.vue +++ b/themes/pergel-auth/app.vue @@ -1,4 +1,4 @@ -