12345678910111213141516171819202122232425262728293031323334353637 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- function createInMemoryCache(options = { serializable: true }) {
- // eslint-disable-next-line functional/no-let
- let cache = {};
- return {
- get(key, defaultValue, events = {
- miss: () => Promise.resolve(),
- }) {
- const keyAsString = JSON.stringify(key);
- if (keyAsString in cache) {
- return Promise.resolve(options.serializable ? JSON.parse(cache[keyAsString]) : cache[keyAsString]);
- }
- const promise = defaultValue();
- const miss = (events && events.miss) || (() => Promise.resolve());
- return promise.then((value) => miss(value)).then(() => promise);
- },
- set(key, value) {
- // eslint-disable-next-line functional/immutable-data
- cache[JSON.stringify(key)] = options.serializable ? JSON.stringify(value) : value;
- return Promise.resolve(value);
- },
- delete(key) {
- // eslint-disable-next-line functional/immutable-data
- delete cache[JSON.stringify(key)];
- return Promise.resolve();
- },
- clear() {
- cache = {};
- return Promise.resolve();
- },
- };
- }
- exports.createInMemoryCache = createInMemoryCache;
|