redzip

3.0.3 • Public • Published

Redzip License NPM version Build Status Coverage Status

Work with zip archives as it is regular files and directories.

Install

npm i redzip

API

read(path[, options])

  • path - string
  • options - object can contain:
    • sort - sort by: name, size, date
    • order - "asc" or "desc" for ascending and descending order (default: "asc")
    • type - when "raw" returns not formatted result
    • root - root directory to cut from result

Example

const sort = 'size';
const order = 'desc';
const type = 'raw';

const dirPath = '/home/coderaiser/hello.zip/hello/';
const path = '/home/coderaiser/hello.zip/hello.txt';

const redzip = require('redzip');

const dirStream = await redzip.read(dirPath, {
    type,
    sort,
    order,
});

console.log(dirStream.type);
// outputs
'directory';

console.log(dirStream.contentLength);
// outputs
280;

dirStream.pipe(process.stdout);
// outputs
({
    path: '/',
    files: [{
        name: 'redzip.js',
        size: 4735,
        date: 1_377_248_899_000,
        owner: 0,
        mode: 0,
    }, {
        name: 'readify.js',
        size: 3735,
        date: 1_377_248_899_000,
        owner: 0,
        mode: 0,
    }],
});

dirStream.files;
// returns
[{
    name: 'redzip.js',
    size: 4735,
    date: 1_377_248_899_000,
    owner: 0,
    mode: 0,
}, {
    name: 'readify.js',
    size: 3735,
    date: 1_377_248_899_000,
    owner: 0,
    mode: 0,
}];

dirStream.path;
// returns
'/';

const fileStream = await redzip.read(path);
console.log(fileStream.type);
// outputs
'file';

fileStream.pipe(process.stdout);
// outputs
'hello';

console.log(fileStream.contentLength);
// outputs
6;

readSize(path[, options])

  • path - string
  • options - object can contain:
    • type - when "raw" returns not formatted result
const fileStream = readSize('/hello/world.zip/readme.md');

fileStream.pipe(process.stdout);
// outputs
'10kb';

fileStream.contentLength; // 4

readStat(path[, options])

  • path - string
const stat = readStat('/hello/world.zip/readme.md');

// returns
({
    date: '2021-01-18T22:00:00.000Z',
    mode: 1_107_099_648,
    name: 'readme.md',
    owner: 0,
    size: 0,
    type: 'file',
});

write(path[, data], options)

When you need to save string, or Buffer use Readable.from.

  • path - string
  • data - stream
  • options - object can contain:
    • unzip - unzip file content before writing
    • mode - set permissions mode (optional)

Example

import {Readable} from 'node:stream';
import {write} from 'redzip';
import pullout from 'pullout';

const dirPath = '/home/coderaiser/hello.zip/hello/';
await write(dirPath);
// returns
'save: ok("hello")';

const path = '/home/coderaiser/hello.zip/hello.txt';
const writeStream = await write(path, Readable.from('hello'));

await pullout(writeStream);
// returns
'save: ok("hello")';

await pullout(await read(path));
// returns
'hello';

import {createGzip} from 'node:zlib';

const zipStream = Readable
    .from('hello')
    .pipe(createGzip());

await write(path, zipStream, {
    unzip: true,
});
const readStream = await read(path);
await pullout(readStream);
// returns
'hello';

remove(path)

  • path - string

Example

import {remove} from 'redzip';
import pullout from 'pullout';

const dirPath = '/home/coderaiser/hello.zip/hello/';
await remove(dirPath);

const path = '/home/coderaiser/hello.zip/hello.txt';
await remove(path);

list(path)

  • path - string

Example

import {list} from 'redzip';

const dirPath = '/home/coderaiser/hello.zip/hello/';
await list(dirPath);
// returns
[
    '/Users/coderaiser/hello.zip/hello/world.txt',
];

Related

  • readify - read directory content with file attributes: size, date, owner, mode
  • readbox - read file or directory from dropbox

License

MIT

Package Sidebar

Install

npm i redzip

Weekly Downloads

229

Version

3.0.3

License

MIT

Unpacked Size

29.6 kB

Total Files

20

Last publish

Collaborators

  • coderaiser