UNPKG

data-unit

Version:

Simple TypeScript/ES2017 classes to represent unit values (like time/data size)

124 lines 4.99 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var Amount_1 = require("./Amount"); var DataAmountParseError = /** @class */ (function (_super) { __extends(DataAmountParseError, _super); function DataAmountParseError() { return _super !== null && _super.apply(this, arguments) || this; } return DataAmountParseError; }(Error)); exports.DataAmountParseError = DataAmountParseError; var DataUnit; (function (DataUnit) { DataUnit[DataUnit["BITS"] = 0] = "BITS"; DataUnit[DataUnit["BYTES"] = 1] = "BYTES"; DataUnit[DataUnit["KILOBITS"] = 2] = "KILOBITS"; DataUnit[DataUnit["KILOBYTES"] = 3] = "KILOBYTES"; DataUnit[DataUnit["MEGABITS"] = 4] = "MEGABITS"; DataUnit[DataUnit["MEGABYTES"] = 5] = "MEGABYTES"; DataUnit[DataUnit["GIGABITS"] = 6] = "GIGABITS"; DataUnit[DataUnit["GIGABYTES"] = 7] = "GIGABYTES"; DataUnit[DataUnit["TERABITS"] = 8] = "TERABITS"; DataUnit[DataUnit["TERABYTES"] = 9] = "TERABYTES"; })(DataUnit = exports.DataUnit || (exports.DataUnit = {})); var DataAmount = /** @class */ (function (_super) { __extends(DataAmount, _super); function DataAmount() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.exchangeRates = [ { unit: DataUnit.BITS, multiplier: 1 }, { unit: DataUnit.BYTES, multiplier: 8 }, { unit: DataUnit.KILOBITS, multiplier: 125 }, { unit: DataUnit.KILOBYTES, multiplier: 8 }, { unit: DataUnit.MEGABITS, multiplier: 125 }, { unit: DataUnit.MEGABYTES, multiplier: 8 }, { unit: DataUnit.GIGABITS, multiplier: 125 }, { unit: DataUnit.GIGABYTES, multiplier: 8 }, { unit: DataUnit.TERABITS, multiplier: 125 }, { unit: DataUnit.TERABYTES, multiplier: 8 }, ]; return _this; } DataAmount.isValid = function (value) { return value && (typeof value === 'number' || (typeof value === 'string' && DataAmount.pattern.test(value))); }; DataAmount.parse = function (value) { if (!value) { throw new DataAmountParseError("Value is null."); } if (value instanceof DataAmount) { return value; } else if (typeof value === 'number') { return new DataAmount(value, DataUnit.BYTES); } else if (typeof value === 'string') { var match = value.match(DataAmount.pattern); if (match) { var unit = DataAmount.unitKeywords[match[3]]; if (!unit) { throw new DataAmountParseError("Data value string has invalid unit: " + match[3] + "."); } return new DataAmount(parseFloat(match[1] + (match[2] || '')), unit); } else { throw new DataAmountParseError("Data value string has invalid format."); } } else { throw new DataAmountParseError("Value should be a DataAmount, number or string."); } }; DataAmount.tryParse = function (value) { try { return DataAmount.parse(value); } catch (error) { if (error instanceof DataAmountParseError) { return null; } throw error; } }; DataAmount.prototype.unitToString = function () { return DataUnit[this.unit]; }; DataAmount.pattern = /([0-9]+)(\.[0-9]+)?([KMGkmg][bB]?|[bB])?/; DataAmount.unitKeywords = { 'b': DataUnit.BITS, 'B': DataUnit.BYTES, 'kb': DataUnit.KILOBYTES, 'kB': DataUnit.KILOBYTES, 'KB': DataUnit.KILOBYTES, 'Kb': DataUnit.KILOBITS, 'mb': DataUnit.MEGABYTES, 'mB': DataUnit.MEGABYTES, 'MB': DataUnit.MEGABYTES, 'Mb': DataUnit.MEGABITS, 'gb': DataUnit.GIGABYTES, 'gB': DataUnit.GIGABYTES, 'GB': DataUnit.GIGABYTES, 'Gb': DataUnit.GIGABITS, 'tb': DataUnit.TERABYTES, 'tB': DataUnit.TERABYTES, 'TB': DataUnit.TERABYTES, 'Tb': DataUnit.TERABITS, }; return DataAmount; }(Amount_1.Amount)); exports.DataAmount = DataAmount; //# sourceMappingURL=Data.js.map