Socket
Socket
Sign inDemoInstall

@sosoba/tar-stream

Package Overview
Dependencies
0
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sosoba/tar-stream


Version published
Weekly downloads
1.4K
Maintainers
1
Install size
22.8 kB
Created
Weekly downloads
 

Readme

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

FAQs

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc