UNPKG

commitmnt

Version:

Copy your gitlab and bitbucket commits to a new, publishable github repo

62 lines 3.42 kB
import crypto from 'crypto'; import path from 'path'; import fs from 'fs-extra'; /** * Very simple cache class that uses the filesystem */ export class Cache { dir; /** * @param baseDir the directory to create the .cache directory in * @constructor */ constructor(baseDir = './') { this.dir = path.resolve(baseDir, '.cache'); if (!fs.existsSync(this.dir)) { fs.mkdirSync(this.dir, { recursive: true }); } } /** * Gets a value from the cache * * @param key the cache key to lookup * @template R the type of the return value * @returns the value for `key` as json or null if key doesn't exist */ async get(key) { const file = this.getPath(key); if (!fs.existsSync(file)) return; return fs.readJson(this.getPath(key), { throws: false }); } /** * Sets a value to the cache * * @param key the cache key to set the value at * @param value the value to set * @template R the type of the value */ async set(key, val) { const file = this.getPath(key); return fs.writeJson(file, val); } /** * Gets the path to a file for a given key * * @param key the cache key to get the path for * @returns the path */ getPath(key) { return path.join(this.dir, this.hash(key)); } /** * Hashes a given key * * @param key the cache key to hash * @returns the hashed key */ hash(key) { return crypto.createHash('md5').update(key).digest('hex'); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL2NhY2hlL2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEIsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTFCOztHQUVHO0FBQ0gsTUFBTSxPQUFPLEtBQUs7SUFDaEIsR0FBRyxDQUFTO0lBRVo7OztPQUdHO0lBQ0gsWUFBWSxPQUFPLEdBQUcsSUFBSTtRQUN4QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1QixFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM3QztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFJLEdBQVc7UUFDdEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPO1FBRWpDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUksR0FBVyxFQUFFLEdBQU07UUFDOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxJQUFJLENBQUMsR0FBVztRQUN0QixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0NBQ0YifQ==