@jalik/hal
Version:
Hypertext Application Language toolbox
92 lines • 2.69 kB
TypeScript
export type HalLink = {
deprecation?: string;
href: string;
hreflang?: string;
name?: string;
profile?: string;
templated?: boolean;
title?: string;
type?: string;
};
type Links = Record<string, HalLink | HalLink[]>;
export type HalLinks<L extends Links = Record<string, never>> = L & {
curies?: HalLink[];
self?: HalLink;
};
export type HalDocument<E, L extends Links = Links> = {
_embedded?: E;
_links?: HalLinks<L>;
};
export type HalResource<R, E = any, L extends Links = Links> = R & HalDocument<E, L>;
export type HalPage = {
number: number;
size: number;
totalElements: number;
totalPages: number;
};
export type HalPageLinks = HalLinks<{
first?: HalLink;
last?: HalLink;
next?: HalLink;
prev?: HalLink;
}>;
export type HalPagedResource<E> = HalResource<{
page?: HalPage;
}, E, HalPageLinks>;
/**
* Creates a paged HAL resource.
* @param embedded
* @param page
* @param links
*/
export declare function createHalPagedResource<E>(embedded: E, page: HalPage, links?: HalPageLinks): HalPagedResource<E>;
/**
* Creates an HAL resource.
* @param resource
* @param embedded
* @param links
*/
export declare function createHalResource<R, E, L extends Links = Links>(resource: R, embedded?: E, links?: L): HalResource<R, E, L>;
/**
* Returns embedded from an HAL document.
* @param doc
*/
export declare function getHalEmbedded<E, L extends Links>(doc: HalDocument<E, L>): E | undefined;
/**
* Returns links from an HAL document.
* @param doc
*/
export declare function getHalLinks<E, L extends Links>(doc: HalDocument<E, L>): L | undefined;
/**
* Returns a specific link from an HAL document.
* @param doc
* @param link
*/
export declare function getHalLink<E, L extends Links>(doc: HalDocument<E, L>, link: keyof L): HalLinks<L>[keyof L] | undefined;
/**
* Returns page from an HAL document.
* @param doc
*/
export declare function getHalPage<E>(doc: HalPagedResource<E>): HalPage | undefined;
/**
* Returns page number from an HAL document.
* @param doc
*/
export declare function getHalPageNumber<E>(doc: HalPagedResource<E>): number | undefined;
/**
* Returns page size from an HAL document.
* @param doc
*/
export declare function getHalPageSize<E>(doc: HalPagedResource<E>): number | undefined;
/**
* Returns total elements from an HAL document.
* @param doc
*/
export declare function getHalPageTotalElements<E>(doc: HalPagedResource<E>): number | undefined;
/**
* Returns total pages from an HAL document.
* @param doc
*/
export declare function getHalPageTotalPages<E>(doc: HalPagedResource<E>): number | undefined;
export {};
//# sourceMappingURL=index.d.ts.map