https://github.com/aternosorg/armarius-io
https://github.com/aternosorg/armarius-io
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/aternosorg/armarius-io
- Owner: aternosorg
- License: mit
- Created: 2024-02-23T11:30:38.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2026-04-17T10:07:30.000Z (about 2 months ago)
- Last Synced: 2026-04-17T11:26:05.717Z (about 2 months ago)
- Language: JavaScript
- Size: 115 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# armarius-io
## About
This module contains implementations for reading from and writing to files, as well as implementations for
deflate compression using various JavaScript APIs.
It is mainly used by the [armarius](https://github.com/aternosorg/armarius/) module.
Contained are IO contexts for Blob object (read only), ArrayBuffers, and Node.js FileHandle objects.
Compression contexts exist for the [CompressionStreams API](https://developer.mozilla.org/en-US/docs/Web/API/CompressionStream),
the Node.js zlib module, and the fflate library.
## Installation
Armarius-IO can be installed using npm:
```shell
npm install armarius-io
```
## Usage
### IO contexts
IO contexts are objects that extend the `IO` class and can be used to read from or write to an underlying file or buffer.
This library contains the following IO contexts:
* `ArrayBufferIO` - for reading from and writing to an ArrayBuffer
* `BlobIO` - for reading from a Blob or JavaScript File object
* `NodeFileIO` - for reading from and writing to a Node.js FileHandle object
#### ArrayBufferIO
```javascript
let data = new Uint8Array(123);
let io = new ArrayBufferIO(data.buffer, data.byteOffset, data.byteLength);
```
#### BlobIO
```javascript
let file = input.files[0];
let io = new BlobIO(file);
```
#### NodeFileIO
```javascript
let file = await fs.promises.open('file.txt', 'r+');
let stat = await file.stat();
let io = new NodeFileIO(file, 0, stat.size);
```
### DataStreams
DataStream objects can be used to read data from a source. All IO contexts also implement `DataStream`.
### DataProcessors
DataProcessor objects read and transform data from a `DataStream`. This library includes DataProcessors for deflate compression using various JavaScript APIs.
* `NativeDeflateDataProcessor` and `NativeInflateDataProcessor` - for using the [CompressionStreams API](https://developer.mozilla.org/en-US/docs/Web/API/CompressionStream)
* `NodeDeflateDataProcessor` and `NodeInflateDataProcessor` - for using the Node.js zlib module
* `FflateDeflateDataProcessor` and `FflateInflateDataProcessor` - for using the fflate library
* `DefaultDeflateDataProcessor` and `DefaultInflateDataProcessor` - for using the best available compression method