Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

@ffflorian/jszip-cli

Package Overview
Dependencies
Maintainers
1
Versions
97
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ffflorian/jszip-cli - npm Package Compare versions

Comparing version
1.0.0
to
1.1.0
+34
-6
dist/cli.js

@@ -5,5 +5,5 @@ #!/usr/bin/env node

var program = require("commander");
var path = require("path");
var _1 = require("./");
var _a = require('../package.json'), name = _a.name, version = _a.version, description = _a.description;
program.on('command:*', function () { return program.help(); });
program

@@ -13,12 +13,40 @@ .name(name.replace(/^@[^/]+\//, ''))

.description(description)
.option('-l, --level <number>', 'Specify the compression level', 5)
.option('-o, --output <dir>', 'Specify the output directory (default: stdout)')
.option('-i, --ignore <entry>', 'Ignore a file or directory');
program
.command('add')
.description('Add files to the ZIP archive.')
.option('-l, --level <number>', 'Specify the compression level', 5)
.option('-o, --output <dir>', 'Specify the output directory (default: stdout)')
.option('-i, --ignore <entry>', 'Ignore a file or directory')
.arguments('<entries...>')
.option('-o, --output <dir>', 'Specify the output directory', path.resolve('.', 'data.zip'))
.option('-i, --ignore <entry>', 'Ignore a file or directory')
.action(function (entries, options) {
new _1.JSZipCLI({
entries: entries,
ignoreEntries: options.ignore ? [options.ignore] : undefined,
outputFile: options.output,
ignoreEntries: options.parent.ignore ? [options.parent.ignore] : undefined,
level: options.parent.level,
outputEntry: options.parent.output,
})
.add(entries)
.save()
.then(function () {
if (options.parent.output) {
console.log('Done.');
}
})
.catch(console.error);
});
program
.command('extract')
.description('Extract files from ZIP archive(s).')
.option('-l, --level <number>', 'Specify the compression level', 5)
.option('-o, --output <dir>', 'Specify the output directory (default: stdout)')
.option('-i, --ignore <entry>', 'Ignore a file or directory')
.arguments('<archives...>')
.action(function (files, options) {
new _1.JSZipCLI({
ignoreEntries: options.parent.ignore ? [options.parent.ignore] : undefined,
outputEntry: options.parent.output,
})
.extract(files)
.then(function () { return console.log('Done.'); })

@@ -25,0 +53,0 @@ .catch(console.error);

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,mCAAqC;AACrC,2BAA6B;AAE7B,uBAA4B;AAEtB,IAAA,+BAA+G,EAA9G,cAAI,EAAE,oBAAO,EAAE,4BAAW,CAAqF;AAEtH,OAAO;KACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;KACnC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC;KACjC,WAAW,CAAC,WAAW,CAAC;KACxB,SAAS,CAAC,cAAc,CAAC;KACzB,MAAM,CAAC,oBAAoB,EAAE,8BAA8B,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;KAC3F,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,MAAM,CAAC,UAAC,OAAO,EAAE,OAAO;IACvB,IAAI,WAAQ,CAAC;QACX,OAAO,SAAA;QACP,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5D,UAAU,EAAE,OAAO,CAAC,MAAM;KAC3B,CAAC;SACC,IAAI,EAAE;SACN,IAAI,CAAC,cAAM,OAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAApB,CAAoB,CAAC;SAChC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IACjC,OAAO,CAAC,IAAI,EAAE,CAAC;CAChB"}
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,mCAAqC;AAErC,uBAA4B;AAEtB,IAAA,+BAA+G,EAA9G,cAAI,EAAE,oBAAO,EAAE,4BAAW,CAAqF;AAEtH,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,cAAM,OAAA,OAAO,CAAC,IAAI,EAAE,EAAd,CAAc,CAAC,CAAC;AAE9C,OAAO;KACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;KACnC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC;KACjC,WAAW,CAAC,WAAW,CAAC;KACxB,MAAM,CAAC,sBAAsB,EAAE,+BAA+B,EAAE,CAAC,CAAC;KAClE,MAAM,CAAC,oBAAoB,EAAE,gDAAgD,CAAC;KAC9E,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC,CAAC;AAEhE,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,sBAAsB,EAAE,+BAA+B,EAAE,CAAC,CAAC;KAClE,MAAM,CAAC,oBAAoB,EAAE,gDAAgD,CAAC;KAC9E,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,SAAS,CAAC,cAAc,CAAC;KACzB,MAAM,CAAC,UAAC,OAAO,EAAE,OAAO;IACvB,IAAI,WAAQ,CAAC;QACX,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1E,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK;QAC3B,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;KACnC,CAAC;SACC,GAAG,CAAC,OAAO,CAAC;SACZ,IAAI,EAAE;SACN,IAAI,CAAC;QACJ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;YACzB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SACtB;IACH,CAAC,CAAC;SACD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,sBAAsB,EAAE,+BAA+B,EAAE,CAAC,CAAC;KAClE,MAAM,CAAC,oBAAoB,EAAE,gDAAgD,CAAC;KAC9E,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,SAAS,CAAC,eAAe,CAAC;KAC1B,MAAM,CAAC,UAAC,KAAK,EAAE,OAAO;IACrB,IAAI,WAAQ,CAAC;QACX,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1E,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;KACnC,CAAC;SACC,OAAO,CAAC,KAAK,CAAC;SACd,IAAI,CAAC,cAAM,OAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAApB,CAAoB,CAAC;SAChC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IACjC,OAAO,CAAC,IAAI,EAAE,CAAC;CAChB"}

@@ -0,17 +1,25 @@

/// <reference types="node" />
export interface CLIOptions {
entries: string[];
ignoreEntries?: string[];
outputFile: string;
level?: number;
outputEntry?: string;
}
export declare class JSZipCLI {
private readonly jszip;
private jszip;
private entries;
private ignoreEntries;
private outputDir;
constructor({ entries, ignoreEntries, outputFile }: CLIOptions);
private compressionLevel;
private outputEntry;
constructor(options: CLIOptions);
private addFile;
private checkFile;
private checkEntry;
private addLink;
private walkDir;
add(entries: string[]): JSZipCLI;
private ensureDir;
extract(files: string[]): Promise<void>;
getBuffer(): Promise<Buffer>;
private printStream;
private writeFile;
save(): Promise<void>;
}

@@ -42,16 +42,22 @@ "use strict";

var util_1 = require("util");
var fsLstatPromise = util_1.promisify(fs.lstat);
var fsReadDirPromise = util_1.promisify(fs.readdir);
var fsReadFilePromise = util_1.promisify(fs.readFile);
var fsReadLinkPromise = util_1.promisify(fs.readlink);
var fsWriteFilePromise = util_1.promisify(fs.writeFile);
var fsPromise = {
access: util_1.promisify(fs.access),
chmod: util_1.promisify(fs.writeFile),
lstat: util_1.promisify(fs.lstat),
mkdir: util_1.promisify(fs.mkdir),
readDir: util_1.promisify(fs.readdir),
readFile: util_1.promisify(fs.readFile),
readLink: util_1.promisify(fs.readlink),
writeFile: util_1.promisify(fs.writeFile),
};
var JSZipCLI = /** @class */ (function () {
function JSZipCLI(_a) {
var _b = _a.entries, entries = _b === void 0 ? [] : _b, _c = _a.ignoreEntries, ignoreEntries = _c === void 0 ? [] : _c, _d = _a.outputFile, outputFile = _d === void 0 ? '.' : _d;
function JSZipCLI(options) {
var _a = options || {}, _b = _a.ignoreEntries, ignoreEntries = _b === void 0 ? [] : _b, _c = _a.level, level = _c === void 0 ? 5 : _c, _d = _a.outputEntry, outputEntry = _d === void 0 ? null : _d;
this.jszip = new JSZip();
this.entries = entries;
this.compressionLevel = level;
this.entries = [];
this.ignoreEntries = ignoreEntries.map(function (entry) { return new RegExp(entry.replace('*', '.*')); });
this.outputDir = path.resolve(outputFile);
this.outputEntry = typeof outputEntry === 'string' ? path.resolve(outputEntry) : outputEntry;
}
JSZipCLI.prototype.addFile = function (filePath) {
JSZipCLI.prototype.addFile = function (filePath, fileMode) {
return __awaiter(this, void 0, void 0, function () {

@@ -61,6 +67,10 @@ var fileData;

switch (_a.label) {
case 0: return [4 /*yield*/, fsReadFilePromise(filePath)];
case 0: return [4 /*yield*/, fsPromise.readFile(filePath)];
case 1:
fileData = _a.sent();
this.jszip.file(filePath, fileData);
this.jszip.file(filePath, fileData, {
compression: '',
dosPermissions: fileMode,
unixPermissions: fileMode,
});
return [2 /*return*/];

@@ -71,3 +81,3 @@ }

};
JSZipCLI.prototype.checkFile = function (filePath) {
JSZipCLI.prototype.checkEntry = function (filePath) {
return __awaiter(this, void 0, void 0, function () {

@@ -77,3 +87,3 @@ var fileStat, ignoreEntry;

switch (_a.label) {
case 0: return [4 /*yield*/, fsLstatPromise(filePath)];
case 0: return [4 /*yield*/, fsPromise.lstat(filePath)];
case 1:

@@ -85,4 +95,4 @@ fileStat = _a.sent();

}
if (!fileStat.isSymbolicLink()) return [3 /*break*/, 3];
return [4 /*yield*/, this.addLink(filePath)];
if (!fileStat.isDirectory()) return [3 /*break*/, 3];
return [4 /*yield*/, this.walkDir(filePath)];
case 2:

@@ -92,4 +102,4 @@ _a.sent();

case 3:
if (!fileStat.isDirectory()) return [3 /*break*/, 5];
return [4 /*yield*/, this.walkDir(filePath)];
if (!fileStat.isFile()) return [3 /*break*/, 5];
return [4 /*yield*/, this.addFile(filePath, fileStat.mode)];
case 4:

@@ -99,4 +109,4 @@ _a.sent();

case 5:
if (!fileStat.isFile()) return [3 /*break*/, 7];
return [4 /*yield*/, this.addFile(filePath)];
if (!fileStat.isSymbolicLink()) return [3 /*break*/, 7];
return [4 /*yield*/, this.addLink(filePath, fileStat.mode)];
case 6:

@@ -111,3 +121,3 @@ _a.sent();

};
JSZipCLI.prototype.addLink = function (filePath) {
JSZipCLI.prototype.addLink = function (linkPath, fileMode) {
return __awaiter(this, void 0, void 0, function () {

@@ -117,6 +127,9 @@ var fileData;

switch (_a.label) {
case 0: return [4 /*yield*/, fsReadLinkPromise(filePath)];
case 0: return [4 /*yield*/, fsPromise.readLink(linkPath)];
case 1:
fileData = _a.sent();
this.jszip.file(filePath, fileData);
this.jszip.file(linkPath, fileData, {
dosPermissions: fileMode,
unixPermissions: fileMode,
});
return [2 /*return*/];

@@ -132,3 +145,3 @@ }

switch (_a.label) {
case 0: return [4 /*yield*/, fsReadDirPromise(filePath)];
case 0: return [4 /*yield*/, fsPromise.readDir(filePath)];
case 1:

@@ -142,3 +155,3 @@ files = _a.sent();

newPath = path.join(filePath, file);
return [4 /*yield*/, this.checkFile(newPath)];
return [4 /*yield*/, this.checkEntry(newPath)];
case 3:

@@ -155,2 +168,153 @@ _a.sent();

};
JSZipCLI.prototype.add = function (entries) {
this.entries = entries;
return this;
};
JSZipCLI.prototype.ensureDir = function (dirPath) {
return __awaiter(this, void 0, void 0, function () {
var error_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 4]);
return [4 /*yield*/, fsPromise.access(dirPath, fs.constants.R_OK)];
case 1:
_a.sent();
return [3 /*break*/, 4];
case 2:
error_1 = _a.sent();
return [4 /*yield*/, fsPromise.mkdir(dirPath)];
case 3:
_a.sent();
return [3 /*break*/, 4];
case 4: return [2 /*return*/];
}
});
});
};
JSZipCLI.prototype.extract = function (files) {
return __awaiter(this, void 0, void 0, function () {
var _loop_1, this_1, _i, files_2, file, state_1;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_loop_1 = function (file) {
var jszip, resolvedPath, data, entries;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
jszip = new JSZip();
if (!this_1.outputEntry) return [3 /*break*/, 2];
return [4 /*yield*/, this_1.ensureDir(this_1.outputEntry)];
case 1:
_a.sent();
_a.label = 2;
case 2:
resolvedPath = path.resolve(file);
return [4 /*yield*/, fsPromise.readFile(resolvedPath)];
case 3:
data = _a.sent();
return [4 /*yield*/, jszip.loadAsync(data, { createFolders: true })];
case 4:
_a.sent();
if (!this_1.outputEntry) {
this_1.printStream(jszip.generateNodeStream());
return [2 /*return*/, { value: void 0 }];
}
entries = [];
jszip.forEach(function (filePath, entry) { return entries.push([filePath, entry]); });
return [4 /*yield*/, Promise.all(entries.map(function (_a) {
var filePath = _a[0], entry = _a[1];
return __awaiter(_this, void 0, void 0, function () {
var resolvedFilePath, data_1;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
resolvedFilePath = path.join(this.outputEntry, filePath);
if (!entry.dir) return [3 /*break*/, 2];
return [4 /*yield*/, this.ensureDir(resolvedFilePath)];
case 1:
_b.sent();
return [3 /*break*/, 6];
case 2: return [4 /*yield*/, entry.async('nodebuffer')];
case 3:
data_1 = _b.sent();
return [4 /*yield*/, fsPromise.writeFile(resolvedFilePath, data_1, {
encoding: 'utf-8',
})];
case 4:
_b.sent();
if (!entry.unixPermissions) return [3 /*break*/, 6];
return [4 /*yield*/, fsPromise.chmod(resolvedFilePath, entry.unixPermissions)];
case 5:
_b.sent();
_b.label = 6;
case 6: return [2 /*return*/];
}
});
});
}))];
case 5:
_a.sent();
return [2 /*return*/];
}
});
};
this_1 = this;
_i = 0, files_2 = files;
_a.label = 1;
case 1:
if (!(_i < files_2.length)) return [3 /*break*/, 4];
file = files_2[_i];
return [5 /*yield**/, _loop_1(file)];
case 2:
state_1 = _a.sent();
if (typeof state_1 === "object")
return [2 /*return*/, state_1.value];
_a.label = 3;
case 3:
_i++;
return [3 /*break*/, 1];
case 4: return [2 /*return*/];
}
});
});
};
JSZipCLI.prototype.getBuffer = function () {
var compressionType = this.compressionLevel === 0 ? 'STORE' : 'DEFLATE';
return this.jszip.generateAsync({
type: 'nodebuffer',
compression: compressionType,
compressionOptions: {
level: this.compressionLevel,
},
});
};
JSZipCLI.prototype.printStream = function (fileStream) {
return new Promise(function (resolve, reject) {
var stream = fileStream.pipe(process.stdout);
stream.on('finish', resolve);
stream.on('error', reject);
});
};
JSZipCLI.prototype.writeFile = function (data, filePath) {
return __awaiter(this, void 0, void 0, function () {
var error_2;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, fsPromise.access(filePath, fs.constants.R_OK)];
case 1:
_a.sent();
return [3 /*break*/, 3];
case 2:
error_2 = _a.sent();
return [2 /*return*/, fsPromise.writeFile(data, filePath)];
case 3: return [2 /*return*/];
}
});
});
};
JSZipCLI.prototype.save = function () {

@@ -162,16 +326,20 @@ return __awaiter(this, void 0, void 0, function () {

switch (_a.label) {
case 0:
if (!this.outputDir.match(/\.\w+$/)) {
this.outputDir = path.join(this.outputDir, 'data.zip');
}
return [4 /*yield*/, Promise.all(this.entries.map(function (entry) { return _this.checkFile(entry); }))];
case 0: return [4 /*yield*/, Promise.all(this.entries.map(function (entry) { return _this.checkEntry(entry); }))];
case 1:
_a.sent();
return [4 /*yield*/, this.jszip.generateAsync({ type: 'nodebuffer' })];
return [4 /*yield*/, this.getBuffer()];
case 2:
data = _a.sent();
return [4 /*yield*/, fsWriteFilePromise(this.outputDir, data)];
if (!this.outputEntry) return [3 /*break*/, 4];
if (!this.outputEntry.match(/\.\w+$/)) {
this.outputEntry = path.join(this.outputEntry, 'data.zip');
}
return [4 /*yield*/, this.writeFile(data, this.outputEntry)];
case 3:
_a.sent();
return [2 /*return*/];
return [3 /*break*/, 5];
case 4:
process.stdout.write(data);
_a.label = 5;
case 5: return [2 /*return*/];
}

@@ -178,0 +346,0 @@ });

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}

@@ -34,3 +34,3 @@ {

"types": "dist/index.d.ts",
"version": "1.0.0"
"version": "1.1.0"
}

@@ -12,3 +12,3 @@ # jszip-cli [![Build Status](https://api.travis-ci.org/ffflorian/jszip-cli.svg?branch=master)](https://travis-ci.org/ffflorian/jszip-cli/) [![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=ffflorian/jszip-cli)](https://dependabot.com)

```
Usage: jszip-cli [options] <entries...>
Usage: jszip-cli [options] [command]

@@ -19,6 +19,19 @@ A zip CLI based on jszip.

-v, --version output the version number
-o, --output <dir> Specify the output directory (default: Current folder)
-i, --ignore <entry> Ignore a file or directory
-h, --help output usage information
-v, --version output the version number
-l, --level <number> Specify the compression level (default: 5)
-o, --output <dir> Specify the output directory (default: stdout)
-i, --ignore <entry> Ignore a file or directory
-h, --help output usage information
Commands:
add [options] <entries...> Add files to the ZIP archive.
extract [options] <archives...> Extract files from ZIP archive(s).
```
## Examples
```
jszip-cli add dist package.json -i *.map -o deploy.zip
jszip-cli extract deploy.zip -o my_deployment/
```