"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
// @see https://www.apollographql.com/docs/apollo-server/features/data-sources.html#Using-Memcached-Redis-as-a-cache-storage-backend
const exotic_1 = require("exotic");
const apollo_server_cache_redis_1 = require("apollo-server-cache-redis");
const log_1 = require("../log");
const InMemoryKeyValueCache_1 = require("./InMemoryKeyValueCache");
const FileSystemJsonKeyValueCache_1 = require("./FileSystemJsonKeyValueCache");
exports.config = new Map();
/**
* @todo cleanup typings & conditional
*/
function toCache() {
log_1.logger.info('[cache] createCache');
if (exports.config.has('cache')) {
return exports.config.get('cache');
}
else {
if (process.env.CACHE_TYPE === 'redis') {
log_1.logger.info('[cache] createCache: redis');
const cache = new apollo_server_cache_redis_1.RedisCache({
host: 'localhost',
port: 6379,
});
cache.rehydrate = exotic_1.NO_OP;
exports.config.set('cache', cache);
return cache;
}
else if (process.env.CACHE_TYPE === 'fs') {
log_1.logger.info('[cache] createCache: fs');
const cache = new FileSystemJsonKeyValueCache_1.FileSystemJsonKeyValueCache();
exports.config.set('cache', cache);
return cache;
}
else if (process.env.CACHE_TYPE === 'memory' ||
process.env.CACHE_TYPE === 'none' ||
!process.env.CACHE_TYPE) {
log_1.logger.info('[cache] createCache: memory');
const cache = new InMemoryKeyValueCache_1.KeyValueCache();
exports.config.set('cache', cache);
return cache;
}
else {
throw new TypeError('invalid CACHE_TYPE value. Must be `memory` | `none` | `fs` | `redis` | undefined');
}
}
}
exports.toCache = toCache;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2FjaGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvSUFBb0k7QUFDcEksbUNBQThCO0FBQzlCLHlFQUFzRDtBQUN0RCxnQ0FBK0I7QUFDL0IsbUVBQXVEO0FBRXZELCtFQUEyRTtBQWE5RCxRQUFBLE1BQU0sR0FBbUIsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUUvQzs7R0FFRztBQUNILFNBQWdCLE9BQU87SUFDckIsWUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQ2xDLElBQUksY0FBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUN2QixPQUFPLGNBQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7S0FDM0I7U0FBTTtRQUNMLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEtBQUssT0FBTyxFQUFFO1lBQ3RDLFlBQU0sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQTtZQUN6QyxNQUFNLEtBQUssR0FBRyxJQUFJLHNDQUFVLENBQUM7Z0JBQzNCLElBQUksRUFBRSxXQUFXO2dCQUNqQixJQUFJLEVBQUUsSUFBSTthQUVYLENBQW1CLENBQUE7WUFDcEIsS0FBSyxDQUFDLFNBQVMsR0FBRyxjQUFLLENBQUE7WUFDdkIsY0FBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDMUIsT0FBTyxLQUFLLENBQUE7U0FDYjthQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFO1lBQzFDLFlBQU0sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQTtZQUN0QyxNQUFNLEtBQUssR0FBRyxJQUFJLHlEQUEyQixFQUFFLENBQUE7WUFDL0MsY0FBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDMUIsT0FBTyxLQUFLLENBQUE7U0FDYjthQUFNLElBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEtBQUssUUFBUTtZQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsS0FBSyxNQUFNO1lBQ2pDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQ3ZCO1lBQ0EsWUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1lBQzFDLE1BQU0sS0FBSyxHQUFHLElBQUkscUNBQWEsRUFBRSxDQUFBO1lBQ2pDLGNBQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQzFCLE9BQU8sS0FBSyxDQUFBO1NBQ2I7YUFBTTtZQUNMLE1BQU0sSUFBSSxTQUFTLENBQ2pCLGtGQUFrRixDQUNuRixDQUFBO1NBQ0Y7S0FDRjtBQUNILENBQUM7QUFuQ0QsMEJBbUNDIn0=