commitmnt
Version:
Copy your gitlab and bitbucket commits to a new, publishable github repo
68 lines • 3.79 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Cache = void 0;
const crypto_1 = __importDefault(require("crypto"));
const path_1 = __importDefault(require("path"));
const fs_extra_1 = __importDefault(require("fs-extra"));
/**
* Very simple cache class that uses the filesystem
*/
class Cache {
/**
* @param baseDir the directory to create the .cache directory in
* @constructor
*/
constructor(baseDir = './') {
this.dir = path_1.default.resolve(baseDir, '.cache');
if (!fs_extra_1.default.existsSync(this.dir)) {
fs_extra_1.default.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_extra_1.default.existsSync(file))
return;
return fs_extra_1.default.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_extra_1.default.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_1.default.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_1.default.createHash('md5').update(key).digest('hex');
}
}
exports.Cache = Cache;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL2NhY2hlL2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixnREFBd0I7QUFFeEIsd0RBQTBCO0FBRTFCOztHQUVHO0FBQ0gsTUFBYSxLQUFLO0lBR2hCOzs7T0FHRztJQUNILFlBQVksT0FBTyxHQUFHLElBQUk7UUFDeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsa0JBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLGtCQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM3QztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFJLEdBQVc7UUFDdEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQixJQUFJLENBQUMsa0JBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTztRQUVqQyxPQUFPLGtCQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBSSxHQUFXLEVBQUUsR0FBTTtRQUM5QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRS9CLE9BQU8sa0JBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLE9BQU8sY0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxJQUFJLENBQUMsR0FBVztRQUN0QixPQUFPLGdCQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGO0FBOURELHNCQThEQyJ9