Repository URL to install this package:
|
Version:
9.0.16 ▾
|
"use strict";
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
t[p[i]] = s[p[i]];
return t;
};
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"));
// import compression from '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");
const pingMiddleware_1 = require("./deps/pingMiddleware");
const logger_1 = require("@skava/logger");
const correlationId_1 = require("./bootstrapper/config/correlationId");
const cookieMiddleware_1 = require("./deps/cookieMiddleware");
const cache_1 = require("./cache");
const preview_1 = require("./preview");
const decorateReqRes_1 = require("./deps/decorateReqRes");
const graphql_modules_1 = require("./graphql-modules");
// @todo
const { schema, context, dataSources, mergedContextBuilder } = graphql_modules_1.AppModules;
exports.schema = schema;
// const schema = makeExecutableSchema({ typeDefs, resolvers })
function createServer() {
// ecomreact-redis.mrmotd.ng.0001.use1.cache.amazonaws.com 6379
const debugCache = cache_1.toCache();
return new apollo_server_express_1.ApolloServer({
// @todo
// extensions: [
// () => new LoggingExtension(),
// ],
schema,
playground: !!process.env.SHOULD_USE_PLAYGROUND,
/**
* @todo add `inspect` for better log?
*/
context(apollo) {
const { req, res } = apollo;
const timer = decorateReqRes_1.Timer.init();
const correlationId = correlationId_1.toCorrelationId(req);
const meta = decorateReqRes_1.toReqResMeta(req, res, timer);
decorateReqRes_1.decorateReqRes(req, res, { meta, correlationId, timer });
const moreContext = Object.assign({ req,
res,
// @michael - need to do same thing as ref store - @skava/request uses this
log: req.log, correlationId }, context);
logger_1.logger.info('[graphql-server] starting request', meta);
const computedContext = mergedContextBuilder(context);
Object.assign(moreContext, computedContext);
return moreContext;
},
/**
* @see https://github.com/apollographql/apollo-server/blob/master/packages/apollo-server-core/src/runHttpQuery.ts#L343
* @see https://github.com/apollographql/apollo-server/blob/c4d3a93e7bc8a9ffb1692c50a4f766422f30e665/packages/apollo-server-core/src/runHttpQuery.ts#L343
*/
dataSources() {
return dataSources();
},
tracing: process.env.NODE_ENV !== 'production',
// process.env.NODE_ENV !== 'production',
debug: false,
introspection: true,
cache: debugCache,
cacheControl: {
defaultMaxAge: 60,
stripFormattedExtensions: true,
},
/**
* @see https://blog.apollographql.com/full-stack-error-handling-with-graphql-apollo-5c12da407210
* @see https://github.com/apollographql/apollo-server/issues/1166
* @see https://github.com/apollographql/apollo-server/blob/19478920e4a6bdbf57b10ddc782e685542fd9bd4/packages/apollo-server-core/src/formatters.ts#L14
* @see https://www.apollographql.com/docs/apollo-server/features/errors.html
*/
formatError(error) {
// if (process.env.NODE_ENV === 'test') {
// return error
// }
logger_1.logger.error(error);
// require('fliplog').quick(error)
return error;
},
formatResponse(response = {}) {
if (process.env.NODE_ENV === 'test') {
return response;
}
const { data } = response, otherResponseThings = __rest(response, ["data"]);
const datas = data || {};
const { __schema } = datas, whatWeWantToLog = __rest(datas, ["__schema"]);
const hasOtherThings = Object.keys(otherResponseThings).length > 0;
// logger.info('formatResponse: ', whatWeWantToLog)
// if (hasOtherThings) {
// logger.info('formatResponse [rest]: ', otherResponseThings)
// }
// 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();
// app.use(compression())
app.use(cookie_parser_1.default());
app.use(body_parser_1.default.json());
app.use((error, req, res, next) => {
if (error instanceof SyntaxError) {
logger_1.logger.error(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(logger_1.loggerMiddleware);
app.use('/preview', preview_1.preview);
app.get('/ping', pingMiddleware_1.pingMiddleware);
/**
* Added methods without POST to ['access-control-allow-methods ']
* @see https://jira.skava.net/browse/SECTEM-5402
*/
const corsOptions = {
// origin: toHostWithProtocol(), // for demo
// https://github.com/expressjs/cors#configuration-options
// https://github.com/expressjs/cors/blob/master/lib/index.js#L60
origin: true,
credentials: true,
methods: ['GET', 'POST', 'OPTIONS'],
};
server.applyMiddleware({ app, cors: corsOptions });
return app;
}
exports.createApp = createApp;
exports.default = createApp;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLGlDQUFpQztBQUNqQyx3Q0FBd0M7QUFDeEMsZUFBZTtBQUNmLHFCQUFrQjtBQUNsQixNQUFNO0FBQ04sZ0NBQTZCO0FBQzdCLHNEQUE2QjtBQUM3Qix3Q0FBd0M7QUFDeEMsa0VBQXdDO0FBQ3hDLDhEQUFvQztBQUNwQyxpRUFBb0Q7QUFPcEQsMERBQXNEO0FBQ3RELDBDQUF3RDtBQUN4RCx1RUFBcUU7QUFDckUsOERBQTBEO0FBQzFELG1DQUFpQztBQUNqQyx1Q0FBbUM7QUFDbkMsMERBQTJFO0FBQzNFLHVEQUE4QztBQUU5QyxRQUFRO0FBQ1IsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsNEJBQVUsQ0FBQTtBQXlMaEUsd0JBQU07QUF2TGYsK0RBQStEO0FBRS9ELFNBQVMsWUFBWTtJQUNuQiwrREFBK0Q7SUFDL0QsTUFBTSxVQUFVLEdBQUcsZUFBTyxFQUFFLENBQUE7SUFDNUIsT0FBTyxJQUFJLG9DQUFZLENBQUM7UUFDdEIsUUFBUTtRQUNSLGdCQUFnQjtRQUNoQixrQ0FBa0M7UUFDbEMsS0FBSztRQUNMLE1BQU07UUFDTixVQUFVLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCO1FBRS9DOztXQUVHO1FBQ0gsT0FBTyxDQUFDLE1BQXFEO1lBQzNELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFBO1lBQzNCLE1BQU0sS0FBSyxHQUFHLHNCQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7WUFDMUIsTUFBTSxhQUFhLEdBQUcsK0JBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMxQyxNQUFNLElBQUksR0FBRyw2QkFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFD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