Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/graphql / dist / app.js
Size: Mime:
"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 correlationId_1 = require("./bootstrapper/config/correlationId");
const cookieMiddleware_1 = require("./deps/cookieMiddleware");
const keyValueCache_1 = require("./deps/keyValueCache");
const logger_1 = require("@skava/logger");
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 = new keyValueCache_1.KeyValueCache();
    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_1.logger.info('formatResponse: ', whatWeWantToLog);
            if (hasOtherThings) {
                logger_1.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);
    /**
     * Added methods without POST to ['access-control-allow-methods ']
     * @see https://jira.skava.net/browse/SECTEM-5402
     */
    const corsOptions = {
        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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLGlDQUFpQztBQUNqQyx3Q0FBd0M7QUFDeEMsZUFBZTtBQUNmLHFCQUFrQjtBQUNsQixNQUFNO0FBQ04sZ0NBQTZCO0FBQzdCLHNEQUE2QjtBQUM3Qix3Q0FBd0M7QUFDeEMsa0VBQXdDO0FBQ3hDLDhEQUFvQztBQUNwQyxpRUFBb0Q7QUFPcEQsdUVBQXFFO0FBQ3JFLDhEQUEwRDtBQUMxRCx3REFBb0Q7QUFDcEQsMENBQXdEO0FBQ3hELDBEQUEyRTtBQUMzRSx1REFBOEM7QUFFOUMsUUFBUTtBQUNSLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLDRCQUFVLENBQUE7QUFvTGhFLHdCQUFNO0FBbExmLCtEQUErRDtBQUcvRCxTQUFTLFlBQVk7SUFDbkIsK0RBQStEO0lBQy9ELE1BQU0sVUFBVSxHQUFHLElBQUksNkJBQWEsRUFBRSxDQUFBO0lBQ3RDLE9BQU8sSUFBSSxvQ0FBWSxDQUFDO1FBQ3RCLFFBQVE7UUFDUixnQkFBZ0I7UUFDaEIsa0NBQWtDO1FBQ2xDLEtBQUs7UUFDTCxNQUFNO1FBQ04sVUFBVSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQjtRQUUvQzs7V0FFRztRQUNILE9BQU8sQ0FBQyxNQUFvRDtZQUMxRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQTtZQUMzQixNQUFNLEtBQUssR0FBRyxzQkFBSyxDQUFDLElBQUksRUFBRSxDQUFBO1lBQzFCLE1BQU0sYUFBYSxHQUFHLCtCQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDMUMsTUFBTSxJQUFJLEdBQUcsNkJBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBRTFDLCtCQUFjLENB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