Repository URL to install this package:
|
Version:
6.2.4 ▾
|
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable import/first */
/* eslint-disable import/no-namespace */
// @hack @fixme
require("./typings");
// ===
require("./bootstrapper/setup");
const express_1 = __importDefault(require("express"));
const compression_1 = __importDefault(require("compression"));
const cookie_parser_1 = __importDefault(require("cookie-parser"));
const body_parser_1 = __importDefault(require("body-parser"));
const apollo_server_express_1 = require("apollo-server-express");
// import { formatError } from 'apollo-errors'
// import { makeExecutableSchema } from 'graphql-tools'
// import resolvers from './resolvers'
// import proxyMiddleware from './proxy'
// import typeDefs from './schema.graphql'
// import * as endpoints from './endpoints'
const correlationId_1 = require("./bootstrapper/api/correlationId");
const cookieMiddleware_1 = require("./deps/cookieMiddleware");
const security_1 = require("./deps/security");
const keyValueCache_1 = require("./deps/keyValueCache");
const graphql_modules_1 = require("./graphql-modules");
// @todo
const { schema, context, dataSources, mergedContextBuilder } = graphql_modules_1.AppModules;
exports.schema = schema;
const pino = require('express-pino-logger')();
exports.log = pino;
exports.pino = pino;
// const schema = makeExecutableSchema({ typeDefs, resolvers })
function createServer() {
// ecomreact-redis.mrmotd.ng.0001.use1.cache.amazonaws.com 6379
const debugCache = new keyValueCache_1.KeyValueCache();
return new apollo_server_express_1.ApolloServer({
schema,
playground: !!process.env.SHOULD_USE_PLAYGROUND,
/**
* @todo add `inspect` for better log?
*/
context(apollo) {
const { req, res } = apollo;
const correlationId = correlationId_1.toCorrelationId(req);
// const sessionId = toSessionId(req)
req.correlationId = correlationId;
// req.sessionId = sessionId
// req['x-sk-session-id'] = sessionId
const moreContext = Object.assign({ req,
res, log: req.log, correlationId }, context);
// Object.assign(moreContext, endpoints)
/**
* @todo this was probably removed for a reason, didn't note it
* @todo split this out
*/
// Object.keys(endpoints)
// // example [catalog, cart, checkout]
// .forEach(key => {
// const bloatedEndpoint = endpoints[key]
// const endpoint = {}
// moreContext[key] = endpoint
// // go through the REQUESTS for each ENDPOINT
// // (catalog.getProductList, etc)
// Object.keys(bloatedEndpoint)
// .filter(requestKey => !!bloatedEndpoint[requestKey].toApollo)
// // example: [getProductDetail, getProductList]
// .forEach(requestKey => {
// const request = bloatedEndpoint[requestKey]
// // could also scope here
// endpoint[requestKey] = request
// })
// })
const computedContext = mergedContextBuilder(context);
// console.log('___context___', Object.keys(computedContext))
Object.assign(moreContext, computedContext);
return moreContext;
},
/**
* @see https://github.com/apollographql/apollo-server/blob/c4d3a93e7bc8a9ffb1692c50a4f766422f30e665/packages/apollo-server-core/src/runHttpQuery.ts#L343
*/
dataSources() {
return dataSources();
// const mergedDataSources = {}
// endpoints...
// Object.keys(endpoints).forEach(key => {
// const endpointGroup = endpoints[key]
//
// // requests...
// Object.keys(endpointGroup).forEach(endpointName => {
// if (mergedDataSources[endpointName]) {
// return
// }
//
// const endpoint = endpointGroup[endpointName]
// if (endpoint.toApollo) {
// // endpoint.toApollo()
// mergedDataSources[endpointName] = endpoint
//
// /**
// * @see https://github.com/apollographql/apollo-server/blob/master/packages/apollo-server-core/src/runHttpQuery.ts#L343
// * issue here is Object.values
// */
// // Object.defineProperty(mergedDataSources, endpointName, {
// // // enumerable: true,
// // // value: endpoint,
// // get() {
// // return endpoint
// // },
// // })
// }
// })
// })
// require('fliplog').quick(mergedDataSources)
// return mergedDataSources
},
tracing: process.env.NODE_ENV !== 'production',
introspection: process.env.NODE_ENV !== 'production',
cache: debugCache,
debug: process.env.NODE_ENV === 'production' ? false : true,
cacheControl: {
defaultMaxAge: 60,
stripFormattedExtensions: false,
},
formatError(error) {
console.error(error);
// require('fliplog').quick(error)
return error;
},
// formatResponse(response) {
// if (process.env.NODE_ENV === 'production') {
// pino.logger.info('formatResponse: ', response)
// } else {
// console.log('formatResponse: ', response)
// }
// // console.log(
// // 'cacheControl: ',
// // JSON.stringify(response.extensions.cacheControl, undefined, 2)
// // )
// // debugCache.set(response.url)
// return response
// },
engine: {
apiKey: process.env.APOLLO_ENGINE_KEY ||
'service:skava-engine:_oygzZUWfir8gDOh7kpgAQ',
},
});
}
function createApp() {
// @todo re-enable continue when starting mocks
// if (process.env.MOCK_GRAPHQL) {
// addMockFunctionsToSchema({
// schema,
// })
// }
const server = createServer();
// Initialize the app and proxy
const app = express_1.default();
// @karthikeyan
// app.use((req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
// // can put error handlers here as the first step
// })
app.use(compression_1.default());
app.use(cookie_parser_1.default());
app.use(body_parser_1.default.json());
app.use((error, req, res, next) => {
if (error instanceof SyntaxError) {
console.log({ error });
res.sendStatus(406).send('Sorry, that resource was not found.');
}
else {
next();
}
});
/**
* @see https://www.npmjs.com/package/cors
* @see https://stackoverflow.com/questions/19743396/cors-cannot-use-wildcard-in-access-control-allow-origin-when-credentials-flag-i
* @see https://www.npmjs.com/package/cors#enabling-cors-pre-flight
*/
// app.options('/graphql', securityOriginMiddleware)
// const apolloMiddlewareBuilt = createApolloMiddleware()
app.use(cookieMiddleware_1.cookieMiddleware);
app.use(pino);
/**
* Added methods without POST to ['access-control-allow-methods ']
* @see https://jira.skava.net/browse/SECTEM-5402
*/
const corsOptions = {
origin: security_1.toHostWithProtocol(),
credentials: true,
methods: ['GET', 'POST'],
};
server.applyMiddleware({ app, cors: corsOptions });
return app;
}
exports.createApp = createApp;
exports.default = createApp;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUFpQztBQUNqQyx3Q0FBd0M7QUFDeEMsZUFBZTtBQUNmLHFCQUFrQjtBQUNsQixNQUFNO0FBQ04sZ0NBQTZCO0FBQzdCLHNEQUE2QjtBQUM3Qiw4REFBcUM7QUFDckMsa0VBQXdDO0FBQ3hDLDhEQUFvQztBQUNwQyxpRUFBb0Q7QUFNcEQsOENBQThDO0FBQzlDLHVEQUF1RDtBQUN2RCxzQ0FBc0M7QUFDdEMsd0NBQXdDO0FBQ3hDLDBDQUEwQztBQUMxQywyQ0FBMkM7QUFDM0Msb0VBQWtFO0FBQ2xFLDhEQUEwRDtBQUMxRCw4Q0FBb0Q7QUFDcEQsd0RBQW9EO0FBRXBELHVEQUE4QztBQUU5QyxRQUFRO0FBQ1IsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsNEJBQVUsQ0FBQTtBQTBOdkUsd0JBQU07QUF4TlIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQTtBQTBObkMsbUJBQUc7QUFDWCxvQkFBSTtBQXpOTiwrREFBK0Q7QUFFL0QsU0FBUyxZQUFZO0lBQ25CLCtEQUErRDtJQUMvRCxNQUFNLFVBQVUsR0FBRyxJQUFJLDZCQUFhLEVBQUUsQ0FBQTtJQUN0QyxPQUFPLElBQUksb0NBQVksQ0FBQztRQUN0QixNQUFNO1FBQ04sVUFBVSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQjtRQUUvQzs7V0FFRztRQUNILE9BQU8sQ0FBQyxNQUFNO1lBQ1osTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUE7WUFFM0IsTUFBTSxhQUFhLEdBQUcsK0JBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMxQyxxQ0FBcUM7WUFDckMsR0FBRyxDQUFDLGFBQWEsR0FBRyxhQUFh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