2025-10-01 19:55:38 +02:00

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;