54 lines
1.5 KiB
Diff
54 lines
1.5 KiB
Diff
diff --git a/epub.js b/epub.js
|
|
index 50efff7678ca4879ed639d3bb70fd37e7477fd16..accbe689cd200bd59475dd20fca596511d0f33e0 100644
|
|
--- a/epub.js
|
|
+++ b/epub.js
|
|
@@ -3,9 +3,28 @@ var xml2jsOptions = xml2js.defaults['0.1'];
|
|
var EventEmitter = require('events').EventEmitter;
|
|
|
|
try {
|
|
- // zipfile is an optional dependency:
|
|
- var ZipFile = require("zipfile").ZipFile;
|
|
-} catch (err) {
|
|
+ var zipread = require("zipread");
|
|
+ var ZipFile = function(filename) {
|
|
+ var zip = zipread(filename);
|
|
+ this.zip = zip;
|
|
+ var files = zip.files;
|
|
+
|
|
+ files = Object.values(files).filter((file) => {
|
|
+ return !file.dir;
|
|
+ }).map((file) => {
|
|
+ return file.name;
|
|
+ });
|
|
+
|
|
+ this.names = files;
|
|
+ this.count = this.names.length;
|
|
+ };
|
|
+ ZipFile.prototype.readFile = function(name, cb) {
|
|
+ this.zip.readFile(name
|
|
+ , function(err, buffer) {
|
|
+ return cb(null, buffer);
|
|
+ });
|
|
+ };
|
|
+} catch(err) {
|
|
// Mock zipfile using pure-JS adm-zip:
|
|
var AdmZip = require('adm-zip');
|
|
|
|
diff --git a/package.json b/package.json
|
|
index 8c3dccf0caac8913a2edabd7049b25bb9063c905..57bac3b71ddd73916adbdf00b049089181db5bcb 100644
|
|
--- a/package.json
|
|
+++ b/package.json
|
|
@@ -40,10 +40,8 @@
|
|
],
|
|
"dependencies": {
|
|
"adm-zip": "^0.4.11",
|
|
- "xml2js": "^0.4.23"
|
|
- },
|
|
- "optionalDependencies": {
|
|
- "zipfile": "^0.5.11"
|
|
+ "xml2js": "^0.4.23",
|
|
+ "zipread": "^1.3.3"
|
|
},
|
|
"devDependencies": {
|
|
"@types/mocha": "^5.2.5",
|