UNPKG

@bookbox/core

Version:

Bookbox — e-book format

50 lines (49 loc) 2.1 kB
import { BookMeta } from './meta'; import { BookBuilder, BookSchema, BookStore, TokenGetter, BookElement } from './model'; import { BookElements, BookElementsWithoutLevel, ElementNamespace, LevelBookElements } from './elements'; import { ExternalBuilder, ExternalProps } from './external'; import { ResourceOptions } from './resources'; export declare type BookData<T> = { tokens: T[]; meta: BookMeta<T>; store: BookStore<T>; }; export declare type CreateBookParams<Token> = { schema: BookSchema; builder: BookBuilderParams<Token>; externalBuilder?: ExternalBuilder<Token>; resourceOptions?: ResourceOptions; }; export declare function createBook<Token>({ schema: originalSchema, builder: builderParams, externalBuilder, resourceOptions, }: CreateBookParams<Token>): BookData<Token>; declare type SynteticElements = { text: BookElement<'text', { raw: string; }>; page: BookElement<'page', { count: number; }>; error: BookElement<'error', { props: Record<string, any>; name: string; error: string; }>; empty: BookElement<'empty'>; }; declare type TokenGetterList<T extends Record<keyof T, BookElement<string>>, Token> = { [Name in keyof T]: TokenGetter<T[Name]['props'], Token>; }; export declare type BookBuilderParams<Token> = { elements: TokenGetterList<Omit<BookElements, `${ElementNamespace}.${string}`>, Token> & { format: TokenGetterList<BookElementsWithoutLevel<LevelBookElements<'format'>, 'format'>, Token>; web: TokenGetterList<BookElementsWithoutLevel<LevelBookElements<'web'>, 'web'>, Token>; }; synteticElements: TokenGetterList<SynteticElements, Token>; }; export declare function createBookBuilder<Token>({ elements, synteticElements, }: BookBuilderParams<Token>): BookBuilder<Token, ExternalProps>; declare type BookExternalBuilderParams<Token> = { element: ExternalBuilder<Token>; }; export declare function createBookExternalBuilder<Token>({ element }: BookExternalBuilderParams<Token>): { externalBuilder: ExternalBuilder<Token>; }; export {};