epub2md 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/publish-npm.yml +22 -0
- package/.github/workflows/test.yml +26 -0
- package/.prettierrc +8 -0
- package/CHANGELOG.md +22 -0
- package/README.md +75 -0
- package/jest.config.js.js +5 -0
- package/lib/bin/cli.d.ts +2 -0
- package/lib/bin/cli.js +58 -0
- package/lib/bin/cli.js.map +1 -0
- package/lib/bin/convert.d.ts +23 -0
- package/lib/bin/convert.js +157 -0
- package/lib/bin/convert.js.map +1 -0
- package/lib/bin/custom.d.ts +1 -0
- package/lib/bin/custom.js +13 -0
- package/lib/bin/custom.js.map +1 -0
- package/lib/converter.d.ts +1 -0
- package/lib/converter.js +9 -0
- package/lib/converter.js.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.js +15 -0
- package/lib/index.js.map +1 -0
- package/lib/mobi.d.ts +15 -0
- package/lib/mobi.js +170 -0
- package/lib/mobi.js.map +1 -0
- package/lib/parseEpub.d.ts +58 -0
- package/lib/parseEpub.js +281 -0
- package/lib/parseEpub.js.map +1 -0
- package/lib/parseEpub.spec.d.ts +1 -0
- package/lib/parseEpub.spec.js +122 -0
- package/lib/parseEpub.spec.js.map +1 -0
- package/lib/parseHTML.d.ts +7 -0
- package/lib/parseHTML.js +102 -0
- package/lib/parseHTML.js.map +1 -0
- package/lib/parseHTML.spec.d.ts +1 -0
- package/lib/parseHTML.spec.js +13 -0
- package/lib/parseHTML.spec.js.map +1 -0
- package/lib/parseLink.d.ts +7 -0
- package/lib/parseLink.js +20 -0
- package/lib/parseLink.js.map +1 -0
- package/lib/parseSection.d.ts +22 -0
- package/lib/parseSection.js +94 -0
- package/lib/parseSection.js.map +1 -0
- package/lib/types.d.ts +21 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/lib/utils.d.ts +19 -0
- package/lib/utils.js +108 -0
- package/lib/utils.js.map +1 -0
- package/package.json +71 -0
- package/tsconfig.json +25 -0
- package/tslint.json +73 -0
package/lib/mobi.js
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
// @ts-nocheck have some Error!
|
|
7
|
+
var fs_1 = __importDefault(require("fs"));
|
|
8
|
+
var pypacker_1 = __importDefault(require("pypacker"));
|
|
9
|
+
var Mobi = /** @class */ (function () {
|
|
10
|
+
function Mobi(filename) {
|
|
11
|
+
this.info = {
|
|
12
|
+
content: '',
|
|
13
|
+
pdbHeader: {
|
|
14
|
+
records: [],
|
|
15
|
+
},
|
|
16
|
+
mobiHeader: {},
|
|
17
|
+
};
|
|
18
|
+
this.filename = filename;
|
|
19
|
+
this.parse();
|
|
20
|
+
}
|
|
21
|
+
Mobi.prototype.parse = function () {
|
|
22
|
+
var bufIndex, buffer, data, fd, file_info, filename, flags, header, id, index, mobiHeader, multibyte, pdbHeader, position, startPosition, trailers, _i, _j, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7;
|
|
23
|
+
filename = this.filename;
|
|
24
|
+
file_info = fs_1.default.statSync(filename);
|
|
25
|
+
buffer = new Buffer(file_info.size);
|
|
26
|
+
fd = fs_1.default.openSync(filename, 'r');
|
|
27
|
+
fs_1.default.readSync(fd, buffer, 0, file_info.size, 0);
|
|
28
|
+
pdbHeader = this.info.pdbHeader;
|
|
29
|
+
_ref = new pypacker_1.default('31sxHH6I4s4s2IH').unpack_from(buffer);
|
|
30
|
+
this.info.name = _ref[0];
|
|
31
|
+
pdbHeader.attributes = _ref[1];
|
|
32
|
+
pdbHeader.version = _ref[2];
|
|
33
|
+
pdbHeader.created = _ref[3];
|
|
34
|
+
pdbHeader.modified = _ref[4];
|
|
35
|
+
pdbHeader.backedUp = _ref[5];
|
|
36
|
+
pdbHeader.modificationNumber = _ref[6];
|
|
37
|
+
pdbHeader.appInfoId = _ref[7];
|
|
38
|
+
pdbHeader.sortInfoID = _ref[8];
|
|
39
|
+
pdbHeader.type = _ref[9];
|
|
40
|
+
pdbHeader.creator = _ref[10];
|
|
41
|
+
pdbHeader.uniqueIDseed = _ref[11];
|
|
42
|
+
pdbHeader.nextRecordListID = _ref[12];
|
|
43
|
+
pdbHeader.recordCount = _ref[13];
|
|
44
|
+
this.info.name = this.info.name.replace(/\u0000/g, '');
|
|
45
|
+
pdbHeader.created = new Date(pdbHeader.created * 1000);
|
|
46
|
+
pdbHeader.modified = new Date(pdbHeader.modified * 1000);
|
|
47
|
+
pdbHeader.backedUp = new Date(pdbHeader.backedUp * 100);
|
|
48
|
+
bufIndex = 0x4e;
|
|
49
|
+
console.log("pdbHeader", pdbHeader);
|
|
50
|
+
for (index = _i = 0, _ref1 = pdbHeader.recordCount; 0 <= _ref1 ? _i < _ref1 : _i > _ref1; index = 0 <= _ref1 ? ++_i : --_i) {
|
|
51
|
+
startPosition = bufIndex + index * 8;
|
|
52
|
+
(_ref2 = new pypacker_1.default('II').unpack_from(buffer, startPosition)),
|
|
53
|
+
(position = _ref2[0]),
|
|
54
|
+
(id = _ref2[1]);
|
|
55
|
+
id = id & 0x00ffffff;
|
|
56
|
+
pdbHeader.records.push({
|
|
57
|
+
position: position,
|
|
58
|
+
id: id,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
header = buffer.slice(pdbHeader.records[0].position, pdbHeader.records[1].position);
|
|
62
|
+
mobiHeader = this.info.mobiHeader;
|
|
63
|
+
_ref3 = new pypacker_1.default('H2xI3H6x3I').unpack_from(header);
|
|
64
|
+
mobiHeader.compression = _ref3[0];
|
|
65
|
+
mobiHeader.text_length = _ref3[1];
|
|
66
|
+
mobiHeader.textRecordCount = _ref3[2];
|
|
67
|
+
mobiHeader.recordSize = _ref3[3];
|
|
68
|
+
mobiHeader.encryption = _ref3[4];
|
|
69
|
+
mobiHeader.headerLength = _ref3[5];
|
|
70
|
+
mobiHeader.mobiType = _ref3[6];
|
|
71
|
+
mobiHeader.encoding = _ref3[7];
|
|
72
|
+
_ref4 = new pypacker_1.default('3I').unpack_from(header, 0x50);
|
|
73
|
+
mobiHeader.firstNonBookIndex = _ref4[0];
|
|
74
|
+
mobiHeader.fullNameOffset = _ref4[1];
|
|
75
|
+
mobiHeader.fullNameLength = _ref4[2];
|
|
76
|
+
mobiHeader.firstImageIndex = new pypacker_1.default('I').unpack_from(header, 0x6c)[0];
|
|
77
|
+
mobiHeader.exthFlags = new pypacker_1.default('I').unpack_from(header, 0x80)[0];
|
|
78
|
+
mobiHeader.exthFlags = (mobiHeader.exthFlags & 0x40) === 0x40 ? true : false;
|
|
79
|
+
_ref5 = new pypacker_1.default('2H').unpack_from(header, 0xc2);
|
|
80
|
+
mobiHeader.firstContentRecord = _ref5[0];
|
|
81
|
+
mobiHeader.lastContentRecord = _ref5[1];
|
|
82
|
+
this.info.title = new pypacker_1.default(mobiHeader.fullNameLength + 's').unpack_from(header, mobiHeader.fullNameOffset)[0];
|
|
83
|
+
multibyte = 0;
|
|
84
|
+
trailers = 0;
|
|
85
|
+
if (mobiHeader.headerLength >= 0xe4) {
|
|
86
|
+
flags =
|
|
87
|
+
((_ref6 = new pypacker_1.default('H').unpack_from(header, 0xf2)), (mobiHeader.flags = _ref6[0]), _ref6);
|
|
88
|
+
multibyte = flags & 1;
|
|
89
|
+
while (flags > 1) {
|
|
90
|
+
trailers += 1;
|
|
91
|
+
flags = flags & (flags - 2);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
for (position = _j = 1, _ref7 = mobiHeader.textRecordCount; 1 <= _ref7 ? _j <= _ref7 : _j >= _ref7; position = 1 <= _ref7 ? ++_j : --_j) {
|
|
95
|
+
data = buffer.slice(pdbHeader.records[position].position, pdbHeader.records[position + 1].position);
|
|
96
|
+
data = this.trim(data, trailers, multibyte);
|
|
97
|
+
if (mobiHeader.compression === 1) {
|
|
98
|
+
this.info.content += data;
|
|
99
|
+
}
|
|
100
|
+
else if (mobiHeader.compression === 2) {
|
|
101
|
+
this.info.content += this.palmdocReader(data);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
throw new Error("LZ77 compression isn't supported... yet.");
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
this.info.content = this.info.content.replace(/<(head|HEAD)>/g, '<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>');
|
|
108
|
+
return this;
|
|
109
|
+
};
|
|
110
|
+
Mobi.prototype.trim = function (data, trailers, multibyte) {
|
|
111
|
+
var end_bytes, num, v, z, _i, _j;
|
|
112
|
+
for (z = _i = 0; 0 <= trailers ? _i < trailers : _i > trailers; z = 0 <= trailers ? ++_i : --_i) {
|
|
113
|
+
num = 0;
|
|
114
|
+
end_bytes = data.slice(data.length - 4);
|
|
115
|
+
for (v = _j = 0; _j < 4; v = ++_j) {
|
|
116
|
+
if (end_bytes[v] & 0x80) {
|
|
117
|
+
num = 0;
|
|
118
|
+
}
|
|
119
|
+
num = (num << 7) | (end_bytes[v] & 0x7f);
|
|
120
|
+
}
|
|
121
|
+
data = data.slice(0, data.length - num);
|
|
122
|
+
}
|
|
123
|
+
if (multibyte) {
|
|
124
|
+
num = (data[data.length - 1] & 3) + 1;
|
|
125
|
+
data = data.slice(0, data.length - num);
|
|
126
|
+
}
|
|
127
|
+
return data;
|
|
128
|
+
};
|
|
129
|
+
Mobi.prototype.palmdocReader = function (data) {
|
|
130
|
+
var concat, distance, frame, index, length, string, x, _i, _j, _ref;
|
|
131
|
+
string = '';
|
|
132
|
+
index = 0;
|
|
133
|
+
while (index < data.length) {
|
|
134
|
+
frame = data[index];
|
|
135
|
+
index += 1;
|
|
136
|
+
if (frame >= 1 && frame <= 8) {
|
|
137
|
+
string += data.toString('utf8', index, index + frame);
|
|
138
|
+
for (x = _i = 0, _ref = frame - 1; 0 <= _ref ? _i < _ref : _i > _ref; x = 0 <= _ref ? ++_i : --_i) {
|
|
139
|
+
string += String.fromCharCode(0xe0e0);
|
|
140
|
+
}
|
|
141
|
+
index += frame;
|
|
142
|
+
}
|
|
143
|
+
else if (frame < 128) {
|
|
144
|
+
string += String.fromCharCode(frame);
|
|
145
|
+
}
|
|
146
|
+
else if (frame >= 192) {
|
|
147
|
+
string += ' ' + String.fromCharCode(frame ^ 128);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
concat = (frame << 8) | data[index];
|
|
151
|
+
distance = (concat >> 3) & 0x07ff;
|
|
152
|
+
length = (concat & 7) + 3;
|
|
153
|
+
if (length < distance) {
|
|
154
|
+
string += string.slice(-distance, length - distance);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
for (x = _j = 0; 0 <= length ? _j < length : _j > length; x = 0 <= length ? ++_j : --_j) {
|
|
158
|
+
string += string[string.length - distance];
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
index += 1;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
string = string.replace(/\uE0E0/g, '');
|
|
165
|
+
return string;
|
|
166
|
+
};
|
|
167
|
+
return Mobi;
|
|
168
|
+
}());
|
|
169
|
+
exports.default = Mobi;
|
|
170
|
+
//# sourceMappingURL=mobi.js.map
|
package/lib/mobi.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobi.js","sourceRoot":"","sources":["../src/mobi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { ParserOptions, GeneralObject } from './types';
|
|
3
|
+
import { Section } from './parseSection';
|
|
4
|
+
export declare const defaultOptions: ParserOptions;
|
|
5
|
+
export declare class Epub {
|
|
6
|
+
private _zip;
|
|
7
|
+
private _opfPath?;
|
|
8
|
+
private _root?;
|
|
9
|
+
private _content?;
|
|
10
|
+
private _manifest?;
|
|
11
|
+
private _spine?;
|
|
12
|
+
private _toc?;
|
|
13
|
+
private _metadata?;
|
|
14
|
+
private _options;
|
|
15
|
+
structure?: GeneralObject;
|
|
16
|
+
info?: {
|
|
17
|
+
title: string;
|
|
18
|
+
author: string;
|
|
19
|
+
publisher: string;
|
|
20
|
+
};
|
|
21
|
+
sections?: Section[];
|
|
22
|
+
constructor(buffer: Buffer, options?: ParserOptions);
|
|
23
|
+
resolve(path: string): {
|
|
24
|
+
asText: () => string;
|
|
25
|
+
asNodeBuffer: () => Buffer;
|
|
26
|
+
};
|
|
27
|
+
_resolveXMLAsJsObject(path: string): Promise<GeneralObject>;
|
|
28
|
+
private _getOpfPath;
|
|
29
|
+
getManifest(content?: GeneralObject): any[];
|
|
30
|
+
_resolveIdFromLink(href: string): any;
|
|
31
|
+
_getSpine(): any;
|
|
32
|
+
_genStructureForHTML(tocObj: GeneralObject): {
|
|
33
|
+
name: any;
|
|
34
|
+
sectionId: any;
|
|
35
|
+
nodeId: string;
|
|
36
|
+
path: any;
|
|
37
|
+
playOrder: number;
|
|
38
|
+
children: any;
|
|
39
|
+
}[];
|
|
40
|
+
_genStructure(tocObj: GeneralObject, resolveNodeId?: boolean): {
|
|
41
|
+
name: any;
|
|
42
|
+
sectionId: any;
|
|
43
|
+
nodeId: string;
|
|
44
|
+
path: any;
|
|
45
|
+
playOrder: number;
|
|
46
|
+
children: any;
|
|
47
|
+
}[] | {
|
|
48
|
+
name: any;
|
|
49
|
+
sectionId: any;
|
|
50
|
+
nodeId: any;
|
|
51
|
+
path: any;
|
|
52
|
+
playOrder: string;
|
|
53
|
+
children: any;
|
|
54
|
+
}[];
|
|
55
|
+
private _resolveSectionsFromSpine;
|
|
56
|
+
parse(): Promise<this>;
|
|
57
|
+
}
|
|
58
|
+
export default function parserWrapper(target: string | Buffer, opts?: ParserOptions): Promise<Epub>;
|
package/lib/parseEpub.js
ADDED
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
+
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;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
50
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
|
+
};
|
|
52
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
exports.Epub = exports.defaultOptions = void 0;
|
|
54
|
+
var fs_1 = __importDefault(require("fs"));
|
|
55
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
56
|
+
// @ts-ignore
|
|
57
|
+
var node_zip_1 = __importDefault(require("node-zip"));
|
|
58
|
+
var parseLink_1 = __importDefault(require("./parseLink"));
|
|
59
|
+
var parseSection_1 = __importDefault(require("./parseSection"));
|
|
60
|
+
var utils_1 = require("./utils");
|
|
61
|
+
var parseMetadata = function (metadata) {
|
|
62
|
+
var title = lodash_1.default.get(metadata[0], ['dc:title', 0]);
|
|
63
|
+
var author = lodash_1.default.get(metadata[0], ['dc:creator']);
|
|
64
|
+
if (Array.isArray(author)) {
|
|
65
|
+
author = author.map(function (aut) { return lodash_1.default.get(aut, ['_']); });
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
author = [lodash_1.default.get(author, ['_'])];
|
|
69
|
+
}
|
|
70
|
+
var publisher = lodash_1.default.get(metadata[0], ['dc:publisher', 0]);
|
|
71
|
+
var meta = {
|
|
72
|
+
title: title,
|
|
73
|
+
author: author,
|
|
74
|
+
publisher: publisher,
|
|
75
|
+
};
|
|
76
|
+
return meta;
|
|
77
|
+
};
|
|
78
|
+
exports.defaultOptions = { type: "path", expand: false };
|
|
79
|
+
var Epub = /** @class */ (function () {
|
|
80
|
+
function Epub(buffer, options) {
|
|
81
|
+
this._options = exports.defaultOptions;
|
|
82
|
+
this._zip = new node_zip_1.default(buffer, { binary: true, base64: false, checkCRC32: true });
|
|
83
|
+
if (options)
|
|
84
|
+
this._options = __assign(__assign({}, exports.defaultOptions), options);
|
|
85
|
+
}
|
|
86
|
+
Epub.prototype.resolve = function (path) {
|
|
87
|
+
var _path;
|
|
88
|
+
if (path[0] === '/') {
|
|
89
|
+
// use absolute path, root is zip root
|
|
90
|
+
_path = path.substr(1);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
_path = this._root + path;
|
|
94
|
+
}
|
|
95
|
+
var file = this._zip.file(decodeURI(_path));
|
|
96
|
+
if (file) {
|
|
97
|
+
return file;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
throw new Error("".concat(_path, " not found!"));
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
Epub.prototype._resolveXMLAsJsObject = function (path) {
|
|
104
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
105
|
+
var xml;
|
|
106
|
+
return __generator(this, function (_a) {
|
|
107
|
+
xml = this.resolve(path).asText();
|
|
108
|
+
return [2 /*return*/, (0, utils_1.xmlToJs)(xml)];
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
Epub.prototype._getOpfPath = function () {
|
|
113
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
114
|
+
var container, opfPath;
|
|
115
|
+
return __generator(this, function (_a) {
|
|
116
|
+
switch (_a.label) {
|
|
117
|
+
case 0: return [4 /*yield*/, this._resolveXMLAsJsObject('/META-INF/container.xml')];
|
|
118
|
+
case 1:
|
|
119
|
+
container = _a.sent();
|
|
120
|
+
opfPath = container.container.rootfiles[0].rootfile[0]['$']['full-path'];
|
|
121
|
+
return [2 /*return*/, opfPath];
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
Epub.prototype.getManifest = function (content) {
|
|
127
|
+
return (this._manifest ||
|
|
128
|
+
lodash_1.default.get(content, ['package', 'manifest', 0, 'item'], []).map(function (item) { return item.$; }));
|
|
129
|
+
};
|
|
130
|
+
Epub.prototype._resolveIdFromLink = function (href) {
|
|
131
|
+
var tarName = (0, parseLink_1.default)(href).name;
|
|
132
|
+
var tarItem = lodash_1.default.find(this._manifest, function (item) {
|
|
133
|
+
var name = (0, parseLink_1.default)(item.href).name;
|
|
134
|
+
return name === tarName;
|
|
135
|
+
});
|
|
136
|
+
return lodash_1.default.get(tarItem, 'id');
|
|
137
|
+
};
|
|
138
|
+
Epub.prototype._getSpine = function () {
|
|
139
|
+
return lodash_1.default.get(this._content, ['package', 'spine', 0, 'itemref'], []).map(function (item) {
|
|
140
|
+
return item.$.idref;
|
|
141
|
+
});
|
|
142
|
+
};
|
|
143
|
+
Epub.prototype._genStructureForHTML = function (tocObj) {
|
|
144
|
+
var _this = this;
|
|
145
|
+
var tocRoot = tocObj.html.body[0].nav[0]['ol'][0].li;
|
|
146
|
+
var runningIndex = 1;
|
|
147
|
+
var parseHTMLNavPoints = function (navPoint) {
|
|
148
|
+
var _a, _b;
|
|
149
|
+
var element = navPoint.a[0] || {};
|
|
150
|
+
var path = element['$'].href;
|
|
151
|
+
var name = element['_'];
|
|
152
|
+
var prefix = element.span;
|
|
153
|
+
if (prefix) {
|
|
154
|
+
name = "".concat(prefix.map(function (p) { return p['_']; }).join('')).concat(name);
|
|
155
|
+
}
|
|
156
|
+
var sectionId = _this._resolveIdFromLink(path);
|
|
157
|
+
var nodeId = (0, parseLink_1.default)(path).hash;
|
|
158
|
+
var playOrder = runningIndex;
|
|
159
|
+
var children = (_b = (_a = navPoint === null || navPoint === void 0 ? void 0 : navPoint.ol) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.li;
|
|
160
|
+
if (children) {
|
|
161
|
+
children = parseOuterHTML(children);
|
|
162
|
+
}
|
|
163
|
+
runningIndex++;
|
|
164
|
+
return {
|
|
165
|
+
name: name,
|
|
166
|
+
sectionId: sectionId,
|
|
167
|
+
nodeId: nodeId,
|
|
168
|
+
path: path,
|
|
169
|
+
playOrder: playOrder,
|
|
170
|
+
children: children,
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
var parseOuterHTML = function (collection) {
|
|
174
|
+
return collection.map(function (point) {
|
|
175
|
+
return parseHTMLNavPoints(point);
|
|
176
|
+
});
|
|
177
|
+
};
|
|
178
|
+
return parseOuterHTML(tocRoot);
|
|
179
|
+
};
|
|
180
|
+
Epub.prototype._genStructure = function (tocObj, resolveNodeId) {
|
|
181
|
+
var _this = this;
|
|
182
|
+
if (resolveNodeId === void 0) { resolveNodeId = false; }
|
|
183
|
+
if (tocObj.html) {
|
|
184
|
+
return this._genStructureForHTML(tocObj);
|
|
185
|
+
}
|
|
186
|
+
var rootNavPoints = lodash_1.default.get(tocObj, ['ncx', 'navMap', '0', 'navPoint'], []);
|
|
187
|
+
var parseNavPoint = function (navPoint) {
|
|
188
|
+
// link to section
|
|
189
|
+
var path = lodash_1.default.get(navPoint, ['content', '0', '$', 'src'], '');
|
|
190
|
+
var name = lodash_1.default.get(navPoint, ['navLabel', '0', 'text', '0']);
|
|
191
|
+
var playOrder = lodash_1.default.get(navPoint, ['$', 'playOrder']);
|
|
192
|
+
var hash = (0, parseLink_1.default)(path).hash;
|
|
193
|
+
var children = navPoint.navPoint;
|
|
194
|
+
if (children) {
|
|
195
|
+
// tslint:disable-next-line:no-use-before-declare
|
|
196
|
+
children = parseNavPoints(children);
|
|
197
|
+
}
|
|
198
|
+
var sectionId = _this._resolveIdFromLink(path);
|
|
199
|
+
return {
|
|
200
|
+
name: name,
|
|
201
|
+
sectionId: sectionId,
|
|
202
|
+
nodeId: hash || lodash_1.default.get(navPoint, ['$', 'id']),
|
|
203
|
+
path: path,
|
|
204
|
+
playOrder: playOrder,
|
|
205
|
+
children: children,
|
|
206
|
+
};
|
|
207
|
+
};
|
|
208
|
+
var parseNavPoints = function (navPoints) {
|
|
209
|
+
return navPoints.map(function (point) {
|
|
210
|
+
return parseNavPoint(point);
|
|
211
|
+
});
|
|
212
|
+
};
|
|
213
|
+
return parseNavPoints(rootNavPoints);
|
|
214
|
+
};
|
|
215
|
+
Epub.prototype._resolveSectionsFromSpine = function () {
|
|
216
|
+
var _this = this;
|
|
217
|
+
// no chain
|
|
218
|
+
return lodash_1.default.map(lodash_1.default.union(this._spine), function (id) {
|
|
219
|
+
var path = lodash_1.default.find(_this._manifest, { id: id }).href;
|
|
220
|
+
var html = _this.resolve(path).asText();
|
|
221
|
+
return (0, parseSection_1.default)({
|
|
222
|
+
id: id,
|
|
223
|
+
htmlString: html,
|
|
224
|
+
resourceResolver: _this.resolve.bind(_this),
|
|
225
|
+
idResolver: _this._resolveIdFromLink.bind(_this),
|
|
226
|
+
expand: _this._options.expand,
|
|
227
|
+
}).register(_this._options.convertToMarkdown);
|
|
228
|
+
});
|
|
229
|
+
};
|
|
230
|
+
Epub.prototype.parse = function () {
|
|
231
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
232
|
+
var _a, _b, tocID, tocPath, toc;
|
|
233
|
+
return __generator(this, function (_c) {
|
|
234
|
+
switch (_c.label) {
|
|
235
|
+
case 0:
|
|
236
|
+
_a = this;
|
|
237
|
+
return [4 /*yield*/, this._getOpfPath()];
|
|
238
|
+
case 1:
|
|
239
|
+
_a._opfPath = _c.sent();
|
|
240
|
+
_b = this;
|
|
241
|
+
return [4 /*yield*/, this._resolveXMLAsJsObject('/' + this._opfPath)];
|
|
242
|
+
case 2:
|
|
243
|
+
_b._content = _c.sent();
|
|
244
|
+
this._manifest = this.getManifest(this._content);
|
|
245
|
+
this._metadata = lodash_1.default.get(this._content, ['package', 'metadata'], []);
|
|
246
|
+
this._root = (0, utils_1.determineRoot)(this._opfPath);
|
|
247
|
+
tocID = lodash_1.default.get(this._content, ['package', 'spine', 0, '$', 'toc'], 'toc.xhtml');
|
|
248
|
+
tocPath = (lodash_1.default.find(this._manifest, { id: tocID }) || {}).href;
|
|
249
|
+
if (!tocPath) return [3 /*break*/, 4];
|
|
250
|
+
return [4 /*yield*/, this._resolveXMLAsJsObject(tocPath)];
|
|
251
|
+
case 3:
|
|
252
|
+
toc = _c.sent();
|
|
253
|
+
this._toc = toc;
|
|
254
|
+
this.structure = this._genStructure(toc);
|
|
255
|
+
_c.label = 4;
|
|
256
|
+
case 4:
|
|
257
|
+
this._spine = this._getSpine();
|
|
258
|
+
this.info = parseMetadata(this._metadata);
|
|
259
|
+
this.sections = this._resolveSectionsFromSpine();
|
|
260
|
+
return [2 /*return*/, this];
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
};
|
|
265
|
+
return Epub;
|
|
266
|
+
}());
|
|
267
|
+
exports.Epub = Epub;
|
|
268
|
+
function parserWrapper(target, opts) {
|
|
269
|
+
// seems 260 is the length limit of old windows standard
|
|
270
|
+
// so path length is not used to determine whether it's path or binary string
|
|
271
|
+
// the downside here is that if the filepath is incorrect, it will be treated as binary string by default
|
|
272
|
+
// but it can use options to define the target type
|
|
273
|
+
var options = __assign(__assign({}, exports.defaultOptions), opts);
|
|
274
|
+
var _target = target;
|
|
275
|
+
if (options.type === 'path' || (typeof target === 'string' && fs_1.default.existsSync(target))) {
|
|
276
|
+
_target = fs_1.default.readFileSync(target, 'binary');
|
|
277
|
+
}
|
|
278
|
+
return new Epub(_target, options).parse();
|
|
279
|
+
}
|
|
280
|
+
exports.default = parserWrapper;
|
|
281
|
+
//# sourceMappingURL=parseEpub.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseEpub.js","sourceRoot":"","sources":["../src/parseEpub.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
35
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
36
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
37
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
38
|
+
function step(op) {
|
|
39
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
40
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
41
|
+
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;
|
|
42
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
43
|
+
switch (op[0]) {
|
|
44
|
+
case 0: case 1: t = op; break;
|
|
45
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
46
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
47
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
48
|
+
default:
|
|
49
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
50
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
51
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
52
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
53
|
+
if (t[2]) _.ops.pop();
|
|
54
|
+
_.trys.pop(); continue;
|
|
55
|
+
}
|
|
56
|
+
op = body.call(thisArg, _);
|
|
57
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
58
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
62
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
63
|
+
};
|
|
64
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
|
+
var parseEpub_1 = __importDefault(require("./parseEpub"));
|
|
66
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
67
|
+
var path = __importStar(require("path"));
|
|
68
|
+
var baseDir = process.cwd();
|
|
69
|
+
var filesToBeTested = ['file-1', 'file-2', 'file-3', 'file-4', 'file-1-no-toc', 'wells'];
|
|
70
|
+
var testFile = function (filename) {
|
|
71
|
+
describe("parser \u6D4B\u8BD5 ".concat(filename, ".epub"), function () {
|
|
72
|
+
var fileContent = (0, parseEpub_1.default)(path.join(baseDir, "fixtures/".concat(filename, ".epub")), {
|
|
73
|
+
type: 'path',
|
|
74
|
+
expand: true,
|
|
75
|
+
});
|
|
76
|
+
test('Result should have keys', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
77
|
+
var keys, _a, _b;
|
|
78
|
+
return __generator(this, function (_c) {
|
|
79
|
+
switch (_c.label) {
|
|
80
|
+
case 0:
|
|
81
|
+
_b = (_a = lodash_1.default).keys;
|
|
82
|
+
return [4 /*yield*/, fileContent];
|
|
83
|
+
case 1:
|
|
84
|
+
keys = _b.apply(_a, [_c.sent()]);
|
|
85
|
+
expect(keys.length).not.toBe(0);
|
|
86
|
+
return [2 /*return*/];
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}); });
|
|
90
|
+
test('toc', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
91
|
+
var result;
|
|
92
|
+
return __generator(this, function (_a) {
|
|
93
|
+
switch (_a.label) {
|
|
94
|
+
case 0: return [4 /*yield*/, fileContent];
|
|
95
|
+
case 1:
|
|
96
|
+
result = _a.sent();
|
|
97
|
+
if (filename === 'file-1-no-toc') {
|
|
98
|
+
expect(result.structure).toBe(undefined);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
expect(fileContent && typeof fileContent).toBe('object');
|
|
102
|
+
}
|
|
103
|
+
return [2 /*return*/];
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}); });
|
|
107
|
+
// it('key 分别为: flesh, nav, meta', done => {
|
|
108
|
+
// const expectedKeys = ['flesh', 'nav', 'meta']
|
|
109
|
+
// fileContent.then(result => {
|
|
110
|
+
// const keys = _.keys(result)
|
|
111
|
+
// keys.forEach(key => {
|
|
112
|
+
// expect(expectedKeys.indexOf(key)).to.not.be(-1)
|
|
113
|
+
// })
|
|
114
|
+
// done()
|
|
115
|
+
// })
|
|
116
|
+
// })
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
filesToBeTested.forEach(function (filename) {
|
|
120
|
+
testFile(filename);
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=parseEpub.spec.js.map
|