dopecodez/Wikipedia

View on GitHub
source/resultTypes.ts

Summary

Maintainability
A
3 hrs
Test Coverage
export interface wikiSearchResult {
  results: any[],
  suggestion: string
}

export interface pageResult {
  pageid: number,
  ns: number,
  title: string,
  contentmodel: string,
  pagelanguage: string,
  pagelanguagehtmlcode: string,
  pagelanguagedir: string,
  touched: string,
  lastrevid: number,
  length: number,
  fullurl: string,
  editurl: string,
  canonicalurl: string
}

export interface imageResult {
  pageid: number,
  ns: number,
  title: string,
  imagerepository: string,
  imageinfo: any,
  url: string
}

export interface languageResult {
  [key: string]: string
}

export interface geoSearchResult {
  pageid: number,
  ns: number,
  title: string,
  lat: number,
  lon: number,
  dist: number,
  primary: string,
  type: string
}

export interface coordinatesResult {
  lat: number
  lon: number,
  primary: string,
  globe: string
}

export interface langLinksResult {
  lang: string,
  title: string,
  url: string
}

export interface wikiSummary {
  ns?: number,
  index?: number,
  type: string,
  title: string,
  displaytitle: string,
  namespace: { id: number, text: string },
  wikibase_item: string,
  titles: { canonical: string, normalized: string, display: string },
  pageid: number,
  thumbnail: {
    source: string,
    width: number,
    height: number
  },
  originalimage: {
    source: string,
    width: number,
    height: number
  },
  lang: string,
  dir: string,
  revision: string,
  tid: string,
  timestamp: string,
  description: string,
  description_source: string,
  content_urls: {
    desktop: {
      page: string,
      revisions: string,
      edit: string,
      talk: string
    },
    mobile: {
      page: string,
      revisions: string,
      edit: string,
      talk: string
    }
  },
  extract: string
  extract_html: string
  normalizedtitle?: string,
  coordinates?: {
    lat: number,
    lon: number
  }
}

export interface MostRead extends wikiSummary {
  views: number;
  rank: number;
  view_history: [
    {
      date: string;
      views: number;
    }
  ]
}

export interface wikiMediaResult {
  revision: string,
  tid: string,
  items: Array<mediaResult>
}

export interface mediaResult {
  title: string,
  section_id: number,
  type: string,
  caption?: htmlText,
  showInGallery: boolean,
  srcset: Array<srcResult>
}

export interface srcResult {
  src: string,
  scale: string
}

export interface eventResult {
  births?: [
    {
      text: string,
      pages: Array<wikiSummary>
      year?: number
    }
  ],
  deaths?: [
    {
      text: string,
      pages: Array<wikiSummary>,
      year?: number
    }
  ],
  events?: [
    {
      text: string,
      pages: Array<wikiSummary>,
      year?: number
    }
  ],
  holidays?: [
    {
      text: string,
      pages: Array<wikiSummary>
    }
  ],
  selected?: [
    {
      text: string,
      pages: Array<wikiSummary>,
      year?: number
    }
  ]
}

export interface titleItem {
  title: string,
  page_id: number,
  rev: number,
  tid: number,
  namespace: number,
  user_id: number,
  user_text: string,
  timestamp: string,
  comment: string,
  tags: Array<string>,
  restrictions: Array<string>,
  page_language: string,
  redirect: boolean
}

export interface title {
  items: Array<titleItem>
}

export interface relatedResult {
  pages: Array<wikiSummary>
}

export interface mobileSections {
  lead: {
    ns: number,
    id: number,
    revision: string,
    lastmodified: string,
    lastmodifier: {
      user: string,
      gender: string
    },
    displaytitle: string,
    normalizedtitle: string,
    wikibase_item: string,
    description: string,
    description_source: string,
    protection: Record<string, unknown>,
    editable: boolean,
    languagecount: number,
    image: {
      file: string,
      urls: {
        320: string,
        640: string,
        800: string,
        1024: string
      }
    },
    issues: Array<htmlText>,
    geo?: {
      latitude: string,
      longitude: string
    }
    sections: Array<section>
  },
  remaining: {
    sections: Array<section>
  }
}

export interface section {
  id: number,
  text: string,
  toclevel: number,
  line: string,
  anchor: string
}

export interface htmlText {
  html: string,
  text: string
}

export interface Artist extends htmlText {
  name: string;
  user_page?: string;
}

export interface Description extends htmlText {
  lang: string;
}

export interface notFound {
  type: string,
  title: string,
  method: string,
  detail: string,
  uri: string
}

export interface featuredContentResult {
  tfa: wikiSummary;
  mostread: {
    date: string;
    articles: Array<wikiSummary>
  };
  image: {
    title: string;
    thumbnail: {
      source: string;
      width: number;
      height: number;
    };
    image: {
      source: string;
      width: number;
      height: number;
    };
    file_page: string;
    artist: Artist;
    credit: htmlText;
    license: {
      type: string;
      code: string;
    };
    description: Description;
    wb_entity_id: string;
    structured: {
      captions: {
        [key: string]: string;
      }
    };
  };
  news: [
    {
      links: Array<wikiSummary>;
      story: string;
    }
  ];
  onthisday: [
    {
      text: string;
      pages: Array<wikiSummary>;
      year: number;
    }
  ]
}