firestore-size
Version:
Calculates the approximate size of Firestore document.
60 lines (43 loc) • 2.22 kB
Markdown
Inspired by git@github.com:miktam/sizeof.git

[](http://opensource.org/licenses/MIT)

[](https://www.npmjs.com/package/firestore-size)
This tiny package calculates the approximate size (in bytes) of a Firestore document.
## Installation
```js
npm i firestore-size
```
### Usage
```js
import sizeof from 'firestore-size'
const snapshot = db
.collection("data")
.doc(id)
.get();
const data = snapshot.data();
const bytes = sizeof(data);
console.log( bytes > 1000 ? "I'm in awe of the size of this lad!": "Ew..")
console.log( typeof bytes === 'number'); //true
```
- Array - The sum of the sizes of its values
- Boolean - 1 byte
- Bytes - Byte length
- Date and time - 8 bytes
- Floating-point number - 8 bytes
- Geographical point - 16 bytes
- Integer - 8 bytes
- Map - The size of the map, calculated the same way as document size
- Null - 1 byte
- Reference - The document name size
- Text string - Number of UTF-8 encoded bytes + 1
More on how the size is calculated in firestore docs - [documentation](https://firebase.google.com/docs/firestore/storage-size#document-name-size)
Does not take into account the name of a document.
For a document in the subcollection ```users/jeff/tasks``` with a string document ID of ```my_task_id```, the document name size is 6 + 5 + 6 + 11 + 16 = 44 bytes. [More about it in the docs.](https://firebase.google.com/docs/firestore/storage-size#document-name-size)
Does not take into account indexing. Indexes can be disabled - [docs](https://firebase.google.com/docs/firestore/query-data/index-overview?authuser=0#single-field_index_exemptions) - to free up more space.
[](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
As always, you can run the tests using: `npm test`