@ffflorian/jszip-cli
Advanced tools
| /// <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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAmC;AACnC,6BAA+B;AAC/B,2BAA6B;AAE7B,6CAAqD;AAErD;IAKE,wBAAY,OAA6B;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,0BAA0B,EAAE;YAChD,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAC,CAAC;IACxD,CAAC;IAEY,gCAAO,GAApB,UAAqB,UAAoB;;;;;;;4CAC5B,KAAK;;;;;wCACR,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;6CACtB,OAAK,OAAO,CAAC,WAAW,EAAxB,wBAAwB;wCAC1B,qBAAM,OAAK,WAAW,CAAC,SAAS,CAAC,OAAK,OAAO,CAAC,WAAW,CAAC,EAAA;;wCAA1D,SAA0D,CAAC;;;wCAGvD,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wCAC5B,qBAAM,uBAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAA;;wCAA7C,IAAI,GAAG,SAAsC;wCAC7C,OAAO,GAAkC,EAAE,CAAC;wCAElD,qBAAM,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,EAAA;;wCAAlD,SAAkD,CAAC;wCAEnD,IAAI,CAAC,OAAK,OAAO,CAAC,WAAW,EAAE;4CAC7B,OAAK,WAAW,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;;yCAE9C;wCAED,KAAK,CAAC,OAAO,CAAC,UAAC,QAAQ,EAAE,KAAK,IAAK,OAAA,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAA/B,CAA+B,CAAC,CAAC;wCAEpE,qBAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,UAAO,EAAiB;oDAAhB,gBAAQ,EAAE,aAAK;;;;;;gEAC3B,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAY,EAAE,QAAQ,CAAC,CAAC;qEACpE,KAAK,CAAC,GAAG,EAAT,wBAAS;gEACX,qBAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAA;;gEAAlD,SAAkD,CAAC;;oEAEtC,qBAAM,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAA;;gEAAtC,SAAO,SAA+B;gEAC5C,qBAAM,uBAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAI,EAAE;wEAChD,QAAQ,EAAE,OAAO;qEAClB,CAAC,EAAA;;gEAFF,SAEE,CAAC;qEACC,KAAK,CAAC,eAAe,EAArB,wBAAqB;gEACvB,qBAAM,uBAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,eAAe,CAAC,EAAA;;gEAA9D,SAA8D,CAAC;;;;;;6CAGpE,CAAC,CACH,EAAA;;wCAfD,SAeC,CAAC;;;;;;8BAlC0B,EAAV,yBAAU;;;6BAAV,CAAA,wBAAU,CAAA;wBAAnB,KAAK;sDAAL,KAAK;;;;;;;wBAAI,IAAU,CAAA;;4BAoC9B,sBAAO,IAAI,EAAC;;;;KACb;IAEO,oCAAW,GAAnB,UAAoB,UAAiC;QACnD,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACjC,IAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IACH,qBAAC;AAAD,CAAC,AA9DD,IA8DC;AAEO,wCAAc"} |
| /// <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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uBAAyB;AACzB,2BAA6B;AAC7B,iCAAmC;AACnC,6BAA+B;AAG/B,IAAM,SAAS,GAAG;IAChB,MAAM,EAAE,gBAAS,CAAC,EAAE,CAAC,MAAM,CAAC;IAC5B,KAAK,EAAE,gBAAS,CAAC,EAAE,CAAC,SAAS,CAAC;IAC9B,KAAK,EAAE,gBAAS,CAAC,EAAE,CAAC,KAAK,CAAC;IAC1B,KAAK,EAAE,gBAAS,CAAC,EAAE,CAAC,KAAK,CAAC;IAC1B,OAAO,EAAE,gBAAS,CAAC,EAAE,CAAC,OAAO,CAAC;IAC9B,QAAQ,EAAE,gBAAS,CAAC,EAAE,CAAC,QAAQ,CAAC;IAChC,QAAQ,EAAE,gBAAS,CAAC,EAAE,CAAC,QAAQ,CAAC;IAChC,SAAS,EAAE,gBAAS,CAAC,EAAE,CAAC,SAAS,CAAC;CACnC,CAAC;AAyEM,8BAAS;AAvEjB;IAGE,qBAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE;YAC7C,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAC,CAAC;IACxD,CAAC;IAEY,+BAAS,GAAtB,UAAuB,OAAe;;;;;;;wBAElC,qBAAM,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAA;;wBAAlD,SAAkD,CAAC;;;;wBAEjD,qBAAM,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAA;;wBAAlD,SAAkD,CAAC;wBACnD,sBAAO,IAAI,EAAC;;;wBAEZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAc,OAAO,mCAA+B,CAAC,CAAC;wBACvE,sBAAO,KAAK,EAAC;;;;wBAGf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAc,OAAO,sBAAkB,CAAC,CAAC;6BACtD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAlB,wBAAkB;wBACpB,qBAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAA;;wBAA7B,SAA6B,CAAC;wBAC9B,sBAAO,IAAI,EAAC;4BAEd,sBAAO,KAAK,EAAC;;;;;KAEhB;IAEY,+BAAS,GAAtB,UAAuB,OAAe;;;;;;;wBAElC,qBAAM,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAA;;wBAAlD,SAAkD,CAAC;wBACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAa,OAAO,mCAAgC,CAAC,CAAC;;;;wBAEvE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAa,OAAO,kCAA+B,CAAC,CAAC;wBACtE,qBAAM,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAA;;wBAA9B,SAA8B,CAAC;;4BAE/B,sBAAO,IAAI,EAAC;;;;;KAEf;IAEY,oCAAc,GAA3B,UAA4B,QAAgB;;;;;4BACxB,qBAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAA;;wBAAxD,SAAS,GAAG,SAA4C;6BAC1D,SAAS,EAAT,wBAAS;;;;wBAET,qBAAM,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAA;;wBAAvE,SAAuE,CAAC;wBACxE,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,YAAS,QAAQ,uBAAmB,EACpC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,kBAAkB,CAC/D,CAAC;wBACF,sBAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAC;;;wBAE1B,sBAAO,IAAI,EAAC;4BAGhB,sBAAO,KAAK,EAAC;;;;KACd;IAEY,+BAAS,GAAtB,UAAuB,IAAY,EAAE,QAAgB;;;;;4BAC5B,qBAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAA;;wBAApD,cAAc,GAAG,SAAmC;6BACtD,cAAc,EAAd,wBAAc;wBAChB,qBAAM,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAA;;wBAAzC,SAAyC,CAAC;wBAC1C,sBAAO,IAAI,EAAC;4BAEd,MAAM,IAAI,KAAK,CAAC,YAAS,IAAI,CAAC,OAAO,CAAC,WAAW,uBAAmB,CAAC,CAAC;;;;KACvE;IACH,kBAAC;AAAD,CAAC,AArED,IAqEC;AAEkB,kCAAW"} |
| 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
@@ -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":";;;;;;;;;;;;;;AAEA,mCAAqC;AACrC,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;KAC5D,MAAM,CAAC,aAAa,EAAE,yBAAyB,EAAE,KAAK,CAAC;KACvD,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAEpD,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,MAAM,CAAC,aAAa,EAAE,yBAAyB,EAAE,KAAK,CAAC;KACvD,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC;KAChD,SAAS,CAAC,cAAc,CAAC;KACzB,MAAM,CAAC,UAAC,OAAiB,EAAE,EAAyB;QAAxB,kBAAM;IACjC,IAAI,WAAQ,cACP,CAAC,MAAM,CAAC,KAAK,IAAI,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAC,CAAC,EACvC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAC,aAAa,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAC,CAAC,EACnD,CAAC,MAAM,CAAC,KAAK,IAAI,EAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,EAAC,CAAC,EAClD,CAAC,MAAM,CAAC,MAAM,IAAI,EAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAC,CAAC,EAC/C,CAAC,MAAM,CAAC,OAAO,IAAI,EAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAC,CAAC,EAChD;SACC,GAAG,CAAC,OAAO,CAAC;SACZ,IAAI,EAAE;SACN,IAAI,CAAC,cAAM,OAAA,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAArC,CAAqC,CAAC;SACjD,KAAK,CAAC,UAAA,KAAK;QACV,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,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,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC;KAChD,MAAM,CAAC,aAAa,EAAE,yBAAyB,EAAE,KAAK,CAAC;KACvD,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,KAAK,CAAC;KAChD,SAAS,CAAC,eAAe,CAAC;KAC1B,MAAM,CAAC,UAAC,KAAe,EAAE,EAAyB;QAAxB,kBAAM;IAC/B,IAAI,WAAQ,cACP,CAAC,MAAM,CAAC,KAAK,IAAI,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAC,CAAC,EACvC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAC,aAAa,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAC,CAAC,EACnD,CAAC,MAAM,CAAC,MAAM,IAAI,EAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAC,CAAC,EAC/C,CAAC,MAAM,CAAC,OAAO,IAAI,EAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAC,CAAC,EAChD;SACC,OAAO,CAAC,KAAK,CAAC;SACd,IAAI,CAAC,cAAM,OAAA,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAArC,CAAqC,CAAC;SACjD,KAAK,CAAC,UAAA,KAAK;QACV,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,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"} |
+10
-36
@@ -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>; | ||
| } |
+26
-464
| "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"} |
+2
-1
@@ -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" | ||
| } |
+2
-2
@@ -35,4 +35,4 @@ # jszip-cli [](https://travis-ci.org/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/ | ||
| ``` |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
56154
27.93%21
133.33%781
31.04%6
20%1
Infinity%+ Added
+ Added