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.
Files changed (51) hide show
  1. package/.github/workflows/publish-npm.yml +22 -0
  2. package/.github/workflows/test.yml +26 -0
  3. package/.prettierrc +8 -0
  4. package/CHANGELOG.md +22 -0
  5. package/README.md +75 -0
  6. package/jest.config.js.js +5 -0
  7. package/lib/bin/cli.d.ts +2 -0
  8. package/lib/bin/cli.js +58 -0
  9. package/lib/bin/cli.js.map +1 -0
  10. package/lib/bin/convert.d.ts +23 -0
  11. package/lib/bin/convert.js +157 -0
  12. package/lib/bin/convert.js.map +1 -0
  13. package/lib/bin/custom.d.ts +1 -0
  14. package/lib/bin/custom.js +13 -0
  15. package/lib/bin/custom.js.map +1 -0
  16. package/lib/converter.d.ts +1 -0
  17. package/lib/converter.js +9 -0
  18. package/lib/converter.js.map +1 -0
  19. package/lib/index.d.ts +5 -0
  20. package/lib/index.js +15 -0
  21. package/lib/index.js.map +1 -0
  22. package/lib/mobi.d.ts +15 -0
  23. package/lib/mobi.js +170 -0
  24. package/lib/mobi.js.map +1 -0
  25. package/lib/parseEpub.d.ts +58 -0
  26. package/lib/parseEpub.js +281 -0
  27. package/lib/parseEpub.js.map +1 -0
  28. package/lib/parseEpub.spec.d.ts +1 -0
  29. package/lib/parseEpub.spec.js +122 -0
  30. package/lib/parseEpub.spec.js.map +1 -0
  31. package/lib/parseHTML.d.ts +7 -0
  32. package/lib/parseHTML.js +102 -0
  33. package/lib/parseHTML.js.map +1 -0
  34. package/lib/parseHTML.spec.d.ts +1 -0
  35. package/lib/parseHTML.spec.js +13 -0
  36. package/lib/parseHTML.spec.js.map +1 -0
  37. package/lib/parseLink.d.ts +7 -0
  38. package/lib/parseLink.js +20 -0
  39. package/lib/parseLink.js.map +1 -0
  40. package/lib/parseSection.d.ts +22 -0
  41. package/lib/parseSection.js +94 -0
  42. package/lib/parseSection.js.map +1 -0
  43. package/lib/types.d.ts +21 -0
  44. package/lib/types.js +3 -0
  45. package/lib/types.js.map +1 -0
  46. package/lib/utils.d.ts +19 -0
  47. package/lib/utils.js +108 -0
  48. package/lib/utils.js.map +1 -0
  49. package/package.json +71 -0
  50. package/tsconfig.json +25 -0
  51. 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
@@ -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>;
@@ -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