feat: 초기 프로젝트 설정 및 룰.md 파일 추가
This commit is contained in:
53
api.hyungi.net/node_modules/js-git/mixins/mem-cache.js
generated
vendored
Normal file
53
api.hyungi.net/node_modules/js-git/mixins/mem-cache.js
generated
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
"use strict";
|
||||
|
||||
var encoders = require('../lib/object-codec').encoders;
|
||||
var decoders = require('../lib/object-codec').decoders;
|
||||
var Binary = require('bodec').Binary;
|
||||
|
||||
var cache = memCache.cache = {};
|
||||
module.exports = memCache;
|
||||
|
||||
function memCache(repo) {
|
||||
var loadAs = repo.loadAs;
|
||||
repo.loadAs = loadAsCached;
|
||||
function loadAsCached(type, hash, callback) {
|
||||
if (!callback) return loadAsCached.bind(this, type, hash);
|
||||
if (hash in cache) return callback(null, dupe(type, cache[hash]), hash);
|
||||
loadAs.call(repo, type, hash, function (err, value) {
|
||||
if (value === undefined) return callback(err);
|
||||
if (type !== "blob" || value.length < 100) {
|
||||
cache[hash] = dupe(type, value);
|
||||
}
|
||||
return callback.apply(this, arguments);
|
||||
});
|
||||
}
|
||||
|
||||
var saveAs = repo.saveAs;
|
||||
repo.saveAs = saveAsCached;
|
||||
function saveAsCached(type, value, callback) {
|
||||
if (!callback) return saveAsCached.bind(this, type, value);
|
||||
value = dupe(type, value);
|
||||
saveAs.call(repo, type, value, function (err, hash) {
|
||||
if (err) return callback(err);
|
||||
if (type !== "blob" || value.length < 100) {
|
||||
cache[hash] = value;
|
||||
}
|
||||
return callback(null, hash, value);
|
||||
});
|
||||
}
|
||||
}
|
||||
function dupe(type, value) {
|
||||
if (type === "blob") {
|
||||
if (type.length >= 100) return value;
|
||||
return new Binary(value);
|
||||
}
|
||||
return decoders[type](encoders[type](value));
|
||||
}
|
||||
|
||||
function deepFreeze(obj) {
|
||||
Object.freeze(obj);
|
||||
Object.keys(obj).forEach(function (key) {
|
||||
var value = obj[key];
|
||||
if (typeof value === "object") deepFreeze(value);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user