import 'reflect-metadata'; import { buildTypeDefsAndResolvers, buildSchema, NonEmptyArray } from 'type-graphql'; import { authMiddleware, errorMiddleware, ctxMiddleware, complexityMiddleware } from '@seed/graphql/Middleware'; import Firebase from '@seed/services/auth/FirebaseService'; import { ApiUploadResolver } from './handler'; import { SettingsCache } from '@seed/graphql/Settings'; // eslint-disable-next-line @typescript-eslint/no-var-requires const { ApolloServer } = require('apollo-server'); const PORT = process.env.PORT || 4000; const bootstrap = async (): Promise => { const settingsI = SettingsCache.getInstance(); await settingsI.refreshCache(); try { // // eslint-disable-next-line @typescript-eslint/no-unused-vars // let { typeDefs, resolvers } = await buildTypeDefsAndResolvers({ // resolvers: AppResolvers, // authChecker: authMiddleware, // }); // typeDefs = typeDefs.replace('scalar Upload', 'scalar UploadFix'); // resolvers = resolvers; const schema = await buildSchema({ resolvers: ([...ApiUploadResolver] as unknown) as NonEmptyArray, authChecker: authMiddleware, }); const server = new ApolloServer({ // typeDefs, // resolvers, schema, formatError: errorMiddleware, formatResponse: (response): any => { return response; }, context: ctxMiddleware, tracing: true, plugins: [ { // eslint-disable-next-line @typescript-eslint/explicit-function-return-type requestDidStart: () => ({ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type didResolveOperation({ request, document }) { return complexityMiddleware(schema, request.variables, document); }, }), }, ], }); const token = await Firebase.getInstance().createTokenId(process.env.TEST_ADMIN_EMAIL ? process.env.TEST_ADMIN_EMAIL : ''); console.log(token); server.listen(PORT).then(({ url }) => { console.log(`🚀 Server ready at ${url}`); }); // // await listCustomFields(); // const addres = await addContact({ // email: 'sanawar@makeit-studio.com', // firstName: 'Sanawar', // lastName: 'Syed', // phone: '+32484740444', // }); // await editContactFields(addres, { stage: 'Phase 3' }); } catch (error) { console.log('[GRAPH ERROR]', error); throw error; } }; bootstrap();