UNPKG

@jorsek/ezd-client

Version:
224 lines (176 loc) 4.05 kB
import { Type } from "class-transformer"; import { IsArray, IsNumber, IsOptional, IsString, ValidateNested, } from "class-validator"; export class ISection { @IsString() public title: string; @IsString() @IsOptional() public shortdesc: string; @IsString() @IsOptional() public thumbnail: string; @IsString() public href: string; @ValidateNested() @Type(() => ISection) @IsArray() @IsOptional() public children: ISection[]; } export class INavTree { @IsString() public title: string; @IsString() public href: string; @IsString() @IsOptional() public shortdesc: string; @IsString() @IsOptional() public thumbnail: string; @ValidateNested() @Type(() => INavTree) @IsArray() @IsOptional() public children: INavTree[]; } export class INavLink { @IsString() public href: string; @IsString() public title: string; } export class IMetaTaxonomy { public humanReadable: string; public values: Array<{value: string; humanReadable: string;}>; } export class IMetaDateTime { public humanReadable: string; public value: number; } export class IMetaLabel { } export class IMetaTextSingleLine { } export class IMetadata { public taxonomy: Record<string, IMetaTaxonomy>; public date: Record<string, IMetaDateTime>; public label: Record<string, IMetaLabel>; public text_single_Line: Record<string, IMetaTextSingleLine>; } export class IPageContent { @IsString() public content: string; @IsString() public href: string; @ValidateNested() @Type(() => INavLink) @IsArray() public breadcrumbs: INavLink[]; @ValidateNested() @Type(() => INavLink) @IsArray() public versions: INavLink[]; @IsString() public current_version: string; @ValidateNested() @Type(() => INavLink) @IsArray() public children: INavLink[]; @ValidateNested() @Type(() => INavLink) public parent: INavLink; @ValidateNested() @Type(() => INavLink) @IsArray() public relatedLinks: INavLink[]; @IsOptional() @IsString() public title: string; @IsOptional() @IsString() public shortdesc: string; @ValidateNested() @Type(() => INavLink) public previous: INavLink; @ValidateNested() @Type(() => INavLink) public next: INavLink; @ValidateNested() @Type(() => IMetadata) public standardMetadata: IMetadata; @ValidateNested() @Type(() => IMetadata) public customMetadata: IMetadata; @IsString() public page_type: string; } export class API_Config { @Type(() => API_SearchConfig) public search: API_SearchConfig; @ValidateNested() @Type(() => API_Template) @IsArray() public templates: Array<API_Template>; } export class API_Template { @IsString() title: string; @IsString() path: string; @IsString() image: string; } export class API_SearchConfig { @ValidateNested() @Type(() => IFilter) @IsArray() @IsOptional() public filters: Array<IFilter>; @IsNumber() public results_per_page: number; @IsArray() public folders: Array<string>; } export class ISearchHit { @IsString() public title: string; @Type(() => INavLink) @IsArray() public breadcrumbs: INavLink[]; @IsString() public href: string; @IsArray() public highlights: string[]; @IsString() public shortDescription: string; } export class ISearchResponse { @Type(() => ISearchHit) @IsArray() public results: ISearchHit[]; @IsNumber() public total_count: number } export class IFacetValue { @IsString() facet_name: string; @IsString() id: string; @ValidateNested() @Type(() => IFacetValue) @IsArray() children: IFacetValue[]; } export class IFilter { @IsString() label: string; @IsString() key: string; @IsString() parent_taxon: string; }