a streaming interface for archive generation

Overview

Archiver

A streaming interface for archive generation

Visit the API documentation for a list of all methods available.

Install

npm install archiver --save

Quick Start

// require modules
const fs = require('fs');
const archiver = require('archiver');

// create a file to stream archive data to.
const output = fs.createWriteStream(__dirname + '/example.zip');
const archive = archiver('zip', {
  zlib: { level: 9 } // Sets the compression level.
});

// listen for all archive data to be written
// 'close' event is fired only when a file descriptor is involved
output.on('close', function() {
  console.log(archive.pointer() + ' total bytes');
  console.log('archiver has been finalized and the output file descriptor has closed.');
});

// This event is fired when the data source is drained no matter what was the data source.
// It is not part of this library but rather from the NodeJS Stream API.
// @see: https://nodejs.org/api/stream.html#stream_event_end
output.on('end', function() {
  console.log('Data has been drained');
});

// good practice to catch warnings (ie stat failures and other non-blocking errors)
archive.on('warning', function(err) {
  if (err.code === 'ENOENT') {
    // log warning
  } else {
    // throw error
    throw err;
  }
});

// good practice to catch this error explicitly
archive.on('error', function(err) {
  throw err;
});

// pipe archive data to the file
archive.pipe(output);

// append a file from stream
const file1 = __dirname + '/file1.txt';
archive.append(fs.createReadStream(file1), { name: 'file1.txt' });

// append a file from string
archive.append('string cheese!', { name: 'file2.txt' });

// append a file from buffer
const buffer3 = Buffer.from('buff it!');
archive.append(buffer3, { name: 'file3.txt' });

// append a file
archive.file('file1.txt', { name: 'file4.txt' });

// append files from a sub-directory and naming it `new-subdir` within the archive
archive.directory('subdir/', 'new-subdir');

// append files from a sub-directory, putting its contents at the root of archive
archive.directory('subdir/', false);

// append files from a glob pattern
archive.glob('file*.txt', {cwd:__dirname});

// finalize the archive (ie we are done appending files but streams have to finish yet)
// 'close', 'end' or 'finish' may be fired right after calling this method so register to them beforehand
archive.finalize();

Formats

Archiver ships with out of the box support for TAR and ZIP archives.

You can register additional formats with registerFormat.

You can check if format already exists before to register a new one with isRegisteredFormat.

Formats will be changing in the future to implement a middleware approach.

Comments
  • bug: depends on synchronous code

    bug: depends on synchronous code

    This module depends on file-utils which in the README says: "this is a set of synchronous utility. As so, it should never be used on a Node.js server. This is meant for users/command line utilities."

    Also look at lib/util/index.js#L176:

    util.stat = function() {
      var filepath = path.join.apply(path, arguments);
      return util.file.exists(filepath) ? fs.statSync(filepath) : false;
    };
    

    Don't check for existence before using stat - instead handle the ENOENT error if you get it.

    But more importantly this is using sync API. Can we work on getting that out of there?

    enhancement 
    opened by andrewrk 42
  • Slower ZIP creation after upgrade to 0.11

    Slower ZIP creation after upgrade to 0.11

    I am on a windows machine running node 0.10.28. I am using this module from grunt-contrib-compress.

    To compress this folder structure

    image

    When using grunt-contrib-compress versions these are the results. v0.12.0 took me over 4 minutes. this produces a 18913229 byte zip file v0.11.0 took over 4 minutes and produced a zip file. v0.10.0 took 45 seconds and produced a 18913229 byte zip file v0.9.0 took 45 seconds and produced a 18809351 byte zip file. v0.8.0 took 46 seconds for the same file. this produces a 18809351 byte zip file.

    version 0.11 is where they updated to archiver 0.11. Version 0.10 and below are using archiver 0.9 and are ~4 times faster on my windows machine. I would assume that the regression is in there somewhere.

    opened by steveoh 39
  • use streaming sources as streams

    use streaming sources as streams

    Right now, when addFile() is called with a stream as source, the library just consumes it all. I suppose this is due to the CRC field of the local header, needed to be placed before the actual data.

    We could leverage the data descriptor (see spec) in the zip format, and not wait to consume the whole source.

    Bit 3: If this bit is set, the fields crc-32, compressed 
           size and uncompressed size are set to zero in the 
           local header.  The correct values are put in the 
           data descriptor immediately following the compressed
           data.
    

    What do you think?

    opened by danmilon 25
  • Corrupt zip files

    Corrupt zip files

    I'm having issues identical to those in #32 (using archiver 0.15.1). Generating zips in production (I can't repro on a dev machine) sometimes get corrupted. As mentioned in #32 the file sizes are always exactly the same and the corruption is inconsistent (different files get corrupted on different attempts).

    I've tried disabling compression entirely (setting the store option to true) but still get CRC errors.

    Any help would be greatly appreciated

    Thanks!

    opened by jamessharp 24
  • Streaming to res not working, getting empty errored file

    Streaming to res not working, getting empty errored file

    Hello, I run in quite the same issue (when streaming to file it works, when streaming to http client it gives corrupt files.), #161 seems to have same issues, but i'm runing on local with nodejs and nodemon, on windows. version of node is 4.2.1, archiver 0.17.0 here is my code. the res 'end' event is not raised. Nor is the res 'data' event.

        var archive = archiver('zip');
        archive.on('error', function(err) {
            console.error(err);
            res.status(500).send({error: err.message});
        });
    
        //on stream closed we can end the request
        res.on('close', function() {
            console.log('Archive wrote %d bytes', archive.pointer());
            return res.status(200).send('OK').end();
        });
    
        res.attachment('myzip.zip');
    
        //this is the streaming magic
        archive.pipe(res);
    
        archive.append('hello zip1',{name : 'text1.txt'});
        archive.append('hellooooo zip2',{ name : 'test2.txt'});
    
                archive.finalize(function(err, bytes) {
                    if (err) {
                        throw err;
                    }
                    console.log(bytes + ' total bytes');
                });
        );
    

    here is what i get as a file : image

    the example i'm inspired by is this one : http://stackoverflow.com/questions/20107303/dynamically-create-and-stream-zip-to-client/25210806#25210806

    opened by romain10009 23
  • Throws error in node v8.0.0

    Throws error in node v8.0.0

    Code:

    const archive = archiver.create(`zip`, {});
    archive.append(`test`, { name: `test.pdf` });
    archive.finalize();
    
    const writeStream = createWriteStream(`test.zip`);
    await new Promise(function(resolve, reject) {
      writeStream.on(`close`, function() {
        console.log(archive.pointer() + ` total bytes`);
        console.log(`archiver has been finalized and the output file descriptor has closed.`);
        resolve();
      });
      writeStream.on(`error`, reject);
    
      archive.pipe(writeStream);
    });
    

    Throws:

    _stream_readable.js:545
      switch (state.pipesCount) {
                   ^
    
    TypeError: Cannot read property 'pipesCount' of undefined
        at module.exports.Readable.pipe (_stream_readable.js:545:16)
        at module.exports.ZipArchiveOutputStream._smartStream (/Users/.../node_modules/compress-commons/lib/archivers/zip/zip-archive-output-stream.js:184:11)
        at module.exports.ZipArchiveOutputStream._appendBuffer (/Users/.../node_modules/compress-commons/lib/archivers/zip/zip-archive-output-stream.js:82:10)
        at module.exports.ArchiveOutputStream.entry (/Users/.../node_modules/compress-commons/lib/archivers/archive-output-stream.js:86:10)
        at module.exports.ZipStream.entry (/Users/.../node_modules/zip-stream/index.js:138:49)
        at Zip.append (/Users/.../node_modules/archiver/lib/plugins/zip.js:53:15)
        at Archiver._moduleAppend (/Users/.../node_modules/archiver/lib/core.js:172:16)
        at Archiver._onQueueTask (/Users/.../node_modules/archiver/lib/core.js:370:8)
        at /Users/.../node_modules/async/dist/async.js:4045:9
        at process (/Users/.../node_modules/async/dist/async.js:2316:17)
        at Immediate._onImmediate (/Users/.../node_modules/async/dist/async.js:66:16)
        at runCallback (timers.js:800:20)
        at tryOnImmediate (timers.js:762:5)
        at processImmediate [as _immediateCallback] (timers.js:733:5)
    
    opened by jwhitmarsh 22
  • Uploading files and zipping files

    Uploading files and zipping files

    I am trying to upload few files using node-formidable module. Once I get the part stream for a file, I am appending it to the archive. In the form end event I am calling archive.finalize but it is producing a garbled zip file. Any ideas why?

    Below is the full code link https://gist.github.com/vishr/5675747

    opened by vishr 21
  • set directory permissions with bulk()

    set directory permissions with bulk()

    Hi, I have some code like this:

      zip.bulk([
        { expand: true, cwd: sourceDir,  src: ['**', '**/.htaccess'], data: { mode: 0644 }  }
      ]);
    

    And I've noticed that when creating a .zip, the mode is applied to files but not directories. (The directory permissions on the disk are 755, but the resulting .zip has 700.)

    I'm working on a mac, and I believe I've seen similar behavior on linux, so I'm not sure if this is related to the other open bugs or not. Either way, if there is a feature that lets me set directory permissions when doing a bulk operation that would be ideal, because I know what output permissions I want regardless of what they are on disk.

    (I glanced at the new .directory() method, but I didn't see anything different there. And I'm guessing that it would drop the .htaccess file, so it probably wouldn't work for me anyway.)

    Any thoughts? Should I just add a directoryData option and send a PR?

    opened by nfriedly 19
  • looking for a handful of testers

    looking for a handful of testers

    i'm looking for a handful of testers that work with archives and node on a regular basis and would be willing to help test new features. i really want to make this module the go-to for all things archiving in node.

    opened by ctalkington 19
  • Zip of macOS .app prevents it from running

    Zip of macOS .app prevents it from running

    I'm using archiver as part of the build process for an Electron app. I create a directory containing the macOS .app executable. Before creating the zip, the .app runs fine. The one inside the resulting .zip however doesn't open. Just appears in the macOS dock for a split second and disappears.

    I'm also adding a README.txt on the fly in the zip, which opens fine.

    Oddly, the Windows and Linux executables are unaffected and both work fine from the .zip.

    Could archiver change a .app file, to prevent it from working?

    Here's what I'm doing:

    const output = fs.createWriteStream(`${exeRoot}.zip`)
    output.on('close', () => {
      console.log(chalk.red(`Deleting "${tempDir}"`))
      fs.remove(`${tempDir}`, err => {
        if (err) { throw err }
      })
    })
    
    const archive = archiver('zip')
    archive.on('error', err => { throw err })
    archive.pipe(output)
    
    archive.directory(`${tempDir}/${exeRoot}`, `${exeRoot}`)
    archive.append(readMe, { name: 'README.txt' })
    archive.finalize()
    

    I've also tried using store, to prevent any compression, but it makes no difference

    const archive = archiver('zip', { store: true })
    
    opened by sfyfedotcom 18
  • Cleanup the archiver state when destination closes

    Cleanup the archiver state when destination closes

    Use case is for streaming a ZIP to the network. Right now I

    1. Add a bunch of files/network streams to the archive
    2. pipe it to the http response
    3. Finalize the archive

    As long as the http response is still flowing everything is good (and all upstream resources should be closed/garbage collected). However if the client closes the connection before complete then I think it is possible right now to have open file handles/network connections and perhaps a memory leak.

    Crux When the http response is closed, it gets the 'close' and then does an 'unpipe' on the archiver. On that event I'd recommend that the archive cleanup it's state (or provide an api for doing so). Right now the unpipe gets ignored, and the current file/stream being piped just sits there, and the queue stays full.

    What I've tried now is the following:

    onFinished(res, function (err) {
      archive._queue.kill();
      currentstream.destroy(); //I know the currentstream since they are processed serially and I get the event when it starts.  
    })
    
    

    My reasoning is basically, let's short circuit the current readable, and make sure the archiver doesn't try anymore. But I can't guarantee this will clean up everything.

    Other Approach I've also thought about effectively maintaining the queue myself by drip-feeding streams into the archive only when I receive the entry event from the archiver, and then still needing to destroy the readable in case of error. Then only finalizing when I'm sure that everything else went through. This kind of defeats the point of having an internal queue though.

    However I think it would be much better to effectively have the premature close 'bubble up' through the archiver (and all streams), and then perhaps archiver could emit an event (error?) that it did not complete writing. After all I don't think there's any way that you could 'repipe' the archive onto another writable.

    opened by gconaty 17
  • Bump release-drafter/release-drafter from 5.19.0 to 5.22.0

    Bump release-drafter/release-drafter from 5.19.0 to 5.22.0

    Bumps release-drafter/release-drafter from 5.19.0 to 5.22.0.

    Release notes

    Sourced from release-drafter/release-drafter's releases.

    v5.22.0

    What's Changed

    New

    Full Changelog: https://github.com/release-drafter/release-drafter/compare/v5.21.1...v5.22.0

    v5.21.1

    What's Changed

    Dependency Updates

    Full Changelog: https://github.com/release-drafter/release-drafter/compare/v5.21.0...v5.21.1

    v5.21.0

    What's Changed

    New

    Full Changelog: https://github.com/release-drafter/release-drafter/compare/v5.20.1...v5.21.0

    v5.20.1

    What's Changed

    Bug Fixes

    Documentation

    Dependency Updates

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Bump readable-stream from 3.6.0 to 4.3.0

    Bump readable-stream from 3.6.0 to 4.3.0

    Bumps readable-stream from 3.6.0 to 4.3.0.

    Release notes

    Sourced from readable-stream's releases.

    v4.3.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/nodejs/readable-stream/compare/v4.2.0...v4.3.0

    v4.2.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/nodejs/readable-stream/compare/v4.1.0...v4.2.0

    v4.1.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/nodejs/readable-stream/compare/v4.0.0...v4.1.0

    v4.0.0

    What's Changed

    New Contributors

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • Ignore does not work in the subfolder in the archive.

    Ignore does not work in the subfolder in the archive.

    My code is as follows and what I want to do is this. Exporting everything in the current folder into a zip. However, a folder will be created in the zip and this folder will be the name of the current folder. So far everything ok. But the ignore parameter doesn't work. If I don't use an "archive.directory" method ignore works and dumps everything else into the zip without getting the ".git" folder. However, I want to have a folder in the zip. When I do this, "ignore" doesn't work and it also zips the ".git" folder.

    How can I solve this?

    #!/usr/bin/env node
    
    const path = require('path');
    const fs = require('fs');
    const fse = require('fs-extra');
    const archiver = require('archiver');
    
    const currentFolder = process.cwd();
    const fileName = path.basename(currentFolder);
    const parentFolder = path.resolve(currentFolder, '..');
    const outputZipFile = fs.createWriteStream(currentFolder + '/'+fileName+'.zip');
    
    module.exports = function() {
        const archive = archiver('zip', { zlib: { level: 9 } });
    
        outputZipFile.on('close', function () {
            console.log(archive.pointer() + ' total bytes');
            console.log('archiver has been finalized and the output file descriptor has closed.');
        });
        
        archive.on('error', function(err){
            throw err;
        });
    
        archive.pipe(outputZipFile);
    
        archive.directory(currentFolder, fileName);
    
        archive.glob('**', {
            cwd: currentFolder,
            ignore: ['.git', 'node_modules', '*.zip'],
            expand:true, flatten:true
        });
    
        archive.finalize(function(err, bytes) {
    		if(err) {
    			console.log(err);
    		}
    	});
    };
    
    opened by BeycanDeveloper 0
  • Bump tar-stream from 2.2.0 to 3.0.0

    Bump tar-stream from 2.2.0 to 3.0.0

    Bumps tar-stream from 2.2.0 to 3.0.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump mocha from 9.2.2 to 10.2.0

    Bump mocha from 9.2.2 to 10.2.0

    Bumps mocha from 9.2.2 to 10.2.0.

    Release notes

    Sourced from mocha's releases.

    v10.2.0

    10.2.0 / 2022-12-11

    :tada: Enhancements

    • #4945: API: add possibility to decorate ESM name before import (@​j0tunn)

    :bug: Fixes

    :book: Documentation

    v10.1.0

    10.1.0 / 2022-10-16

    :tada: Enhancements

    :nut_and_bolt: Other

    v10.0.0

    10.0.0 / 2022-05-01

    :boom: Breaking Changes

    :nut_and_bolt: Other

    ... (truncated)

    Changelog

    Sourced from mocha's changelog.

    10.2.0 / 2022-12-11

    :tada: Enhancements

    • #4945: API: add possibility to decorate ESM name before import (@​j0tunn)

    :bug: Fixes

    :book: Documentation

    10.1.0 / 2022-10-16

    :tada: Enhancements

    :nut_and_bolt: Other

    10.0.0 / 2022-05-01

    :boom: Breaking Changes

    :nut_and_bolt: Other

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump tar from 6.1.11 to 6.1.13

    Bump tar from 6.1.11 to 6.1.13

    Bumps tar from 6.1.11 to 6.1.13.

    Release notes

    Sourced from tar's releases.

    v6.1.13

    6.1.13 (2022-12-07)

    Dependencies

    v6.1.12

    6.1.12 (2022-10-31)

    Bug Fixes

    Documentation

    Changelog

    Sourced from tar's changelog.

    6.1.13 (2022-12-07)

    Dependencies

    6.1.12 (2022-10-31)

    Bug Fixes

    Documentation

    6.0

    • Drop support for node 6 and 8
    • fix symlinks and hardlinks on windows being packed with \-style path targets

    5.0

    • Address unpack race conditions using path reservations
    • Change large-numbers errors from TypeError to Error
    • Add TAR_* error codes
    • Raise TAR_BAD_ARCHIVE warning/error when there are no valid entries found in an archive
    • do not treat ignored entries as an invalid archive
    • drop support for node v4
    • unpack: conditionally use a file mapping to write files on Windows
    • Set more portable 'mode' value in portable mode
    • Set portable gzip option in portable mode

    4.4

    • Add 'mtime' option to tar creation to force mtime
    • unpack: only reuse file fs entries if nlink = 1
    • unpack: rename before unlinking files on Windows
    • Fix encoding/decoding of base-256 numbers
    • Use stat instead of lstat when checking CWD
    • Always provide a callback to fs.close()

    4.3

    • Add 'transform' unpack option

    ... (truncated)

    Commits
    • a044a87 chore: release 6.1.13 (#344)
    • cc4e0dd deps: bump minipass from 3.3.6 to 4.0.0
    • 5dcfcb3 chore: bump events-to-array from 1.1.2 to 2.0.3
    • 329caed chore: postinstall for dependabot template-oss PR
    • 72f6e39 chore: bump @​npmcli/template-oss from 4.8.0 to 4.10.0
    • 001eafb chore: release 6.1.12
    • ac1026a chore: dry up template-oss config
    • 2e45b11 chore: use a local instead of remote file for test
    • 79378ef chore: postinstall for dependabot template-oss PR
    • eaea26d chore: bump @​npmcli/template-oss from 4.7.1 to 4.8.0
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by lukekarrys, a new releaser for tar since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
Releases(5.3.1)
  • 5.3.1(Apr 15, 2022)

    What’s changed

    Maintenance

    • Test against node v16 @ctalkington (#545)

    Dependency updates

    • Bump mocha from 8.3.0 to 9.0.2 @dependabot (#526)
    • Bump actions/setup-node from 2.1.5 to 2.2.0 @dependabot (#525)
    • Bump jsdoc from 3.6.6 to 3.6.7 @dependabot (#516)
    • Bump lodash from 4.17.19 to 4.17.21 @dependabot (#514)
    • Bump chai from 4.3.3 to 4.3.4 @dependabot (#508)
    • Bump actions/setup-node from 2.2.0 to 2.3.0 @dependabot (#528)
    • Bump mocha from 9.0.2 to 9.1.0 @dependabot (#544)
    • Bump async from 3.2.0 to 3.2.1 @dependabot (#538)
    • Bump actions/checkout from 2.3.4 to 3.0.1 @dependabot (#586)
    • Bump actions/setup-node from 2.3.0 to 3.1.1 @dependabot (#585)
    • Bump jsdoc from 3.6.7 to 3.6.10 @dependabot (#566)
    • Bump async from 3.2.1 to 3.2.3 @dependabot (#562)
    • Bump mocha from 9.1.0 to 9.2.2 @dependabot (#580)
    • Bump tar from 6.1.0 to 6.1.11 @dependabot (#546)
    • Bump chai from 4.3.4 to 4.3.6 @dependabot (#568)
    Source code(tar.gz)
    Source code(zip)
  • 5.3.0(Mar 7, 2021)

    Maintenance

    • Bump chai from 4.3.0 to 4.3.3 (#505)
    • Bump zip-stream from 4.0.4 to 4.1.0 (#504)
    • Bump mocha from 8.2.1 to 8.3.0 (#499)
    • Bump actions/setup-node from v2.1.4 to v2.1.5 (#500)
    • Bump tar from 6.0.5 to 6.1.0 (#487)
    • Bump chai from 4.2.0 to 4.3.0 (#496)
    • Bump tar-stream from 2.1.4 to 2.2.0 (#485)
    • Bump actions/setup-node from v2.1.3 to v2.1.4 (#483)
    • Update progress example (#384)
    Source code(tar.gz)
    Source code(zip)
  • 5.2.0(Jan 7, 2021)

    Features

    • Finalize should always return a promise (#480)

    Maintenance

    • Update README.md (#478)
    • Fix finalize method jsdoc return type (#482)
    • Bump actions/setup-node from v2.1.2 to v2.1.3 (#479)
    Source code(tar.gz)
    Source code(zip)
  • 5.1.0(Nov 20, 2020)

    Features

    • Add mode parameter to symlink (#469)
    • Add isRegisteredFormat method (#462)

    Bug Fixes

    • Fix glob() options parameter's link (#453)

    Maintenance

    • Bump archiver-jsdoc-theme from 1.1.1 to 1.1.3 (#472)
    • Bump zip-stream from 4.0.2 to 4.0.4 (#473)
    • Bump jsdoc from 3.6.5 to 3.6.6 (#452)
    • Bump readdir-glob from 1.0.0 to 1.1.1 (#460)
    • Bump mocha from 8.1.3 to 8.2.1 (#465)
    • Bump actions/setup-node from v2.1.1 to v2.1.2 (#459)
    • Bump actions/checkout from v2.3.2 to v2.3.4 (#466)
    Source code(tar.gz)
    Source code(zip)
  • 5.0.2(Sep 11, 2020)

  • 5.0.1(Sep 11, 2020)

    Maintenance

    • Bump tar-stream from 2.1.3 to 2.1.4 (#448)
    • Update docs (#441)
    • Bump mocha from 8.1.1 to 8.1.3 (#444)
    • Bump tar from 6.0.2 to 6.0.5 (#439)
    • Bump mocha from 8.1.0 to 8.1.1 (#437)
    • Bump actions/checkout from v2.3.1 to v2.3.2 (#438)
    • Bump mocha from 8.0.1 to 8.1.0 (#436)
    • Bump actions/setup-node from v2.1.0 to v2.1.1 (#432)
    • Bump jsdoc from 3.6.4 to 3.6.5 (#434)
    Source code(tar.gz)
    Source code(zip)
  • 5.0.0(Jul 23, 2020)

    What’s Changed

    • breaking: absolute path glob patterns are no longer supported: use cwd option instead.
    • Replaced glob with readdir-glob to be memory efficient (#433) @Yqnn
    • Bump zip-stream from 4.0.0 to 4.0.2 (#431) @dependabot
    • Bump zip-stream from 3.0.1 to 4.0.0 (#430) @dependabot
    • Bump mocha from 6.2.3 to 8.0.1 (#424) @dependabot
    • Bump tar from 4.4.13 to 6.0.2 (#426) @dependabot
    • Bump tar-stream from 2.1.2 to 2.1.3 (#427) @dependabot
    • Bump rimraf from 2.7.1 to 3.0.2 (#425) @dependabot
    • Bump actions/setup-node from v1 to v2.1.0 (#428) @dependabot
    • Bump actions/checkout from v1 to v2.3.1 (#429) @dependabot
    • Bump lodash from 4.17.15 to 4.17.19 (#423) @dependabot
    Source code(tar.gz)
    Source code(zip)
  • 4.0.2(Jul 11, 2020)

  • 4.0.1(Apr 14, 2020)

  • 4.0.0(Apr 14, 2020)

    • breaking: slowly catch up with node LTS, remove support for versions under 8.
    • update multiple deps.
    • fix for a hang with _statQueue (#388)
    Source code(tar.gz)
    Source code(zip)
  • 3.1.1(Aug 2, 2019)

  • 3.1.0(Aug 2, 2019)

  • 3.0.3(Jul 20, 2019)

  • 3.0.2(Jul 19, 2019)

  • 3.0.1(Jul 19, 2019)

  • 3.0.0(Aug 22, 2018)

    • breaking: follow node LTS, remove support for versions under 6. (#339)
    • bugfix: use stats in tar.js and core.js (#326)
    • other: update to archiver-utils@2 and zip-stream@2
    • other: remove lodash npm module usage (#335, #339)
    • other: Avoid using deprecated Buffer constructor (#312)
    • other: Remove unnecessary return and fix indentation (#297)
    • test: now targeting node v10 (#320)
    Source code(tar.gz)
    Source code(zip)
  • 2.1.1(Jan 10, 2018)

  • 2.1.0(Jan 10, 2018)

    • refactor: directory now uses glob behind the scenes. should fix some directory recursion issues. (#267, #275)
    • docs: more info in quick start. (#284)
    Source code(tar.gz)
    Source code(zip)
  • 2.0.3(Aug 26, 2017)

    • bugfix: revert #261 due to potential issues with editing entryData in special cases.
    • bugfix: add var to entryData in glob callback (#273)
    Source code(tar.gz)
    Source code(zip)
  • 2.0.2(Aug 26, 2017)

  • 2.0.1(Aug 26, 2017)

  • 2.0.0(Jul 5, 2017)

    • feature: support for symlinks. (#228)
    • feature: support for promises on finalize. (#248)
    • feature: addition of symlink method for programmatically creating symlinks within an archive.
    • change: emit warning instead of error when stat fails and the process can still continue.
    • change: errors and warnings now contain extended data (where available) and have standardized error codes (#256)
    • change: removal of deprecated bulk functionality. (#249)
    • change: removal of internal _entries property in favor of progress event. (#247)
    • change: support for node v4.0+ only. node v0.10 and v0.12 support has been dropped. (#241)
    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Dec 13, 2016)

  • 1.2.0(Nov 2, 2016)

  • 1.1.0(Aug 29, 2016)

  • 1.0.1(Jul 28, 2016)

  • 1.0.0(Apr 6, 2016)

  • 0.21.0(Dec 22, 2015)

    • core: add support for entry.prefix. update some internals to use it.
    • core(glob): when setting options.cwd get an absolute path to the file and use the relative path for entry.name. #173
    • core(bulk): soft-deprecation of bulk feature. will remain for time being with no new features or support.
    • docs: initial jsdoc for core. http://archiverjs.com/docs
    • tests: restructure a bit.
    Source code(tar.gz)
    Source code(zip)
  • 0.20.0(Nov 30, 2015)

  • 0.19.0(Nov 28, 2015)

tar-stream is a streaming tar parser and generator.

tar-stream tar-stream is a streaming tar parser and generator and nothing else. It is streams2 and operates purely using streams which means you can e

Mathias Buus 356 Jan 3, 2023
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Webrtc, & web socket based streaming live video streaming and chatting platform. Written in Node, Typescript, and Javascript!

Live Streaming!! Welcome to my implementation of live streaming along with real time chat. I'm going to make a live streaming platform that will supoo

Hamdaan Khalid 19 Nov 23, 2022
Pim 4 Jun 21, 2022
A self-hosted, completely private and free music streaming server compatible with Synology Audio Station's web browser interface and smartphone apps.

Open Audio Server Open Audio Server is a music streaming server compatible with Audio Station by Synology. Audio Station creates your own private serv

null 91 Dec 11, 2022
PeanutizeMe.com Archive

PeanutizeMe.com Archive In late 2021, the Peanuts Movie character creator at peanutizeme.com went offline. Using a mix of Wayback Machine snapshots an

Andrew 9 Dec 28, 2022
An application that can record and archive your ideas.

IdeaBox Context and Features IdeaBox is a web application that my fellow collaborators and I created from the ground up. It involves the creation and

Michael J. Harrison 3 Apr 15, 2022
A simple web archive.

?? Garden A simple web archive. Moar screenshots! What is it? Garden is a (somewhat) simple web archiver I wrote in a weekend, in part to toy around w

Basil 4 Oct 12, 2022
⌛ Unofficial archive of old Scratch projects

Unofficial archive of old Scratch projects Due to the Scratch Team planning to remove the ability to view unshared projects (LLK/scratch-www#6773), I

Micah Lindley 13 Oct 7, 2022
🔍 Full stack engineers archive applet for Wechat.

Full Stack Engineers Archive Contributing We welcome you to join the development of this applet. Please see contributing document. ?? Also, we welcome

Wechat applet Development Team 3 May 24, 2022
⚡ Archive of all Zotero Translators co-created by participants of the Information Analysis course in 2018 to date.

awesome-translators 1. awesome-translators 维护小组 1.1 Translators 更新流程 1.2 Zotero 安装流程 1.3 Zotero 进阶资料 2. Translators 2.1 Translators 总览表 2.2 Translator

开智学堂 99 Dec 30, 2022
Archive for LeechersParadise.com, the free leech downloader.

LeechersParadise This project has no been archived due to the project being discontinued for many reasons. Thank you to the pirate community for makin

David 14 Nov 5, 2022
A transparent, in-memory, streaming write-on-update JavaScript database for Small Web applications that persists to a JavaScript transaction log.

JavaScript Database (JSDB) A zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database for the Small Web that persists to

Small Technology Foundation 237 Nov 13, 2022
make streaming http requests

hyperquest treat http requests as a streaming transport The hyperquest api is a subset of request. This module works in the browser with browserify. r

James Halliday 711 Sep 8, 2022
Grab Blogger & Google Photos, mp4upload.com,cloudvideo.tv, etc streaming link

Multi direct link Streaming & Downloader Grab Blogger & Google Photos, mp4upload.com, cloudvideo.tv, etc streaming link Leaguage : node react-native :

Khalis Afkari 21 Dec 13, 2022
tar-stream is a streaming tar parser and generator.

tar-stream tar-stream is a streaming tar parser and generator and nothing else. It is streams2 and operates purely using streams which means you can e

Mathias Buus 356 Jan 3, 2023