| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- "use strict";
- require("dotenv").config();
- const cors = require("cors");
- const express = require("express");
- const helmet = require("helmet");
- const http = require("http");
- const { ApolloServer, gql } = require("apollo-server-express");
- const { ApolloServerPluginDrainHttpServer } = require("apollo-server-core");
- const corsOrigins = process.env.APP_CORS_ORIGINS.split(",");
- const app = express();
- app.enable("trust proxy");
- app.use(cors({ origin: corsOrigins }));
- if (app.get("env") === "production") {
- app.use(helmet());
- app.use(helmet.contentSecurityPolicy());
- }
- const httpServer = http.createServer(app);
- const typeDefs = gql`
- type Hello {
- message: String
- }
- type Query {
- hello: Hello
- }
- `;
- const resolvers = {
- Query: {
- hello: _ => ({ message: "Hello World!" })
- }
- };
- const apollo = new ApolloServer({
- typeDefs,
- resolvers,
- plugin: [ApolloServerPluginDrainHttpServer({ httpServer })]
- });
- apollo.start().then(_ => {
- apollo.applyMiddleware({ app });
- app.all("*", (request, response) => response.send(""));
- httpServer.listen(process.env.APP_PORT);
- let apolloData = httpServer.address();
- console.log(`GraphQL service listening on ${apolloData.address}:${apolloData.port}${apollo.graphqlPath}`);
- }).catch(error => console.log(error.message));
|