Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / @skava/graphql   js

Repository URL to install this package:

Version: 9.0.35-framework 

/ dist / deps / setCookiesOnResponse.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const exotic_1 = require("exotic");
const tough_cookie_1 = require("tough-cookie");
const log_1 = require("../log");
/* Cookies suck :( */
const hasResponseCookies = (response) => exotic_1.isArray(response.headers.get('set-cookie'));
exports.hasResponseCookies = hasResponseCookies;
const parseCookie = (cookie) => {
    return (cookie && tough_cookie_1.Cookie.parse(cookie, { loose: true }).toJSON()) || exotic_1.EMPTY_OBJ;
};
const decodeCookieValue = (cookieVal) => {
    const first = decodeURIComponent(cookieVal);
    return decodeURIComponent(first);
};
/* Because Invalid API cookies breaks things*/
const toCookies = (response) => {
    const header = response.headers.get('set-cookie');
    return exotic_1.isArray(header) ? header : [header];
};
const hasDataAndSessionId = (response) => {
    return exotic_1.isObj(response.data) && response.data.sessionId;
};
const setCookiesOnResponse = (response, context) => {
    const cookies = toCookies(response);
    // @todo @@fixme @@hack
    const sessionId = hasDataAndSessionId(response) &&
        `x-sk-session-id=${response.data.sessionId}`;
    cookies
        .concat([sessionId])
        .filter(Boolean)
        .filter(cookie => {
        const parsed = parseCookie(cookie);
        return parsed.value !== undefined;
    })
        .forEach(cookie => {
        // @todo typing here
        const { key, value, maxAge, path } = parseCookie(cookie);
        const fixedValue = decodeCookieValue(value);
        const cookieValue = {
            // domain: parsed.domain,
            path,
            encode: String,
        };
        if (maxAge) {
            cookieValue.maxAge = maxAge * 1000;
        }
        else {
            cookieValue.maxAge = Date.now() + 10000;
        }
        log_1.logger.debug('setCookiesOnResponse_cookie:', {
            cookie,
            fixedValue,
            cookieValue,
        });
        if (exotic_1.isObj(context.res) && exotic_1.isFunction(context.res.cookie)) {
            context.res.cookie(key, fixedValue, cookieValue);
        }
        else {
            log_1.logger.warn('[setCookiesOnResponse] missing res.cookie');
        }
    });
    // example to send it back
    // const serializedCookies = cookies.map(cookie => {
    //   const mostlyFixed = cookie
    //     .replace('Domain=skavaone.com;', '')
    //     .replace(';Secure', ';')
    //     .replace('Max-Age=3600;', 'Max-Age=3600000;')
    //   const withoutExpires = mostlyFixed.split('Expires=').shift()
    //   return withoutExpires
    // })
    // context.res.header('_Cookies', serializedCookies.join('|||'))
};
exports.setCookiesOnResponse = setCookiesOnResponse;
exports.default = setCookiesOnResponse;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0Q29va2llc09uUmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVwcy9zZXRDb29raWVzT25SZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUE4RDtBQUU5RCwrQ0FBNEM7QUFDNUMsZ0NBQStCO0FBRy9CLHFCQUFxQjtBQUVyQixNQUFNLGtCQUFrQixHQUFHLENBQUMsUUFBa0IsRUFBRSxFQUFFLENBQ2hELGdCQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQTtBQStFZCxnREFBa0I7QUE3RWpELE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBYyxFQUFxQixFQUFFO0lBQ3hELE9BQU8sQ0FBQyxNQUFNLElBQUkscUJBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxrQkFBUyxDQUFBO0FBQ2hGLENBQUMsQ0FBQTtBQUVELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxTQUFpQixFQUFVLEVBQUU7SUFDdEQsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDM0MsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUNsQyxDQUFDLENBQUE7QUFFRCw4Q0FBOEM7QUFDOUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFrQixFQUFZLEVBQUU7SUFDakQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDakQsT0FBTyxnQkFBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDNUMsQ0FBQyxDQUFBO0FBRUQsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFFBQXFCLEVBQUUsRUFBRTtJQUNwRCxPQUFPLGNBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUE7QUFDeEQsQ0FBQyxDQUFBO0FBRUQsTUFBTSxvQkFBb0IsR0FBRyxDQUMzQixRQUFxQixFQUNyQixPQUFnQixFQUNWLEVBQUU7SUFDUixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFbkMsdUJBQXVCO0lBQ3ZCLE1BQU0sU0FBUyxHQUNiLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztRQUM3QixtQkFBbUIsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUU5QyxPQUFPO1NBQ0osTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQztTQUNmLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNmLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNsQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFBO0lBQ25DLENBQUMsQ0FBQztTQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNoQixvQkFBb0I7UUFDcEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN4RCxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzQyxNQUFNLFdBQVcsR0FBRztZQUNsQix5QkFBeUI7WUFDekIsSUFBSTtZQUNKLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQTtRQUNELElBQUksTUFBTSxFQUFFO1lBQ1YsV0FBVyxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFBO1NBQ25DO2FBQU07WUFDTCxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUE7U0FDeEM7UUFFRCxZQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFO1lBQzNDLE1BQU07WUFDTixVQUFVO1lBQ1YsV0FBVztTQUNaLENBQUMsQ0FBQTtRQUVGLElBQUksY0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxtQkFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQTtTQUNqRDthQUFNO1lBQ0wsWUFBTSxDQUFDLElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFBO1NBQ3pEO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFSiwwQkFBMEI7SUFDMUIsb0RBQW9EO0lBQ3BELCtCQUErQjtJQUMvQiwyQ0FBMkM7SUFDM0MsK0JBQStCO0lBQy9CLG9EQUFvRDtJQUNwRCxpRUFBaUU7SUFDakUsMEJBQTBCO0lBQzFCLEtBQUs7SUFDTCxnRUFBZ0U7QUFDbEUsQ0FBQyxDQUFBO0FBRVEsb0RBQW9CO0FBQzdCLGtCQUFlLG9CQUFvQixDQUFBIn0=