77 lines
3.4 KiB
JavaScript
77 lines
3.4 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var NoStorageManager = /** @class */ (function () {
|
|
function NoStorageManager() {
|
|
}
|
|
NoStorageManager.prototype.reserve = function (ctx, fs, size, callback) {
|
|
callback(true);
|
|
};
|
|
NoStorageManager.prototype.evaluateCreate = function (ctx, fs, path, type, callback) {
|
|
callback(0);
|
|
};
|
|
NoStorageManager.prototype.evaluateContent = function (ctx, fs, expectedSize, callback) {
|
|
callback(0);
|
|
};
|
|
NoStorageManager.prototype.evaluateProperty = function (ctx, fs, name, value, attributes, callback) {
|
|
callback(0);
|
|
};
|
|
NoStorageManager.prototype.available = function (ctx, fs, callback) {
|
|
callback(-1);
|
|
};
|
|
NoStorageManager.prototype.reserved = function (ctx, fs, callback) {
|
|
callback(0);
|
|
};
|
|
return NoStorageManager;
|
|
}());
|
|
exports.NoStorageManager = NoStorageManager;
|
|
var PerUserStorageManager = /** @class */ (function () {
|
|
function PerUserStorageManager(limitPerUser) {
|
|
this.limitPerUser = limitPerUser;
|
|
this.storage = {};
|
|
}
|
|
PerUserStorageManager.prototype.reserve = function (ctx, fs, size, callback) {
|
|
var nb = this.storage[ctx.user.uid];
|
|
if (nb === undefined)
|
|
nb = 0;
|
|
nb += size;
|
|
if (nb > this.limitPerUser)
|
|
return callback(false);
|
|
this.storage[ctx.user.uid] = Math.max(0, nb);
|
|
callback(true);
|
|
};
|
|
PerUserStorageManager.prototype.evaluateCreate = function (ctx, fs, path, type, callback) {
|
|
fs.getFullPath(ctx, path, function (e, fullPath) {
|
|
callback(fullPath.toString().length);
|
|
});
|
|
};
|
|
PerUserStorageManager.prototype.evaluateContent = function (ctx, fs, expectedSize, callback) {
|
|
callback(expectedSize);
|
|
};
|
|
PerUserStorageManager.prototype.evalPropValue = function (value) {
|
|
var _this = this;
|
|
if (!value)
|
|
return 0;
|
|
if (value.constructor === String)
|
|
return value.length;
|
|
if (Array.isArray(value))
|
|
return value.map(function (el) { return _this.evalPropValue(el); }).reduce(function (p, n) { return p + n; }, 0);
|
|
var xml = value;
|
|
var attributesLength = Object.keys(xml.attributes).map(function (at) { return at.length + xml.attributes[at].length; }).reduce(function (p, n) { return p + n; }, 0);
|
|
// tslint:disable-next-line:restrict-plus-operands
|
|
return xml.name.length + attributesLength + (xml.elements && xml.elements.length > 0 ? this.evalPropValue(xml.elements) : 0);
|
|
};
|
|
PerUserStorageManager.prototype.evaluateProperty = function (ctx, fs, name, value, attributes, callback) {
|
|
callback(name.length + Object.keys(attributes).map(function (ak) { return attributes[ak].length + ak.length; }).reduce(function (p, n) { return p + n; }, 0) + this.evalPropValue(value));
|
|
};
|
|
PerUserStorageManager.prototype.available = function (ctx, fs, callback) {
|
|
var nb = this.storage[ctx.user.uid];
|
|
callback(nb === undefined ? this.limitPerUser : this.limitPerUser - nb);
|
|
};
|
|
PerUserStorageManager.prototype.reserved = function (ctx, fs, callback) {
|
|
var nb = this.storage[ctx.user.uid];
|
|
callback(nb === undefined ? 0 : nb);
|
|
};
|
|
return PerUserStorageManager;
|
|
}());
|
|
exports.PerUserStorageManager = PerUserStorageManager;
|