2025-09-01 15:09:36 +03:00
|
|
|
|
import type { CodegenConfig } from '@graphql-codegen/cli'
|
|
|
|
|
|
|
2025-09-27 13:20:56 +03:00
|
|
|
|
// 🩵 Динамическая модель выбора источника схемы с антихрупкостью
|
|
|
|
|
|
const getSchemaSource = () => {
|
|
|
|
|
|
// В CI окружении используем локальные файлы для избежания сетевых проблем
|
|
|
|
|
|
if (process.env.CI === 'true') {
|
|
|
|
|
|
console.log('🔧 CI режим: используем локальные файлы схемы')
|
|
|
|
|
|
return ['schema/*.graphql']
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// В dev режиме предпочитаем удаленную схему для актуальности
|
|
|
|
|
|
console.log('🌐 Dev режим: используем удаленную схему')
|
|
|
|
|
|
return 'https://v3.dscrs.site/graphql'
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-01 15:09:36 +03:00
|
|
|
|
const config: CodegenConfig = {
|
|
|
|
|
|
overwrite: true,
|
2025-09-27 13:20:56 +03:00
|
|
|
|
// Адаптивный выбор источника схемы
|
|
|
|
|
|
schema: getSchemaSource(),
|
2025-09-01 15:09:36 +03:00
|
|
|
|
documents: ['panel/graphql/queries/**/*.ts', 'panel/**/*.{ts,tsx}', '!panel/graphql/generated/**'],
|
|
|
|
|
|
generates: {
|
|
|
|
|
|
'./panel/graphql/generated/introspection.json': {
|
|
|
|
|
|
plugins: ['introspection'],
|
|
|
|
|
|
config: {
|
|
|
|
|
|
minify: true
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
'./panel/graphql/generated/schema.graphql': {
|
|
|
|
|
|
plugins: ['schema-ast'],
|
|
|
|
|
|
config: {
|
|
|
|
|
|
includeDirectives: false
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
'./panel/graphql/generated/': {
|
|
|
|
|
|
preset: 'client',
|
|
|
|
|
|
plugins: [],
|
|
|
|
|
|
presetConfig: {
|
|
|
|
|
|
gqlTagName: 'gql',
|
|
|
|
|
|
fragmentMasking: false
|
|
|
|
|
|
},
|
|
|
|
|
|
config: {
|
|
|
|
|
|
scalars: {
|
|
|
|
|
|
DateTime: 'string',
|
|
|
|
|
|
JSON: 'Record<string, any>'
|
|
|
|
|
|
},
|
|
|
|
|
|
// Настройки для правильной работы
|
|
|
|
|
|
skipTypename: false,
|
|
|
|
|
|
useTypeImports: true,
|
|
|
|
|
|
dedupeOperationSuffix: true,
|
|
|
|
|
|
dedupeFragments: true,
|
|
|
|
|
|
// Избегаем конфликтов при объединении
|
|
|
|
|
|
avoidOptionals: false,
|
|
|
|
|
|
enumsAsTypes: false
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
// Глобальные настройки для правильной работы
|
|
|
|
|
|
config: {
|
|
|
|
|
|
skipTypename: false,
|
|
|
|
|
|
useTypeImports: true,
|
|
|
|
|
|
dedupeOperationSuffix: true,
|
|
|
|
|
|
dedupeFragments: true,
|
|
|
|
|
|
// Настройки для объединения схем
|
|
|
|
|
|
avoidOptionals: false,
|
|
|
|
|
|
enumsAsTypes: false
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export default config
|