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.2.1
to
1.2.2
+21
dist/BuildService.d.ts
/// <reference types="node" />
import { CLIOptions } from './Interfaces';
declare class BuildService {
private readonly fileService;
private readonly jszip;
private readonly logger;
private readonly options;
private entries;
private ignoreEntries;
private outputEntry;
constructor(options: Required<CLIOptions>);
add(rawEntries: string[]): BuildService;
getBuffer(): Promise<Buffer>;
save(): Promise<BuildService>;
private addFile;
private addLink;
private checkEntry;
private checkOutput;
private walkDir;
}
export { BuildService };
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var logdown = require("logdown");
var JSZip = require("jszip");
var path = require("path");
var FileService_1 = require("./FileService");
var BuildService = /** @class */ (function () {
function BuildService(options) {
this.fileService = new FileService_1.FileService(options);
this.jszip = new JSZip();
this.logger = logdown('jszip-cli/BuildService', {
logger: console,
markdown: false,
});
this.logger.state = { isEnabled: options.verbose };
this.options = options;
this.entries = [];
this.ignoreEntries = this.options.ignoreEntries.map(function (entry) { return new RegExp(entry.replace('*', '.*')); });
this.outputEntry = this.options.outputEntry ? path.resolve(this.options.outputEntry) : null;
}
BuildService.prototype.add = function (rawEntries) {
this.logger.info("Adding " + rawEntries.length + " entr" + (rawEntries.length === 1 ? 'y' : 'ies') + " to ZIP file.");
this.entries = rawEntries.map(function (rawEntry) {
var resolvedPath = path.resolve(rawEntry);
var baseName = path.basename(rawEntry);
return {
resolvedPath: resolvedPath,
zipPath: baseName,
};
});
return this;
};
BuildService.prototype.getBuffer = function () {
var compressionType = this.options.compressionLevel === 0 ? 'STORE' : 'DEFLATE';
return this.jszip.generateAsync({
type: 'nodebuffer',
compression: compressionType,
compressionOptions: {
level: this.options.compressionLevel,
},
});
};
BuildService.prototype.save = function () {
return __awaiter(this, void 0, void 0, function () {
var data;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.checkOutput()];
case 1:
_a.sent();
return [4 /*yield*/, Promise.all(this.entries.map(function (entry) { return _this.checkEntry(entry); }))];
case 2:
_a.sent();
return [4 /*yield*/, this.getBuffer()];
case 3:
data = _a.sent();
if (!this.outputEntry) return [3 /*break*/, 5];
if (!this.outputEntry.match(/\.\w+$/)) {
this.outputEntry = path.join(this.outputEntry, 'data.zip');
}
return [4 /*yield*/, this.fileService.writeFile(data, this.outputEntry)];
case 4:
_a.sent();
return [3 /*break*/, 6];
case 5:
process.stdout.write(data);
_a.label = 6;
case 6: return [2 /*return*/, this];
}
});
});
};
BuildService.prototype.addFile = function (entry) {
return __awaiter(this, void 0, void 0, function () {
var resolvedPath, zipPath, fileData, fileStat;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
resolvedPath = entry.resolvedPath, zipPath = entry.zipPath;
return [4 /*yield*/, FileService_1.fsPromise.readFile(resolvedPath)];
case 1:
fileData = _a.sent();
return [4 /*yield*/, FileService_1.fsPromise.lstat(resolvedPath)];
case 2:
fileStat = _a.sent();
return [4 /*yield*/, this.jszip.file(zipPath, fileData, {
createFolders: true,
date: fileStat.mtime,
//dosPermissions: fileStat.mode,
unixPermissions: fileStat.mode,
})];
case 3:
_a.sent();
return [2 /*return*/];
}
});
});
};
BuildService.prototype.addLink = function (entry) {
return __awaiter(this, void 0, void 0, function () {
var resolvedPath, fileName, fileData, fileStat;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
resolvedPath = entry.resolvedPath;
fileName = path.basename(resolvedPath);
return [4 /*yield*/, FileService_1.fsPromise.readLink(entry.resolvedPath)];
case 1:
fileData = _a.sent();
return [4 /*yield*/, FileService_1.fsPromise.lstat(entry.resolvedPath)];
case 2:
fileStat = _a.sent();
return [4 /*yield*/, this.jszip.file(fileName, fileData, {
date: fileStat.mtime,
createFolders: true,
dosPermissions: fileStat.mode,
unixPermissions: fileStat.mode,
})];
case 3:
_a.sent();
return [2 /*return*/];
}
});
});
};
BuildService.prototype.checkEntry = function (entry) {
return __awaiter(this, void 0, void 0, function () {
var fileStat, ignoreEntries;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, FileService_1.fsPromise.lstat(entry.resolvedPath)];
case 1:
fileStat = _a.sent();
ignoreEntries = this.ignoreEntries.filter(function (ignoreEntry) { return Boolean(entry.resolvedPath.match(ignoreEntry)); });
if (ignoreEntries.length) {
this.logger.info("Found " + entry.resolvedPath + ". Not adding since it's on the ignore list:", ignoreEntries.map(function (entry) { return String(entry); }));
return [2 /*return*/];
}
this.logger.info("Found " + entry.resolvedPath + ". Adding to the ZIP file.");
if (!fileStat.isDirectory()) return [3 /*break*/, 3];
return [4 /*yield*/, this.walkDir(entry)];
case 2:
_a.sent();
return [3 /*break*/, 8];
case 3:
if (!fileStat.isFile()) return [3 /*break*/, 5];
return [4 /*yield*/, this.addFile(entry)];
case 4:
_a.sent();
return [3 /*break*/, 8];
case 5:
if (!fileStat.isSymbolicLink()) return [3 /*break*/, 7];
return [4 /*yield*/, this.addLink(entry)];
case 6:
_a.sent();
return [3 /*break*/, 8];
case 7:
this.logger.info("Unknown file type.", { fileStat: fileStat });
console.info("Can't read: " + entry.resolvedPath + ". Ignoring.");
_a.label = 8;
case 8: return [2 /*return*/];
}
});
});
};
BuildService.prototype.checkOutput = function () {
return __awaiter(this, void 0, void 0, function () {
var dirExists, fileIsWritable, dirExists;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!this.outputEntry) return [3 /*break*/, 5];
if (!this.outputEntry.match(/\.\w+$/)) return [3 /*break*/, 3];
return [4 /*yield*/, this.fileService.dirExists(path.dirname(this.outputEntry))];
case 1:
dirExists = _a.sent();
if (!dirExists) {
throw new Error("Directory \"" + path.dirname(this.outputEntry) + "\" doesn't exist or is not writable.");
}
return [4 /*yield*/, this.fileService.fileIsWritable(this.outputEntry)];
case 2:
fileIsWritable = _a.sent();
if (!fileIsWritable) {
throw new Error("File \"" + this.outputEntry + "\" already exists.");
}
return [3 /*break*/, 5];
case 3: return [4 /*yield*/, this.fileService.dirExists(this.outputEntry)];
case 4:
dirExists = _a.sent();
if (!dirExists) {
throw new Error("Directory \"" + this.outputEntry + "\" doesn't exist or is not writable.");
}
_a.label = 5;
case 5: return [2 /*return*/];
}
});
});
};
BuildService.prototype.walkDir = function (entry) {
return __awaiter(this, void 0, void 0, function () {
var files, _i, files_1, file, newZipPath, newResolvedPath;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
this.logger.info("Walking directory " + entry.resolvedPath + " ...");
return [4 /*yield*/, FileService_1.fsPromise.readDir(entry.resolvedPath)];
case 1:
files = _a.sent();
_i = 0, files_1 = files;
_a.label = 2;
case 2:
if (!(_i < files_1.length)) return [3 /*break*/, 5];
file = files_1[_i];
newZipPath = entry.zipPath + '/' + file;
newResolvedPath = path.join(entry.resolvedPath, file);
return [4 /*yield*/, this.checkEntry({
resolvedPath: newResolvedPath,
zipPath: newZipPath,
})];
case 3:
_a.sent();
_a.label = 4;
case 4:
_i++;
return [3 /*break*/, 2];
case 5: return [2 /*return*/];
}
});
});
};
return BuildService;
}());
exports.BuildService = BuildService;
//# sourceMappingURL=BuildService.js.map
{"version":3,"file":"BuildService.js","sourceRoot":"","sources":["../src/BuildService.ts"],"names":[],"mappings":"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"}
import { CLIOptions } from './Interfaces';
declare class ExtractService {
private readonly fileService;
private readonly logger;
private readonly options;
constructor(options: Required<CLIOptions>);
extract(rawEntries: string[]): Promise<ExtractService>;
private printStream;
}
export { ExtractService };
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var logdown = require("logdown");
var JSZip = require("jszip");
var path = require("path");
var FileService_1 = require("./FileService");
var ExtractService = /** @class */ (function () {
function ExtractService(options) {
this.fileService = new FileService_1.FileService(options);
this.options = options;
this.logger = logdown('jszip-cli/ExtractService', {
logger: console,
markdown: false,
});
this.logger.state = { isEnabled: this.options.verbose };
}
ExtractService.prototype.extract = function (rawEntries) {
return __awaiter(this, void 0, void 0, function () {
var _loop_1, this_1, _i, rawEntries_1, entry, state_1;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_loop_1 = function (entry) {
var jszip, resolvedPath, data, entries;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
jszip = new JSZip();
if (!this_1.options.outputEntry) return [3 /*break*/, 2];
return [4 /*yield*/, this_1.fileService.ensureDir(this_1.options.outputEntry)];
case 1:
_a.sent();
_a.label = 2;
case 2:
resolvedPath = path.resolve(entry);
return [4 /*yield*/, FileService_1.fsPromise.readFile(resolvedPath)];
case 3:
data = _a.sent();
entries = [];
return [4 /*yield*/, jszip.loadAsync(data, { createFolders: true })];
case 4:
_a.sent();
if (!this_1.options.outputEntry) {
this_1.printStream(jszip.generateNodeStream());
return [2 /*return*/, { value: this_1 }];
}
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.options.outputEntry, filePath);
if (!entry.dir) return [3 /*break*/, 2];
return [4 /*yield*/, this.fileService.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*/, FileService_1.fsPromise.writeFile(resolvedFilePath, data_1, {
encoding: 'utf-8',
})];
case 4:
_b.sent();
if (!entry.unixPermissions) return [3 /*break*/, 6];
return [4 /*yield*/, FileService_1.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, rawEntries_1 = rawEntries;
_a.label = 1;
case 1:
if (!(_i < rawEntries_1.length)) return [3 /*break*/, 4];
entry = rawEntries_1[_i];
return [5 /*yield**/, _loop_1(entry)];
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*/, this];
}
});
});
};
ExtractService.prototype.printStream = function (fileStream) {
return new Promise(function (resolve, reject) {
var stream = fileStream.pipe(process.stdout);
stream.on('finish', resolve);
stream.on('error', reject);
});
};
return ExtractService;
}());
exports.ExtractService = ExtractService;
//# sourceMappingURL=ExtractService.js.map
{"version":3,"file":"ExtractService.js","sourceRoot":"","sources":["../src/ExtractService.ts"],"names":[],"mappings":"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"}
/// <reference types="node" />
import * as fs from 'fs';
import { CLIOptions } from './Interfaces';
declare const fsPromise: {
access: typeof fs.access.__promisify__;
chmod: typeof fs.writeFile.__promisify__;
lstat: typeof fs.lstat.__promisify__;
mkdir: typeof fs.mkdir.__promisify__;
readDir: typeof fs.readdir.__promisify__;
readFile: typeof fs.readFile.__promisify__;
readLink: typeof fs.readlink.__promisify__;
writeFile: typeof fs.writeFile.__promisify__;
};
declare class FileService {
private readonly logger;
private readonly options;
constructor(options: Required<CLIOptions>);
dirExists(dirPath: string): Promise<boolean>;
ensureDir(dirPath: string): Promise<FileService>;
fileIsWritable(filePath: string): Promise<boolean>;
writeFile(data: Buffer, filePath: string): Promise<FileService>;
}
export { fsPromise, FileService };
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs");
var path = require("path");
var logdown = require("logdown");
var util_1 = require("util");
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),
};
exports.fsPromise = fsPromise;
var FileService = /** @class */ (function () {
function FileService(options) {
this.options = options;
this.logger = logdown('jszip-cli/FileService', {
logger: console,
markdown: false,
});
this.logger.state = { isEnabled: this.options.verbose };
}
FileService.prototype.dirExists = function (dirPath) {
return __awaiter(this, void 0, void 0, function () {
var error_1, error_2;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 6, , 9]);
return [4 /*yield*/, fsPromise.access(dirPath, fs.constants.F_OK)];
case 1:
_a.sent();
_a.label = 2;
case 2:
_a.trys.push([2, 4, , 5]);
return [4 /*yield*/, fsPromise.access(dirPath, fs.constants.W_OK)];
case 3:
_a.sent();
return [2 /*return*/, true];
case 4:
error_1 = _a.sent();
this.logger.info("Directory \"" + dirPath + "\" exists but is not writable.");
return [2 /*return*/, false];
case 5: return [3 /*break*/, 9];
case 6:
error_2 = _a.sent();
this.logger.info("Directory \"" + dirPath + "\" doesn't exist.");
if (!this.options.force) return [3 /*break*/, 8];
return [4 /*yield*/, this.ensureDir(dirPath)];
case 7:
_a.sent();
return [2 /*return*/, true];
case 8: return [2 /*return*/, false];
case 9: return [2 /*return*/];
}
});
});
};
FileService.prototype.ensureDir = function (dirPath) {
return __awaiter(this, void 0, void 0, function () {
var error_3;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, 4, 5]);
return [4 /*yield*/, fsPromise.access(dirPath, fs.constants.R_OK)];
case 1:
_a.sent();
this.logger.info("Directory " + dirPath + " already exists. Not creating.");
return [3 /*break*/, 5];
case 2:
error_3 = _a.sent();
this.logger.info("Directory " + dirPath + " doesn't exist yet. Creating.");
return [4 /*yield*/, fsPromise.mkdir(dirPath)];
case 3:
_a.sent();
return [3 /*break*/, 5];
case 4: return [2 /*return*/, this];
case 5: return [2 /*return*/];
}
});
});
};
FileService.prototype.fileIsWritable = function (filePath) {
return __awaiter(this, void 0, void 0, function () {
var dirExists, error_4;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.dirExists(path.dirname(filePath))];
case 1:
dirExists = _a.sent();
if (!dirExists) return [3 /*break*/, 5];
_a.label = 2;
case 2:
_a.trys.push([2, 4, , 5]);
return [4 /*yield*/, fsPromise.access(filePath, fs.constants.F_OK | fs.constants.R_OK)];
case 3:
_a.sent();
this.logger.info("File \"" + filePath + "\" already exists.", this.options.force ? 'Forcing overwrite.' : 'Not overwriting.');
return [2 /*return*/, this.options.force];
case 4:
error_4 = _a.sent();
return [2 /*return*/, true];
case 5: return [2 /*return*/, false];
}
});
});
};
FileService.prototype.writeFile = function (data, filePath) {
return __awaiter(this, void 0, void 0, function () {
var fileIsWritable;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.fileIsWritable(filePath)];
case 1:
fileIsWritable = _a.sent();
if (!fileIsWritable) return [3 /*break*/, 3];
return [4 /*yield*/, fsPromise.writeFile(filePath, data)];
case 2:
_a.sent();
return [2 /*return*/, this];
case 3: throw new Error("File \"" + this.options.outputEntry + "\" already exists.");
}
});
});
};
return FileService;
}());
exports.FileService = FileService;
//# sourceMappingURL=FileService.js.map
{"version":3,"file":"FileService.js","sourceRoot":"","sources":["../src/FileService.ts"],"names":[],"mappings":"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"}
interface CLIOptions {
force?: boolean;
ignoreEntries?: string[];
compressionLevel?: number;
outputEntry?: string | null;
verbose?: boolean;
}
interface Entry {
resolvedPath: string;
zipPath: string;
}
export { CLIOptions, Entry };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=Interfaces.js.map
{"version":3,"file":"Interfaces.js","sourceRoot":"","sources":["../src/Interfaces.ts"],"names":[],"mappings":""}
+19
-25
#!/usr/bin/env node
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });

@@ -26,17 +37,8 @@ var program = require("commander");

.arguments('<entries...>')
.action(function (entries, options) {
new _1.JSZipCLI({
force: options.parent.force,
ignoreEntries: options.parent.ignore ? [options.parent.ignore] : undefined,
level: options.parent.level,
outputEntry: options.parent.output,
verbose: options.parent.verbose,
})
.action(function (entries, _a) {
var parent = _a.parent;
new _1.JSZipCLI(__assign({}, (parent.force && { force: parent.force }), (parent.ignore && { ignoreEntries: [parent.ignore] }), (parent.level && { compressionLevel: parent.level }), (parent.output && { outputEntry: parent.output }), (parent.verbose && { verbose: parent.verbose })))
.add(entries)
.save()
.then(function () {
if (options.parent.output) {
console.log('Done.');
}
})
.then(function () { return parent.output && console.log('Done.'); })
.catch(function (error) {

@@ -57,15 +59,7 @@ console.error('Error:', error.message);

.arguments('<archives...>')
.action(function (files, options) {
new _1.JSZipCLI({
force: options.parent.force,
ignoreEntries: options.parent.ignore ? [options.parent.ignore] : undefined,
outputEntry: options.parent.output,
verbose: options.parent.verbose,
})
.action(function (files, _a) {
var parent = _a.parent;
new _1.JSZipCLI(__assign({}, (parent.force && { force: parent.force }), (parent.ignore && { ignoreEntries: [parent.ignore] }), (parent.output && { outputEntry: parent.output }), (parent.verbose && { verbose: parent.verbose })))
.extract(files)
.then(function () {
if (options.parent.output) {
console.log('Done.');
}
})
.then(function () { return parent.output && console.log('Done.'); })
.catch(function (error) {

@@ -72,0 +66,0 @@ console.error('Error:', error.message);

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

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

@@ -1,38 +0,12 @@

/// <reference types="node" />
export interface CLIOptions {
force?: boolean;
ignoreEntries?: string[];
level?: number;
outputEntry?: string;
verbose?: boolean;
}
export interface Entry {
resolvedPath: string;
zipPath: string;
}
import { CLIOptions } from './Interfaces';
import { BuildService } from './BuildService';
import { ExtractService } from './ExtractService';
export declare class JSZipCLI {
private readonly logger;
private compressionLevel;
private entries;
private force;
private ignoreEntries;
private jszip;
private outputEntry;
private verbose;
constructor(options: CLIOptions);
private addDir;
private addFile;
private addLink;
private checkEntry;
private walkDir;
add(rawEntries: string[]): JSZipCLI;
private ensureDir;
extract(files: string[]): Promise<void>;
getBuffer(): Promise<Buffer>;
private printStream;
private fileIsWritable;
private dirExists;
private writeFile;
private checkOutput;
save(): Promise<void>;
private readonly buildService;
private readonly extractService;
private options;
constructor(options?: CLIOptions);
add(rawEntries: string[]): BuildService;
extract(rawEntries: string[]): Promise<ExtractService>;
save(): Promise<BuildService>;
}
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs");
var path = require("path");
var JSZip = require("jszip");
var logdown = require("logdown");
var util_1 = require("util");
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 BuildService_1 = require("./BuildService");
var ExtractService_1 = require("./ExtractService");
var defaultOptions = {
force: false,
ignoreEntries: [],
compressionLevel: 5,
outputEntry: null,
verbose: false,
};
var JSZipCLI = /** @class */ (function () {
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, _e = _a.verbose, verbose = _e === void 0 ? false : _e;
this.jszip = new JSZip();
this.compressionLevel = level;
this.entries = [];
this.force = options.force || false;
this.ignoreEntries = ignoreEntries.map(function (entry) { return new RegExp(entry.replace('*', '.*')); });
this.outputEntry = outputEntry ? path.resolve(outputEntry) : null;
this.verbose = verbose;
this.logger = logdown('jszip-cli/JSZipCli', {
logger: console,
markdown: false,
});
this.logger.state = { isEnabled: this.verbose };
if (options === void 0) { options = defaultOptions; }
this.options = __assign({}, defaultOptions, options);
this.buildService = new BuildService_1.BuildService(this.options);
this.extractService = new ExtractService_1.ExtractService(this.options);
}
JSZipCLI.prototype.addDir = function (entry) {
return this.jszip.folder(entry.zipPath);
};
JSZipCLI.prototype.addFile = function (entry, jszip) {
return __awaiter(this, void 0, void 0, function () {
var resolvedPath, fileName, fileData, fileStat;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
resolvedPath = entry.resolvedPath;
fileName = path.basename(resolvedPath);
return [4 /*yield*/, fsPromise.readFile(resolvedPath)];
case 1:
fileData = _a.sent();
return [4 /*yield*/, fsPromise.lstat(resolvedPath)];
case 2:
fileStat = _a.sent();
jszip.file(fileName, fileData, {
date: fileStat.mtime,
createFolders: false,
binary: true,
dir: false,
dosPermissions: fileStat.mode,
unixPermissions: fileStat.mode,
});
return [2 /*return*/];
}
});
});
};
JSZipCLI.prototype.addLink = function (entry, jszip) {
return __awaiter(this, void 0, void 0, function () {
var resolvedPath, fileName, fileData, fileStat;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
resolvedPath = entry.resolvedPath;
fileName = path.basename(resolvedPath);
return [4 /*yield*/, fsPromise.readLink(entry.resolvedPath)];
case 1:
fileData = _a.sent();
return [4 /*yield*/, fsPromise.lstat(entry.resolvedPath)];
case 2:
fileStat = _a.sent();
jszip.file(fileName, fileData, {
dosPermissions: fileStat.mode,
unixPermissions: fileStat.mode,
});
return [2 /*return*/];
}
});
});
};
JSZipCLI.prototype.checkEntry = function (entry, jszip) {
return __awaiter(this, void 0, void 0, function () {
var fileStat, ignoreEntries, jszip_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fsPromise.lstat(entry.resolvedPath)];
case 1:
fileStat = _a.sent();
ignoreEntries = this.ignoreEntries.filter(function (ignoreEntry) { return Boolean(entry.resolvedPath.match(ignoreEntry)); });
if (ignoreEntries.length) {
this.logger.info("Found " + entry.resolvedPath + ". Not adding since it's on the ignore list:", ignoreEntries.map(function (entry) { return String(entry); }));
return [2 /*return*/];
}
this.logger.info("Found " + entry.resolvedPath + ". Adding to the ZIP file.");
if (!fileStat.isDirectory()) return [3 /*break*/, 3];
jszip_1 = this.addDir(entry);
return [4 /*yield*/, this.walkDir(entry, jszip_1)];
case 2:
_a.sent();
return [3 /*break*/, 8];
case 3:
if (!fileStat.isFile()) return [3 /*break*/, 5];
return [4 /*yield*/, this.addFile(entry, jszip)];
case 4:
_a.sent();
return [3 /*break*/, 8];
case 5:
if (!fileStat.isSymbolicLink()) return [3 /*break*/, 7];
return [4 /*yield*/, this.addLink(entry, jszip)];
case 6:
_a.sent();
return [3 /*break*/, 8];
case 7:
this.logger.info("Unknown file type.", fileStat);
throw new Error("Can't read: " + entry);
case 8: return [2 /*return*/];
}
});
});
};
JSZipCLI.prototype.walkDir = function (entry, jszip) {
return __awaiter(this, void 0, void 0, function () {
var files, _i, files_1, file, newZipPath, newResolvedPath;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
this.logger.info("Walking directory " + entry.resolvedPath + " ...");
return [4 /*yield*/, fsPromise.readDir(entry.resolvedPath)];
case 1:
files = _a.sent();
_i = 0, files_1 = files;
_a.label = 2;
case 2:
if (!(_i < files_1.length)) return [3 /*break*/, 5];
file = files_1[_i];
newZipPath = entry.zipPath + '/' + file;
newResolvedPath = path.join(entry.resolvedPath, file);
return [4 /*yield*/, this.checkEntry({
resolvedPath: newResolvedPath,
zipPath: newZipPath,
}, jszip)];
case 3:
_a.sent();
_a.label = 4;
case 4:
_i++;
return [3 /*break*/, 2];
case 5: return [2 /*return*/];
}
});
});
};
JSZipCLI.prototype.add = function (rawEntries) {
this.logger.info("Adding " + rawEntries.length + " entr" + (rawEntries.length === 1 ? 'y' : 'ies') + " to ZIP file.");
this.entries = rawEntries.map(function (rawEntry) {
var resolvedPath = path.resolve(rawEntry);
var baseName = path.basename(rawEntry);
return {
resolvedPath: resolvedPath,
zipPath: baseName,
};
});
return this;
return this.buildService.add(rawEntries);
};
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();
this.logger.info("Directory " + dirPath + " already exists. Not creating.");
return [3 /*break*/, 4];
case 2:
error_1 = _a.sent();
this.logger.info("Directory " + dirPath + " doesn't exist yet. Creating.");
return [4 /*yield*/, fsPromise.mkdir(dirPath)];
case 3:
_a.sent();
return [3 /*break*/, 4];
case 4: return [2 /*return*/];
}
});
});
JSZipCLI.prototype.extract = function (rawEntries) {
return this.extractService.extract(rawEntries);
};
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();
entries = [];
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 }];
}
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.fileIsWritable = function (filePath) {
return __awaiter(this, void 0, void 0, function () {
var dirExists, error_2;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.dirExists(path.dirname(filePath))];
case 1:
dirExists = _a.sent();
if (!dirExists) return [3 /*break*/, 5];
_a.label = 2;
case 2:
_a.trys.push([2, 4, , 5]);
return [4 /*yield*/, fsPromise.access(filePath, fs.constants.F_OK | fs.constants.R_OK)];
case 3:
_a.sent();
this.logger.info("File \"" + filePath + "\" already exists.", this.force ? 'Forcing overwrite.' : 'Not overwriting.');
return [2 /*return*/, this.force];
case 4:
error_2 = _a.sent();
return [2 /*return*/, true];
case 5: return [2 /*return*/, false];
}
});
});
};
JSZipCLI.prototype.dirExists = function (dirPath) {
return __awaiter(this, void 0, void 0, function () {
var error_3, error_4;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 6, , 9]);
return [4 /*yield*/, fsPromise.access(dirPath, fs.constants.F_OK)];
case 1:
_a.sent();
_a.label = 2;
case 2:
_a.trys.push([2, 4, , 5]);
return [4 /*yield*/, fsPromise.access(dirPath, fs.constants.W_OK)];
case 3:
_a.sent();
return [2 /*return*/, true];
case 4:
error_3 = _a.sent();
this.logger.info("Directory \"" + dirPath + "\" exists but is not writable.");
return [2 /*return*/, false];
case 5: return [3 /*break*/, 9];
case 6:
error_4 = _a.sent();
this.logger.info("Directory \"" + dirPath + "\" doesn't exist.");
if (!this.force) return [3 /*break*/, 8];
return [4 /*yield*/, this.ensureDir(dirPath)];
case 7:
_a.sent();
return [2 /*return*/, true];
case 8: return [2 /*return*/, false];
case 9: return [2 /*return*/];
}
});
});
};
JSZipCLI.prototype.writeFile = function (data, filePath) {
return __awaiter(this, void 0, void 0, function () {
var fileIsWritable;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.fileIsWritable(filePath)];
case 1:
fileIsWritable = _a.sent();
if (fileIsWritable) {
return [2 /*return*/, fsPromise.writeFile(filePath, data)];
}
throw new Error("File \"" + this.outputEntry + "\" already exists.");
}
});
});
};
JSZipCLI.prototype.checkOutput = function () {
return __awaiter(this, void 0, void 0, function () {
var dirExists, fileIsWritable, dirExists;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!this.outputEntry) return [3 /*break*/, 5];
if (!this.outputEntry.match(/\.\w+$/)) return [3 /*break*/, 3];
return [4 /*yield*/, this.dirExists(path.dirname(this.outputEntry))];
case 1:
dirExists = _a.sent();
if (!dirExists) {
throw new Error("Directory \"" + path.dirname(this.outputEntry) + "\" doesn't exist or is not writable.");
}
return [4 /*yield*/, this.fileIsWritable(this.outputEntry)];
case 2:
fileIsWritable = _a.sent();
if (!fileIsWritable) {
throw new Error("File \"" + this.outputEntry + "\" already exists.");
}
return [3 /*break*/, 5];
case 3: return [4 /*yield*/, this.dirExists(this.outputEntry)];
case 4:
dirExists = _a.sent();
if (!dirExists) {
throw new Error("Directory \"" + this.outputEntry + "\" doesn't exist or is not writable.");
}
_a.label = 5;
case 5: return [2 /*return*/];
}
});
});
};
JSZipCLI.prototype.save = function () {
return __awaiter(this, void 0, void 0, function () {
var data;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.checkOutput()];
case 1:
_a.sent();
return [4 /*yield*/, Promise.all(this.entries.map(function (entry) { return _this.checkEntry(entry, _this.jszip); }))];
case 2:
_a.sent();
return [4 /*yield*/, this.getBuffer()];
case 3:
data = _a.sent();
if (!this.outputEntry) return [3 /*break*/, 5];
if (!this.outputEntry.match(/\.\w+$/)) {
this.outputEntry = path.join(this.outputEntry, 'data.zip');
}
return [4 /*yield*/, this.writeFile(data, this.outputEntry)];
case 4:
_a.sent();
return [3 /*break*/, 6];
case 5:
process.stdout.write(data);
_a.label = 6;
case 6: return [2 /*return*/];
}
});
});
return this.buildService.save();
};

@@ -477,0 +39,0 @@ return JSZipCLI;

@@ -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":";;;;;;;;;;;;;AACA,+CAA4C;AAC5C,mDAAgD;AAEhD,IAAM,cAAc,GAAyB;IAC3C,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,EAAE;IACjB,gBAAgB,EAAE,CAAC;IACnB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK;CACf,CAAC;AAEF;IAKE,kBAAY,OAAoC;QAApC,wBAAA,EAAA,wBAAoC;QAC9C,IAAI,CAAC,OAAO,gBAAO,cAAc,EAAK,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IAEM,sBAAG,GAAV,UAAW,UAAoB;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,0BAAO,GAAd,UAAe,UAAoB;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAEM,uBAAI,GAAX;QACE,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IACH,eAAC;AAAD,CAAC,AAtBD,IAsBC;AAtBY,4BAAQ"}

@@ -7,2 +7,3 @@ {

"dependencies": {
"@types/commander": "2.12.2",
"@types/jszip": "3.1.4",

@@ -36,3 +37,3 @@ "@types/node": "10.9.4",

"types": "dist/index.d.ts",
"version": "1.2.1"
"version": "1.2.2"
}

@@ -35,4 +35,4 @@ # 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)

```
jszip-cli add dist package.json -i *.map -o deploy.zip
jszip-cli extract deploy.zip -o my_deployment/
jszip-cli add -i *.map -o deploy.zip dist/ package.json
jszip-cli extract deploy.zip -o deployment_files/
```