Initial commit
This commit is contained in:
91
src/index.ts
Normal file
91
src/index.ts
Normal file
@ -0,0 +1,91 @@
|
||||
'use strict';
|
||||
|
||||
import 'reflect-metadata';
|
||||
import ws from 'ws'; // yarn add ws
|
||||
import express from 'express'; //express
|
||||
import cors from 'cors';
|
||||
import cookieParser from 'cookie-parser';
|
||||
import { useServer } from 'graphql-ws/use/ws';
|
||||
import { execute, subscribe } from 'graphql';
|
||||
import GraphQLserver from '@GraphQL/server';// Server of GraphQL,
|
||||
import expressPlayground from 'graphql-playground-middleware-express';
|
||||
import schema from '@GraphQL/schema';
|
||||
import { config } from '@config';
|
||||
import apiRouter from '@routes';
|
||||
|
||||
const app = express(), //creating app
|
||||
whitelist = config.WHITELIST_URLS,
|
||||
corsOptions = {
|
||||
origin: function (origin: string | undefined, callback: (arg0: Error | null, arg1?: boolean) => void) {
|
||||
if (whitelist.indexOf(origin as string) !== -1 || !origin) {
|
||||
callback(null, true);
|
||||
} else {
|
||||
callback(new Error('Not allowed by CORS'));
|
||||
}
|
||||
},
|
||||
credentials: true
|
||||
};
|
||||
|
||||
//Inicialization of services of express
|
||||
app
|
||||
.use(cookieParser())
|
||||
.use(express.urlencoded({limit: '500mb', extended: true}))
|
||||
.use(express.json({limit: '500mb'}))
|
||||
.use(cors(corsOptions))
|
||||
.use(apiRouter)//Routes de App
|
||||
.use('/graphql', GraphQLserver);//Server of Graphql
|
||||
|
||||
if(config.PLAYGROUND_GRAPHQL === true){
|
||||
app.get('/playground', expressPlayground({
|
||||
endpoint: '/graphql',
|
||||
subscriptionEndpoint: '/graphql',
|
||||
settings: {
|
||||
'request.credentials': 'include', //Include Credentials for playground
|
||||
},
|
||||
}));
|
||||
}
|
||||
|
||||
// DO NOT DO app.listen() unless we're testing this directly
|
||||
if (require.main === module) {
|
||||
|
||||
const server = app.listen(config.PORT, () => {
|
||||
// create and use the websocket server
|
||||
const wsServer = new ws.Server({
|
||||
server,
|
||||
path: '/graphql',
|
||||
});
|
||||
|
||||
useServer({
|
||||
schema,
|
||||
execute,
|
||||
subscribe,
|
||||
// eslint-disable-next-line
|
||||
onConnect: (ctx) => {
|
||||
//console.log('Connect');
|
||||
},
|
||||
// eslint-disable-next-line
|
||||
onSubscribe: (ctx, msg) => {
|
||||
//console.log('Subscribe');
|
||||
},
|
||||
// eslint-disable-next-line
|
||||
onNext: (ctx, msg, args, result) => {
|
||||
//console.debug('Next');
|
||||
},
|
||||
// eslint-disable-next-line
|
||||
onError: (ctx, msg, errors) => {
|
||||
//console.error('Error');
|
||||
},
|
||||
// eslint-disable-next-line
|
||||
onComplete: (ctx, msg) => {
|
||||
//console.log('Complete');
|
||||
},
|
||||
}, wsServer);
|
||||
|
||||
console.log(`Starting Express on port ${config.PORT} and iniciating server of web sockets`);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// Instead do export the app:
|
||||
export default app;
|
Reference in New Issue
Block a user