// import { generateGraphQlSDLFile } from '@paljs/plugins' import { mergeTypeDefs } from '@graphql-tools/merge' import { makeExecutableSchema } from '@graphql-tools/schema' import fs from 'fs' import { isSpecifiedDirective, isSpecifiedScalarType, print } from 'graphql' import _typeDefs from '../graphql/typeDefs' import _extendTypeDefs_ from '../_extend_/typeDefs' const GRAPHQL_FILE_PATH = process.argv[2] const typeDefs = mergeTypeDefs([ _typeDefs, ..._extendTypeDefs_ ]) const schema = makeExecutableSchema({ typeDefs, // @ts-ignore schemaDirectives: { } },) fs.writeFileSync( GRAPHQL_FILE_PATH, printSchemaWithDirectives(schema) ) // generateGraphQlSDLFile(schema) export function printSchemaWithDirectives(schema) { const str = Object .keys(schema.getTypeMap()) .filter(k => !k.match(/^__/)) .reduce((accum, name) => { const type = schema.getType(name); return !isSpecifiedScalarType(type) ? accum += `${print(type.astNode)}\n` : accum; }, ''); return schema .getDirectives() .reduce((accum, d) => { return !isSpecifiedDirective(d) ? accum += `${print(d.astNode)}\n` : accum; }, str + `${print(schema.astNode)}\n`); }