wakitsu
Version:
Hobby project for managing anime watch list on Kitsu through CLI
108 lines • 2.98 kB
JavaScript
import z from 'zod';
export const UserDataRespSchema = z.object({
data: z.array(z.object({
id: z.string(),
attributes: z.object({
name: z.string(),
about: z.string(),
}),
})),
included: z.array(z.object({
attributes: z.object({
statsData: z.object({
time: z.number().optional(),
completed: z.number().optional(),
}),
}),
})),
});
export const KitsuCacheSchema = z.object({
libID: z.string(),
jpTitle: z.string(),
enTitle: z.string().nullable(),
synonyms: z.array(z.string()),
epCount: z.number(),
epProgress: z.number(),
slug: z.string(),
});
export const zodKitsuConfigData = {
id: z.string(),
urls: z.object({
profile: z.string(),
library: z.string(),
}),
stats: z.object({
secondsSpentWatching: z.number(),
completedSeries: z.number(),
}),
about: z.string(),
username: z.string(),
access_token: z.string(),
refresh_token: z.string(),
token_expiration: z.number(),
fileBindings: z.array(z.object({
id: z.string(),
name: z.string(),
})),
cache: z.array(KitsuCacheSchema),
};
export const KitsuDataSchema = z.object(zodKitsuConfigData);
export const LibraryEntriesSchema = z.object({
data: z.array(z.object({
id: z.string(),
attributes: z.object({
progress: z.number(),
ratingTwenty: z.number().nullable(),
}),
})),
included: z.array(z.object({
id: z.string(),
attributes: z.object({
episodeCount: z.number().nullable(),
averageRating: z.string().nullable(),
synopsis: z.string(),
}),
})),
});
const KitsuAnimeDataSchema = z.object({
id: z.string(),
attributes: z.object({
episodeCount: z.number().nullable(),
slug: z.string(),
titles: z.object({
en: z.string().nullable().default(''),
en_jp: z.string().default(''),
en_us: z.string().default(''),
}),
averageRating: z.string().nullable(),
canonicalTitle: z.string(),
abbreviatedTitles: z.array(z.string()),
synopsis: z.string().nullable(),
}),
});
export const KitsuAnimeEntriesSchema = z.object({
data: z.array(KitsuAnimeDataSchema),
});
export const LibraryInfoSchema = z.object({
data: z.array(z.object({
id: z.string(),
attributes: z.object({
progress: z.number(),
}),
})),
included: z.array(KitsuAnimeDataSchema),
});
export const LibraryPatchRespSchema = z.object({
data: z.object({
id: z.string(),
attributes: z.object({
progress: z.number(),
}),
}),
included: z.array(z.object({
attributes: z.object({
episodeCount: z.number().nullable(),
}),
})),
});
//# sourceMappingURL=kitsu-schemas.js.map