gqlCodegen.ts
1 import type { AddPluginConfig } from '@graphql-codegen/add'; 2 import type { CodegenConfig } from '@graphql-codegen/cli'; 3 import type { TypeScriptPluginConfig } from '@graphql-codegen/typescript'; 4 import type { TypeScriptDocumentsPluginConfig } from '@graphql-codegen/typescript-operations'; 5 import { loadConfigSync } from 'graphql-config'; 6 7 const gqlConfig = loadConfigSync({ 8 throwOnEmpty: true, 9 throwOnMissing: true, 10 }); 11 12 export const commentsProject = gqlConfig.getProject('comments'); 13 14 const typescriptConfig: TypeScriptPluginConfig = { 15 strictScalars: true, 16 defaultScalarType: 'unknown', 17 scalars: { 18 ISO8601Date: 'string', 19 ISO8601DateTime: 'string', 20 JSON: 'unknown', 21 }, 22 skipTypename: true, 23 useTypeImports: true, 24 inlineFragmentTypes: 'combine', 25 declarationKind: 'interface', 26 printFieldsOnNewLines: true, 27 }; 28 29 const typescriptOperationsConfig: TypeScriptDocumentsPluginConfig = { 30 arrayInputCoercion: false, 31 }; 32 33 const config = { 34 ignoreNoDocuments: true, 35 generates: { 36 './src/gql/comments/graphql.ts': { 37 schema: commentsProject.schema, 38 documents: commentsProject.documents, 39 plugins: [ 40 { add: { content: '/* eslint-disable */' } satisfies AddPluginConfig }, 41 { typescript: {} }, 42 { 'typescript-operations': {} }, 43 ], 44 config: { 45 ...typescriptConfig, 46 ...typescriptOperationsConfig, 47 }, 48 }, 49 }, 50 } satisfies CodegenConfig; 51 52 export default config;