rename updateOperation fn to operationParser

This commit is contained in:
DrakeTDL 2023-10-19 06:21:54 -07:00
parent 4f3913814d
commit 69041caa68
No known key found for this signature in database
28 changed files with 142 additions and 144 deletions

View File

@ -50,7 +50,7 @@ import {
QueryThreadCommentArgs,
QueryUserArgs,
} from "./types/generated/graphql.ts"
import { Fetch, Fields, Fn, UpdateOperation } from "./types/Anilist.ts"
import { Fetch, Fields, Fn, OperationParser } from "./types/Anilist.ts"
import type { AtLeastOne } from "./types/AtLeastOne.ts"
import { Media } from "./queries/Media.ts"
import { MediaTrend } from "./queries/MediaTrend.ts"
@ -107,7 +107,7 @@ const replaceLast = (str: string, pattern: string | RegExp, replacement: string)
return last !== -1 ? `${str.slice(0, last)}${replacement}${str.slice(last + match.length)}` : str
}
const updateOperation: UpdateOperation = (
const operationParser: OperationParser = (
{ query, variables, fields, level, hasSubField, isUnion },
) => {
if (!query) query = `${fields[level]} {\n\t%${fields[level]}\n}`
@ -136,7 +136,7 @@ const updateOperation: UpdateOperation = (
fields.splice(level, 0, subField)
while (fields.length - 1 > level) fields.pop()
return updateOperation({ query, variables, level, fields, hasSubField, isUnion })
return operationParser({ query, variables, level, fields, hasSubField, isUnion })
},
}
}
@ -187,7 +187,7 @@ const fetch: Fetch = async (init) => {
return await res.json()
}
export const FuzzyDate = ({ query, level }: Fields<typeof updateOperation>) => ({
export const FuzzyDate = ({ query, level }: Fields<typeof operationParser>) => ({
withDay() {
query[0] = query[0].set({ subField: "day", level })
return this
@ -202,7 +202,7 @@ export const FuzzyDate = ({ query, level }: Fields<typeof updateOperation>) => (
},
})
export const Deleted = ({ query, level }: Fields<typeof updateOperation>) => ({
export const Deleted = ({ query, level }: Fields<typeof operationParser>) => ({
/** If an item has been successfully deleted */
withDeleted() {
query[0] = query[0].set({ subField: "deleted", level })
@ -212,7 +212,7 @@ export const Deleted = ({ query, level }: Fields<typeof updateOperation>) => ({
})
export const Client = function (auth?: { token: string }) {
let operation: ReturnType<typeof updateOperation>
let operation: ReturnType<typeof operationParser>
return {
get auth() {
return {
@ -227,7 +227,7 @@ export const Client = function (auth?: { token: string }) {
}
},
get query() {
operation = updateOperation({
operation = operationParser({
fields: ["query"],
level: 0,
})
@ -644,7 +644,7 @@ export const Client = function (auth?: { token: string }) {
}
},
get mutation() {
operation = updateOperation({
operation = operationParser({
fields: ["mutation"],
level: 0,
})

View File

@ -1,7 +1,7 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { User } from "./User.ts"
export const ActivityReply = ({ query, level }: Fields<UpdateOperation>) => ({
export const ActivityReply = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the reply */
withId() {
query[0] = query[0].set({ subField: "id", level })

View File

@ -1,9 +1,9 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { ActivityReply } from "./ActivityReply.ts"
import { Media } from "./Media.ts"
import { User } from "./User.ts"
export const TextActivity = ({ query, level }: Fields<UpdateOperation>) => ({
export const TextActivity = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the activity */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -93,7 +93,7 @@ export const TextActivity = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const ListActivity = ({ query, level }: Fields<UpdateOperation>) => ({
export const ListActivity = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the activity */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -197,7 +197,7 @@ export const ListActivity = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const MessageActivity = ({ query, level }: Fields<UpdateOperation>) => ({
export const MessageActivity = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the activity */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -301,7 +301,7 @@ export const MessageActivity = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const ActivityUnion = ({ query, level }: Fields<UpdateOperation>) => ({
export const ActivityUnion = ({ query, level }: Fields<OperationParser>) => ({
withTextActivity(fn?: Fn<typeof TextActivity>) {
query[0] = query[0].set({ subField: "TextActivity", level, hasSubField: true, isUnion: true })
let tmpQuery

View File

@ -1,8 +1,8 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { Media } from "./Media.ts"
import { PageInfo } from "./Page.ts"
const AiringScheduleEdge = ({ query, level }: Fields<UpdateOperation>) => ({
const AiringScheduleEdge = ({ query, level }: Fields<OperationParser>) => ({
withNode(fn: Fn<typeof AiringSchedule>) {
query[0] = query[0].set({ subField: "node", level, hasSubField: true })
let tmpQuery
@ -17,7 +17,7 @@ const AiringScheduleEdge = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const AiringScheduleConnection = ({ query, level }: Fields<UpdateOperation>) => ({
export const AiringScheduleConnection = ({ query, level }: Fields<OperationParser>) => ({
withEdges(fn: Fn<typeof AiringScheduleEdge>) {
query[0] = query[0].set({ subField: "edges", level, hasSubField: true })
let tmpQuery
@ -42,7 +42,7 @@ export const AiringScheduleConnection = ({ query, level }: Fields<UpdateOperatio
},
})
export const AiringSchedule = ({ query, level }: Fields<UpdateOperation>) => ({
export const AiringSchedule = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the airing schedule item */
withId() {
query[0] = query[0].set({ subField: "id", level })

View File

@ -1,7 +1,7 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { User } from "./User.ts"
export const AniChartUser = ({ query, level }: Fields<UpdateOperation>) => ({
export const AniChartUser = ({ query, level }: Fields<OperationParser>) => ({
withUser(fn?: Fn<typeof User>) {
query[0] = query[0].set({ subField: "user", level, hasSubField: true })
let tmpQuery

View File

@ -3,14 +3,14 @@ import {
CharacterEdgeVoiceActorsArgs,
CharacterMediaArgs,
} from "../types/generated/graphql.ts"
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { PageInfo } from "./Page.ts"
import { FuzzyDate } from "../anilist.ts"
import { Media, MediaConnection } from "./Media.ts"
import { Staff, StaffRoleType } from "./Staff.ts"
import { AtLeastOne } from "../types/AtLeastOne.ts"
const CharacterName = ({ query, level }: Fields<UpdateOperation>) => ({
const CharacterName = ({ query, level }: Fields<OperationParser>) => ({
/** The person's given name */
withFirst() {
query[0] = query[0].set({ subField: "first", level })
@ -48,7 +48,7 @@ const CharacterName = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const CharacterImage = ({ query, level }: Fields<UpdateOperation>) => ({
const CharacterImage = ({ query, level }: Fields<OperationParser>) => ({
/** The person's image of media at its largest size */
withLarge() {
query[0] = query[0].set({ subField: "large", level })
@ -61,7 +61,7 @@ const CharacterImage = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const CharacterEdge = ({ query, level }: Fields<UpdateOperation>) => ({
const CharacterEdge = ({ query, level }: Fields<OperationParser>) => ({
withNode(fn: Fn<typeof Character>) {
query[0] = query[0].set({ subField: "node", level, hasSubField: true })
let tmpQuery
@ -130,7 +130,7 @@ const CharacterEdge = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const CharacterConnection = ({ query, level }: Fields<UpdateOperation>) => ({
export const CharacterConnection = ({ query, level }: Fields<OperationParser>) => ({
withEdges(fn?: Fn<typeof CharacterEdge>) {
query[0] = query[0].set({ subField: "edges", level, hasSubField: true })
let tmpQuery
@ -157,7 +157,7 @@ export const CharacterConnection = ({ query, level }: Fields<UpdateOperation>) =
},
})
export const Character = ({ query, level }: Fields<UpdateOperation>) => ({
export const Character = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the character */
withId() {
query[0] = query[0].set({ subField: "id", level })

View File

@ -1,6 +1,6 @@
import { Fields, UpdateOperation } from "../types/Anilist.ts"
import { Fields, OperationParser } from "../types/Anilist.ts"
export const ExternalLinkSourceCollection = ({ query, level }: Fields<UpdateOperation>) => ({
export const ExternalLinkSourceCollection = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the external link */
withId() {
query[0] = query[0].set({ subField: "id", level })

View File

@ -1,4 +1,4 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { AtLeastOne } from "../types/AtLeastOne.ts"
import {
FavouritesAnimeArgs,
@ -12,7 +12,7 @@ import { MediaConnection } from "./Media.ts"
import { StaffConnection } from "./Staff.ts"
import { StudioConnection } from "./Studio.ts"
export const Favourites = ({ query, level }: Fields<UpdateOperation>) => ({
export const Favourites = ({ query, level }: Fields<OperationParser>) => ({
/** Favourite anime */
withAnime(op: { args?: AtLeastOne<FavouritesAnimeArgs>; fn: Fn<typeof MediaConnection> }) {
query[0] = query[0].set({ subField: "anime", level, variables: op?.args })

View File

@ -1,10 +1,10 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { ActivityReply } from "./ActivityReply.ts"
import { ListActivity, MessageActivity, TextActivity } from "./ActivityUnion.ts"
import { Thread } from "./Thread.ts"
import { ThreadComment } from "./ThreadComment.ts"
export const LikeableUnion = ({ query, level }: Fields<UpdateOperation>) => ({
export const LikeableUnion = ({ query, level }: Fields<OperationParser>) => ({
withListActivity(fn?: Fn<typeof ListActivity>) {
query[0] = query[0].set({ subField: "ListActivity", level, hasSubField: true, isUnion: true })
let tmpQuery

View File

@ -1,6 +1,6 @@
import { Fields, UpdateOperation } from "../types/Anilist.ts"
import { Fields, OperationParser } from "../types/Anilist.ts"
export const Markdown = ({ query, level }: Fields<UpdateOperation>) => ({
export const Markdown = ({ query, level }: Fields<OperationParser>) => ({
/** The parsed markdown as html */
withHtml() {
query[0] = query[0].set({ subField: "html", level })

View File

@ -13,7 +13,7 @@ import {
MediaStudiosArgs,
MediaTrendsArgs,
} from "../types/generated/graphql.ts"
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import type { AtLeastOne } from "../types/AtLeastOne.ts"
import { PageInfo } from "./Page.ts"
import { FuzzyDate } from "../anilist.ts"
@ -27,7 +27,7 @@ import { RecommendationConnection } from "./Recommendation.ts"
import { ReviewConnection } from "./Review.ts"
import { StudioConnection } from "./Studio.ts"
export const MediaListGroup = ({ query, level }: Fields<UpdateOperation>) => ({
export const MediaListGroup = ({ query, level }: Fields<OperationParser>) => ({
/** Media list entries */
withEntries(fn: Fn<typeof MediaList>) {
query[0] = query[0].set({ subField: "entries", level, hasSubField: true })
@ -54,7 +54,7 @@ export const MediaListGroup = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const MediaTitle = ({ query, level }: Fields<UpdateOperation>) => ({
const MediaTitle = ({ query, level }: Fields<OperationParser>) => ({
/** The romanization of the native language title */
romaji(args?: { stylised: boolean }) {
query[0] = query[0].set({ subField: "romaji", level, variables: args })
@ -77,7 +77,7 @@ const MediaTitle = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const MediaTrailer = ({ query, level }: Fields<UpdateOperation>) => ({
const MediaTrailer = ({ query, level }: Fields<OperationParser>) => ({
/** The trailer video id */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -95,7 +95,7 @@ const MediaTrailer = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const MediaCoverImage = ({ query, level }: Fields<UpdateOperation>) => ({
const MediaCoverImage = ({ query, level }: Fields<OperationParser>) => ({
/** The cover image url of the media at its largest size. If this size isn't available, large will be provided instead. */
withExtraLarge() {
query[0] = query[0].set({ subField: "extraLarge", level })
@ -118,7 +118,7 @@ const MediaCoverImage = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const MediaExternalLink = ({ query, level }: Fields<UpdateOperation>) => ({
const MediaExternalLink = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the external link */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -167,7 +167,7 @@ const MediaExternalLink = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const MediaStreamingEpisode = ({ query, level }: Fields<UpdateOperation>) => ({
const MediaStreamingEpisode = ({ query, level }: Fields<OperationParser>) => ({
/** Title of the episode */
withTitle() {
query[0] = query[0].set({ subField: "title", level })
@ -190,7 +190,7 @@ const MediaStreamingEpisode = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const MediaRank = ({ query, level }: Fields<UpdateOperation>) => ({
const MediaRank = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the rank */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -233,7 +233,7 @@ const MediaRank = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const MediaStats = ({ query, level }: Fields<UpdateOperation>) => ({
const MediaStats = ({ query, level }: Fields<OperationParser>) => ({
scoreDistribution(fn: Fn<typeof ScoreDistribution>) {
query[0] = query[0].set({ subField: "scoreDistribution", level, hasSubField: true })
let tmpQuery
@ -250,7 +250,7 @@ const MediaStats = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const StatusDistribution = ({ query, level }: Fields<UpdateOperation>) => ({
const StatusDistribution = ({ query, level }: Fields<OperationParser>) => ({
withStatus() {
query[0] = query[0].set({ subField: "status", level })
return this
@ -261,7 +261,7 @@ const StatusDistribution = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const ScoreDistribution = ({ query, level }: Fields<UpdateOperation>) => ({
const ScoreDistribution = ({ query, level }: Fields<OperationParser>) => ({
withScore() {
query[0] = query[0].set({ subField: "score", level })
return this
@ -272,7 +272,7 @@ const ScoreDistribution = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const MediaEdge = ({ query, level }: Fields<UpdateOperation>) => ({
const MediaEdge = ({ query, level }: Fields<OperationParser>) => ({
withNode(fn?: Fn<typeof Media>) {
query[0] = query[0].set({ subField: "node", level, hasSubField: true })
let tmpQuery
@ -366,7 +366,7 @@ const MediaEdge = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const MediaConnection = ({ query, level }: Fields<UpdateOperation>) => ({
export const MediaConnection = ({ query, level }: Fields<OperationParser>) => ({
withEdges(fn?: Fn<typeof MediaEdge>) {
query[0] = query[0].set({ subField: "edges", level, hasSubField: true })
let tmpQuery
@ -393,7 +393,7 @@ export const MediaConnection = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const Media = ({ query, level }: Fields<UpdateOperation>) => ({
export const Media = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the media */
withId() {
query[0] = query[0].set({ subField: "id", level })

View File

@ -1,9 +1,9 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { Media } from "./Media.ts"
import { FuzzyDate } from "../anilist.ts"
import { User } from "./User.ts"
export const MediaListTypeOptions = ({ query, level }: Fields<UpdateOperation>) => ({
export const MediaListTypeOptions = ({ query, level }: Fields<OperationParser>) => ({
/** The order each list should be displayed in */
withSectionOrder() {
query[0] = query[0].set({ subField: "sectionOrder", level })
@ -31,7 +31,7 @@ export const MediaListTypeOptions = ({ query, level }: Fields<UpdateOperation>)
},
})
export const MediaListOptions = ({ query, level }: Fields<UpdateOperation>) => ({
export const MediaListOptions = ({ query, level }: Fields<OperationParser>) => ({
/** The score format the user is using for media lists */
withScoreFormat() {
query[0] = query[0].set({ subField: "scoreFormat", level })
@ -60,7 +60,7 @@ export const MediaListOptions = ({ query, level }: Fields<UpdateOperation>) => (
},
})
export const MediaList = ({ query, level }: Fields<UpdateOperation>) => ({
export const MediaList = ({ query, level }: Fields<OperationParser>) => ({
withCompletedAt(fn: Fn<typeof FuzzyDate>) {
query[0] = query[0].set({
subField: "completedAt",

View File

@ -1,8 +1,8 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { MediaListGroup } from "./Media.ts"
import { User } from "./User.ts"
export const MediaListCollection = ({ query, level }: Fields<UpdateOperation>) => ({
export const MediaListCollection = ({ query, level }: Fields<OperationParser>) => ({
/** Grouped media list entries */
withLists(fn: Fn<typeof MediaListGroup>) {
query[0] = query[0].set({ subField: "lists", level, hasSubField: true })

View File

@ -1,6 +1,6 @@
import { Fields, UpdateOperation } from "../types/Anilist.ts"
import { Fields, OperationParser } from "../types/Anilist.ts"
export const MediaTag = ({ query, level }: Fields<UpdateOperation>) => ({
export const MediaTag = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the tag */
withId() {
query[0] = query[0].set({ subField: "id", level })

View File

@ -1,8 +1,8 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { Media } from "./Media.ts"
import { PageInfo } from "./Page.ts"
const MediaTrendEdge = ({ query, level }: Fields<UpdateOperation>) => ({
const MediaTrendEdge = ({ query, level }: Fields<OperationParser>) => ({
withNode(fn?: Fn<typeof MediaTrend>) {
query[0] = query[0].set({ subField: "node", level, hasSubField: true })
let tmpQuery
@ -13,7 +13,7 @@ const MediaTrendEdge = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const MediaTrendConnection = ({ query, level }: Fields<UpdateOperation>) => ({
export const MediaTrendConnection = ({ query, level }: Fields<OperationParser>) => ({
withEdges(fn?: Fn<typeof MediaTrendEdge>) {
query[0] = query[0].set({ subField: "edges", level, hasSubField: true })
let tmpQuery
@ -40,7 +40,7 @@ export const MediaTrendConnection = ({ query, level }: Fields<UpdateOperation>)
},
})
export const MediaTrend = ({ query, level }: Fields<UpdateOperation>) => ({
export const MediaTrend = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the tag */
withMediaId() {
query[0] = query[0].set({ subField: "mediaId", level })

View File

@ -1,11 +1,11 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { ActivityUnion, MessageActivity } from "./ActivityUnion.ts"
import { Media } from "./Media.ts"
import { Thread } from "./Thread.ts"
import { ThreadComment } from "./ThreadComment.ts"
import { User } from "./User.ts"
const AiringNotification = ({ query, level }: Fields<UpdateOperation>) => ({
const AiringNotification = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the Notification */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -46,7 +46,7 @@ const AiringNotification = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const FollowingNotification = ({ query, level }: Fields<UpdateOperation>) => ({
const FollowingNotification = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the Notification */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -83,7 +83,7 @@ const FollowingNotification = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const ActivityMessageNotification = ({ query, level }: Fields<UpdateOperation>) => ({
const ActivityMessageNotification = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the Notification */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -134,7 +134,7 @@ const ActivityMessageNotification = ({ query, level }: Fields<UpdateOperation>)
},
})
const ActivityNotification = ({ query, level }: Fields<UpdateOperation>) => ({
const ActivityNotification = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the Notification */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -190,7 +190,7 @@ const ActivityNotification = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const ThreadCommentNotification = ({ query, level }: Fields<UpdateOperation>) => ({
const ThreadCommentNotification = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the Notification */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -250,7 +250,7 @@ const ThreadCommentNotification = ({ query, level }: Fields<UpdateOperation>) =>
},
})
const ThreadLikeNotification = ({ query, level }: Fields<UpdateOperation>) => ({
const ThreadLikeNotification = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the Notification */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -310,7 +310,7 @@ const ThreadLikeNotification = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const RelatedMediaAdditionNotification = ({ query, level }: Fields<UpdateOperation>) => ({
const RelatedMediaAdditionNotification = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the Notification */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -347,7 +347,7 @@ const RelatedMediaAdditionNotification = ({ query, level }: Fields<UpdateOperati
},
})
const MediaDataChangeNotification = ({ query, level }: Fields<UpdateOperation>) => ({
const MediaDataChangeNotification = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the Notification */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -389,7 +389,7 @@ const MediaDataChangeNotification = ({ query, level }: Fields<UpdateOperation>)
},
})
const MediaMergeNotification = ({ query, level }: Fields<UpdateOperation>) => ({
const MediaMergeNotification = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the Notification */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -436,7 +436,7 @@ const MediaMergeNotification = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const MediaDeletionNotification = ({ query, level }: Fields<UpdateOperation>) => ({
const MediaDeletionNotification = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the Notification */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -469,7 +469,7 @@ const MediaDeletionNotification = ({ query, level }: Fields<UpdateOperation>) =>
},
})
export const NotificationUnion = ({ query, level }: Fields<UpdateOperation>) => ({
export const NotificationUnion = ({ query, level }: Fields<OperationParser>) => ({
AiringNotification(fn?: Fn<typeof AiringNotification>) {
query[0] = query[0].set({
subField: "AiringNotification",

View File

@ -1,4 +1,4 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { AtLeastOne } from "../types/AtLeastOne.ts"
import {
PageActivitiesArgs,
@ -37,7 +37,7 @@ import { Thread } from "./Thread.ts"
import { ThreadComment } from "./ThreadComment.ts"
import { User } from "./User.ts"
export const PageInfo = ({ query, level }: Fields<UpdateOperation>) => ({
export const PageInfo = ({ query, level }: Fields<OperationParser>) => ({
/** The total number of items. Note: This value is not guaranteed to be accurate, do not rely on this for logic */
withTotal() {
query[0] = query[0].set({ subField: "total", level })
@ -65,7 +65,7 @@ export const PageInfo = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const Page = ({ query, level }: Fields<UpdateOperation>) => ({
export const Page = ({ query, level }: Fields<OperationParser>) => ({
/** The pagination information */
withPageInfo(fn: Fn<typeof PageInfo>) {
query[0] = query[0].set({ subField: "pageInfo", level, hasSubField: true })

View File

@ -1,9 +1,9 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { Media } from "./Media.ts"
import { User } from "./User.ts"
import { PageInfo } from "./Page.ts"
const RecommendationEdge = ({ query, level }: Fields<UpdateOperation>) => ({
const RecommendationEdge = ({ query, level }: Fields<OperationParser>) => ({
withNode(fn?: Fn<typeof Recommendation>) {
query[0] = query[0].set({ subField: "node", level, hasSubField: true })
let tmpQuery
@ -13,7 +13,7 @@ const RecommendationEdge = ({ query, level }: Fields<UpdateOperation>) => ({
return this
},
})
export const RecommendationConnection = ({ query, level }: Fields<UpdateOperation>) => ({
export const RecommendationConnection = ({ query, level }: Fields<OperationParser>) => ({
withEdges(fn?: Fn<typeof RecommendationEdge>) {
query[0] = query[0].set({ subField: "edges", level, hasSubField: true })
let tmpQuery
@ -40,7 +40,7 @@ export const RecommendationConnection = ({ query, level }: Fields<UpdateOperatio
},
})
export const Recommendation = ({ query, level }: Fields<UpdateOperation>) => ({
export const Recommendation = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the recommendation */
withId() {
query[0] = query[0].set({ subField: "id", level })

View File

@ -1,9 +1,9 @@
import { PageInfo } from "./Page.ts"
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { Media } from "./Media.ts"
import { User } from "./User.ts"
const ReviewEdge = ({ query, level }: Fields<UpdateOperation>) => ({
const ReviewEdge = ({ query, level }: Fields<OperationParser>) => ({
withNode(fn?: Fn<typeof Review>) {
query[0] = query[0].set({ subField: "node", level, hasSubField: true })
let tmpQuery
@ -14,7 +14,7 @@ const ReviewEdge = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const ReviewConnection = ({ query, level }: Fields<UpdateOperation>) => ({
export const ReviewConnection = ({ query, level }: Fields<OperationParser>) => ({
withEdges(fn?: Fn<typeof ReviewEdge>) {
query[0] = query[0].set({ subField: "edges", level, hasSubField: true })
let tmpQuery
@ -41,7 +41,7 @@ export const ReviewConnection = ({ query, level }: Fields<UpdateOperation>) => (
},
})
export const Review = ({ query, level }: Fields<UpdateOperation>) => ({
export const Review = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the review */
withId() {
query[0] = query[0].set({ subField: "id", level })

View File

@ -7,11 +7,11 @@ import {
SiteStatisticsStudiosArgs,
SiteStatisticsUsersArgs,
} from "../types/generated/graphql.ts"
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import type { AtLeastOne } from "../types/AtLeastOne.ts"
import { SiteTrendConnection } from "./SiteTrend.ts"
export const SiteStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
export const SiteStatistics = ({ query, level }: Fields<OperationParser>) => ({
withUsers(
op: { args?: AtLeastOne<SiteStatisticsUsersArgs>; fn: Fn<typeof SiteTrendConnection> },
) {

View File

@ -1,7 +1,7 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { PageInfo } from "./Page.ts"
const SiteTrend = ({ query, level }: Fields<UpdateOperation>) => ({
const SiteTrend = ({ query, level }: Fields<OperationParser>) => ({
/** The day the data was recorded (timestamp) */
withDate() {
query[0] = query[0].set({ subField: "date", level })
@ -19,7 +19,7 @@ const SiteTrend = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const SiteTrendEdge = ({ query, level }: Fields<UpdateOperation>) => ({
const SiteTrendEdge = ({ query, level }: Fields<OperationParser>) => ({
withNode(fn: Fn<typeof SiteTrend>) {
query[0] = query[0].set({ subField: "node", level, hasSubField: true })
let tmpQuery
@ -29,7 +29,7 @@ const SiteTrendEdge = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const SiteTrendConnection = ({ query, level }: Fields<UpdateOperation>) => ({
export const SiteTrendConnection = ({ query, level }: Fields<OperationParser>) => ({
withEdges(fn: Fn<typeof SiteTrendEdge>) {
query[0] = query[0].set({ subField: "edges", level, hasSubField: true })
let tmpQuery

View File

@ -3,7 +3,7 @@ import {
StaffCharactersArgs,
StaffStaffMediaArgs,
} from "../types/generated/graphql.ts"
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { FuzzyDate } from "../anilist.ts"
import { PageInfo } from "./Page.ts"
import { User } from "./User.ts"
@ -11,7 +11,7 @@ import { CharacterConnection } from "./Character.ts"
import { MediaConnection } from "./Media.ts"
import { AtLeastOne } from "../types/AtLeastOne.ts"
export const StaffRoleType = ({ query, level }: Fields<UpdateOperation>) => ({
export const StaffRoleType = ({ query, level }: Fields<OperationParser>) => ({
/** The voice actors of the character */
withVoiceActor(fn: Fn<typeof Staff>) {
query[0] = query[0].set({ subField: "voiceActor", level, hasSubField: true })
@ -32,7 +32,7 @@ export const StaffRoleType = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const StaffEdge = ({ query, level }: Fields<UpdateOperation>) => ({
const StaffEdge = ({ query, level }: Fields<OperationParser>) => ({
withNode(fn?: Fn<typeof Staff>) {
query[0] = query[0].set({ subField: "node", level, hasSubField: true })
let tmpQuery
@ -58,7 +58,7 @@ const StaffEdge = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const StaffConnection = ({ query, level }: Fields<UpdateOperation>) => ({
export const StaffConnection = ({ query, level }: Fields<OperationParser>) => ({
withEdges(fn?: Fn<typeof StaffEdge>) {
query[0] = query[0].set({ subField: "edges", level, hasSubField: true })
let tmpQuery
@ -85,7 +85,7 @@ export const StaffConnection = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const StaffName = ({ query, level }: Fields<UpdateOperation>) => ({
const StaffName = ({ query, level }: Fields<OperationParser>) => ({
/** The person's given name */
withFirst() {
query[0] = query[0].set({ subField: "first", level })
@ -123,7 +123,7 @@ const StaffName = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const StaffImage = ({ query, level }: Fields<UpdateOperation>) => ({
const StaffImage = ({ query, level }: Fields<OperationParser>) => ({
/** The person's image of media at its largest size */
withLarge() {
query[0] = query[0].set({ subField: "large", level })
@ -136,7 +136,7 @@ const StaffImage = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const Staff = ({ query, level }: Fields<UpdateOperation>) => ({
export const Staff = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the staff member */
withId() {
query[0] = query[0].set({ subField: "id", level })

View File

@ -1,10 +1,10 @@
import { StudioMediaArgs } from "../types/generated/graphql.ts"
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { PageInfo } from "./Page.ts"
import { MediaConnection } from "./Media.ts"
import { AtLeastOne } from "../types/AtLeastOne.ts"
const StudioEdge = ({ query, level }: Fields<UpdateOperation>) => ({
const StudioEdge = ({ query, level }: Fields<OperationParser>) => ({
withNode(fn?: Fn<typeof Studio>) {
query[0] = query[0].set({ subField: "node", level, hasSubField: true })
let tmpQuery
@ -30,7 +30,7 @@ const StudioEdge = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const StudioConnection = ({ query, level }: Fields<UpdateOperation>) => ({
export const StudioConnection = ({ query, level }: Fields<OperationParser>) => ({
withEdges(fn?: Fn<typeof StudioEdge>) {
query[0] = query[0].set({ subField: "edges", level, hasSubField: true })
let tmpQuery
@ -57,7 +57,7 @@ export const StudioConnection = ({ query, level }: Fields<UpdateOperation>) => (
},
})
export const Studio = ({ query, level }: Fields<UpdateOperation>) => ({
export const Studio = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the studio */
withId() {
query[0] = query[0].set({ subField: "id", level })

View File

@ -1,8 +1,8 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { Media } from "./Media.ts"
import { User } from "./User.ts"
const ThreadCategory = ({ query, level }: Fields<UpdateOperation>) => ({
const ThreadCategory = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the category */
withId() {
query[0] = query[0].set({ subField: "id", level })
@ -15,7 +15,7 @@ const ThreadCategory = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const Thread = ({ query, level }: Fields<UpdateOperation>) => ({
export const Thread = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the thread */
withId() {
query[0] = query[0].set({ subField: "id", level })

View File

@ -1,8 +1,8 @@
import { User } from "./User.ts"
import { Thread } from "./Thread.ts"
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
export const ThreadComment = ({ query, level }: Fields<UpdateOperation>) => ({
export const ThreadComment = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the comment */
withId() {
query[0] = query[0].set({ subField: "id", level })

View File

@ -1,9 +1,9 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import { Favourites } from "./Favourites.ts"
import { MediaListOptions } from "./MediaList.ts"
import { UserStatisticTypes } from "./UserStatistics.ts"
const NotificationOption = ({ query, level }: Fields<UpdateOperation>) => ({
const NotificationOption = ({ query, level }: Fields<OperationParser>) => ({
withEnabled() {
query[0] = query[0].set({ subField: "enabled", level })
return this
@ -14,7 +14,7 @@ const NotificationOption = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const ListActivityOption = ({ query, level }: Fields<UpdateOperation>) => ({
const ListActivityOption = ({ query, level }: Fields<OperationParser>) => ({
withDisabled() {
query[0] = query[0].set({ subField: "disabled", level })
return this
@ -25,7 +25,7 @@ const ListActivityOption = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const UserPreviousName = ({ query, level }: Fields<UpdateOperation>) => ({
export const UserPreviousName = ({ query, level }: Fields<OperationParser>) => ({
/** A previous name of the user. */
withName() {
query[0] = query[0].set({ subField: "name", level })
@ -43,7 +43,7 @@ export const UserPreviousName = ({ query, level }: Fields<UpdateOperation>) => (
},
})
export const UserOptions = ({ query, level }: Fields<UpdateOperation>) => ({
export const UserOptions = ({ query, level }: Fields<OperationParser>) => ({
/** The language the user wants to see media titles in */
withTitleLanguage() {
query[0] = query[0].set({ subField: "titleLanguage", level })
@ -115,7 +115,7 @@ export const UserOptions = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const UserAvatar = ({ query, level }: Fields<UpdateOperation>) => ({
export const UserAvatar = ({ query, level }: Fields<OperationParser>) => ({
/** The avatar of user at its largest size */
withLarge() {
query[0] = query[0].set({ subField: "large", level })
@ -128,7 +128,7 @@ export const UserAvatar = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const User = ({ query, level }: Fields<UpdateOperation>) => ({
export const User = ({ query, level }: Fields<OperationParser>) => ({
/** The id of the user */
withId() {
query[0] = query[0].set({ subField: "id", level })

View File

@ -1,4 +1,4 @@
import { Fields, Fn, UpdateOperation } from "../types/Anilist.ts"
import { Fields, Fn, OperationParser } from "../types/Anilist.ts"
import {
UserStatisticsCountriesArgs,
UserStatisticsFormatsArgs,
@ -16,7 +16,7 @@ import {
import { Staff } from "./Staff.ts"
import { Studio } from "./Studio.ts"
const UserFormatStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
const UserFormatStatistics = ({ query, level }: Fields<OperationParser>) => ({
withCount() {
query[0] = query[0].set({ subField: "count", level })
return this
@ -43,7 +43,7 @@ const UserFormatStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const UserStatusStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
const UserStatusStatistics = ({ query, level }: Fields<OperationParser>) => ({
withCount() {
query[0] = query[0].set({ subField: "count", level })
return this
@ -70,7 +70,7 @@ const UserStatusStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const UserScoreStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
const UserScoreStatistics = ({ query, level }: Fields<OperationParser>) => ({
withCount() {
query[0] = query[0].set({ subField: "count", level })
return this
@ -97,7 +97,7 @@ const UserScoreStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const UserLengthStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
const UserLengthStatistics = ({ query, level }: Fields<OperationParser>) => ({
withCount() {
query[0] = query[0].set({ subField: "count", level })
return this
@ -124,7 +124,7 @@ const UserLengthStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const UserReleaseYearStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
const UserReleaseYearStatistics = ({ query, level }: Fields<OperationParser>) => ({
withCount() {
query[0] = query[0].set({ subField: "count", level })
return this
@ -151,7 +151,7 @@ const UserReleaseYearStatistics = ({ query, level }: Fields<UpdateOperation>) =>
},
})
const UserStartYearStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
const UserStartYearStatistics = ({ query, level }: Fields<OperationParser>) => ({
withCount() {
query[0] = query[0].set({ subField: "count", level })
return this
@ -178,7 +178,7 @@ const UserStartYearStatistics = ({ query, level }: Fields<UpdateOperation>) => (
},
})
const UserGenreStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
const UserGenreStatistics = ({ query, level }: Fields<OperationParser>) => ({
withCount() {
query[0] = query[0].set({ subField: "count", level })
return this
@ -205,7 +205,7 @@ const UserGenreStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const UserTagStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
const UserTagStatistics = ({ query, level }: Fields<OperationParser>) => ({
withCount() {
query[0] = query[0].set({ subField: "count", level })
return this
@ -232,7 +232,7 @@ const UserTagStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const UserCountryStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
const UserCountryStatistics = ({ query, level }: Fields<OperationParser>) => ({
withCount() {
query[0] = query[0].set({ subField: "count", level })
return this
@ -259,7 +259,7 @@ const UserCountryStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const UserVoiceActorStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
const UserVoiceActorStatistics = ({ query, level }: Fields<OperationParser>) => ({
withCount() {
query[0] = query[0].set({ subField: "count", level })
return this
@ -294,7 +294,7 @@ const UserVoiceActorStatistics = ({ query, level }: Fields<UpdateOperation>) =>
},
})
const UserStaffStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
const UserStaffStatistics = ({ query, level }: Fields<OperationParser>) => ({
withCount() {
query[0] = query[0].set({ subField: "count", level })
return this
@ -325,7 +325,7 @@ const UserStaffStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
const UserStudioStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
const UserStudioStatistics = ({ query, level }: Fields<OperationParser>) => ({
withCount() {
query[0] = query[0].set({ subField: "count", level })
return this
@ -356,7 +356,7 @@ const UserStudioStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const UserStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
export const UserStatistics = ({ query, level }: Fields<OperationParser>) => ({
withCount() {
query[0] = query[0].set({ subField: "count", level })
return this
@ -479,7 +479,7 @@ export const UserStatistics = ({ query, level }: Fields<UpdateOperation>) => ({
},
})
export const UserStatisticTypes = ({ query, level }: Fields<UpdateOperation>) => ({
export const UserStatisticTypes = ({ query, level }: Fields<OperationParser>) => ({
withAnime(fn: Fn<typeof UserStatistics>) {
query[0] = query[0].set({ subField: "anime", level, hasSubField: true })
let tmpQuery

View File

@ -11,22 +11,20 @@ export type Fn<F extends (...args: any) => any> = (
export type Variables = { [arg: string]: string | number | boolean | string[] }
export type UpdateOperation = {
(opts: {
query?: string
variables?: any
fields: string[]
level: number
hasSubField?: true
isUnion?: true
}): {
get(): string
set(
{ subField, variables, hasSubField, level }:
& Omit<Parameters<UpdateOperation>[0], "query" | "fields">
& { subField: string },
): ReturnType<UpdateOperation>
}
export type OperationParser = (opts: {
query?: string
variables?: any
fields: string[]
level: number
hasSubField?: true
isUnion?: true
}) => {
get(): string
set(
{ subField, variables, hasSubField, level }:
& Omit<Parameters<OperationParser>[0], "query" | "fields">
& { subField: string },
): ReturnType<OperationParser>
}
export type Authorization = {