Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

byte-size

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

byte-size - npm Package Compare versions

Comparing version 6.0.0 to 6.1.0

195

dist/index.js

@@ -5,56 +5,6 @@ (function (global, factory) {

(global = global || self, global.byteSize = factory());
}(this, function () { 'use strict';
}(this, (function () { 'use strict';
/**
* An isomorphic, load-anywhere function to convert a bytes or octets value (e.g. `34565346`) to a human-readable string (`34.6 MB`). Choose between [metric or IEC units](https://en.wikipedia.org/wiki/Gigabyte), summarised below.
*
* Value | Metric
* ----- | -------------
* 1000 | kB kilobyte
* 1000^2 | MB megabyte
* 1000^3 | GB gigabyte
* 1000^4 | TB terabyte
* 1000^5 | PB petabyte
* 1000^6 | EB exabyte
* 1000^7 | ZB zettabyte
* 1000^8 | YB yottabyte
*
* Value | IEC
* ----- | ------------
* 1024 | KiB kibibyte
* 1024^2 | MiB mebibyte
* 1024^3 | GiB gibibyte
* 1024^4 | TiB tebibyte
* 1024^5 | PiB pebibyte
* 1024^6 | EiB exbibyte
* 1024^7 | ZiB zebibyte
* 1024^8 | YiB yobibyte
*
* Value | Metric (octet)
* ----- | -------------
* 1000 | ko kilooctet
* 1000^2 | Mo megaoctet
* 1000^3 | Go gigaoctet
* 1000^4 | To teraoctet
* 1000^5 | Po petaoctet
* 1000^6 | Eo exaoctet
* 1000^7 | Zo zettaoctet
* 1000^8 | Yo yottaoctet
*
* Value | IEC (octet)
* ----- | ------------
* 1024 | Kio kilooctet
* 1024^2 | Mio mebioctet
* 1024^3 | Gio gibioctet
* 1024^4 | Tio tebioctet
* 1024^5 | Pio pebioctet
* 1024^6 | Eio exbioctet
* 1024^7 | Zio zebioctet
* 1024^8 | Yio yobioctet
*
* @module byte-size
* @example
* ```js
* const byteSize = require('byte-size')
* ```
*/

@@ -64,41 +14,75 @@

constructor (bytes, options) {
options = options || {};
options.units = options.units || 'metric';
options.precision = typeof options.precision === 'undefined' ? 1 : options.precision;
options = Object.assign({
units: 'metric',
precision: 1
}, options);
const table = [
{ expFrom: 0, expTo: 1, metric: 'B', iec: 'B', metric_octet: 'o', iec_octet: 'o' },
{ expFrom: 1, expTo: 2, metric: 'kB', iec: 'KiB', metric_octet: 'ko', iec_octet: 'Kio' },
{ expFrom: 2, expTo: 3, metric: 'MB', iec: 'MiB', metric_octet: 'Mo', iec_octet: 'Mio' },
{ expFrom: 3, expTo: 4, metric: 'GB', iec: 'GiB', metric_octet: 'Go', iec_octet: 'Gio' },
{ expFrom: 4, expTo: 5, metric: 'TB', iec: 'TiB', metric_octet: 'To', iec_octet: 'Tio' },
{ expFrom: 5, expTo: 6, metric: 'PB', iec: 'PiB', metric_octet: 'Po', iec_octet: 'Pio' },
{ expFrom: 6, expTo: 7, metric: 'EB', iec: 'EiB', metric_octet: 'Eo', iec_octet: 'Eio' },
{ expFrom: 7, expTo: 8, metric: 'ZB', iec: 'ZiB', metric_octet: 'Zo', iec_octet: 'Zio' },
{ expFrom: 8, expTo: 9, metric: 'YB', iec: 'YiB', metric_octet: 'Yo', iec_octet: 'Yio' }
];
const tables = {
metric: [
{ from: 0 , to: 1e3 , unit: 'B' , long: 'bytes' },
{ from: 1e3 , to: 1e6 , unit: 'kB', long: 'kilobytes' },
{ from: 1e6 , to: 1e9 , unit: 'MB', long: 'megabytes' },
{ from: 1e9 , to: 1e12, unit: 'GB', long: 'gigabytes' },
{ from: 1e12, to: 1e15, unit: 'TB', long: 'terabytes' },
{ from: 1e15, to: 1e18, unit: 'PB', long: 'petabytes' },
{ from: 1e18, to: 1e21, unit: 'EB', long: 'exabytes' },
{ from: 1e21, to: 1e24, unit: 'ZB', long: 'zettabytes' },
{ from: 1e24, to: 1e27, unit: 'YB', long: 'yottabytes' },
],
metric_octet: [
{ from: 0 , to: 1e3 , unit: 'o' , long: 'octets' },
{ from: 1e3 , to: 1e6 , unit: 'ko', long: 'kilooctets' },
{ from: 1e6 , to: 1e9 , unit: 'Mo', long: 'megaoctets' },
{ from: 1e9 , to: 1e12, unit: 'Go', long: 'gigaoctets' },
{ from: 1e12, to: 1e15, unit: 'To', long: 'teraoctets' },
{ from: 1e15, to: 1e18, unit: 'Po', long: 'petaoctets' },
{ from: 1e18, to: 1e21, unit: 'Eo', long: 'exaoctets' },
{ from: 1e21, to: 1e24, unit: 'Zo', long: 'zettaoctets' },
{ from: 1e24, to: 1e27, unit: 'Yo', long: 'yottaoctets' },
],
iec: [
{ from: 0 , to: Math.pow(1024, 1), unit: 'B' , long: 'bytes' },
{ from: Math.pow(1024, 1), to: Math.pow(1024, 2), unit: 'KiB', long: 'kibibytes' },
{ from: Math.pow(1024, 2), to: Math.pow(1024, 3), unit: 'MiB', long: 'mebibytes' },
{ from: Math.pow(1024, 3), to: Math.pow(1024, 4), unit: 'GiB', long: 'gibibytes' },
{ from: Math.pow(1024, 4), to: Math.pow(1024, 5), unit: 'TiB', long: 'tebibytes' },
{ from: Math.pow(1024, 5), to: Math.pow(1024, 6), unit: 'PiB', long: 'pebibytes' },
{ from: Math.pow(1024, 6), to: Math.pow(1024, 7), unit: 'EiB', long: 'exbibytes' },
{ from: Math.pow(1024, 7), to: Math.pow(1024, 8), unit: 'ZiB', long: 'zebibytes' },
{ from: Math.pow(1024, 8), to: Math.pow(1024, 9), unit: 'YiB', long: 'yobibytes' },
],
iec_octet: [
{ from: 0 , to: Math.pow(1024, 1), unit: 'o' , long: 'octets' },
{ from: Math.pow(1024, 1), to: Math.pow(1024, 2), unit: 'Kio', long: 'kibioctets' },
{ from: Math.pow(1024, 2), to: Math.pow(1024, 3), unit: 'Mio', long: 'mebioctets' },
{ from: Math.pow(1024, 3), to: Math.pow(1024, 4), unit: 'Gio', long: 'gibioctets' },
{ from: Math.pow(1024, 4), to: Math.pow(1024, 5), unit: 'Tio', long: 'tebioctets' },
{ from: Math.pow(1024, 5), to: Math.pow(1024, 6), unit: 'Pio', long: 'pebioctets' },
{ from: Math.pow(1024, 6), to: Math.pow(1024, 7), unit: 'Eio', long: 'exbioctets' },
{ from: Math.pow(1024, 7), to: Math.pow(1024, 8), unit: 'Zio', long: 'zebioctets' },
{ from: Math.pow(1024, 8), to: Math.pow(1024, 9), unit: 'Yio', long: 'yobioctets' },
],
};
Object.assign(tables, options.customUnits);
const base = options.units === 'metric' || options.units === 'metric_octet' ? 1000 : 1024;
const prefix = bytes < 0 ? '-' : '';
bytes = Math.abs(bytes);
for (let i = 0; i < table.length; i++) {
const lower = Math.pow(base, table[i].expFrom);
const upper = Math.pow(base, table[i].expTo);
if (bytes >= lower && bytes < upper) {
const units = table[i][options.units];
if (i === 0) {
this.value = prefix + bytes;
this.unit = units;
return
} else {
this.value = prefix + (bytes / lower).toFixed(options.precision);
this.unit = units;
return
}
const table = tables[options.units];
if (table) {
const units = table.find(u => bytes >= u.from && bytes < u.to);
if (units) {
const value = units.from === 0
? prefix + bytes
: prefix + (bytes / units.from).toFixed(options.precision);
this.value = value;
this.unit = units.unit;
this.long = units.long;
} else {
this.value = prefix + bytes;
this.unit = '';
this.long = '';
}
} else {
throw new Error(`Invalid units specified: ${options.units}`)
}
this.value = prefix + bytes;
this.unit = '';
}

@@ -112,37 +96,10 @@

/**
* @param {number} - the bytes value to convert.
* @param [options] {object} - optional config.
* @param [options.precision=1] {number} - number of decimal places.
* @param [options.units=metric] {string} - select `'metric'`, `'iec'`, `'metric_octet'` or `'iec_octet'` units.
* @returns {{ value: string, unit: string}}
* Returns an object with the spec `{ value: string, unit: string, long: string }`. The returned object defines a `toString` method meaning it can be used in any string context.
* @param {number} - The bytes value to convert.
* @param [options] {object} - Optional config.
* @param [options.precision=1] {number} - Number of decimal places.
* @param [options.units=metric] {string} - Specify `'metric'`, `'iec'`, `'metric_octet'`, `'iec_octet'` or the name of a property from the custom units table in `options.customUnits`.
* @param [options.customUnits] {object} - An object containing one or more custom unit lookup tables.
* @returns {object}
* @alias module:byte-size
* @example
* ```js
* > const byteSize = require('byte-size')
*
* > byteSize(1580)
* { value: '1.6', unit: 'kB' }
*
* > byteSize(1580, { units: 'iec' })
* { value: '1.5', unit: 'KiB' }
*
* > byteSize(1580, { units: 'iec', precision: 3 })
* { value: '1.543', unit: 'KiB' }
*
* > byteSize(1580, { units: 'iec', precision: 0 })
* { value: '2', unit: 'KiB' }
*
* > byteSize(1580, { units: 'metric_octet' })
* { value: '1.6', unit: 'ko' }
*
* > byteSize(1580, { units: 'iec_octet' })
* { value: '1.5', unit: 'Kio' }
*
* > byteSize(1580, { units: 'iec_octet' }).toString()
* '1.5 Kio'
*
* > const { value, unit } = byteSize(1580, { units: 'iec_octet' })
* > `${value} ${unit}`
* '1.5 Kio'
* ```
*/

@@ -155,2 +112,2 @@ function byteSize (bytes, options) {

}));
})));

@@ -11,3 +11,3 @@ {

],
"version": "6.0.0",
"version": "6.1.0",
"main": "dist/index.js",

@@ -36,12 +36,18 @@ "license": "MIT",

"test": "npm run dist && test-runner test.js",
"docs": "jsdoc2md -t README.hbs dist/index.js > README.md; echo",
"cover": "istanbul cover ./node_modules/.bin/test-runner test.js && cat coverage/lcov.info | ./node_modules/.bin/coveralls",
"docs": "jsdoc2md -t README.hbs dist/index.js > README.md",
"cover": "nyc npm test && nyc report --reporter=text-lcov | coveralls",
"dist": "rollup -f umd -n byteSize -o dist/index.js index.mjs"
},
"devDependencies": {
"coveralls": "^3.0.6",
"jsdoc-to-markdown": "^5.0.1",
"rollup": "^1.21.4",
"coveralls": "^3.0.7",
"jsdoc-to-markdown": "^5.0.2",
"nyc": "^14.1.1",
"rollup": "^1.25.2",
"test-runner": "^0.6.0"
},
"standard": {
"ignore": [
"dist"
]
}
}

@@ -8,99 +8,110 @@ [![view on npm](https://img.shields.io/npm/v/byte-size.svg)](https://www.npmjs.org/package/byte-size)

<a name="module_byte-size"></a>
***Upgraders, please check the [release notes](https://github.com/75lb/byte-size/releases).***
## byte-size
An isomorphic, load-anywhere function to convert a bytes or octets value (e.g. `34565346`) to a human-readable string (`34.6 MB`). Choose between [metric or IEC units](https://en.wikipedia.org/wiki/Gigabyte), summarised below.
# byte-size
Value | Metric
----- | -------------
1000 | kB kilobyte
1000^2 | MB megabyte
1000^3 | GB gigabyte
1000^4 | TB terabyte
1000^5 | PB petabyte
1000^6 | EB exabyte
1000^7 | ZB zettabyte
1000^8 | YB yottabyte
An isomorphic, load-anywhere function to convert a bytes value (e.g. `3456`) to a human-readable string (`'3.5 kB'`). Choose between [metric or IEC units](https://en.wikipedia.org/wiki/Gigabyte) (summarised below) or specify your own custom units.
Value | IEC
----- | ------------
1024 | KiB kibibyte
1024^2 | MiB mebibyte
1024^3 | GiB gibibyte
1024^4 | TiB tebibyte
1024^5 | PiB pebibyte
1024^6 | EiB exbibyte
1024^7 | ZiB zebibyte
1024^8 | YiB yobibyte
Value | Metric | Metric (octet) |
----- | ------------- | -------------- |
1000 | kB kilobyte | ko kilooctet |
1000^2 | MB megabyte | Mo megaoctet |
1000^3 | GB gigabyte | Go gigaoctet |
1000^4 | TB terabyte | To teraoctet |
1000^5 | PB petabyte | Po petaoctet |
1000^6 | EB exabyte | Eo exaoctet |
1000^7 | ZB zettabyte | Zo zettaoctet |
1000^8 | YB yottabyte | Yo yottaoctet |
Value | Metric (octet)
----- | -------------
1000 | ko kilooctet
1000^2 | Mo megaoctet
1000^3 | Go gigaoctet
1000^4 | To teraoctet
1000^5 | Po petaoctet
1000^6 | Eo exaoctet
1000^7 | Zo zettaoctet
1000^8 | Yo yottaoctet
Value | IEC | IEC (octet) |
------ | ------------ | ------------- |
1024 | KiB kibibyte | Kio kibioctet |
1024^2 | MiB mebibyte | Mio mebioctet |
1024^3 | GiB gibibyte | Gio gibioctet |
1024^4 | TiB tebibyte | Tio tebioctet |
1024^5 | PiB pebibyte | Pio pebioctet |
1024^6 | EiB exbibyte | Eio exbioctet |
1024^7 | ZiB zebibyte | Zio zebioctet |
1024^8 | YiB yobibyte | Yio yobioctet |
Value | IEC (octet)
----- | ------------
1024 | Kio kilooctet
1024^2 | Mio mebioctet
1024^3 | Gio gibioctet
1024^4 | Tio tebioctet
1024^5 | Pio pebioctet
1024^6 | Eio exbioctet
1024^7 | Zio zebioctet
1024^8 | Yio yobioctet
## Synopsis
**Example**
By default, `byteSize` converts the input number to a human readable string with metric units and a precision of 1.
```js
const byteSize = require('byte-size')
> const byteSize = require('byte-size')
> byteSize(1580)
{ value: '1.6', unit: 'kB', long: 'kilobytes' }
```
<a name="exp_module_byte-size--byteSize"></a>
### byteSize(bytes, [options]) ⇒ <code>Object</code> ⏏
**Kind**: Exported function
The object returned by `byteSize` defines a `toString` method therefore can be used directly in string context.
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| bytes | <code>number</code> | | the bytes value to convert. |
| [options] | <code>object</code> | | optional config. |
| [options.precision] | <code>number</code> | <code>1</code> | number of decimal places. |
| [options.units] | <code>string</code> | <code>&quot;metric&quot;</code> | select `'metric'`, `'iec'`, `'metric_octet'` or `'iec_octet'` units. |
**Example**
```js
> const byteSize = require('byte-size')
> `Filesize: ${byteSize(12400)}`
'Filesize: 12.4 kB'
```
> byteSize(1580)
{ value: '1.6', unit: 'kB' }
Beside the default of `metric`, there are three other built-in units available: `metric_octet`, `iec` and `iec_octet`.
```js
> byteSize(1580, { units: 'iec' })
{ value: '1.5', unit: 'KiB' }
{ value: '1.5', unit: 'KiB', long: 'kibibytes' }
> byteSize(1580, { units: 'iec_octet' })
{ value: '1.5', unit: 'Kio', long: 'kibioctets' }
> byteSize(1580, { units: 'metric_octet' })
{ value: '1.6', unit: 'ko', long: 'kilooctets' }
```
You can adjust the `precision`.
```js
> byteSize(1580, { units: 'iec', precision: 3 })
{ value: '1.543', unit: 'KiB' }
{ value: '1.543', unit: 'KiB', long: 'kibibytes' }
> byteSize(1580, { units: 'iec', precision: 0 })
{ value: '2', unit: 'KiB' }
{ value: '2', unit: 'KiB', long: 'kibibytes' }
```
> byteSize(1580, { units: 'metric_octet' })
{ value: '1.6', unit: 'ko' }
Define custom units by passing an object containing one or more additional conversion tables to `options.customUnits`.
> byteSize(1580, { units: 'iec_octet' })
{ value: '1.5', unit: 'Kio' }
```js
> const customUnits = {
simple: [
{ from: 0 , to: 1e3 , unit: '' },
{ from: 1e3 , to: 1e6 , unit: 'K', long: 'thousand' },
{ from: 1e6 , to: 1e9 , unit: 'Mn', long: 'million' },
{ from: 1e9 , to: 1e12, unit: 'Bn', long: 'billion' }
]
}
> byteSize(1580, { units: 'iec_octet' }).toString()
'1.5 Kio'
> const { value, unit } = byteSize(10000, { customUnits, units: 'simple' })
> const { value, unit } = byteSize(1580, { units: 'iec_octet' })
> `${value} ${unit}`
'1.5 Kio'
> `${value}${unit}`
'10.0K'
```
### Load anywhere
<a name="module_byte-size"></a>
## byte-size
<a name="exp_module_byte-size--byteSize"></a>
### byteSize(bytes, [options]) ⇒ <code>object</code> ⏏
Returns an object with the spec `{ value: string, unit: string, long: string }`. The returned object defines a `toString` method meaning it can be used in any string context.
**Kind**: Exported function
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| bytes | <code>number</code> | | The bytes value to convert. |
| [options] | <code>object</code> | | Optional config. |
| [options.precision] | <code>number</code> | <code>1</code> | Number of decimal places. |
| [options.units] | <code>string</code> | <code>&quot;metric&quot;</code> | Specify `'metric'`, `'iec'`, `'metric_octet'`, `'iec_octet'` or the name of a property from the custom units table in `options.customUnits`. |
| [options.customUnits] | <code>object</code> | | An object containing one or more custom unit lookup tables. |
## Load anywhere
This library is compatible with Node.js, the Web and any style of module loader. It can be loaded anywhere, natively without transpilation.

@@ -107,0 +118,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc