opds-web-client
Version:
137 lines (136 loc) • 3 kB
TypeScript
export interface BookData {
id: string;
title: string;
series?: {
name: string;
position?: number;
};
authors?: string[];
contributors?: string[];
summary?: string;
imageUrl?: string;
openAccessLinks?: {
url: string;
type: string;
}[];
borrowUrl?: string;
fulfillmentLinks?: {
url: string;
type: string;
indirectType: string;
}[];
availability?: {
status: string;
since?: string;
until?: string;
};
holds?: {
total: number;
position?: number;
};
copies?: {
total: number;
available: number;
};
url?: string;
publisher?: string;
published?: string;
categories?: string[];
raw?: any;
}
export interface LaneData {
title: string;
url: string;
books: BookData[];
}
export interface FacetData {
label: string;
href: string;
active: boolean;
}
export interface FacetGroupData {
label: string;
facets: FacetData[];
}
export interface CollectionData {
id: string;
url: string;
title: string;
lanes: LaneData[];
books: BookData[];
navigationLinks: LinkData[];
facetGroups?: FacetGroupData[];
search?: SearchData;
nextPageUrl?: string;
catalogRootLink?: LinkData;
parentLink?: LinkData;
shelfUrl?: string;
links?: LinkData[];
raw?: any;
}
export interface SearchData {
url?: string;
searchData?: {
description: string;
shortName: string;
template: (searchTerms: string) => string;
};
}
export interface LinkData {
text: string;
url: string;
id?: string;
type?: string;
}
export interface StateProps {
collectionData?: CollectionData;
collectionUrl?: string;
isFetching?: boolean;
error?: FetchErrorData;
bookData?: BookData;
bookUrl?: string;
isFetchingPage?: boolean;
history?: LinkData[];
basicAuth?: BasicAuthData;
basicAuthCredentials?: string;
isSignedIn?: boolean;
loansUrl?: string;
loans?: BookData[];
}
export interface PathFor {
(collectionUrl: string, bookUrl: string): string;
}
export interface FetchErrorData {
status: number;
response: string;
url: string;
}
export interface Location {
pathname: string;
state?: any;
}
export interface Router {
push: (location: string | Location) => any;
createHref: (location: string | Location) => string;
isActive: (location: string | Location, onlyActiveOnIndex?: boolean) => boolean;
}
export interface NavigateContext {
router?: Router;
pathFor: PathFor;
}
export interface BasicAuthCallback {
(credentials: string): any;
}
export interface BasicAuthData {
showForm: boolean;
callback: BasicAuthCallback;
credentials: string;
title: string;
loginLabel: string;
passwordLabel: string;
error: string;
}
export interface BasicAuthLabels {
login: string;
password: string;
}