angular-pipes
Version:
Angular pipes library
62 lines • 8.45 kB
JavaScript
import * as tslib_1 from "tslib";
var BytesPipe_1;
import { Pipe, NgModule } from '@angular/core';
import { isNumberFinite, isPositive, isInteger, toDecimal } from '../utils/utils';
let BytesPipe = BytesPipe_1 = class BytesPipe {
transform(input, decimal = 0, from = 'B', to) {
if (!(isNumberFinite(input) && isNumberFinite(decimal) && isInteger(decimal) && isPositive(decimal))) {
return input;
}
let bytes = input;
let unit = from;
while (unit !== 'B') {
bytes *= 1024;
unit = BytesPipe_1.formats[unit].prev;
}
if (to) {
const format = BytesPipe_1.formats[to];
const result = toDecimal(BytesPipe_1.calculateResult(format, bytes), decimal);
return BytesPipe_1.formatResult(result, to);
}
for (const key in BytesPipe_1.formats) {
if (BytesPipe_1.formats.hasOwnProperty(key)) {
const format = BytesPipe_1.formats[key];
if (bytes < format.max) {
const result = toDecimal(BytesPipe_1.calculateResult(format, bytes), decimal);
return BytesPipe_1.formatResult(result, key);
}
}
}
}
static formatResult(result, unit) {
return `${result} ${unit}`;
}
static calculateResult(format, bytes) {
const prev = format.prev ? BytesPipe_1.formats[format.prev] : undefined;
return prev ? bytes / prev.max : bytes;
}
};
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);
export { BytesPipe };
let NgBytesPipeModule = class NgBytesPipeModule {
};
NgBytesPipeModule = tslib_1.__decorate([
NgModule({
declarations: [BytesPipe],
exports: [BytesPipe],
})
], NgBytesPipeModule);
export { NgBytesPipeModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItcGlwZXMvIiwic291cmNlcyI6WyJtYXRoL2J5dGVzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT2xGLElBQWEsU0FBUyxpQkFBdEIsTUFBYSxTQUFTO0lBVXBCLFNBQVMsQ0FBQyxLQUFVLEVBQUUsVUFBa0IsQ0FBQyxFQUFFLE9BQWlCLEdBQUcsRUFBRSxFQUFhO1FBQzVFLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO1lBQ3BHLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLE9BQU8sSUFBSSxLQUFLLEdBQUcsRUFBRTtZQUNuQixLQUFLLElBQUksSUFBSSxDQUFDO1lBQ2QsSUFBSSxHQUFHLFdBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSyxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxFQUFFLEVBQUU7WUFDTixNQUFNLE1BQU0sR0FBRyxXQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRXJDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxXQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUU1RSxPQUFPLFdBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFTLENBQUMsT0FBTyxFQUFFO1lBQ25DLElBQUksV0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3pDLE1BQU0sTUFBTSxHQUFHLFdBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7b0JBQ3RCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxXQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFFNUUsT0FBTyxXQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztpQkFDNUM7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBYyxFQUFFLElBQVk7UUFDOUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUF3QyxFQUFFLEtBQWE7UUFDNUUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN6QyxDQUFDO0NBQ0YsQ0FBQTtBQWpEUSxpQkFBTyxHQUF3RDtJQUNwRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO0lBQ2hCLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO0lBQ3pDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO0lBQ3pDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0lBQzFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0lBQzFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtDQUNqRCxDQUFDO0FBUlMsU0FBUztJQUhyQixJQUFJLENBQUM7UUFDSixJQUFJLEVBQUUsT0FBTztLQUNkLENBQUM7R0FDVyxTQUFTLENBa0RyQjtTQWxEWSxTQUFTO0FBd0R0QixJQUFhLGlCQUFpQixHQUE5QixNQUFhLGlCQUFpQjtDQUFHLENBQUE7QUFBcEIsaUJBQWlCO0lBSjdCLFFBQVEsQ0FBQztRQUNSLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN6QixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7S0FDckIsQ0FBQztHQUNXLGlCQUFpQixDQUFHO1NBQXBCLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzTnVtYmVyRmluaXRlLCBpc1Bvc2l0aXZlLCBpc0ludGVnZXIsIHRvRGVjaW1hbCB9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuXHJcbmV4cG9ydCB0eXBlIEJ5dGVVbml0ID0gJ0InIHwgJ2tCJyB8ICdLQicgfCAnTUInIHwgJ0dCJyB8ICdUQic7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2J5dGVzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJ5dGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHN0YXRpYyBmb3JtYXRzOiB7IFtrZXk6IHN0cmluZ106IHsgbWF4OiBudW1iZXI7IHByZXY/OiBCeXRlVW5pdCB9IH0gPSB7XHJcbiAgICBCOiB7IG1heDogMTAyNCB9LFxyXG4gICAga0I6IHsgbWF4OiBNYXRoLnBvdygxMDI0LCAyKSwgcHJldjogJ0InIH0sXHJcbiAgICBLQjogeyBtYXg6IE1hdGgucG93KDEwMjQsIDIpLCBwcmV2OiAnQicgfSwgLy8gQmFja3dhcmQgY29tcGF0aWJsZVxyXG4gICAgTUI6IHsgbWF4OiBNYXRoLnBvdygxMDI0LCAzKSwgcHJldjogJ2tCJyB9LFxyXG4gICAgR0I6IHsgbWF4OiBNYXRoLnBvdygxMDI0LCA0KSwgcHJldjogJ01CJyB9LFxyXG4gICAgVEI6IHsgbWF4OiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiwgcHJldjogJ0dCJyB9LFxyXG4gIH07XHJcblxyXG4gIHRyYW5zZm9ybShpbnB1dDogYW55LCBkZWNpbWFsOiBudW1iZXIgPSAwLCBmcm9tOiBCeXRlVW5pdCA9ICdCJywgdG8/OiBCeXRlVW5pdCk6IGFueSB7XHJcbiAgICBpZiAoIShpc051bWJlckZpbml0ZShpbnB1dCkgJiYgaXNOdW1iZXJGaW5pdGUoZGVjaW1hbCkgJiYgaXNJbnRlZ2VyKGRlY2ltYWwpICYmIGlzUG9zaXRpdmUoZGVjaW1hbCkpKSB7XHJcbiAgICAgIHJldHVybiBpbnB1dDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgYnl0ZXMgPSBpbnB1dDtcclxuICAgIGxldCB1bml0ID0gZnJvbTtcclxuICAgIHdoaWxlICh1bml0ICE9PSAnQicpIHtcclxuICAgICAgYnl0ZXMgKj0gMTAyNDtcclxuICAgICAgdW5pdCA9IEJ5dGVzUGlwZS5mb3JtYXRzW3VuaXRdLnByZXYhO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0bykge1xyXG4gICAgICBjb25zdCBmb3JtYXQgPSBCeXRlc1BpcGUuZm9ybWF0c1t0b107XHJcblxyXG4gICAgICBjb25zdCByZXN1bHQgPSB0b0RlY2ltYWwoQnl0ZXNQaXBlLmNhbGN1bGF0ZVJlc3VsdChmb3JtYXQsIGJ5dGVzKSwgZGVjaW1hbCk7XHJcblxyXG4gICAgICByZXR1cm4gQnl0ZXNQaXBlLmZvcm1hdFJlc3VsdChyZXN1bHQsIHRvKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBCeXRlc1BpcGUuZm9ybWF0cykge1xyXG4gICAgICBpZiAoQnl0ZXNQaXBlLmZvcm1hdHMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IEJ5dGVzUGlwZS5mb3JtYXRzW2tleV07XHJcbiAgICAgICAgaWYgKGJ5dGVzIDwgZm9ybWF0Lm1heCkge1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gdG9EZWNpbWFsKEJ5dGVzUGlwZS5jYWxjdWxhdGVSZXN1bHQoZm9ybWF0LCBieXRlcyksIGRlY2ltYWwpO1xyXG5cclxuICAgICAgICAgIHJldHVybiBCeXRlc1BpcGUuZm9ybWF0UmVzdWx0KHJlc3VsdCwga2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBmb3JtYXRSZXN1bHQocmVzdWx0OiBudW1iZXIsIHVuaXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7cmVzdWx0fSAke3VuaXR9YDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjYWxjdWxhdGVSZXN1bHQoZm9ybWF0OiB7IG1heDogbnVtYmVyOyBwcmV2PzogQnl0ZVVuaXQgfSwgYnl0ZXM6IG51bWJlcikge1xyXG4gICAgY29uc3QgcHJldiA9IGZvcm1hdC5wcmV2ID8gQnl0ZXNQaXBlLmZvcm1hdHNbZm9ybWF0LnByZXZdIDogdW5kZWZpbmVkO1xyXG4gICAgcmV0dXJuIHByZXYgPyBieXRlcyAvIHByZXYubWF4IDogYnl0ZXM7XHJcbiAgfVxyXG59XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0J5dGVzUGlwZV0sXHJcbiAgZXhwb3J0czogW0J5dGVzUGlwZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ0J5dGVzUGlwZU1vZHVsZSB7fVxyXG4iXX0=