Back | Home
الـ Path الحالي: /home/picotech/domains/instantly.picotech.app/public_html/public/uploads/../uploads/../../../../instantly.picotech.app/homes/../../wa.picotech.app/public_html/node_modules/escape-html/../././form-data/../methods/../lodash.clonedeep/../ws/../././cliui/../validator/./../destroy/../cache-manager/dist
الملفات الموجودة في هذا الـ Path:
.
..
caching.d.ts
caching.js
caching.js.map
index.d.ts
index.js
index.js.map
multi-caching.d.ts
multi-caching.js
multi-caching.js.map
stores
tsconfig.build.tsbuildinfo

مشاهدة ملف: caching.js

"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.caching = void 0;
const stores_1 = require("./stores");
/**
 * Generic caching interface that wraps any caching library with a compatible interface.
 */
function caching(factory, args) {
    return __awaiter(this, void 0, void 0, function* () {
        let store;
        if (factory === 'memory')
            store = (0, stores_1.memoryStore)(args);
        else if (typeof factory === 'function')
            store = yield factory(args);
        else
            store = factory;
        return {
            /**
             * Wraps a function in cache. I.e., the first time the function is run,
             * its results are stored in cache so subsequent calls retrieve from cache
             * instead of calling the function.
        
             * @example
             * const result = await cache.wrap('key', () => Promise.resolve(1));
             *
             */
            wrap: (key, fn, ttl) => __awaiter(this, void 0, void 0, function* () {
                const value = yield store.get(key);
                if (value === undefined) {
                    const result = yield fn();
                    const cacheTTL = typeof ttl === 'function' ? ttl(result) : ttl;
                    yield store.set(key, result, cacheTTL);
                    return result;
                }
                else if (args === null || args === void 0 ? void 0 : args.refreshThreshold) {
                    const cacheTTL = typeof ttl === 'function' ? ttl(value) : ttl;
                    const remainingTtl = yield store.ttl(key);
                    if (remainingTtl < args.refreshThreshold) {
                        fn().then((result) => store.set(key, result, cacheTTL));
                    }
                }
                return value;
            }),
            store: store,
            del: (key) => store.del(key),
            get: (key) => store.get(key),
            set: (key, value, ttl) => store.set(key, value, ttl),
            reset: () => store.reset(),
        };
    });
}
exports.caching = caching;
//# sourceMappingURL=caching.js.map