angular-pipes
Version:
Angular pipes library
71 lines • 8.9 kB
JavaScript
import * as tslib_1 from "tslib";
import { Pipe, NgModule } from '@angular/core';
import { isNumberFinite, isPositive, isInteger, toDecimal } from '../utils/utils';
var BytesPipe = /** @class */ (function () {
function BytesPipe() {
}
BytesPipe_1 = BytesPipe;
BytesPipe.prototype.transform = function (input, decimal, from, to) {
if (decimal === void 0) { decimal = 0; }
if (from === void 0) { from = 'B'; }
if (!(isNumberFinite(input) && isNumberFinite(decimal) && isInteger(decimal) && isPositive(decimal))) {
return input;
}
var bytes = input;
var unit = from;
while (unit !== 'B') {
bytes *= 1024;
unit = BytesPipe_1.formats[unit].prev;
}
if (to) {
var format = BytesPipe_1.formats[to];
var result = toDecimal(BytesPipe_1.calculateResult(format, bytes), decimal);
return BytesPipe_1.formatResult(result, to);
}
for (var key in BytesPipe_1.formats) {
if (BytesPipe_1.formats.hasOwnProperty(key)) {
var format = BytesPipe_1.formats[key];
if (bytes < format.max) {
var result = toDecimal(BytesPipe_1.calculateResult(format, bytes), decimal);
return BytesPipe_1.formatResult(result, key);
}
}
}
};
BytesPipe.formatResult = function (result, unit) {
return result + " " + unit;
};
BytesPipe.calculateResult = function (format, bytes) {
var prev = format.prev ? BytesPipe_1.formats[format.prev] : undefined;
return prev ? bytes / prev.max : bytes;
};
var BytesPipe_1;
BytesPipe.formats = {
B: { max: 1024 },
kB: { max: Math.pow(1024, 2), prev: 'B' },
KB: { max: Math.pow(1024, 2), prev: 'B' },
MB: { max: Math.pow(1024, 3), prev: 'kB' },
GB: { max: Math.pow(1024, 4), prev: 'MB' },
TB: { max: Number.MAX_SAFE_INTEGER, prev: 'GB' },
};
BytesPipe = BytesPipe_1 = tslib_1.__decorate([
Pipe({
name: 'bytes',
})
], BytesPipe);
return BytesPipe;
}());
export { BytesPipe };
var NgBytesPipeModule = /** @class */ (function () {
function NgBytesPipeModule() {
}
NgBytesPipeModule = tslib_1.__decorate([
NgModule({
declarations: [BytesPipe],
exports: [BytesPipe],
})
], NgBytesPipeModule);
return NgBytesPipeModule;
}());
export { NgBytesPipeModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItcGlwZXMvIiwic291cmNlcyI6WyJtYXRoL2J5dGVzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPbEY7SUFBQTtJQWtEQSxDQUFDO2tCQWxEWSxTQUFTO0lBVXBCLDZCQUFTLEdBQVQsVUFBVSxLQUFVLEVBQUUsT0FBbUIsRUFBRSxJQUFvQixFQUFFLEVBQWE7UUFBeEQsd0JBQUEsRUFBQSxXQUFtQjtRQUFFLHFCQUFBLEVBQUEsVUFBb0I7UUFDN0QsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7WUFDcEcsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsT0FBTyxJQUFJLEtBQUssR0FBRyxFQUFFO1lBQ25CLEtBQUssSUFBSSxJQUFJLENBQUM7WUFDZCxJQUFJLEdBQUcsV0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFLLENBQUM7U0FDdEM7UUFFRCxJQUFJLEVBQUUsRUFBRTtZQUNOLElBQU0sTUFBTSxHQUFHLFdBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFckMsSUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFdBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRTVFLE9BQU8sV0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDM0M7UUFFRCxLQUFLLElBQU0sR0FBRyxJQUFJLFdBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDbkMsSUFBSSxXQUFTLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDekMsSUFBTSxNQUFNLEdBQUcsV0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtvQkFDdEIsSUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFdBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUU1RSxPQUFPLFdBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2lCQUM1QzthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sc0JBQVksR0FBbkIsVUFBb0IsTUFBYyxFQUFFLElBQVk7UUFDOUMsT0FBVSxNQUFNLFNBQUksSUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFTSx5QkFBZSxHQUF0QixVQUF1QixNQUF3QyxFQUFFLEtBQWE7UUFDNUUsSUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN6QyxDQUFDOztJQWhETSxpQkFBTyxHQUF3RDtRQUNwRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO1FBQ2hCLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO1FBQ3pDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO1FBQ3pDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1FBQzFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1FBQzFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtLQUNqRCxDQUFDO0lBUlMsU0FBUztRQUhyQixJQUFJLENBQUM7WUFDSixJQUFJLEVBQUUsT0FBTztTQUNkLENBQUM7T0FDVyxTQUFTLENBa0RyQjtJQUFELGdCQUFDO0NBQUEsQUFsREQsSUFrREM7U0FsRFksU0FBUztBQXdEdEI7SUFBQTtJQUFnQyxDQUFDO0lBQXBCLGlCQUFpQjtRQUo3QixRQUFRLENBQUM7WUFDUixZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDekIsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDO1NBQ3JCLENBQUM7T0FDVyxpQkFBaUIsQ0FBRztJQUFELHdCQUFDO0NBQUEsQUFBakMsSUFBaUM7U0FBcEIsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNOdW1iZXJGaW5pdGUsIGlzUG9zaXRpdmUsIGlzSW50ZWdlciwgdG9EZWNpbWFsIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xyXG5cclxuZXhwb3J0IHR5cGUgQnl0ZVVuaXQgPSAnQicgfCAna0InIHwgJ0tCJyB8ICdNQicgfCAnR0InIHwgJ1RCJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnYnl0ZXMnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQnl0ZXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgc3RhdGljIGZvcm1hdHM6IHsgW2tleTogc3RyaW5nXTogeyBtYXg6IG51bWJlcjsgcHJldj86IEJ5dGVVbml0IH0gfSA9IHtcclxuICAgIEI6IHsgbWF4OiAxMDI0IH0sXHJcbiAgICBrQjogeyBtYXg6IE1hdGgucG93KDEwMjQsIDIpLCBwcmV2OiAnQicgfSxcclxuICAgIEtCOiB7IG1heDogTWF0aC5wb3coMTAyNCwgMiksIHByZXY6ICdCJyB9LCAvLyBCYWNrd2FyZCBjb21wYXRpYmxlXHJcbiAgICBNQjogeyBtYXg6IE1hdGgucG93KDEwMjQsIDMpLCBwcmV2OiAna0InIH0sXHJcbiAgICBHQjogeyBtYXg6IE1hdGgucG93KDEwMjQsIDQpLCBwcmV2OiAnTUInIH0sXHJcbiAgICBUQjogeyBtYXg6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLCBwcmV2OiAnR0InIH0sXHJcbiAgfTtcclxuXHJcbiAgdHJhbnNmb3JtKGlucHV0OiBhbnksIGRlY2ltYWw6IG51bWJlciA9IDAsIGZyb206IEJ5dGVVbml0ID0gJ0InLCB0bz86IEJ5dGVVbml0KTogYW55IHtcclxuICAgIGlmICghKGlzTnVtYmVyRmluaXRlKGlucHV0KSAmJiBpc051bWJlckZpbml0ZShkZWNpbWFsKSAmJiBpc0ludGVnZXIoZGVjaW1hbCkgJiYgaXNQb3NpdGl2ZShkZWNpbWFsKSkpIHtcclxuICAgICAgcmV0dXJuIGlucHV0O1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBieXRlcyA9IGlucHV0O1xyXG4gICAgbGV0IHVuaXQgPSBmcm9tO1xyXG4gICAgd2hpbGUgKHVuaXQgIT09ICdCJykge1xyXG4gICAgICBieXRlcyAqPSAxMDI0O1xyXG4gICAgICB1bml0ID0gQnl0ZXNQaXBlLmZvcm1hdHNbdW5pdF0ucHJldiE7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRvKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1hdCA9IEJ5dGVzUGlwZS5mb3JtYXRzW3RvXTtcclxuXHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRvRGVjaW1hbChCeXRlc1BpcGUuY2FsY3VsYXRlUmVzdWx0KGZvcm1hdCwgYnl0ZXMpLCBkZWNpbWFsKTtcclxuXHJcbiAgICAgIHJldHVybiBCeXRlc1BpcGUuZm9ybWF0UmVzdWx0KHJlc3VsdCwgdG8pO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IGluIEJ5dGVzUGlwZS5mb3JtYXRzKSB7XHJcbiAgICAgIGlmIChCeXRlc1BpcGUuZm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gQnl0ZXNQaXBlLmZvcm1hdHNba2V5XTtcclxuICAgICAgICBpZiAoYnl0ZXMgPCBmb3JtYXQubWF4KSB7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0b0RlY2ltYWwoQnl0ZXNQaXBlLmNhbGN1bGF0ZVJlc3VsdChmb3JtYXQsIGJ5dGVzKSwgZGVjaW1hbCk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIEJ5dGVzUGlwZS5mb3JtYXRSZXN1bHQocmVzdWx0LCBrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZvcm1hdFJlc3VsdChyZXN1bHQ6IG51bWJlciwgdW5pdDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtyZXN1bHR9ICR7dW5pdH1gO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNhbGN1bGF0ZVJlc3VsdChmb3JtYXQ6IHsgbWF4OiBudW1iZXI7IHByZXY/OiBCeXRlVW5pdCB9LCBieXRlczogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBwcmV2ID0gZm9ybWF0LnByZXYgPyBCeXRlc1BpcGUuZm9ybWF0c1tmb3JtYXQucHJldl0gOiB1bmRlZmluZWQ7XHJcbiAgICByZXR1cm4gcHJldiA/IGJ5dGVzIC8gcHJldi5tYXggOiBieXRlcztcclxuICB9XHJcbn1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbQnl0ZXNQaXBlXSxcclxuICBleHBvcnRzOiBbQnl0ZXNQaXBlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nQnl0ZXNQaXBlTW9kdWxlIHt9XHJcbiJdfQ==