browser-stream-tar
Version:
split tar web-stream into a sequence of Files
196 lines (133 loc) • 8.52 kB
Markdown
[](https://www.npmjs.com/package/browser-stream-tar)
[](https://spdx.org/licenses/MIT.html)
[](https://typescriptlang.org)
[](https://bundlejs.com/?q=browser-stream-tar)
[](https://npmjs.org/package/browser-stream-tar)
[](https://github.com/k0nsti/browser-stream-tar/issues)
[](https://actions-badge.atrox.dev/k0nsti/browser-stream-tar/goto)
[](https://github.com/prettier/prettier)
[](http://commitizen.github.io/cz-cli/)
[](https://snyk.io/test/github/k0nsti/browser-stream-tar)
[](https://coveralls.io/github/k0nsti/browser-stream-tar)
# browser-stream-tar
split tar web-stream into a sequence of Files
# example
```js
import { files } from "browser-stream-tar";
const response = await fetch("some tar file");
for await (const file of files(response.body)) {
console.log(file.name);
// do something with entry.stream()
}
```
# API
<!-- Generated by documentation.js. Update this documentation by updating the source code. -->
### Table of Contents
* [BLOCKSIZE](#blocksize)
* [decodePaxHeader](#decodepaxheader)
* [Parameters](#parameters)
* [decodeHeader](#decodeheader)
* [Parameters](#parameters-1)
* [files](#files)
* [Parameters](#parameters-2)
* [enqueue](#enqueue)
* [buffer](#buffer)
* [decodeString](#decodestring)
* [Parameters](#parameters-3)
* [decodeInteger](#decodeinteger)
* [Parameters](#parameters-4)
* [fill](#fill)
* [Parameters](#parameters-5)
* [skip](#skip)
* [Parameters](#parameters-6)
* [streamToUint8Array](#streamtouint8array)
* [Parameters](#parameters-7)
## BLOCKSIZE
Field Name Byte Offset Length in Bytes Field Type
name 0 100 NUL-terminated if NUL fits
mode 100 8
uid 108 8
gid 116 8
size 124 12
mtime 136 12
chksum 148 8
typeflag 156 1 see below
linkname 157 100 NUL-terminated if NUL fits
magic 257 6 must be TMAGIC (NUL term.)
version 263 2 must be TVERSION
uname 265 32 NUL-terminated
gname 297 32 NUL-terminated
devmajor 329 8
devminor 337 8
prefix 345 155 NUL-terminated if NUL fits
Type: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)
## decodePaxHeader
* **See**: <https://www.systutorials.com/docs/linux/man/5-star/>
Decodes a PAX header
### Parameters
* `reader` **ReadableStreamReader<[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)>** where to read from
* `buffer` **[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)** 
* `header` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** to be filled with values form buffer
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)>** buffer positioned after the consumed bytes
## decodeHeader
Decodes the next header.
### Parameters
* `reader` **ReadableStreamReader<[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)>** where to read from
* `buffer` **([Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))** 
* `header` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** to be filled with values form buffer and reader
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<([Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))>** buffer positioned after the consumed bytes
## files
Provide tar entry iterator.
### Parameters
* `tar` **ReadableStream** 
Returns **AsyncIterable\<File>** 
## enqueue
\--512--|-----512------|
| R | O |
|
DDDDDDDDDDDD---------HHHH
| | |
A0 A0 A1
## buffer
+--------- size --------+
| +- remaining -+- overflow -+
| | | |
HDD ... DDDDDDDDDDDDDDDDDD------------HHHHHH
\[BUFFER .... ] \[BUFFER ... ]
+----------- skip --------+
## decodeString
Convert bytes into string.
### Parameters
* `bytes` **[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)** 
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
## decodeInteger
Convert ASCII octal number into number.
### Parameters
* `bytes` **[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)** 
Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** 
## fill
Read bytes from a reader and append them to a given buffer until a requested length of the buffer is reached.
### Parameters
* `reader` **ReadableStreamReader<[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)>** where to read from
* `buffer` **[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)?** initial buffer or undefined
* `length` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** desired buffer length
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<([Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))>** filled up buffer
## skip
Skip some bytes from a buffer.
### Parameters
* `reader` **ReadableStreamReader<[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)>** where to read from
* `buffer` **[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)** 
* `length` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** to be skipped
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<([Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))>** buffer positionend after skipped bytes
## streamToUint8Array
Reads web stream content into a Uint8Array.
### Parameters
* `stream` **ReadableStream** 
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)>** 
# install
With [npm](http://npmjs.org) do:
```shell
npm install browser-stream-tar
```
# license
BSD-2-Clause