Socket
Book a DemoInstallSign in
Socket

@sosoba/tar-stream

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sosoba/tar-stream

Tar generator for nodejs

latest
Source
npmnpm
Version
1.0.0
Version published
Maintainers
1
Created
Source

@sosoba/tar-stream

@sosoba/tar-stream is a streaming tar generator. It means you can easily createe tarballs without ever hitting the file system.

It implementes USTAR with additional support for pax extended headers (long and non-ascii file names).

License

Usage

npm install @sosoba/tar-stream

To create a pack stream use new Pack() and call pack.entry(header, [callback]) to add tar entries.

import Pack from '@sosoba/tar-stream/pack';
import {createGzip} from 'node:zlib';

const pack = new Pack();

// we need two parallel tasks
await Promise.all([

	// first of them pipe the pack to oputputs
	pipeline( pack.outputStream, createGzip(), createWriteStream('out.tgz') ),
	
	// and second add a content to pack
	(async()=>{
	
		// add a file called my-test.txt with the content "Hello World!"
		await pack.addFile({ name: 'my-test.txt' }, Buffer.from('Hello World!'));

		// add a file called my-stream-test.txt from a stream
		const writable = await pack.addFile({ name: 'my-stream-test.txt', size: 11 });
		entry.write('hello');
		entry.write(' ');
		entry.write('world');
		entry.end();
		await once( entry, 'end' );

		// no more entries
		await pack.end();
	
	})(),

]);

Headers

The header object using in entry should contain the following properties. Most of these values can be found by stat'ing a file.

{
  name: 'path/to/this/entry.txt',
  size: 1314,        // entry size. defaults to 0
  mode: 0o644,       // entry mode. defaults to to 0o755 for dirs and 0o644 otherwise
  mtime: new Date(), // last modified date for entry. defaults to now.
  linkname: 'path',  // linked file name
  uid: 0,            // uid of entry owner. defaults to 0
  gid: 0,            // gid of entry owner. defaults to 0
  uname: 'maf',      // uname of entry owner. defaults to null
  gname: 'staff',    // gname of entry owner. defaults to null
  devmajor: 0,       // device major version. defaults to 0
  devminor: 0        // device minor version. defaults to 0
}

License

MIT

Keywords

node

FAQs

Package last updated on 28 Apr 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts