npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

silly-unpack

v1.0.0

Published

Simple Node.JS routine to massively decompress to memory files archived as Gzip and/or Tar.

Downloads

19

Readme

silly-unpack

Simple Node.JS routine to massively decompress to memory files archived as Gzip and/or Tar.

Version

Current module version is 1.0.0, and development assumed finished. The version will not change if there are no bug reports.

License

silly-unpack is licensed under BSD 3-clause "Revised" License. See license for details.

Usage

Install

Just run command npm install silly-unpack to have this module installed for your project. See usage of npm tool for details.

Dependencies

Current version of silly-unpack depends on the next modules:

  • silly-barrier,
  • tar-stream,
  • fs,
  • zlib.

The last two modules are both standard Node.js modules.

Test

To test module just run command nodejs ./test.js from the folder where module is placed. Output should appear like that one (may be formatted other way):

{ 'tars/E.tar': 
 { 'tartemp2.txt': 'Some text in tarred file `tartemp2.txt`.',
   'tartemp1.txt': 'Some text in tarred file `tartemp1.txt`.' },
'tars/F.tar': 
 { 'tartemp4.txt': 'Some text in tarred file `tartemp4.txt`.',
   'tartemp3.txt': 'Some text in tarred file `tartemp3.txt`.' },
'gzips/A.txt.gz': 'Some text in gzipped file `temptemp.txt`.',
'gzips/B.txt.gz': 'Some text in gzipped file `temp.txt`.',
'targzips/C.tar.gz': 
 { 'targztemp2.txt': 'Some text in tarred and then gzipped file `targztemp2.txt`.',
   'targztemp1.txt': 'Some text in tarred and then gzipped file `targztemp1.txt`.' },
'targzips/D.tar.gz': 
 { 'targztemp4.txt': 'Some text in tarred and then gzipped file `targztemp4.txt`.',
   'targztemp3.txt': 'Some text in tarred and then gzipped file `targztemp3.txt`.' } }

Run

To use silly-unpack one should pass to unpack function an array of filenames wanted to be extracted.

Example of names array is next:

var names = ['gzips/A.txt.gz', 'gzips/B.txt.gz', 'targzips/C.tar.gz', 'tars/D.tar', 'E.tgz', 'F.z'];

While invoking function unpack from the imported module one should pass next parameters:

  • names - array of files to extract;
  • callbackfn - function to call after finishing extracting of all specified files, should process two parameters:
    • errors (array of errors occured),
    • data (see description below);
  • folder - place in the filesystem with all the extracting files (they will be accessed by the path <folder>/<name>); optional argument, proceeded as empty string if undefined.

Example of call is next:

require('silly-unpack').unpack(names, print, 'archives/');

The full working example of module usage one can find in test.js.

Supported formats

silly-unpack supports next archive formats:

  • tar - only for files with the extension .tar;
  • tar.gzip - for files with extensions .tar.gz, .tar.z or .tgz;
  • gzip - for files with extensions .gz or .z.

File format choose is based only on file extensions.

Output

silly-unpack puts all the extracted data in the object with the next structure for gzipped files:

{
	<name-of-the-archive-1-without-folder>:<File 1 content>,
	<name-of-the-archive-2-without-folder>:<File 2 content>
}

For tarred (and optionally gzipped) files slightly another structure is provided:

{
	<name-of-the-archive-1-without-folder>: {
		<name-of-the-entry-1-1>:<Entry 1-1 content>,
		<name-of-the-entry-1-2>:<Entry 1-2 content>
	},
	<name-of-the-archive-2-without-folder>:  {
		<name-of-the-entry-2-1>:<Entry 2-1 content>,
		<name-of-the-entry-2-2>:<Entry 2-2 content>
	}
}

Structures are mixtred if files of both formats mentioned in the filenames array.