epub
Version:
Parse EPUB electronic book files with Node.JS
77 lines (76 loc) • 2.08 kB
TypeScript
import JSZip from "jszip";
export interface ManifestItem {
id: string;
href: string;
"media-type": string;
[key: string]: unknown;
}
export interface TocElement {
level: number;
order: number;
title: string;
id: string;
href: string;
"media-type"?: string;
[key: string]: unknown;
}
export interface Metadata {
creator: string;
creatorFileAs: string;
title: string;
language: string;
subject: string;
subjects?: string[];
date: string;
description: string;
publisher?: string;
source?: string;
UUID?: string;
[key: string]: unknown;
}
export declare class EPub {
input: string | Buffer | ArrayBuffer;
imageroot: string;
linkroot: string;
metadata: Metadata;
manifest: Record<string, ManifestItem>;
guide: Record<string, string>[];
spine: {
toc: ManifestItem | false;
contents: ManifestItem[];
};
flow: ManifestItem[];
toc: TocElement[];
version: string;
zip: JSZip;
containerFile: string | false;
mimeFile: string | false;
rootFile: string | false;
constructor(input: string | Buffer | ArrayBuffer, imageroot?: string, linkroot?: string);
parse(): Promise<void>;
private _readFile;
private _open;
private _checkMimeType;
private _getRootFiles;
private _handleRootFile;
private _parseRootFile;
private _parseMetadata;
private _parseManifest;
private _parseGuide;
private _parseSpine;
private _parseTOC;
walkNavMap(branch: Record<string, unknown> | Record<string, unknown>[], path: string[], idList: Record<string, string>, level?: number): TocElement[];
getChapter(id: string): Promise<string>;
getChapterRaw(id: string): Promise<string>;
getImage(id: string): Promise<{
data: Buffer;
mimeType: string;
}>;
getFile(id: string): Promise<{
data: Buffer;
mimeType: string;
}>;
readFile(filename: string, encoding?: BufferEncoding): Promise<Buffer | string>;
hasDRM(): boolean;
}
export default EPub;