diff --git a/src/utils/configPaths.ts b/src/utils/configPaths.ts index 32bc0d4..b2971e6 100644 --- a/src/utils/configPaths.ts +++ b/src/utils/configPaths.ts @@ -1,15 +1,25 @@ import { normalizePath } from 'vite'; +import { resolve } from 'node:path'; import type { CodegenContext } from '@graphql-codegen/cli'; -import { normalizeInstanceOrArray } from '@graphql-codegen/plugin-helpers'; export async function getDocumentPaths( context: CodegenContext, ): Promise { const config = context.getConfig(); - if (!config.documents) return []; + const sourceDocuments = Object.values(config.generates).map((output) => + Array.isArray(output) ? undefined : output.documents, + ); - const normalized = normalizeInstanceOrArray(config.documents); + if (config.documents) { + sourceDocuments.unshift(config.documents); + } + + const normalized = sourceDocuments + .filter((item): item is NonNullable => !!item) + .flat(); + + if (!normalized.length) return []; const documents = await context.loadDocuments(normalized); @@ -26,12 +36,23 @@ export async function getSchemaPaths( ): Promise { const config = context.getConfig(); - if (!config.schema) return []; + const sourceSchemas = Object.values(config.generates).map((output) => + Array.isArray(output) ? undefined : output.schema, + ); + + if (config.schema) { + sourceSchemas.unshift(config.schema); + } + + const schemas = sourceSchemas + .filter((item): item is NonNullable => !!item) + .flat(); - const schemas = normalizeInstanceOrArray(config.schema); + if (!schemas.length) return []; return schemas .filter((schema): schema is string => typeof schema === 'string') .filter(Boolean) + .map((schema) => resolve(schema)) .map(normalizePath); }