anilink-api-wrapper 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/.eslintignore +1 -0
  2. package/.github/workflows/code_quality.yml +32 -0
  3. package/.github/workflows/codeql.yml +33 -0
  4. package/.github/workflows/test.yml +30 -0
  5. package/LICENSE +21 -0
  6. package/README.md +1 -0
  7. package/__tests__/anilist.test.ts +268 -0
  8. package/babel.config.js +6 -0
  9. package/dist/AniLink.js +40 -0
  10. package/dist/apis/anilist/interfaces/ActivityHistory.js +2 -0
  11. package/dist/apis/anilist/interfaces/CoverImage.js +2 -0
  12. package/dist/apis/anilist/interfaces/Distribution.js +2 -0
  13. package/dist/apis/anilist/interfaces/ExternalLink.js +2 -0
  14. package/dist/apis/anilist/interfaces/Favoured.js +2 -0
  15. package/dist/apis/anilist/interfaces/FuzzyDate.js +2 -0
  16. package/dist/apis/anilist/interfaces/Image.js +2 -0
  17. package/dist/apis/anilist/interfaces/ListScores.js +2 -0
  18. package/dist/apis/anilist/interfaces/Media.js +2 -0
  19. package/dist/apis/anilist/interfaces/MediaListEntry.js +2 -0
  20. package/dist/apis/anilist/interfaces/MediaStatistics.js +2 -0
  21. package/dist/apis/anilist/interfaces/MediaStats.js +2 -0
  22. package/dist/apis/anilist/interfaces/Name.js +2 -0
  23. package/dist/apis/anilist/interfaces/NextAiringEpisode.js +2 -0
  24. package/dist/apis/anilist/interfaces/Ranking.js +2 -0
  25. package/dist/apis/anilist/interfaces/ScoreDistribution.js +2 -0
  26. package/dist/apis/anilist/interfaces/Staff.js +2 -0
  27. package/dist/apis/anilist/interfaces/Stat.js +2 -0
  28. package/dist/apis/anilist/interfaces/Statistics.js +2 -0
  29. package/dist/apis/anilist/interfaces/Stats.js +2 -0
  30. package/dist/apis/anilist/interfaces/StatusDistribution.js +2 -0
  31. package/dist/apis/anilist/interfaces/StreamingEpisode.js +2 -0
  32. package/dist/apis/anilist/interfaces/Studio.js +2 -0
  33. package/dist/apis/anilist/interfaces/Tag.js +2 -0
  34. package/dist/apis/anilist/interfaces/Title.js +2 -0
  35. package/dist/apis/anilist/interfaces/Trailer.js +2 -0
  36. package/dist/apis/anilist/interfaces/UserStats.js +2 -0
  37. package/dist/apis/anilist/interfaces/responses/AiringSchedule.js +2 -0
  38. package/dist/apis/anilist/interfaces/responses/Character.js +2 -0
  39. package/dist/apis/anilist/interfaces/responses/Media.js +2 -0
  40. package/dist/apis/anilist/interfaces/responses/MediaList.js +2 -0
  41. package/dist/apis/anilist/interfaces/responses/MediaListCollectionResponse.js +2 -0
  42. package/dist/apis/anilist/interfaces/responses/MediaTrend.js +2 -0
  43. package/dist/apis/anilist/interfaces/responses/Staff.js +2 -0
  44. package/dist/apis/anilist/interfaces/responses/User.js +2 -0
  45. package/dist/apis/anilist/mutation/UpdateUser.js +82 -0
  46. package/dist/apis/anilist/query/AiringSchedule.js +147 -0
  47. package/dist/apis/anilist/query/Character.js +69 -0
  48. package/dist/apis/anilist/query/Media.js +232 -0
  49. package/dist/apis/anilist/query/MediaList.js +170 -0
  50. package/dist/apis/anilist/query/MediaListCollection.js +650 -0
  51. package/dist/apis/anilist/query/MediaTrend.js +149 -0
  52. package/dist/apis/anilist/query/Staff.js +108 -0
  53. package/dist/apis/anilist/query/User.js +573 -0
  54. package/dist/base/APIWrapper.js +9 -0
  55. package/dist/base/RequestHandler.js +33 -0
  56. package/jest.config.js +11 -0
  57. package/package.json +31 -0
  58. package/src/AniLink.ts +80 -0
  59. package/src/apis/anilist/interfaces/ActivityHistory.ts +5 -0
  60. package/src/apis/anilist/interfaces/CoverImage.ts +6 -0
  61. package/src/apis/anilist/interfaces/Distribution.ts +4 -0
  62. package/src/apis/anilist/interfaces/ExternalLink.ts +5 -0
  63. package/src/apis/anilist/interfaces/Favoured.ts +15 -0
  64. package/src/apis/anilist/interfaces/FuzzyDate.ts +5 -0
  65. package/src/apis/anilist/interfaces/Image.ts +4 -0
  66. package/src/apis/anilist/interfaces/ListScores.ts +4 -0
  67. package/src/apis/anilist/interfaces/Media.ts +59 -0
  68. package/src/apis/anilist/interfaces/MediaListEntry.ts +4 -0
  69. package/src/apis/anilist/interfaces/MediaStatistics.ts +23 -0
  70. package/src/apis/anilist/interfaces/MediaStats.ts +7 -0
  71. package/src/apis/anilist/interfaces/Name.ts +8 -0
  72. package/src/apis/anilist/interfaces/NextAiringEpisode.ts +5 -0
  73. package/src/apis/anilist/interfaces/Ranking.ts +10 -0
  74. package/src/apis/anilist/interfaces/ScoreDistribution.ts +4 -0
  75. package/src/apis/anilist/interfaces/Staff.ts +6 -0
  76. package/src/apis/anilist/interfaces/Stat.ts +24 -0
  77. package/src/apis/anilist/interfaces/Statistics.ts +6 -0
  78. package/src/apis/anilist/interfaces/StatusDistribution.ts +4 -0
  79. package/src/apis/anilist/interfaces/StreamingEpisode.ts +6 -0
  80. package/src/apis/anilist/interfaces/Studio.ts +4 -0
  81. package/src/apis/anilist/interfaces/Tag.ts +10 -0
  82. package/src/apis/anilist/interfaces/Title.ts +6 -0
  83. package/src/apis/anilist/interfaces/Trailer.ts +5 -0
  84. package/src/apis/anilist/interfaces/UserStats.ts +25 -0
  85. package/src/apis/anilist/interfaces/responses/AiringSchedule.ts +10 -0
  86. package/src/apis/anilist/interfaces/responses/Character.ts +26 -0
  87. package/src/apis/anilist/interfaces/responses/Media.ts +118 -0
  88. package/src/apis/anilist/interfaces/responses/MediaList.ts +24 -0
  89. package/src/apis/anilist/interfaces/responses/MediaListCollectionResponse.ts +37 -0
  90. package/src/apis/anilist/interfaces/responses/MediaTrend.ts +13 -0
  91. package/src/apis/anilist/interfaces/responses/Staff.ts +53 -0
  92. package/src/apis/anilist/interfaces/responses/User.ts +72 -0
  93. package/src/apis/anilist/mutation/UpdateUser.ts +162 -0
  94. package/src/apis/anilist/query/AiringSchedule.ts +160 -0
  95. package/src/apis/anilist/query/Character.ts +75 -0
  96. package/src/apis/anilist/query/Media.ts +295 -0
  97. package/src/apis/anilist/query/MediaList.ts +192 -0
  98. package/src/apis/anilist/query/MediaListCollection.ts +673 -0
  99. package/src/apis/anilist/query/MediaTrend.ts +169 -0
  100. package/src/apis/anilist/query/Staff.ts +122 -0
  101. package/src/apis/anilist/query/User.ts +567 -0
  102. package/src/base/APIWrapper.ts +7 -0
  103. package/src/base/RequestHandler.ts +21 -0
  104. package/tsconfig.json +15 -0
package/src/AniLink.ts ADDED
@@ -0,0 +1,80 @@
1
+ import { UserQuery } from './apis/anilist/query/User'
2
+ import { MediaQuery } from './apis/anilist/query/Media'
3
+ import { MediaTrendQuery } from './apis/anilist/query/MediaTrend'
4
+ import { AiringScheduleQuery } from './apis/anilist/query/AiringSchedule'
5
+ import { CharacterQuery } from './apis/anilist/query/Character'
6
+ import { MediaListQuery } from './apis/anilist/query/MediaList'
7
+ import { StaffQuery } from './apis/anilist/query/Staff'
8
+ import { MediaListCollectionQuery } from './apis/anilist/query/MediaListCollection'
9
+ import {
10
+ ListActivityOptionInput,
11
+ MediaListOptionsInput,
12
+ NotificationOptionInput,
13
+ ScoreFormat,
14
+ UpdateUserMutation,
15
+ UserTitleLanguage
16
+ } from './apis/anilist/mutation/UpdateUser'
17
+
18
+ class AniLink {
19
+ public anilist: {
20
+ query: {
21
+ user: () => Promise<any>
22
+ media: () => Promise<any>
23
+ mediaTrend: () => Promise<any>
24
+ airingSchedule: () => Promise<any>
25
+ character: () => Promise<any>
26
+ staff: () => Promise<any>
27
+ mediaList: () => Promise<any>
28
+ mediaListCollection: () => Promise<any>
29
+ }
30
+ mutation: {
31
+ updateUser: (variables: {
32
+ about?: string
33
+ titleLanguage?: UserTitleLanguage
34
+ displayAdultContent?: boolean
35
+ airingNotifications?: boolean
36
+ scoreFormat?: ScoreFormat
37
+ rowOrder?: string
38
+ profileColor?: string
39
+ donatorBadge?: string
40
+ notificationOptions?: NotificationOptionInput[]
41
+ timezone?: string
42
+ activityMergeTime?: number
43
+ animeListOptions?: MediaListOptionsInput
44
+ mangaListOptions?: MediaListOptionsInput
45
+ staffNameLanguage?: UserTitleLanguage
46
+ restrictMessagesToFollowing?: boolean
47
+ disabledListActivity?: ListActivityOptionInput[]
48
+ }) => Promise<any>
49
+ }
50
+ }
51
+
52
+ constructor (authToken: string) {
53
+ const userQueryInstance = new UserQuery(authToken)
54
+ const mediaQueryInstance = new MediaQuery(authToken)
55
+ const mediaTrendQueryInstance = new MediaTrendQuery(authToken)
56
+ const airingScheduleQueryInstance = new AiringScheduleQuery(authToken)
57
+ const characterQueryInstance = new CharacterQuery(authToken)
58
+ const staffQueryInstance = new StaffQuery(authToken)
59
+ const mediaListQueryInstance = new MediaListQuery(authToken)
60
+ const mediaListCollectionQueryInstance = new MediaListCollectionQuery(authToken)
61
+ const updateUserMutationInstance = new UpdateUserMutation(authToken)
62
+ this.anilist = {
63
+ query: {
64
+ user: userQueryInstance.user.bind(userQueryInstance),
65
+ media: mediaQueryInstance.media.bind(mediaQueryInstance),
66
+ mediaTrend: mediaTrendQueryInstance.mediaTrend.bind(mediaTrendQueryInstance),
67
+ airingSchedule: airingScheduleQueryInstance.airingSchedule.bind(airingScheduleQueryInstance),
68
+ character: characterQueryInstance.character.bind(characterQueryInstance),
69
+ staff: staffQueryInstance.staff.bind(staffQueryInstance),
70
+ mediaList: mediaListQueryInstance.mediaList.bind(mediaListQueryInstance),
71
+ mediaListCollection: mediaListCollectionQueryInstance.mediaListCollection.bind(mediaListQueryInstance)
72
+ },
73
+ mutation: {
74
+ updateUser: updateUserMutationInstance.updateUser.bind(updateUserMutationInstance)
75
+ }
76
+ }
77
+ }
78
+ }
79
+
80
+ module.exports = AniLink
@@ -0,0 +1,5 @@
1
+ export interface ActivityHistory {
2
+ date: number
3
+ amount: number
4
+ level: number
5
+ }
@@ -0,0 +1,6 @@
1
+ export interface CoverImage {
2
+ extraLarge: string
3
+ large: string
4
+ medium: string
5
+ color: string
6
+ }
@@ -0,0 +1,4 @@
1
+ export interface Distribution {
2
+ status: string
3
+ amount: number
4
+ }
@@ -0,0 +1,5 @@
1
+ export interface ExternalLink {
2
+ id: number
3
+ url: string
4
+ site: string
5
+ }
@@ -0,0 +1,15 @@
1
+ import { Tag } from './Tag'
2
+ import { Staff } from './Staff'
3
+ import { Studio } from './Studio'
4
+
5
+ export interface Favoured {
6
+ genre?: string
7
+ amount: number
8
+ meanScore: number
9
+ timeWatched: number
10
+ tag?: Tag
11
+ staff?: Staff
12
+ studio?: Studio
13
+ year?: number
14
+ format?: string
15
+ }
@@ -0,0 +1,5 @@
1
+ export interface FuzzyDate {
2
+ year: number
3
+ month: number
4
+ day: number
5
+ }
@@ -0,0 +1,4 @@
1
+ export interface Image {
2
+ large: string
3
+ medium: string
4
+ }
@@ -0,0 +1,4 @@
1
+ export interface ListScores {
2
+ meanScore: number
3
+ standardDeviation: number
4
+ }
@@ -0,0 +1,59 @@
1
+ import { Title } from './Title'
2
+ import { FuzzyDate } from './FuzzyDate'
3
+ import { Trailer } from './Trailer'
4
+ import { CoverImage } from './CoverImage'
5
+ import { Tag } from './Tag'
6
+ import { NextAiringEpisode } from './NextAiringEpisode'
7
+ import { ExternalLink } from './ExternalLink'
8
+ import { StreamingEpisode } from './StreamingEpisode'
9
+ import { Ranking } from './Ranking'
10
+ import { MediaStats } from './MediaStats'
11
+ import { MediaListEntry } from './MediaListEntry'
12
+
13
+ export interface Media {
14
+ id: number
15
+ idMal: number
16
+ title: Title
17
+ type: string
18
+ format: string
19
+ status: string
20
+ description: string
21
+ startDate: FuzzyDate
22
+ endDate: FuzzyDate
23
+ season: string
24
+ seasonYear: number
25
+ seasonInt: number
26
+ episodes?: number
27
+ duration?: number
28
+ chapters?: number
29
+ volumes?: number
30
+ countryOfOrigin: string
31
+ isLicensed: boolean
32
+ source: string
33
+ hashtag: string
34
+ trailer: Trailer
35
+ updatedAt: number
36
+ coverImage: CoverImage
37
+ bannerImage: string
38
+ genres: string[]
39
+ synonyms: string[]
40
+ averageScore: number
41
+ meanScore: number
42
+ popularity: number
43
+ isLocked: boolean
44
+ trending: number
45
+ favourites: number
46
+ tags: Tag[]
47
+ isFavourite: boolean
48
+ isAdult: boolean
49
+ nextAiringEpisode: NextAiringEpisode
50
+ externalLinks: ExternalLink[]
51
+ streamingEpisodes: StreamingEpisode[]
52
+ rankings: Ranking[]
53
+ mediaListEntry: MediaListEntry
54
+ stats: MediaStats
55
+ siteUrl: string
56
+ autoCreateForumThread: boolean
57
+ isRecommendationBlocked: boolean
58
+ modNotes: string
59
+ }
@@ -0,0 +1,4 @@
1
+ export interface MediaListEntry {
2
+ id: number
3
+ status: string
4
+ }
@@ -0,0 +1,23 @@
1
+ import { Stat } from './Stat'
2
+
3
+ export interface MediaStatistics {
4
+ count: number
5
+ meanScore: number
6
+ standardDeviation: number
7
+ minutesWatched?: number
8
+ episodesWatched?: number
9
+ chaptersRead?: number
10
+ volumesRead?: number
11
+ formats: Stat[]
12
+ statuses: Stat[]
13
+ scores: Stat[]
14
+ lengths: Stat[]
15
+ releaseYears: Stat[]
16
+ startYears: Stat[]
17
+ genres: Stat[]
18
+ tags: Stat[]
19
+ countries: Stat[]
20
+ voiceActors?: Stat[]
21
+ staff: Stat[]
22
+ studios: Stat[]
23
+ }
@@ -0,0 +1,7 @@
1
+ import { ScoreDistribution } from './ScoreDistribution'
2
+ import { StatusDistribution } from './StatusDistribution'
3
+
4
+ export interface MediaStats {
5
+ scoreDistribution: ScoreDistribution[]
6
+ statusDistribution: StatusDistribution[]
7
+ }
@@ -0,0 +1,8 @@
1
+ export interface Name {
2
+ first: string
3
+ last: string
4
+ full: string
5
+ native: string
6
+ alternative: string
7
+ userPreferred: string
8
+ }
@@ -0,0 +1,5 @@
1
+ export interface NextAiringEpisode {
2
+ airingAt: number
3
+ timeUntilAiring: number
4
+ episode: number
5
+ }
@@ -0,0 +1,10 @@
1
+ export interface Ranking {
2
+ id: number
3
+ rank: number
4
+ type: string
5
+ format: string
6
+ year: number
7
+ season: string
8
+ allTime: boolean
9
+ context: string
10
+ }
@@ -0,0 +1,4 @@
1
+ export interface ScoreDistribution {
2
+ score: number
3
+ amount: number
4
+ }
@@ -0,0 +1,6 @@
1
+ import { Name } from './Name'
2
+
3
+ export interface Staff {
4
+ id: number
5
+ name: Name
6
+ }
@@ -0,0 +1,24 @@
1
+ import { Tag } from './Tag'
2
+ import { Staff } from './Staff'
3
+ import { Studio } from './Studio'
4
+
5
+ export interface Stat {
6
+ count: number
7
+ meanScore: number
8
+ minutesWatched?: number
9
+ chaptersRead?: number
10
+ mediaIds: number[]
11
+ format?: string
12
+ status?: string
13
+ score?: number
14
+ length?: number
15
+ releaseYear?: number
16
+ startYear?: number
17
+ genre?: string
18
+ tag?: Tag
19
+ country?: string
20
+ voiceActor?: Staff
21
+ characterIds?: number[]
22
+ staff?: Staff
23
+ studio?: Studio
24
+ }
@@ -0,0 +1,6 @@
1
+ import { MediaStatistics } from './MediaStatistics'
2
+
3
+ export interface Statistics {
4
+ anime: MediaStatistics
5
+ manga: MediaStatistics
6
+ }
@@ -0,0 +1,4 @@
1
+ export interface StatusDistribution {
2
+ status: string
3
+ amount: number
4
+ }
@@ -0,0 +1,6 @@
1
+ export interface StreamingEpisode {
2
+ title: string
3
+ thumbnail: string
4
+ url: string
5
+ site: string
6
+ }
@@ -0,0 +1,4 @@
1
+ export interface Studio {
2
+ id: number
3
+ name: string
4
+ }
@@ -0,0 +1,10 @@
1
+ export interface Tag {
2
+ id: number
3
+ name: string
4
+ description: string
5
+ category: string
6
+ rank: number
7
+ isGeneralSpoiler: boolean
8
+ isMediaSpoiler: boolean
9
+ isAdult: boolean
10
+ }
@@ -0,0 +1,6 @@
1
+ export interface Title {
2
+ romaji: string
3
+ english: string
4
+ native: string
5
+ userPreferred: string
6
+ }
@@ -0,0 +1,5 @@
1
+ export interface Trailer {
2
+ id: string
3
+ site: string
4
+ thumbnail: string
5
+ }
@@ -0,0 +1,25 @@
1
+ import { ActivityHistory } from './ActivityHistory'
2
+ import { Distribution } from './Distribution'
3
+ import { ScoreDistribution } from './ScoreDistribution'
4
+ import { ListScores } from './ListScores'
5
+ import { Favoured } from './Favoured'
6
+
7
+ export interface UserStats {
8
+ watchedTime: number
9
+ chaptersRead: number
10
+ activityHistory: ActivityHistory[]
11
+ animeStatusDistribution: Distribution[]
12
+ mangaStatusDistribution: Distribution[]
13
+ animeScoreDistribution: ScoreDistribution[]
14
+ mangaScoreDistribution: ScoreDistribution[]
15
+ animeListScores: ListScores
16
+ mangaListScores: ListScores
17
+ favouredGenresOverview: Favoured[]
18
+ favouredGenres: Favoured[]
19
+ favouredTags: Favoured[]
20
+ favouredActors: Favoured[]
21
+ favouredStaff: Favoured[]
22
+ favouredStudios: Favoured[]
23
+ favouredYears: Favoured[]
24
+ favouredFormats: Favoured[]
25
+ }
@@ -0,0 +1,10 @@
1
+ import { Media } from '../Media'
2
+
3
+ export interface AiringScheduleResponse {
4
+ id: number
5
+ airingAt: number
6
+ timeUntilAiring: number
7
+ episode: number
8
+ mediaId: number
9
+ media: Media
10
+ }
@@ -0,0 +1,26 @@
1
+ import { FuzzyDate } from '../FuzzyDate'
2
+ import { Name } from '../Name'
3
+ import { Image } from '../Image'
4
+ import { Title } from '../Title'
5
+
6
+ export interface CharacterResponse {
7
+ id: number
8
+ name: Name
9
+ image: Image
10
+ description: string
11
+ gender: string
12
+ dateOfBirth: FuzzyDate
13
+ age: string
14
+ bloodType: string
15
+ isFavourite: boolean
16
+ isFavouriteBlocked: boolean
17
+ siteUrl: string
18
+ media: {
19
+ nodes: Array<{
20
+ id: number
21
+ title: Title
22
+ }>
23
+ }
24
+ favourites: number
25
+ modNotes: string
26
+ }
@@ -0,0 +1,118 @@
1
+ import { Title } from '../Title'
2
+ import { FuzzyDate } from '../FuzzyDate'
3
+ import { Trailer } from '../Trailer'
4
+ import { CoverImage } from '../CoverImage'
5
+ import { Tag } from '../Tag'
6
+ import { NextAiringEpisode } from '../NextAiringEpisode'
7
+ import { ExternalLink } from '../ExternalLink'
8
+ import { StreamingEpisode } from '../StreamingEpisode'
9
+ import { Ranking } from '../Ranking'
10
+ import { MediaStats } from '../MediaStats'
11
+ import { MediaListEntry } from '../MediaListEntry'
12
+ import { Name } from '../Name'
13
+ import { Image } from '../Image'
14
+
15
+ export interface MediaResponse {
16
+ id: number
17
+ idMal: number
18
+ title: Title
19
+ type: string
20
+ format: string
21
+ status: string
22
+ description: string
23
+ startDate: FuzzyDate
24
+ endDate: FuzzyDate
25
+ season: string
26
+ seasonYear: number
27
+ seasonInt: number
28
+ episodes?: number
29
+ duration?: number
30
+ chapters?: number
31
+ volumes?: number
32
+ countryOfOrigin: string
33
+ isLicensed: boolean
34
+ source: string
35
+ hashtag: string
36
+ trailer: Trailer
37
+ updatedAt: number
38
+ coverImage: CoverImage
39
+ bannerImage: string
40
+ genres: string[]
41
+ synonyms: string[]
42
+ averageScore: number
43
+ meanScore: number
44
+ popularity: number
45
+ isLocked: boolean
46
+ trending: number
47
+ favourites: number
48
+ tags: Tag[]
49
+ relations: {
50
+ edges: Array<{
51
+ relationType: string
52
+ node: {
53
+ id: number
54
+ title: Title
55
+ }
56
+ }>
57
+ }
58
+ characters: {
59
+ edges: Array<{
60
+ id: number
61
+ role: string
62
+ name: string
63
+ voiceActors: Array<{
64
+ id: number
65
+ name: Name
66
+ image: Image
67
+ }>
68
+ media: {
69
+ id: number
70
+ title: Title
71
+ coverImage: CoverImage
72
+ }
73
+ favouriteOrder: number
74
+ node: {
75
+ id: number
76
+ name: Name
77
+ image: Image
78
+ }
79
+ }>
80
+ }
81
+ staff: {
82
+ edges: Array<{
83
+ id: number
84
+ role: string
85
+ favouriteOrder: number
86
+ node: {
87
+ id: number
88
+ name: Name
89
+ image: Image
90
+ }
91
+ }>
92
+ }
93
+ studios: {
94
+ edges: Array<{
95
+ id: number
96
+ isMain: boolean
97
+ favouriteOrder: number
98
+ node: {
99
+ id: number
100
+ name: string
101
+ isAnimationStudio: boolean
102
+ siteUrl: string
103
+ }
104
+ }>
105
+ }
106
+ isFavourite: boolean
107
+ isAdult: boolean
108
+ nextAiringEpisode: NextAiringEpisode
109
+ externalLinks: ExternalLink[]
110
+ streamingEpisodes: StreamingEpisode[]
111
+ rankings: Ranking[]
112
+ mediaListEntry: MediaListEntry
113
+ stats: MediaStats
114
+ siteUrl: string
115
+ autoCreateForumThread: boolean
116
+ isRecommendationBlocked: boolean
117
+ modNotes: string
118
+ }
@@ -0,0 +1,24 @@
1
+ import { Media } from '../Media'
2
+
3
+ export interface MediaListResponse {
4
+ id: number
5
+ userId: number
6
+ mediaId: number
7
+ status: string
8
+ score: number
9
+ progress: number
10
+ progressVolumes: number
11
+ repeat: number
12
+ priority: number
13
+ private: boolean
14
+ notes: string
15
+ hiddenFromStatusLists: boolean
16
+ customLists: any
17
+ advancedScores: any
18
+ startedAt: any
19
+ completedAt: any
20
+ updatedAt: number
21
+ createdAt: number
22
+ media: Media
23
+ user: any
24
+ }
@@ -0,0 +1,37 @@
1
+ import { FuzzyDate } from '../FuzzyDate'
2
+ import { Media } from '../Media'
3
+ import { UserResponse } from './User'
4
+
5
+ export interface MediaListCollectionResponse {
6
+ MediaListCollection: {
7
+ lists: Array<{
8
+ entries: Array<{
9
+ id: number
10
+ userId: number
11
+ mediaId: number
12
+ status: string
13
+ score: number
14
+ progress: number
15
+ progressVolumes: number
16
+ repeat: number
17
+ priority: number
18
+ private: boolean
19
+ notes: string
20
+ hiddenFromStatusLists: boolean
21
+ customLists: boolean[]
22
+ advancedScores: number[]
23
+ startedAt: FuzzyDate
24
+ completedAt: FuzzyDate
25
+ updatedAt: number
26
+ createdAt: number
27
+ media: Media
28
+ }>
29
+ name: string
30
+ isCustomList: boolean
31
+ isSplitCompletedList: boolean
32
+ status: string
33
+ }>
34
+ user: UserResponse
35
+ hasNextChunk: boolean
36
+ }
37
+ }
@@ -0,0 +1,13 @@
1
+ import { Media } from '../Media'
2
+
3
+ export interface MediaTrendResponse {
4
+ mediaId: number
5
+ date: number
6
+ trending: number
7
+ averageScore: number
8
+ popularity: number
9
+ inProgress: number
10
+ releasing: boolean
11
+ episode: number
12
+ media: Media
13
+ }
@@ -0,0 +1,53 @@
1
+ import { Name } from '../Name'
2
+ import { Image } from '../Image'
3
+ import { FuzzyDate } from '../FuzzyDate'
4
+ import { Title } from '../Title'
5
+
6
+ export interface StaffResponse {
7
+ id: number
8
+ name: Name
9
+ languageV2: string
10
+ image: Image
11
+ description: string
12
+ primaryOccupations: string[]
13
+ gender: string
14
+ dateOfBirth: FuzzyDate
15
+ dateOfDeath: FuzzyDate
16
+ age: number
17
+ yearsActive: number[]
18
+ homeTown: string
19
+ bloodType: string
20
+ isFavourite: boolean
21
+ isFavouriteBlocked: boolean
22
+ siteUrl: string
23
+ staffMedia: {
24
+ nodes: Array<{
25
+ id: number
26
+ title: Title
27
+ }>
28
+ }
29
+ characters: {
30
+ nodes: Array<{
31
+ id: number
32
+ name: Name
33
+ }>
34
+ }
35
+ characterMedia: {
36
+ nodes: Array<{
37
+ id: number
38
+ title: Title
39
+ }>
40
+ }
41
+ staff: {
42
+ id: number
43
+ name: Name
44
+ }
45
+ submitter: {
46
+ id: number
47
+ name: string
48
+ }
49
+ submissionStatus: number
50
+ submissionNotes: string
51
+ favourites: number
52
+ modNotes: string
53
+ }