80 lines
2.7 KiB
TypeScript
80 lines
2.7 KiB
TypeScript
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<any> => {
|
|
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<Function>,
|
|
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();
|