UNPKG

@jorsek/ezd-client

Version:
185 lines (147 loc) 3.17 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 IPageContent { @IsString() public content: string; @IsString() public href: string; @ValidateNested() @Type(() => INavLink) @IsArray() public breadcrumbs: INavLink[]; @ValidateNested() @Type(() => INavLink) @IsArray() public versions: INavLink[]; @ValidateNested() @Type(() => INavLink) public current_version: INavLink; @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; } 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; }