aniki
Version:
Aniki is an easy-to-use NPM module that gets information about your favorite anime and manga.
710 lines (709 loc) • 22.7 kB
TypeScript
/**
* @interface
* @description This interface is the JSON response of the MangaKitsu#find and MangaKitsu#list Promise.
*/
interface IKitsuManga {
/**
* @property Get the content of the request (starting only with data)
* @example
* ```js
* manga.find({ query: "oshi no ko", offset: 0 }).then(r => console.log(r.data[0])) // Calling the first result with [0].
* ```
*/
data: [
{
/**
* @property The identifiant (ID) of the manga.
*/
id: string;
/**
* @property The type of the requested content (in logic: manga)
*/
type: string;
links: {
self: string;
};
/**
* @property The main attributes (manga informations)
* @example
* ```js
* manga.find({ query: "oshi no ko", offset: 0}).then(r=> console.log(r.data[0].attributes)) // { ... }
* ```
*/
attributes: {
/**
* @property The creation date of the data from Kitsu.io (ISO 8601)
*/
createdAt: Date;
/**
* @property The update date of the data from Kitsu.io. (ISO 8601)
*/
updatedAt: Date;
/**
* @property The title with - (oshi-no-ko)
*/
slug: string;
/**
* @property The synopsis (description) of the manga
*/
synopsis: string;
/**
* @property The description of the manga.
*/
description: string;
/**
* @property The top offset of the cover image.
* Seems deprecated in docs but some mangas have it so...
*/
coverImageTopOffset: number;
/**
* @property Titles in different languages.
*/
titles: {
/**
* @property Title in english version.
*/
en: string;
/**
* @property Title in japanese but in readable version. (like "Oshi no ko")
*/
en_jp: string;
/**
* @property Title in japanese. (like "推しの子")
*/
ja_jp: string;
/**
* @property Title in Thai. (like "เกิดใหม่เป็นลูกโอชิ")
*/
th_th?: string;
/**
* @property Title in Korean.
*/
ko_kr?: string;
/**
* @property Title in Russian.
*/
ru_ru?: string;
};
/**
* @property Canonical title. (mostly used for SEO)
*/
canonicalTitle: string;
/**
* @property Abbreviated titles. (like Roshidere)
*/
abbreviatedTitles: string[];
averageRating: string | null;
ratingFrequencies: {
"2": string;
"3": string;
"4": string;
"5": string;
"6": string;
"7": string;
"8": string;
"9": string;
"10": string;
"11": string;
"12": string;
"13": string;
"14": string;
"15": string;
"16": string;
"17": string;
"18": string;
"19": string;
"20": string;
};
userCount: number;
favoritesCount: number;
/**
* @property The official manga start date.
*/
startDate: string;
/**
* @property The official manga end date.
*/
endDate: string;
/**
* @property The approximate date of the next release.
*/
nextRelease: string | null;
/**
* @property The popularity rank of the manga. (used for Kitsu.app)
*/
popularityRank: number;
ratingRank: number;
/**
* @property Age rating of the manga. (**G**: *General Audiences*, **PG**: *Parental Guidance Suggested*, **R**: *Restricted*, **R18**: *Restricted for 18 years old or older*.)
*/
ageRating: "G" | "PG" | "R";
ageRatingGuide: string | null;
subtype: "manga" | "manhwa" | "manhua" | "novel" | "oneshot" | "doujin" | "oel";
/**
* @property the actual status of the manga.
*/
status: "current" | "finished" | "tba" | "unreleased" | "upcoming";
/**
* @property If the manga is **t**o **b**e **a**nnounced.
*/
tba: string | null;
/**
* @property the poster image (aka main image) of the manga. Available in different sizes.
*/
posterImage: {
tiny: string;
large: string;
small: string;
medium: string;
original: string;
meta: {
dimensions: {
tiny: {
width: number;
height: number;
};
large: {
width: number;
height: number;
};
small: {
width: number;
height: number;
};
medium: {
width: number;
height: number;
};
};
};
};
/**
* @property The cover image of the manga, mostly used as background image. Available in different sizes.
*/
coverImage: {
tiny: string;
large: string;
small: string;
original: string;
meta: {
dimensions: {
tiny: {
width: number;
height: number;
};
large: {
width: number;
height: number;
};
small: {
width: number;
height: number;
};
};
};
};
/**
* @property Number of chapters planned.
*/
chapterCount: number;
/**
* @property Number of volumes planned.
*/
volumeCount: number;
serialization: string;
};
relationships: {
categories: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
castings: {
links: {
self: string;
related: string;
};
};
mappings: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
mediaRelationships: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
characters: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
staff: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
productions: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
quotes: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
chapters: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
};
}
];
}
/**
* @interface
* @description This interface is the JSON response of the MangaKitsu#findById Promise (single object).
*/
interface IKitsuMangaSingle {
/**
* @property Get the content of the request (starting only with data)
* @example
* ```js
* manga.find({ query: "oshi no ko", offset: 0 }).then(r => console.log(r.data[0])) // Calling the first result with [0].
* ```
*/
data: {
/**
* @property The identifiant (ID) of the manga.
*/
id: string;
/**
* @property The type of the requested content (in logic: manga)
*/
type: string;
links: {
self: string;
};
/**
* @property The main attributes (manga informations)
* @example
* ```js
* manga.find({ query: "oshi no ko", offset: 0}).then(r=> console.log(r.data[0].attributes)) // { ... }
* ```
*/
attributes: {
/**
* @property The creation date of the data from Kitsu.io (ISO 8601)
*/
createdAt: Date;
/**
* @property The update date of the data from Kitsu.io. (ISO 8601)
*/
updatedAt: Date;
/**
* @property The title with - (oshi-no-ko)
*/
slug: string;
/**
* @property The synopsis (description) of the manga
*/
synopsis: string;
/**
* @property The description of the manga.
*/
description: string;
/**
* @property The top offset of the cover image.
* Seems deprecated in docs but some mangas have it so...
*/
coverImageTopOffset: number;
/**
* @property Titles in different languages.
*/
titles: {
/**
* @property Title in english version.
*/
en: string;
/**
* @property Title in japanese but in readable version. (like "Oshi no ko")
*/
en_jp: string;
/**
* @property Title in japanese. (like "推しの子")
*/
ja_jp: string;
/**
* @property Title in Thai. (like "เกิดใหม่เป็นลูกโอชิ")
*/
th_th?: string;
/**
* @property Title in Korean.
*/
ko_kr?: string;
/**
* @property Title in Russian.
*/
ru_ru?: string;
};
/**
* @property Canonical title. (mostly used for SEO)
*/
canonicalTitle: string;
/**
* @property Abbreviated titles. (like Roshidere)
*/
abbreviatedTitles: string[];
averageRating: string | null;
ratingFrequencies: {
"2": string;
"3": string;
"4": string;
"5": string;
"6": string;
"7": string;
"8": string;
"9": string;
"10": string;
"11": string;
"12": string;
"13": string;
"14": string;
"15": string;
"16": string;
"17": string;
"18": string;
"19": string;
"20": string;
};
userCount: number;
favoritesCount: number;
/**
* @property The official manga start date.
*/
startDate: string;
/**
* @property The official manga end date.
*/
endDate: string;
/**
* @property The approximate date of the next release.
*/
nextRelease: string | null;
/**
* @property The popularity rank of the manga. (used for Kitsu.app)
*/
popularityRank: number;
ratingRank: number;
/**
* @property Age rating of the manga. (**G**: *General Audiences*, **PG**: *Parental Guidance Suggested*, **R**: *Restricted*, **R18**: *Restricted for 18 years old or older*.)
*/
ageRating: "G" | "PG" | "R";
ageRatingGuide: string | null;
subtype: "manga" | "manhwa" | "manhua" | "novel" | "oneshot" | "doujin" | "oel";
status: "current" | "finished" | "tba" | "unreleased" | "upcoming";
tba: string | null;
posterImage: {
tiny: string;
large: string;
small: string;
medium: string;
original: string;
meta: {
dimensions: {
tiny: {
width: number;
height: number;
};
large: {
width: number;
height: number;
};
small: {
width: number;
height: number;
};
medium: {
width: number;
height: number;
};
};
};
};
coverImage: {
tiny: string;
large: string;
small: string;
original: string;
meta: {
dimensions: {
tiny: {
width: number;
height: number;
};
large: {
width: number;
height: number;
};
small: {
width: number;
height: number;
};
};
};
};
chapterCount: number;
volumeCount: number;
serialization: string;
};
relationships: {
categories: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
castings: {
links: {
self: string;
related: string;
};
};
mappings: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
mediaRelationships: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
characters: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
staff: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
productions: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
quotes: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
chapters: {
data: Array<{
id: string;
type: string;
}>;
links: {
self: string;
related: string;
};
};
};
};
}
/**
* @interface
* @description The JSON response of the request from MangaKitsu#chapter
* @since 1.3.0
*/
interface IKitsuChapter {
data: {
/**
* @property The identifiant (ID) of the manga.
*/
id: string;
/**
* @property The type of the requested content (in logic: manga)
*/
type: string;
links: {
self: string;
};
attributes: {
createdAt: string;
updatedAt: string;
synopsis: string;
description: string;
titles: {
en_jp: string;
en_us: string;
ja_jp: string;
};
canonicalTitle: string;
seasonNumber: number;
number: number;
relativeNumber: number;
airdate: string;
length: number;
thumbnail: {
original: string;
meta: {
dimensions: object;
};
};
};
relationships: {
media: {
links: {
self: string;
related: string;
};
};
videos: {
links: {
self: string;
related: string;
};
};
};
};
}
/**
* @interface
* @description The JSON response of the request from MangaKitsu#chapter
* @since 1.3.0
*/
interface IKitsuChapters {
data: [
{
/**
* @property The identifiant (ID) of the manga.
*/
id: string;
/**
* @property The type of the requested content (in logic: manga)
*/
type: string;
links: {
self: string;
};
attributes: {
createdAt: string;
updatedAt: string;
synopsis: string;
description: string;
titles: {
en_jp: string;
en_us: string;
ja_jp: string;
};
canonicalTitle: string;
seasonNumber: number;
number: number;
relativeNumber: number;
airdate: string;
length: number;
thumbnail: {
original: string;
meta: {
dimensions: object;
};
};
};
relationships: {
media: {
links: {
self: string;
related: string;
};
};
videos: {
links: {
self: string;
related: string;
};
};
};
}
];
}
export { IKitsuChapter, IKitsuChapters, IKitsuManga, IKitsuMangaSingle };