Socket
Socket
Sign inDemoInstall

@evidentpoint/r2-utils-js

Package Overview
Dependencies
126
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.1-alpha34 to 1.0.0-alpha.2

dist/es5/src/_utils/zip/zip-ex.d.ts

9

dist/es5/src/_utils/perf-cli.js

@@ -31,6 +31,13 @@ "use strict";

}
var stats = fs.lstatSync(filePath);
if (!stats.isFile() && !stats.isDirectory()) {
console.log("FILEPATH MUST BE FILE OR DIRECTORY.");
process.exit(1);
}
var fileName = path.basename(filePath);
var ext = path.extname(fileName).toLowerCase();
if (/\.epub[3]?$/.test(ext) || ext === ".cbz" || ext === ".zip") {
if (stats.isDirectory()) {
}
else if (/\.epub[3]?$/.test(ext) || ext === ".cbz" || ext === ".zip") {
}
//# sourceMappingURL=perf-cli.js.map

4

dist/es5/src/_utils/zip/zip.d.ts

@@ -14,3 +14,3 @@ export interface IStreamAndLength {

hasEntry: (entryPath: string) => Promise<boolean>;
forEachEntry: (callback: (entryName: string) => void) => void;
getEntries: () => Promise<string[]>;
entryStreamPromise: (entryPath: string) => Promise<IStreamAndLength>;

@@ -23,5 +23,5 @@ freeDestroy: () => void;

abstract hasEntry(entryPath: string): Promise<boolean>;
abstract forEachEntry(callback: (entryName: string) => void): void;
abstract getEntries(): Promise<string[]>;
abstract entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
abstract freeDestroy(): void;
}

@@ -11,4 +11,4 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
}

@@ -64,8 +64,10 @@ "use strict";

};
Zip1.prototype.forEachEntry = function (callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.zip.entries()).forEach(function (entryName) {
callback(entryName);
Zip1.prototype.getEntries = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
if (!this.hasEntries()) {
return [2, Promise.resolve([])];
}
return [2, Promise.resolve(Object.keys(this.zip.entries()))];
});
});

@@ -75,4 +77,4 @@ };

return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a;
var _this = this;
var _a;
return tslib_1.__generator(this, function (_b) {

@@ -79,0 +81,0 @@ switch (_b.label) {

@@ -6,3 +6,3 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

static loadPromise(filePath: string): Promise<IZip>;
private static loadPromiseHTTP(filePath);
private static loadPromiseHTTP;
private entries;

@@ -14,5 +14,5 @@ private constructor();

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
private addEntry(entry);
private addEntry;
}

@@ -66,9 +66,9 @@ "use strict";

return tslib_1.__awaiter(this, void 0, void 0, function () {
var needsStreamingResponse;
var _this = this;
var needsStreamingResponse;
return tslib_1.__generator(this, function (_a) {
needsStreamingResponse = true;
return [2, new Promise(function (resolve, reject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var failure, success, res_1, err_1;
var _this = this;
var failure, success, res_1, err_1;
return tslib_1.__generator(this, function (_a) {

@@ -82,4 +82,4 @@ switch (_a.label) {

success = function (res) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var httpZipByteLength, failure_1, success_, ress, err_2, httpZipReader;
var _this = this;
var httpZipByteLength, failure_1, success_, ress, err_2, httpZipReader;
return tslib_1.__generator(this, function (_a) {

@@ -290,8 +290,10 @@ switch (_a.label) {

};
Zip2.prototype.forEachEntry = function (callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.entries).forEach(function (entryName) {
callback(entryName);
Zip2.prototype.getEntries = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
if (!this.hasEntries()) {
return [2, Promise.resolve([])];
}
return [2, Promise.resolve(Object.keys(this.entries))];
});
});

@@ -301,4 +303,4 @@ };

return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, entry;
var _this = this;
var _a, entry;
return tslib_1.__generator(this, function (_b) {

@@ -305,0 +307,0 @@ switch (_b.label) {

@@ -6,3 +6,3 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

static loadPromise(filePath: string): Promise<IZip>;
private static loadPromiseHTTP(filePath);
private static loadPromiseHTTP;
private entries;

@@ -14,4 +14,4 @@ private constructor();

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
}

@@ -107,8 +107,10 @@ "use strict";

};
Zip3.prototype.forEachEntry = function (callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.entries).forEach(function (entryName) {
callback(entryName);
Zip3.prototype.getEntries = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
if (!this.hasEntries()) {
return [2, Promise.resolve([])];
}
return [2, Promise.resolve(Object.keys(this.entries))];
});
});

@@ -115,0 +117,0 @@ };

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var debug_ = require("debug");
var fs_1 = require("fs");
var globAsync = require("glob");
var path = require("path");
var util_1 = require("util");
var fileStat = util_1.promisify(fs_1.lstat);
var glob = util_1.promisify(globAsync);
var zip_1 = require("./zip");
var zip4Entry_1 = require("./zip4Entry");
var debug = debug_("r2:utils#zip/zip4");
var Zip4 = (function (_super) {
tslib_1.__extends(Zip4, _super);
function Zip4(filePath) {
var _this = _super.call(this) || this;
_this.filePath = filePath;
_this.entries = new Map();
return _this;
}
Zip4.loadPromise = function (filePath) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _this = this;
return tslib_1.__generator(this, function (_a) {
return [2, new Promise(function (resolve, reject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var zip4, filesInPath;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, fileStat(filePath)];
case 1:
if ((_a.sent()).isFile()) {
return [2, reject("not a directory, expected a path to an exploded (uncompressed) zip")];
}
zip4 = new Zip4(filePath);
return [4, glob("**/*", { cwd: filePath, nodir: true })];
case 2:
filesInPath = _a.sent();
filesInPath.forEach(function (file) {
zip4.entries.set(file, new zip4Entry_1.Zip4Entry(path.join(filePath, file)));
});
resolve(zip4);
return [2];
}
});
}); })];
});
});
};
Zip4.prototype.freeDestroy = function () {
debug("freeDestroy: Zip4 -- " + this.filePath);
};
Zip4.prototype.entriesCount = function () {
return this.entries.size;
};
Zip4.prototype.hasEntries = function () {
return this.entriesCount() > 0;
};
Zip4.prototype.hasEntry = function (entryPath) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2, this.hasEntries() && !!this.entries.get(entryPath)];
});
});
};
Zip4.prototype.forEachEntry = function (callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.entries).forEach(function (entryName) {
callback(entryName);
});
};
Zip4.prototype.entryStreamPromise = function (entryPath) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _this = this;
var entry;
return tslib_1.__generator(this, function (_a) {
if (!this.hasEntries()) {
return [2, Promise.reject("zip is empty")];
}
entry = this.entries.get(entryPath);
if (!entry) {
return [2, Promise.reject("no such path in zip: " + entryPath)];
}
return [2, new Promise(function (resolve, _reject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var _this = this;
var streamAndLength, _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
debug(entry);
_a = {};
return [4, entry.size()];
case 1:
_a.length = _b.sent(),
_a.reset = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2, this.entryStreamPromise(entryPath)];
});
}); };
return [4, entry.stream()];
case 2:
streamAndLength = (_a.stream = _b.sent(),
_a);
resolve(streamAndLength);
return [2];
}
});
}); })];
});
});
};
return Zip4;
}(zip_1.Zip));
exports.Zip4 = Zip4;
//# sourceMappingURL=zip4.js.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var fs_1 = require("fs");
var util_1 = require("util");
var web_streams_node_1 = require("web-streams-node");
var fsStat = util_1.promisify(fs_1.stat);
var Zip4Entry = (function () {
function Zip4Entry(path) {
this.path = path;
}
Zip4Entry.prototype.stream = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2, web_streams_node_1.toWebReadableStream(fs_1.createReadStream(this.path))];
});
});
};
Zip4Entry.prototype.size = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, fsStat(this.path)];
case 1: return [2, (_a.sent()).size];
}
});
});
};
return Zip4Entry;
}());
exports.Zip4Entry = Zip4Entry;
//# sourceMappingURL=zip4Entry.js.map

@@ -12,5 +12,5 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
private getEntry(entryPath);
private getEntry;
}

@@ -53,8 +53,10 @@ "use strict";

};
Zip5.prototype.forEachEntry = function (callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.entries).forEach(function (entryName) {
callback(entryName);
Zip5.prototype.getEntries = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
if (!this.hasEntries()) {
return [2, Promise.resolve([])];
}
return [2, Promise.resolve(Object.keys(this.entries))];
});
});

@@ -64,4 +66,4 @@ };

return tslib_1.__awaiter(this, void 0, void 0, function () {
var entry;
var _this = this;
var entry;
return tslib_1.__generator(this, function (_a) {

@@ -73,4 +75,4 @@ entry = this.getEntry(entryPath);

return [2, new Promise(function (resolve, _reject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var streamAndLength, _a;
var _this = this;
var streamAndLength, _a;
return tslib_1.__generator(this, function (_b) {

@@ -77,0 +79,0 @@ switch (_b.label) {

@@ -31,6 +31,13 @@ "use strict";

}
const stats = fs.lstatSync(filePath);
if (!stats.isFile() && !stats.isDirectory()) {
console.log("FILEPATH MUST BE FILE OR DIRECTORY.");
process.exit(1);
}
const fileName = path.basename(filePath);
const ext = path.extname(fileName).toLowerCase();
if (/\.epub[3]?$/.test(ext) || ext === ".cbz" || ext === ".zip") {
if (stats.isDirectory()) {
}
else if (/\.epub[3]?$/.test(ext) || ext === ".cbz" || ext === ".zip") {
}
//# sourceMappingURL=perf-cli.js.map

@@ -14,3 +14,3 @@ export interface IStreamAndLength {

hasEntry: (entryPath: string) => Promise<boolean>;
forEachEntry: (callback: (entryName: string) => void) => void;
getEntries: () => Promise<string[]>;
entryStreamPromise: (entryPath: string) => Promise<IStreamAndLength>;

@@ -23,5 +23,5 @@ freeDestroy: () => void;

abstract hasEntry(entryPath: string): Promise<boolean>;
abstract forEachEntry(callback: (entryName: string) => void): void;
abstract getEntries(): Promise<string[]>;
abstract entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
abstract freeDestroy(): void;
}

@@ -11,4 +11,4 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
}

@@ -58,8 +58,8 @@ "use strict";

}
forEachEntry(callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.zip.entries()).forEach((entryName) => {
callback(entryName);
getEntries() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this.hasEntries()) {
return Promise.resolve([]);
}
return Promise.resolve(Object.keys(this.zip.entries()));
});

@@ -66,0 +66,0 @@ }

@@ -6,3 +6,3 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

static loadPromise(filePath: string): Promise<IZip>;
private static loadPromiseHTTP(filePath);
private static loadPromiseHTTP;
private entries;

@@ -14,5 +14,5 @@ private constructor();

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
private addEntry(entry);
private addEntry;
}

@@ -242,8 +242,8 @@ "use strict";

}
forEachEntry(callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.entries).forEach((entryName) => {
callback(entryName);
getEntries() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this.hasEntries()) {
return Promise.resolve([]);
}
return Promise.resolve(Object.keys(this.entries));
});

@@ -250,0 +250,0 @@ }

@@ -6,3 +6,3 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

static loadPromise(filePath: string): Promise<IZip>;
private static loadPromiseHTTP(filePath);
private static loadPromiseHTTP;
private entries;

@@ -14,4 +14,4 @@ private constructor();

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
}

@@ -79,8 +79,8 @@ "use strict";

}
forEachEntry(callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.entries).forEach((entryName) => {
callback(entryName);
getEntries() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this.hasEntries()) {
return Promise.resolve([]);
}
return Promise.resolve(Object.keys(this.entries));
});

@@ -87,0 +87,0 @@ }

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const debug_ = require("debug");
const fs_1 = require("fs");
const globAsync = require("glob");
const path = require("path");
const util_1 = require("util");
const fileStat = util_1.promisify(fs_1.lstat);
const glob = util_1.promisify(globAsync);
const zip_1 = require("./zip");
const zip4Entry_1 = require("./zip4Entry");
const debug = debug_("r2:utils#zip/zip4");
class Zip4 extends zip_1.Zip {
constructor(filePath) {
super();
this.filePath = filePath;
this.entries = new Map();
}
static loadPromise(filePath) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
if ((yield fileStat(filePath)).isFile()) {
return reject("not a directory, expected a path to an exploded (uncompressed) zip");
}
const zip4 = new Zip4(filePath);
const filesInPath = yield glob("**/*", { cwd: filePath, nodir: true });
filesInPath.forEach((file) => {
zip4.entries.set(file, new zip4Entry_1.Zip4Entry(path.join(filePath, file)));
});
resolve(zip4);
}));
});
}
freeDestroy() {
debug("freeDestroy: Zip4 -- " + this.filePath);
}
entriesCount() {
return this.entries.size;
}
hasEntries() {
return this.entriesCount() > 0;
}
hasEntry(entryPath) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.hasEntries() && !!this.entries.get(entryPath);
});
}
forEachEntry(callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.entries).forEach((entryName) => {
callback(entryName);
});
}
entryStreamPromise(entryPath) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this.hasEntries()) {
return Promise.reject("zip is empty");
}
const entry = this.entries.get(entryPath);
if (!entry) {
return Promise.reject("no such path in zip: " + entryPath);
}
return new Promise((resolve, _reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
debug(entry);
const streamAndLength = {
length: yield entry.size(),
reset: () => tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.entryStreamPromise(entryPath);
}),
stream: yield entry.stream(),
};
resolve(streamAndLength);
}));
});
}
}
exports.Zip4 = Zip4;
//# sourceMappingURL=zip4.js.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const fs_1 = require("fs");
const util_1 = require("util");
const web_streams_node_1 = require("web-streams-node");
const fsStat = util_1.promisify(fs_1.stat);
class Zip4Entry {
constructor(path) {
this.path = path;
}
stream() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return web_streams_node_1.toWebReadableStream(fs_1.createReadStream(this.path));
});
}
size() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return (yield fsStat(this.path)).size;
});
}
}
exports.Zip4Entry = Zip4Entry;
//# sourceMappingURL=zip4Entry.js.map

@@ -12,5 +12,5 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
private getEntry(entryPath);
private getEntry;
}

@@ -42,8 +42,8 @@ "use strict";

}
forEachEntry(callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.entries).forEach((entryName) => {
callback(entryName);
getEntries() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this.hasEntries()) {
return Promise.resolve([]);
}
return Promise.resolve(Object.keys(this.entries));
});

@@ -50,0 +50,0 @@ }

@@ -31,6 +31,13 @@ "use strict";

}
const stats = fs.lstatSync(filePath);
if (!stats.isFile() && !stats.isDirectory()) {
console.log("FILEPATH MUST BE FILE OR DIRECTORY.");
process.exit(1);
}
const fileName = path.basename(filePath);
const ext = path.extname(fileName).toLowerCase();
if (/\.epub[3]?$/.test(ext) || ext === ".cbz" || ext === ".zip") {
if (stats.isDirectory()) {
}
else if (/\.epub[3]?$/.test(ext) || ext === ".cbz" || ext === ".zip") {
}
//# sourceMappingURL=perf-cli.js.map

@@ -14,3 +14,3 @@ export interface IStreamAndLength {

hasEntry: (entryPath: string) => Promise<boolean>;
forEachEntry: (callback: (entryName: string) => void) => void;
getEntries: () => Promise<string[]>;
entryStreamPromise: (entryPath: string) => Promise<IStreamAndLength>;

@@ -23,5 +23,5 @@ freeDestroy: () => void;

abstract hasEntry(entryPath: string): Promise<boolean>;
abstract forEachEntry(callback: (entryName: string) => void): void;
abstract getEntries(): Promise<string[]>;
abstract entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
abstract freeDestroy(): void;
}

@@ -11,4 +11,4 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
}

@@ -58,8 +58,8 @@ "use strict";

}
forEachEntry(callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.zip.entries()).forEach((entryName) => {
callback(entryName);
getEntries() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this.hasEntries()) {
return Promise.resolve([]);
}
return Promise.resolve(Object.keys(this.zip.entries()));
});

@@ -66,0 +66,0 @@ }

@@ -6,3 +6,3 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

static loadPromise(filePath: string): Promise<IZip>;
private static loadPromiseHTTP(filePath);
private static loadPromiseHTTP;
private entries;

@@ -14,5 +14,5 @@ private constructor();

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
private addEntry(entry);
private addEntry;
}

@@ -242,8 +242,8 @@ "use strict";

}
forEachEntry(callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.entries).forEach((entryName) => {
callback(entryName);
getEntries() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this.hasEntries()) {
return Promise.resolve([]);
}
return Promise.resolve(Object.keys(this.entries));
});

@@ -250,0 +250,0 @@ }

@@ -6,3 +6,3 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

static loadPromise(filePath: string): Promise<IZip>;
private static loadPromiseHTTP(filePath);
private static loadPromiseHTTP;
private entries;

@@ -14,4 +14,4 @@ private constructor();

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
}

@@ -79,8 +79,8 @@ "use strict";

}
forEachEntry(callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.entries).forEach((entryName) => {
callback(entryName);
getEntries() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this.hasEntries()) {
return Promise.resolve([]);
}
return Promise.resolve(Object.keys(this.entries));
});

@@ -87,0 +87,0 @@ }

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const debug_ = require("debug");
const fs_1 = require("fs");
const globAsync = require("glob");
const path = require("path");
const util_1 = require("util");
const fileStat = util_1.promisify(fs_1.lstat);
const glob = util_1.promisify(globAsync);
const zip_1 = require("./zip");
const zip4Entry_1 = require("./zip4Entry");
const debug = debug_("r2:utils#zip/zip4");
class Zip4 extends zip_1.Zip {
constructor(filePath) {
super();
this.filePath = filePath;
this.entries = new Map();
}
static loadPromise(filePath) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
if ((yield fileStat(filePath)).isFile()) {
return reject("not a directory, expected a path to an exploded (uncompressed) zip");
}
const zip4 = new Zip4(filePath);
const filesInPath = yield glob("**/*", { cwd: filePath, nodir: true });
filesInPath.forEach((file) => {
zip4.entries.set(file, new zip4Entry_1.Zip4Entry(path.join(filePath, file)));
});
resolve(zip4);
}));
});
}
freeDestroy() {
debug("freeDestroy: Zip4 -- " + this.filePath);
}
entriesCount() {
return this.entries.size;
}
hasEntries() {
return this.entriesCount() > 0;
}
hasEntry(entryPath) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.hasEntries() && !!this.entries.get(entryPath);
});
}
forEachEntry(callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.entries).forEach((entryName) => {
callback(entryName);
});
}
entryStreamPromise(entryPath) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this.hasEntries()) {
return Promise.reject("zip is empty");
}
const entry = this.entries.get(entryPath);
if (!entry) {
return Promise.reject("no such path in zip: " + entryPath);
}
return new Promise((resolve, _reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
debug(entry);
const streamAndLength = {
length: yield entry.size(),
reset: () => tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.entryStreamPromise(entryPath);
}),
stream: yield entry.stream(),
};
resolve(streamAndLength);
}));
});
}
}
exports.Zip4 = Zip4;
//# sourceMappingURL=zip4.js.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const fs_1 = require("fs");
const util_1 = require("util");
const web_streams_node_1 = require("web-streams-node");
const fsStat = util_1.promisify(fs_1.stat);
class Zip4Entry {
constructor(path) {
this.path = path;
}
stream() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return web_streams_node_1.toWebReadableStream(fs_1.createReadStream(this.path));
});
}
size() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return (yield fsStat(this.path)).size;
});
}
}
exports.Zip4Entry = Zip4Entry;
//# sourceMappingURL=zip4Entry.js.map

@@ -12,5 +12,5 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
private getEntry(entryPath);
private getEntry;
}

@@ -42,8 +42,8 @@ "use strict";

}
forEachEntry(callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.entries).forEach((entryName) => {
callback(entryName);
getEntries() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this.hasEntries()) {
return Promise.resolve([]);
}
return Promise.resolve(Object.keys(this.entries));
});

@@ -50,0 +50,0 @@ }

@@ -31,6 +31,13 @@ "use strict";

}
const stats = fs.lstatSync(filePath);
if (!stats.isFile() && !stats.isDirectory()) {
console.log("FILEPATH MUST BE FILE OR DIRECTORY.");
process.exit(1);
}
const fileName = path.basename(filePath);
const ext = path.extname(fileName).toLowerCase();
if (/\.epub[3]?$/.test(ext) || ext === ".cbz" || ext === ".zip") {
if (stats.isDirectory()) {
}
else if (/\.epub[3]?$/.test(ext) || ext === ".cbz" || ext === ".zip") {
}
//# sourceMappingURL=perf-cli.js.map

@@ -14,3 +14,3 @@ export interface IStreamAndLength {

hasEntry: (entryPath: string) => Promise<boolean>;
forEachEntry: (callback: (entryName: string) => void) => void;
getEntries: () => Promise<string[]>;
entryStreamPromise: (entryPath: string) => Promise<IStreamAndLength>;

@@ -23,5 +23,5 @@ freeDestroy: () => void;

abstract hasEntry(entryPath: string): Promise<boolean>;
abstract forEachEntry(callback: (entryName: string) => void): void;
abstract getEntries(): Promise<string[]>;
abstract entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
abstract freeDestroy(): void;
}

@@ -11,4 +11,4 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
}

@@ -53,9 +53,7 @@ "use strict";

}
forEachEntry(callback) {
async getEntries() {
if (!this.hasEntries()) {
return;
return Promise.resolve([]);
}
Object.keys(this.zip.entries()).forEach((entryName) => {
callback(entryName);
});
return Promise.resolve(Object.keys(this.zip.entries()));
}

@@ -62,0 +60,0 @@ async entryStreamPromise(entryPath) {

@@ -6,3 +6,3 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

static loadPromise(filePath: string): Promise<IZip>;
private static loadPromiseHTTP(filePath);
private static loadPromiseHTTP;
private entries;

@@ -14,5 +14,5 @@ private constructor();

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
private addEntry(entry);
private addEntry;
}

@@ -235,9 +235,7 @@ "use strict";

}
forEachEntry(callback) {
async getEntries() {
if (!this.hasEntries()) {
return;
return Promise.resolve([]);
}
Object.keys(this.entries).forEach((entryName) => {
callback(entryName);
});
return Promise.resolve(Object.keys(this.entries));
}

@@ -244,0 +242,0 @@ async entryStreamPromise(entryPath) {

@@ -6,3 +6,3 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

static loadPromise(filePath: string): Promise<IZip>;
private static loadPromiseHTTP(filePath);
private static loadPromiseHTTP;
private entries;

@@ -14,4 +14,4 @@ private constructor();

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
}

@@ -72,9 +72,7 @@ "use strict";

}
forEachEntry(callback) {
async getEntries() {
if (!this.hasEntries()) {
return;
return Promise.resolve([]);
}
Object.keys(this.entries).forEach((entryName) => {
callback(entryName);
});
return Promise.resolve(Object.keys(this.entries));
}

@@ -81,0 +79,0 @@ async entryStreamPromise(entryPath) {

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const debug_ = require("debug");
const fs_1 = require("fs");
const globAsync = require("glob");
const path = require("path");
const util_1 = require("util");
const fileStat = util_1.promisify(fs_1.lstat);
const glob = util_1.promisify(globAsync);
const zip_1 = require("./zip");
const zip4Entry_1 = require("./zip4Entry");
const debug = debug_("r2:utils#zip/zip4");
class Zip4 extends zip_1.Zip {
constructor(filePath) {
super();
this.filePath = filePath;
this.entries = new Map();
}
static async loadPromise(filePath) {
return new Promise(async (resolve, reject) => {
if ((await fileStat(filePath)).isFile()) {
return reject("not a directory, expected a path to an exploded (uncompressed) zip");
}
const zip4 = new Zip4(filePath);
const filesInPath = await glob("**/*", { cwd: filePath, nodir: true });
filesInPath.forEach((file) => {
zip4.entries.set(file, new zip4Entry_1.Zip4Entry(path.join(filePath, file)));
});
resolve(zip4);
});
}
freeDestroy() {
debug("freeDestroy: Zip4 -- " + this.filePath);
}
entriesCount() {
return this.entries.size;
}
hasEntries() {
return this.entriesCount() > 0;
}
async hasEntry(entryPath) {
return this.hasEntries() && !!this.entries.get(entryPath);
}
forEachEntry(callback) {
if (!this.hasEntries()) {
return;
}
Object.keys(this.entries).forEach((entryName) => {
callback(entryName);
});
}
async entryStreamPromise(entryPath) {
if (!this.hasEntries()) {
return Promise.reject("zip is empty");
}
const entry = this.entries.get(entryPath);
if (!entry) {
return Promise.reject("no such path in zip: " + entryPath);
}
return new Promise(async (resolve, _reject) => {
debug(entry);
const streamAndLength = {
length: await entry.size(),
reset: async () => {
return this.entryStreamPromise(entryPath);
},
stream: await entry.stream(),
};
resolve(streamAndLength);
});
}
}
exports.Zip4 = Zip4;
//# sourceMappingURL=zip4.js.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("fs");
const util_1 = require("util");
const web_streams_node_1 = require("web-streams-node");
const fsStat = util_1.promisify(fs_1.stat);
class Zip4Entry {
constructor(path) {
this.path = path;
}
async stream() {
return web_streams_node_1.toWebReadableStream(fs_1.createReadStream(this.path));
}
async size() {
return (await fsStat(this.path)).size;
}
}
exports.Zip4Entry = Zip4Entry;
//# sourceMappingURL=zip4Entry.js.map

@@ -12,5 +12,5 @@ import { IStreamAndLength, IZip, Zip } from "./zip";

hasEntry(entryPath: string): Promise<boolean>;
forEachEntry(callback: (entryName: string) => void): void;
getEntries(): Promise<string[]>;
entryStreamPromise(entryPath: string): Promise<IStreamAndLength>;
private getEntry(entryPath);
private getEntry;
}

@@ -37,9 +37,7 @@ "use strict";

}
forEachEntry(callback) {
async getEntries() {
if (!this.hasEntries()) {
return;
return Promise.resolve([]);
}
Object.keys(this.entries).forEach((entryName) => {
callback(entryName);
});
return Promise.resolve(Object.keys(this.entries));
}

@@ -46,0 +44,0 @@ async entryStreamPromise(entryPath) {

{
"short": "43942ff",
"long": "43942ff102e607c40d316bad7451dbe71f331d5b",
"short": "077297b",
"long": "077297bc98bdd75c88e7987b387fa90fea07e219",
"branch": "develop",
"date": "2018-04-16T22:13:48.000Z",
"date": "2018-06-22T15:51:23.000Z",
"dirty": true,
"urlHistory": "https://github.com/edrlab/r2-utils-js/commits/43942ff102e607c40d316bad7451dbe71f331d5b",
"urlDiff": "https://github.com/edrlab/r2-utils-js/compare/43942ff102e607c40d316bad7451dbe71f331d5b...develop"
"urlHistory": "https://github.com/edrlab/r2-utils-js/commits/077297bc98bdd75c88e7987b387fa90fea07e219",
"urlDiff": "https://github.com/edrlab/r2-utils-js/compare/077297bc98bdd75c88e7987b387fa90fea07e219...develop"
}
{
"name": "@evidentpoint/r2-utils-js",
"version": "0.0.1-alpha34",
"version": "1.0.0-alpha.2",
"description": "Readium 2 'utils' for NodeJS (TypeScript)",

@@ -53,18 +53,19 @@ "keywords": [

"debug": "^3.1.0",
"fetch-ponyfill": "^6.0.1",
"filehound": "^1.16.4",
"glob": "^7.1.2",
"fetch-ponyfill": "^6.0.1",
"isomorphic-fetch-readablestream": "^1.1.0",
"isomorphic-url-shim": "^1.0.2",
"node-stream-zip": "^1.4.2",
"node-stream-zip": "^1.7.0",
"reflect-metadata": "^0.1.12",
"request": "^2.83.0",
"request": "^2.87.0",
"request-promise-native": "^1.0.5",
"ta-json": "github:evidentpoint/ta-json#dist",
"text-encoding": "^0.6.4",
"tslib": "^1.9.0",
"unzipper": "^0.8.11",
"tslib": "^1.9.2",
"unzipper": "^0.8.14",
"web-streams-node": "^0.3.1",
"web-streams-ponyfill": "^1.4.2",
"xpath": "^0.0.27",
"yauzl": "^2.9.1",
"yauzl": "^2.9.2",
"yazl": "^2.4.3"

@@ -75,17 +76,16 @@ },

"@types/glob": "^5.0.35",
"@types/node": "^9.4.6",
"@types/request": "^2.47.0",
"@types/request-promise-native": "^1.0.13",
"cpy-cli": "^1.0.1",
"cross-env": "^5.1.3",
"@types/node": "^10.3.4",
"@types/request": "^2.47.1",
"@types/request-promise-native": "^1.0.15",
"cpy-cli": "^2.0.0",
"cross-env": "^5.2.0",
"cson": "^5.1.0",
"eclint": "^2.6.0",
"filehound": "^1.16.2",
"git-rev-sync": "^1.10.0",
"eclint": "^2.7.0",
"git-rev-sync": "^1.12.0",
"json": "^9.0.6",
"mkdirp": "^0.5.1",
"rimraf": "^2.6.2",
"tslint": "^5.9.1",
"tslint-language-service": "^0.9.8",
"typescript": "2.7.1"
"tslint": "^5.10.0",
"tslint-language-service": "^0.9.9",
"typescript": "^2.9.2"
},

@@ -102,6 +102,6 @@ "main": "dist/es6-es2015/src/_utils/perf-cli.js",

"cson2json": "sed -E \"s/#ECMASCRIPT#/es5/g\" package-scripts-build.cson > tmp-build.cson && sed -E \"s/#ECMASCRIPT#/es6-es2015/g\" package-scripts-build.cson >> tmp-build.cson && sed -E \"s/#ECMASCRIPT#/es7-es2016/g\" package-scripts-build.cson >> tmp-build.cson && sed -E \"s/#ECMASCRIPT#/es8-es2017/g\" package-scripts-build.cson >> tmp-build.cson && json -I -f package.json -e \"this.scripts=$(cat package-scripts.cson tmp-build.cson | node node_modules/cson/bin/cson2json)\" && rimraf tmp-*.cson",
"copydist": "cpy \"dist/**/*.*\" ../r2-opds-js/node_modules/r2-utils-js/ --cwd=./ --parents && cpy \"dist/**/*.*\" ../r2-lcp-js/node_modules/r2-utils-js/ --cwd=./ --parents && cpy \"dist/**/*.*\" ../r2-shared-js/node_modules/r2-utils-js/ --cwd=./ --parents && cpy \"dist/**/*.*\" ../r2-streamer-js/node_modules/r2-utils-js/ --cwd=./ --parents && cpy \"dist/**/*.*\" ../r2-navigator-js/node_modules/r2-utils-js/ --cwd=./ --parents && cpy \"dist/**/*.*\" ../r2-testapp-js/node_modules/r2-utils-js/ --cwd=./ --parents",
"copydist": "cpy \"./dist/**/*\" ../r2-opds-js/node_modules/r2-utils-js/ --cwd=./ --parents --no-dir && cpy \"./dist/**/*\" ../r2-lcp-js/node_modules/r2-utils-js/ --cwd=./ --parents --no-dir && cpy \"./dist/**/*\" ../r2-shared-js/node_modules/r2-utils-js/ --cwd=./ --parents --no-dir && cpy \"./dist/**/*\" ../r2-streamer-js/node_modules/r2-utils-js/ --cwd=./ --parents --no-dir && cpy \"./dist/**/*\" ../r2-navigator-js/node_modules/r2-utils-js/ --cwd=./ --parents --no-dir && cpy \"./dist/**/*\" ../r2-testapp-js/node_modules/r2-utils-js/ --cwd=./ --parents --no-dir",
"quick-build-dist": "npm run transpile:typescript:es8-es2017+afterdist && npm run copydist",
"_pregitdist": "npm run build:all",
"gitdist": "cd ../r2-utils-js-dist/ && git checkout -B develop && (git pull || echo \"pull\") && (git --no-pager status || echo status) && ((rimraf \"*\" && echo rimrafOK) || echo rimrafNOK) && cpy ../r2-utils-js/package.json . && cpy ../r2-utils-js/package-lock.json . && cpy ../r2-utils-js/LICENSE . && cpy ../r2-utils-js/README.md . && cpy \"docs/**/*.*\" ../r2-utils-js-dist/ --cwd=../r2-utils-js/ --parents && cpy \"dist/**/*.*\" ../r2-utils-js-dist/ --cwd=../r2-utils-js/ --parents && (git add * || echo add) && (git commit -a -m \"add new dist\" || echo commit) && (git push --set-upstream origin develop || echo push) && (git --no-pager status || echo status) && cd ../r2-utils-js",
"gitdist": "cd ../r2-utils-js-dist/ && git checkout -B develop && (git pull || echo \"pull\") && (git --no-pager status || echo status) && ((rimraf \"*\" && echo rimrafOK) || echo rimrafNOK) && cpy ../r2-utils-js/package.json . && cpy ../r2-utils-js/package-lock.json . && cpy ../r2-utils-js/LICENSE . && cpy ../r2-utils-js/README.md . && cpy \"./docs/**/*\" ../r2-utils-js-dist/ --cwd=../r2-utils-js/ --parents --no-dir && cpy \"./dist/**/*\" ../r2-utils-js-dist/ --cwd=../r2-utils-js/ --parents --no-dir && (git add * || echo add) && (git commit -a -m \"add new dist\" || echo commit) && (git push --set-upstream origin develop || echo push) && (git --no-pager status || echo status) && cd ../r2-utils-js",
"start": "cross-env DEBUG=r2:* node \"./dist/es6-es2015/src/_utils/perf-cli.js\" ./file.epub",

@@ -108,0 +108,0 @@ "prepare_": "npm run build:all && npm test",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc