shamela
Version:
Library to interact with the Maktabah Shamela v4 APIs
103 lines (101 loc) • 2.45 kB
TypeScript
export type GetMasterMetadataResponsePayload = {
url: string;
version: number;
};
export interface OutputOptions {
path: string;
}
export type DownloadMasterOptions = {
masterMetadata?: GetMasterMetadataResponsePayload;
outputFile: OutputOptions;
};
export type GetBookMetadataOptions = {
majorVersion: number;
minorVersion: number;
};
export type GetBookMetadataResponsePayload = {
majorRelease: number;
majorReleaseUrl: string;
minorRelease?: number;
minorReleaseUrl?: string;
};
export type DownloadBookOptions = {
bookMetadata?: GetBookMetadataResponsePayload;
outputFile: OutputOptions;
};
export type Author = {
biography?: string;
death?: number;
id: number;
name: string;
};
type PDFFile = {
file: string;
id?: string;
};
export type PDFLinks = {
alias?: number;
cover?: number;
cover_alias?: number;
files?: PDFFile[];
root?: string;
size?: number;
};
export type Metadata = {
coauthor?: number[];
date: string;
group?: number;
hide_diacritic?: boolean;
min_ver?: number;
prefix?: string;
shorts: Record<string, string>;
sub_books: number[];
suffix?: string;
};
export type Book = {
author: number | number[];
bibliography: string;
category: number;
date?: number;
hint?: string;
id: number;
major: number;
metadata: Metadata;
minor?: number;
name: string;
pdfLinks?: PDFLinks;
printed: number;
type: number;
};
export type Category = {
id: number;
name: string;
};
export type MasterData = {
authors: Author[];
books: Book[];
categories: Category[];
};
export type Page = {
content: string;
id: number;
number?: number;
page?: number;
part?: number;
};
export type Title = {
content: string;
id: number;
page: number;
parent?: number;
};
export type BookData = {
pages: Page[];
titles?: Title[];
};
export const getBookMetadata: (id: number, options?: GetBookMetadataOptions) => Promise<GetBookMetadataResponsePayload>;
export const downloadBook: (id: number, options: DownloadBookOptions) => Promise<string>;
export const getMasterMetadata: (version?: number) => Promise<GetMasterMetadataResponsePayload>;
export const downloadMasterDatabase: (options: DownloadMasterOptions) => Promise<string>;
export const getBook: (id: number) => Promise<BookData>;
//# sourceMappingURL=index.d.ts.map