diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4f60ee28..d6e0d0c8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,7 @@ jobs: deno-version: v2.3.0 - name: The Sacred Assembly aka Install Dependencies - run: "deno task install" + run: 'deno task install' - name: The Scroll's Scrutiny aka Validate OpenAPI if: ${{ diff --git a/projects/api/deno.json b/projects/api/deno.json index 7886d977..10c3be2b 100644 --- a/projects/api/deno.json +++ b/projects/api/deno.json @@ -18,4 +18,4 @@ "tasks": { "test": "deno test --unstable --allow-all" } -} \ No newline at end of file +} diff --git a/projects/api/src/contracts/_internal/request/bulkMediaRequestSchema.ts b/projects/api/src/contracts/_internal/request/bulkMediaRequestSchema.ts index 13b41cce..b9e8ee29 100644 --- a/projects/api/src/contracts/_internal/request/bulkMediaRequestSchema.ts +++ b/projects/api/src/contracts/_internal/request/bulkMediaRequestSchema.ts @@ -7,7 +7,7 @@ import { } from './idsRequestSchema.ts'; const watchedAtSchema = z.object({ - watched_at: z.string().datetime().optional(), + watched_at: z.string().datetime().nullish(), }); const watchWithTileAndYearSchema = z.object({ @@ -26,7 +26,7 @@ const watchWithSeasonsSchema = z }).merge(watchedAtSchema), ), }).merge(watchedAtSchema), - ).optional(), + ).nullish(), }).merge(watchedAtSchema); const addMovieToHistorySchema = z @@ -63,8 +63,8 @@ const addEpisodeToHistorySchema = z }).merge(watchedAtSchema); export const bulkMediaRequestSchema = z.object({ - movies: z.array(addMovieToHistorySchema).optional(), - shows: z.array(addShowToHistorySchema).optional(), - seasons: z.array(addSeasonToHistorySchema).optional(), - episodes: z.array(addEpisodeToHistorySchema).optional(), + movies: z.array(addMovieToHistorySchema).nullish(), + shows: z.array(addShowToHistorySchema).nullish(), + seasons: z.array(addSeasonToHistorySchema).nullish(), + episodes: z.array(addEpisodeToHistorySchema).nullish(), }); diff --git a/projects/api/src/contracts/_internal/request/commentsSortParamsSchema.ts b/projects/api/src/contracts/_internal/request/commentsSortParamsSchema.ts index aee872ca..3b92fd1b 100644 --- a/projects/api/src/contracts/_internal/request/commentsSortParamsSchema.ts +++ b/projects/api/src/contracts/_internal/request/commentsSortParamsSchema.ts @@ -9,5 +9,5 @@ export const commentsSortParamsSchema = z.object({ 'highest', 'lowest', 'plays', - ]).optional(), + ]).nullish(), }); diff --git a/projects/api/src/contracts/_internal/request/extendedMediaQuerySchema.ts b/projects/api/src/contracts/_internal/request/extendedMediaQuerySchema.ts index 525ad879..6f9a23b5 100644 --- a/projects/api/src/contracts/_internal/request/extendedMediaQuerySchema.ts +++ b/projects/api/src/contracts/_internal/request/extendedMediaQuerySchema.ts @@ -1,3 +1,5 @@ import { extendedQuerySchemaFactory } from './extendedQuerySchemaFactory.ts'; -export const extendedMediaQuerySchema = extendedQuerySchemaFactory<['full', 'images', 'colors', 'streaming_ids']>() \ No newline at end of file +export const extendedMediaQuerySchema = extendedQuerySchemaFactory< + ['full', 'images', 'colors', 'streaming_ids'] +>(); diff --git a/projects/api/src/contracts/_internal/request/extendedPeopleQuerySchema.ts b/projects/api/src/contracts/_internal/request/extendedPeopleQuerySchema.ts index cb4d8638..86407719 100644 --- a/projects/api/src/contracts/_internal/request/extendedPeopleQuerySchema.ts +++ b/projects/api/src/contracts/_internal/request/extendedPeopleQuerySchema.ts @@ -1,3 +1,5 @@ import { extendedQuerySchemaFactory } from './extendedQuerySchemaFactory.ts'; -export const extendedPeopleQuerySchema = extendedQuerySchemaFactory<['full', 'images']>(); +export const extendedPeopleQuerySchema = extendedQuerySchemaFactory< + ['full', 'images'] +>(); diff --git a/projects/api/src/contracts/_internal/request/extendedProfileQuerySchema.ts b/projects/api/src/contracts/_internal/request/extendedProfileQuerySchema.ts index 3ae3c5d5..ddf4ba3b 100644 --- a/projects/api/src/contracts/_internal/request/extendedProfileQuerySchema.ts +++ b/projects/api/src/contracts/_internal/request/extendedProfileQuerySchema.ts @@ -1,3 +1,5 @@ import { extendedQuerySchemaFactory } from './extendedQuerySchemaFactory.ts'; -export const extendedProfileQuerySchema = extendedQuerySchemaFactory<['full', 'images', 'vip']>(); +export const extendedProfileQuerySchema = extendedQuerySchemaFactory< + ['full', 'images', 'vip'] +>(); diff --git a/projects/api/src/contracts/_internal/request/extendedQuerySchemaFactory.ts b/projects/api/src/contracts/_internal/request/extendedQuerySchemaFactory.ts index 10d32168..25fa1d40 100644 --- a/projects/api/src/contracts/_internal/request/extendedQuerySchemaFactory.ts +++ b/projects/api/src/contracts/_internal/request/extendedQuerySchemaFactory.ts @@ -5,7 +5,7 @@ export const extendedQuerySchemaFactory = () => z.object({ extended: z .custom>() - .optional() + .nullish() .openapi({ description: 'Extended information to include in the response.', }), diff --git a/projects/api/src/contracts/_internal/request/idsRequestSchema.ts b/projects/api/src/contracts/_internal/request/idsRequestSchema.ts index a9adab00..ecd9ab19 100644 --- a/projects/api/src/contracts/_internal/request/idsRequestSchema.ts +++ b/projects/api/src/contracts/_internal/request/idsRequestSchema.ts @@ -1,11 +1,11 @@ import { z } from '../z.ts'; const allMediaIdsSchema = z.object({ - trakt: z.number().int().optional().openapi({ description: 'Trakt ID' }), - slug: z.string().optional().openapi({ description: 'Slug' }), - imdb: z.string().optional().openapi({ description: 'IMDb ID' }), - tmdb: z.number().int().optional().openapi({ description: 'TMDb ID' }), - tvdb: z.number().int().optional().openapi({ description: 'TVDb ID' }), + trakt: z.number().int().nullish().openapi({ description: 'Trakt ID' }), + slug: z.string().nullish().openapi({ description: 'Slug' }), + imdb: z.string().nullish().openapi({ description: 'IMDb ID' }), + tmdb: z.number().int().nullish().openapi({ description: 'TMDb ID' }), + tvdb: z.number().int().nullish().openapi({ description: 'TVDb ID' }), }); const showMediaIdsSchema = allMediaIdsSchema; diff --git a/projects/api/src/contracts/_internal/request/ignoreQuerySchema.ts b/projects/api/src/contracts/_internal/request/ignoreQuerySchema.ts index aa82f0e6..a066a2fc 100644 --- a/projects/api/src/contracts/_internal/request/ignoreQuerySchema.ts +++ b/projects/api/src/contracts/_internal/request/ignoreQuerySchema.ts @@ -1,13 +1,13 @@ import { z } from '../z.ts'; export const ignoreQuerySchema = z.object({ - ignore_watched: z.boolean().optional().openapi({ + ignore_watched: z.boolean().nullish().openapi({ description: 'Ignore watched items.', }), - ignore_collected: z.boolean().optional().openapi({ + ignore_collected: z.boolean().nullish().openapi({ description: 'Ignore collected items.', }), - ignore_watchlisted: z.boolean().optional().openapi({ + ignore_watchlisted: z.boolean().nullish().openapi({ description: 'Ignore watchlisted items.', }), }); diff --git a/projects/api/src/contracts/_internal/request/limitlessQuerySchema.ts b/projects/api/src/contracts/_internal/request/limitlessQuerySchema.ts index b8e73ea6..68b6c62b 100644 --- a/projects/api/src/contracts/_internal/request/limitlessQuerySchema.ts +++ b/projects/api/src/contracts/_internal/request/limitlessQuerySchema.ts @@ -4,7 +4,7 @@ export const limitlessQuerySchema = z.object({ limit: z.number() .int() .or(z.literal('all')) - .optional() + .nullish() .openapi({ description: `The number of items per page, can be a number or the value all`, type: 'string', diff --git a/projects/api/src/contracts/_internal/request/linksQuerySchema.ts b/projects/api/src/contracts/_internal/request/linksQuerySchema.ts index eb4cb2fb..3a40a48b 100644 --- a/projects/api/src/contracts/_internal/request/linksQuerySchema.ts +++ b/projects/api/src/contracts/_internal/request/linksQuerySchema.ts @@ -2,5 +2,5 @@ import type { CombinationsFrom } from '../../../types/CombinationsFrom.ts'; import { z } from '../z.ts'; export const linksQuerySchema = z.object({ - links: z.custom>().optional(), + links: z.custom>().nullish(), }); diff --git a/projects/api/src/contracts/_internal/request/mediaFilterParamsSchema.ts b/projects/api/src/contracts/_internal/request/mediaFilterParamsSchema.ts index e9ceb69c..8f6d2275 100644 --- a/projects/api/src/contracts/_internal/request/mediaFilterParamsSchema.ts +++ b/projects/api/src/contracts/_internal/request/mediaFilterParamsSchema.ts @@ -1,8 +1,8 @@ import { z } from '../z.ts'; export const mediaFilterParamsSchema = z.object({ - watchnow: z.enum(['favorites', 'any']).optional(), - genres: z.string().optional(), - years: z.string().optional(), - ratings: z.string().optional(), + watchnow: z.enum(['favorites', 'any']).nullish(), + genres: z.string().nullish(), + years: z.string().nullish(), + ratings: z.string().nullish(), }); diff --git a/projects/api/src/contracts/_internal/request/pageQuerySchema.ts b/projects/api/src/contracts/_internal/request/pageQuerySchema.ts index addbc593..cade1ee4 100644 --- a/projects/api/src/contracts/_internal/request/pageQuerySchema.ts +++ b/projects/api/src/contracts/_internal/request/pageQuerySchema.ts @@ -1,10 +1,10 @@ import { z } from '../z.ts'; export const pageQuerySchema = z.object({ - page: z.number().int().optional().openapi({ + page: z.number().int().nullish().openapi({ description: 'The page number to retrieve', }), - limit: z.number().int().optional().openapi({ + limit: z.number().int().nullish().openapi({ description: 'The number of items per page', }), }); diff --git a/projects/api/src/contracts/_internal/request/sortQuerySchema.ts b/projects/api/src/contracts/_internal/request/sortQuerySchema.ts index 8682e0eb..9cf48054 100644 --- a/projects/api/src/contracts/_internal/request/sortQuerySchema.ts +++ b/projects/api/src/contracts/_internal/request/sortQuerySchema.ts @@ -2,10 +2,10 @@ import { sortDirectionSchema } from '../response/sortDirectionSchema.ts'; import { z } from '../z.ts'; export const sortQuerySchema = z.object({ - sort_by: z.string().optional().openapi({ + sort_by: z.string().nullish().openapi({ description: 'The field to sort by', }), - sort_how: sortDirectionSchema.optional().openapi({ + sort_how: sortDirectionSchema.nullish().openapi({ description: 'The direction to sort in', enum: ['asc', 'desc'], }), diff --git a/projects/api/src/contracts/_internal/request/statsQuerySchema.ts b/projects/api/src/contracts/_internal/request/statsQuerySchema.ts index 263e2dd1..49c56103 100644 --- a/projects/api/src/contracts/_internal/request/statsQuerySchema.ts +++ b/projects/api/src/contracts/_internal/request/statsQuerySchema.ts @@ -1,7 +1,7 @@ import { z } from '../z.ts'; export const statsQuerySchema = z.object({ - include_stats: z.boolean().optional().openapi({ + include_stats: z.boolean().nullish().openapi({ description: 'Whether to include stats in the response', }), }); diff --git a/projects/api/src/contracts/_internal/response/commentResponseSchema.ts b/projects/api/src/contracts/_internal/response/commentResponseSchema.ts index 8a6c02aa..10d171a7 100644 --- a/projects/api/src/contracts/_internal/response/commentResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/commentResponseSchema.ts @@ -11,9 +11,9 @@ export const commentResponseSchema = z.object({ review: z.boolean(), replies: z.number().int(), likes: z.number().int(), - user_rating: z.number().int().nullable(), + user_rating: z.number().int().nullish(), user_stats: z.object({ - rating: z.number().int().nullable(), + rating: z.number().int().nullish(), play_count: z.number().int(), completed_count: z.number().int(), }), diff --git a/projects/api/src/contracts/_internal/response/episodeIdsResponseSchema.ts b/projects/api/src/contracts/_internal/response/episodeIdsResponseSchema.ts index 89a159b0..5b3ba259 100644 --- a/projects/api/src/contracts/_internal/response/episodeIdsResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/episodeIdsResponseSchema.ts @@ -3,11 +3,11 @@ import { streamingIdsResponseSchema } from './streamingIdsResponseSchema.ts'; export const episodeIdsResponseSchema = z.object({ trakt: z.number().int(), - tvdb: z.number().int().optional(), - imdb: z.string().nullable(), - tmdb: z.number().int().optional(), + tvdb: z.number().int().nullish(), + imdb: z.string().nullish(), + tmdb: z.number().int().nullish(), /** * Available if requesting extended `streaming_ids`. */ - plex: streamingIdsResponseSchema.optional(), + plex: streamingIdsResponseSchema.nullish(), }); diff --git a/projects/api/src/contracts/_internal/response/episodeResponseSchema.ts b/projects/api/src/contracts/_internal/response/episodeResponseSchema.ts index 8a8a122d..36104643 100644 --- a/projects/api/src/contracts/_internal/response/episodeResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/episodeResponseSchema.ts @@ -6,11 +6,11 @@ export const episodeResponseSchema = z.object({ number: z.number().int(), title: z.string(), first_aired: z.string(), - number_abs: z.number().int().nullable(), + number_abs: z.number().int().nullish(), /*** * Available if requesting extended `full`. */ - rating: float(z.number()).optional(), + rating: float(z.number()).nullish(), /*** * Available if requesting extended `full`. */ @@ -34,7 +34,7 @@ export const episodeResponseSchema = z.object({ /*** * Available if requesting extended `full`. */ - overview: z.string().nullable(), + overview: z.string().nullish(), /*** * Available if requesting extended `full`. */ @@ -48,14 +48,14 @@ export const episodeResponseSchema = z.object({ 'season_finale', 'series_finale', ]) - .optional(), + .nullish(), ids: episodeIdsResponseSchema, /*** * Available if requesting extended `images`. */ images: z .object({ screenshot: z.array(z.string()) }) - .optional(), + .nullish(), /*** * Available if requesting extended `full`. */ diff --git a/projects/api/src/contracts/_internal/response/episodeTranslationResponseSchema.ts b/projects/api/src/contracts/_internal/response/episodeTranslationResponseSchema.ts index a2d3a679..c3da674d 100644 --- a/projects/api/src/contracts/_internal/response/episodeTranslationResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/episodeTranslationResponseSchema.ts @@ -2,8 +2,8 @@ import { z } from '../z.ts'; export const episodeTranslationResponseSchema = z.array( z.object({ - title: z.string().nullable(), - overview: z.string().nullable(), + title: z.string().nullish(), + overview: z.string().nullish(), language: z.string(), country: z.string(), }), diff --git a/projects/api/src/contracts/_internal/response/listMetadataResponseSchema.ts b/projects/api/src/contracts/_internal/response/listMetadataResponseSchema.ts index fb1e9b8f..518796d7 100644 --- a/projects/api/src/contracts/_internal/response/listMetadataResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/listMetadataResponseSchema.ts @@ -4,5 +4,5 @@ export const listMetadataResponseSchema = z.object({ rank: z.number().int(), id: z.number().int(), listed_at: z.string().datetime(), - notes: z.string().nullable(), + notes: z.string().nullish(), }); diff --git a/projects/api/src/contracts/_internal/response/movieIdsResponseSchema.ts b/projects/api/src/contracts/_internal/response/movieIdsResponseSchema.ts index dff2aaf2..c7b2941d 100644 --- a/projects/api/src/contracts/_internal/response/movieIdsResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/movieIdsResponseSchema.ts @@ -4,10 +4,10 @@ import { streamingIdsResponseSchema } from './streamingIdsResponseSchema.ts'; export const movieIdsResponseSchema = z.object({ trakt: z.number().int(), slug: z.string(), - imdb: z.string().nullable(), - tmdb: z.number().int().optional(), + imdb: z.string().nullish(), + tmdb: z.number().int().nullish(), /** * Available if requesting extended `streaming_ids`. */ - plex: streamingIdsResponseSchema.optional(), + plex: streamingIdsResponseSchema.nullish(), }); diff --git a/projects/api/src/contracts/_internal/response/movieResponseSchema.ts b/projects/api/src/contracts/_internal/response/movieResponseSchema.ts index ab1a7ea8..95ffc2cd 100644 --- a/projects/api/src/contracts/_internal/response/movieResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/movieResponseSchema.ts @@ -8,81 +8,81 @@ import { statusResponseSchema } from './statusResponseSchema.ts'; export const movieResponseSchema = z.object({ title: z.string(), - year: z.number().int().optional(), + year: z.number().int().nullish(), ids: movieIdsResponseSchema, /*** * Available if requesting extended `images`. */ - images: imagesResponseSchema.optional(), + images: imagesResponseSchema.nullish(), /*** * Available if requesting extended `full`. */ - tagline: z.string().optional(), + tagline: z.string().nullish(), /*** * Available if requesting extended `full`. */ - overview: z.string().optional(), + overview: z.string().nullish(), /*** * Available if requesting extended `full`. */ - released: z.string().optional(), + released: z.string().nullish(), /*** * Available if requesting extended `full`. */ - runtime: z.number().int().optional(), + runtime: z.number().int().nullish(), /*** * Available if requesting extended `full`. */ - country: z.string().optional(), + country: z.string().nullish(), /*** * Available if requesting extended `full`. */ - status: statusResponseSchema.optional(), + status: statusResponseSchema.nullish(), /*** * Available if requesting extended `full`. */ - rating: float(z.number()).optional(), + rating: float(z.number()).nullish(), /*** * Available if requesting extended `full`. */ - votes: z.number().int().optional(), + votes: z.number().int().nullish(), /*** * Available if requesting extended `full`. */ - comment_count: z.number().int().optional(), + comment_count: z.number().int().nullish(), /*** * Available if requesting extended `full`. */ - trailer: z.string().optional(), + trailer: z.string().nullish(), /*** * Available if requesting extended `full`. */ - homepage: z.string().optional(), + homepage: z.string().nullish(), /*** * Available if requesting extended `full`. */ - updated_at: z.string().datetime().optional(), + updated_at: z.string().datetime().nullish(), /*** * Available if requesting extended `full`. */ - language: z.string().optional(), + language: z.string().nullish(), /*** * Available if requesting extended `full`. */ - languages: z.array(z.string()).optional(), + languages: z.array(z.string()).nullish(), /*** * Available if requesting extended `full`. */ - available_translations: z.array(z.string()).optional(), + available_translations: z.array(z.string()).nullish(), /*** * Available if requesting extended `full`. */ - genres: z.array(genreEnumSchema).optional(), + genres: z.array(genreEnumSchema).nullish(), /*** * Available if requesting extended `full`. */ - certification: movieCertificationResponseSchema.optional(), + certification: movieCertificationResponseSchema.nullish(), /*** * Available if requesting extended `full`. */ @@ -90,5 +90,5 @@ export const movieResponseSchema = z.object({ /*** * Available if requesting extended `colors`. */ - colors: mediaColorsResponseSchema.optional(), + colors: mediaColorsResponseSchema.nullish(), }); diff --git a/projects/api/src/contracts/_internal/response/peopleResponseSchema.ts b/projects/api/src/contracts/_internal/response/peopleResponseSchema.ts index 692b0507..1019d776 100644 --- a/projects/api/src/contracts/_internal/response/peopleResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/peopleResponseSchema.ts @@ -12,39 +12,39 @@ const personSchema = z.object({ ids: z.object({ trakt: z.number().int(), slug: z.string(), - imdb: z.string().nullable(), - tmdb: z.number().int().nullable(), + imdb: z.string().nullish(), + tmdb: z.number().int().nullish(), }), /*** * Available if requesting extended `images`. */ images: headshotSchema.extend({ fanart: z.array(z.string()), - }).optional(), + }).nullish(), }); export const castSchema = z.object({ - episode_count: z.number().int().optional(), + episode_count: z.number().int().nullish(), person: personSchema, /*** * Available if requesting extended `images`. */ - images: headshotSchema.optional(), + images: headshotSchema.nullish(), }).merge(characterResponseSchema); export const crewSchema = z.object({ person: personSchema, - episode_count: z.number().int().optional(), + episode_count: z.number().int().nullish(), /*** * Available if requesting extended `images`. */ - images: headshotSchema.optional(), + images: headshotSchema.nullish(), }).merge(jobsResponseSchema); export const peopleResponseSchema = z.object({ - cast: z.array(castSchema).optional(), + cast: z.array(castSchema).nullish(), crew: z.record( crewPositionResponseSchema, z.array(crewSchema), - ).optional(), + ).nullish(), }); diff --git a/projects/api/src/contracts/_internal/response/profileResponseSchema.ts b/projects/api/src/contracts/_internal/response/profileResponseSchema.ts index b23bd950..9be9c8c8 100644 --- a/projects/api/src/contracts/_internal/response/profileResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/profileResponseSchema.ts @@ -5,48 +5,48 @@ export const profileResponseSchema = z.object({ username: z.string(), private: z.boolean(), deleted: z.boolean(), - name: z.string().nullable(), - vip: z.boolean().nullable(), - vip_ep: z.boolean().nullable(), - director: z.boolean().nullable(), + name: z.string().nullish(), + vip: z.boolean().nullish(), + vip_ep: z.boolean().nullish(), + director: z.boolean().nullish(), ids: z.object({ - slug: z.string().nullable(), + slug: z.string().nullish(), trakt: z.number().int(), }), /*** * Available if requesting extended `full`. */ - joined_at: z.string().datetime().optional(), + joined_at: z.string().datetime().nullish(), /*** * Available if requesting extended `full`. */ - location: z.string().optional(), + location: z.string().nullish(), /*** * Available if requesting extended `full`. */ - about: z.string().optional(), + about: z.string().nullish(), /*** * Available if requesting extended `full`. */ - gender: z.string().optional(), + gender: z.string().nullish(), /*** * Available if requesting extended `full`. */ - age: z.number().int().or(z.null()).optional(), + age: z.number().int().or(z.null()).nullish(), /*** * Available if requesting extended `images`. */ - images: z.object({ avatar: z.object({ full: z.string() }) }).optional(), + images: z.object({ avatar: z.object({ full: z.string() }) }).nullish(), /*** * Available if requesting extended `vip`. */ - vip_og: z.boolean().optional(), + vip_og: z.boolean().nullish(), /*** * Available if requesting extended `vip`. */ - vip_years: z.number().int().optional(), + vip_years: z.number().int().nullish(), /*** * Available if requesting extended `vip`. */ - vip_cover_image: z.string().optional(), + vip_cover_image: z.string().nullish(), }); diff --git a/projects/api/src/contracts/_internal/response/progressResponseSchema.ts b/projects/api/src/contracts/_internal/response/progressResponseSchema.ts index b6914bc7..c29cf0e5 100644 --- a/projects/api/src/contracts/_internal/response/progressResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/progressResponseSchema.ts @@ -12,5 +12,5 @@ export const progressResponseSchema = z.object({ /*** * Available if requesting include_stats `true`. */ - stats: statsResponseSchema.optional(), + stats: statsResponseSchema.nullish(), }); diff --git a/projects/api/src/contracts/_internal/response/ratingsResponseSchema.ts b/projects/api/src/contracts/_internal/response/ratingsResponseSchema.ts index 963d38c0..c5666d32 100644 --- a/projects/api/src/contracts/_internal/response/ratingsResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/ratingsResponseSchema.ts @@ -2,8 +2,8 @@ import { float, z } from '../z.ts'; import { distributionResponseSchema } from './distributionResponseSchema.ts'; const externalRatingsResponseSchema = z.object({ - rating: float(z.number()).nullable(), - link: z.string().nullable(), + rating: float(z.number()).nullish(), + link: z.string().nullish(), }); export const ratingsResponseSchema = z.object({ @@ -16,27 +16,27 @@ export const ratingsResponseSchema = z.object({ * Available if requesting extended `all`. */ tmdb: externalRatingsResponseSchema.extend({ - votes: z.number().int().nullable(), - }).optional(), + votes: z.number().int().nullish(), + }).nullish(), /*** * Available if requesting extended `all`. */ imdb: externalRatingsResponseSchema.extend({ - votes: z.number().int().nullable(), - }).optional(), + votes: z.number().int().nullish(), + }).nullish(), /*** * Available if requesting extended `all`. */ metascore: z.object({ - rating: z.number().int().nullable(), - link: z.string().nullable(), + rating: z.number().int().nullish(), + link: z.string().nullish(), }), /*** * Available if requesting extended `all`. */ rotten_tomatoes: externalRatingsResponseSchema.extend({ - user_rating: z.number().int().nullable(), - state: z.string().nullable(), - user_state: z.string().nullable(), - }).optional(), + user_rating: z.number().int().nullish(), + state: z.string().nullish(), + user_state: z.string().nullish(), + }).nullish(), }); diff --git a/projects/api/src/contracts/_internal/response/seasonIdsResponseSchema.ts b/projects/api/src/contracts/_internal/response/seasonIdsResponseSchema.ts index 069a526e..ca0bcb14 100644 --- a/projects/api/src/contracts/_internal/response/seasonIdsResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/seasonIdsResponseSchema.ts @@ -2,6 +2,6 @@ import { z } from '../z.ts'; export const seasonIdsResponseSchema = z.object({ trakt: z.number().int(), - tvdb: z.number().int().nullable(), + tvdb: z.number().int().nullish(), tmdb: z.number().int(), }); diff --git a/projects/api/src/contracts/_internal/response/showResponseSchema.ts b/projects/api/src/contracts/_internal/response/showResponseSchema.ts index c90a8256..2913fe01 100644 --- a/projects/api/src/contracts/_internal/response/showResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/showResponseSchema.ts @@ -8,72 +8,72 @@ import { statusResponseSchema } from './statusResponseSchema.ts'; export const showResponseSchema = z.object({ title: z.string(), - year: z.number().int().optional(), + year: z.number().int().nullish(), ids: showIdsResponseSchema, /*** * Available if requesting extended `images`. */ - images: imagesResponseSchema.optional(), + images: imagesResponseSchema.nullish(), /** * Available if requesting extended `full`. */ - aired_episodes: z.number().int().optional(), + aired_episodes: z.number().int().nullish(), /** * Available if requesting extended `full`. */ - tagline: z.string().optional(), + tagline: z.string().nullish(), /** * Available if requesting extended `full`. */ - overview: z.string().optional(), + overview: z.string().nullish(), /** * Available if requesting extended `full`. */ - first_aired: z.string().optional(), + first_aired: z.string().nullish(), /** * Available if requesting extended `full`. */ airs: z.object({ - day: z.string().optional(), - time: z.string().optional(), - timezone: z.string().optional(), - }).optional(), + day: z.string().nullish(), + time: z.string().nullish(), + timezone: z.string().nullish(), + }).nullish(), /** * Available if requesting extended `full`. */ - runtime: z.number().int().optional(), + runtime: z.number().int().nullish(), /** * Available if requesting extended `full`. */ - certification: showCertificationResponseSchema.optional(), + certification: showCertificationResponseSchema.nullish(), /** * Available if requesting extended `full`. */ - network: z.string().optional(), + network: z.string().nullish(), /** * Available if requesting extended `full`. */ - country: z.string().optional(), + country: z.string().nullish(), /** * Available if requesting extended `full`. */ - status: statusResponseSchema.optional(), + status: statusResponseSchema.nullish(), /** * Available if requesting extended `full`. */ - rating: float(z.number()).optional(), + rating: float(z.number()).nullish(), /** * Available if requesting extended `full`. */ - votes: z.number().int().optional(), + votes: z.number().int().nullish(), /** * Available if requesting extended `full`. */ - comment_count: z.number().int().optional(), + comment_count: z.number().int().nullish(), /** * Available if requesting extended `full`. */ - trailer: z.string().optional(), + trailer: z.string().nullish(), /** * Available if requesting extended `full`. */ @@ -81,23 +81,23 @@ export const showResponseSchema = z.object({ /** * Available if requesting extended `full`. */ - updated_at: z.string().datetime().optional(), + updated_at: z.string().datetime().nullish(), /** * Available if requesting extended `full`. */ - language: z.string().optional(), + language: z.string().nullish(), /** * Available if requesting extended `full`. */ - languages: z.array(z.string()).optional(), + languages: z.array(z.string()).nullish(), /** * Available if requesting extended `full`. */ - available_translations: z.array(z.string()).optional(), + available_translations: z.array(z.string()).nullish(), /** * Available if requesting extended `full`. */ - genres: z.array(genreEnumSchema).optional(), + genres: z.array(genreEnumSchema).nullish(), /*** * Available if requesting extended `full`. */ @@ -105,5 +105,5 @@ export const showResponseSchema = z.object({ /*** * Available if requesting extended `colors`. */ - colors: mediaColorsResponseSchema.optional(), + colors: mediaColorsResponseSchema.nullish(), }); diff --git a/projects/api/src/contracts/_internal/response/statsResponseSchema.ts b/projects/api/src/contracts/_internal/response/statsResponseSchema.ts index be43e319..8d719e60 100644 --- a/projects/api/src/contracts/_internal/response/statsResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/statsResponseSchema.ts @@ -3,5 +3,5 @@ import { z } from '../z.ts'; export const statsResponseSchema = z.object({ play_count: z.number().int(), minutes_watched: z.number().int(), - minutes_left: z.number().int().optional(), + minutes_left: z.number().int().nullish(), }); diff --git a/projects/api/src/contracts/_internal/response/streamingIdsResponseSchema.ts b/projects/api/src/contracts/_internal/response/streamingIdsResponseSchema.ts index 0950a2bc..287af7d7 100644 --- a/projects/api/src/contracts/_internal/response/streamingIdsResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/streamingIdsResponseSchema.ts @@ -2,5 +2,5 @@ import { z } from '../z.ts'; export const streamingIdsResponseSchema = z.object({ guid: z.string(), - slug: z.string().optional(), + slug: z.string().nullish(), }); diff --git a/projects/api/src/contracts/_internal/response/studioResponseSchema.ts b/projects/api/src/contracts/_internal/response/studioResponseSchema.ts index 35c0be0f..228019ae 100644 --- a/projects/api/src/contracts/_internal/response/studioResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/studioResponseSchema.ts @@ -2,10 +2,10 @@ import { z } from '../z.ts'; export const studioResponseSchema = z.object({ name: z.string(), - country: z.string().optional(), + country: z.string().nullish(), ids: z.object({ slug: z.string(), trakt: z.number().int(), - tmdb: z.number().int().optional(), + tmdb: z.number().int().nullish(), }), }); diff --git a/projects/api/src/contracts/_internal/response/translationResponseSchema.ts b/projects/api/src/contracts/_internal/response/translationResponseSchema.ts index 881035c6..40d2c8cb 100644 --- a/projects/api/src/contracts/_internal/response/translationResponseSchema.ts +++ b/projects/api/src/contracts/_internal/response/translationResponseSchema.ts @@ -2,9 +2,9 @@ import { z } from '../z.ts'; export const translationResponseSchema = z.array( z.object({ - title: z.string().nullable(), - overview: z.string().nullable(), - tagline: z.string().nullable(), + title: z.string().nullish(), + overview: z.string().nullish(), + tagline: z.string().nullish(), language: z.string(), country: z.string(), }), diff --git a/projects/api/src/contracts/_internal/z.ts b/projects/api/src/contracts/_internal/z.ts index 468bd275..f0d0e5ce 100644 --- a/projects/api/src/contracts/_internal/z.ts +++ b/projects/api/src/contracts/_internal/z.ts @@ -19,7 +19,9 @@ export function float(schema: z.ZodNumber) { /** * Helper function to force a schema to be treated as a string in OpenAPI metadata */ -export function asString>(schema: T) { +export function asString>( + schema: T, +) { // Use type assertion to access the openapi method return (schema as T & { openapi: (meta: unknown) => T }) .openapi({ diff --git a/projects/api/src/contracts/checkin/_internal/request/movieCheckinRequestSchema.ts b/projects/api/src/contracts/checkin/_internal/request/movieCheckinRequestSchema.ts index 201341c4..e5580f1d 100644 --- a/projects/api/src/contracts/checkin/_internal/request/movieCheckinRequestSchema.ts +++ b/projects/api/src/contracts/checkin/_internal/request/movieCheckinRequestSchema.ts @@ -6,10 +6,10 @@ import { sharingRequestSchema } from './sharingRequestSchema.ts'; export const movieCheckinRequestSchema = z.object({ movie: z.object({ - title: z.string().optional(), - year: z.number().int().optional(), + title: z.string().nullish(), + year: z.number().int().nullish(), ids: movieIdsRequestSchema, }), sharing: sharingRequestSchema, - message: z.string().optional(), + message: z.string().nullish(), }); diff --git a/projects/api/src/contracts/checkin/_internal/request/sharingRequestSchema.ts b/projects/api/src/contracts/checkin/_internal/request/sharingRequestSchema.ts index 907cf56d..7e0f74bd 100644 --- a/projects/api/src/contracts/checkin/_internal/request/sharingRequestSchema.ts +++ b/projects/api/src/contracts/checkin/_internal/request/sharingRequestSchema.ts @@ -2,11 +2,11 @@ import { z } from '../../../_internal/z.ts'; export const sharingRequestSchema = z .object({ - twitter: z.boolean().optional(), - mastodon: z.boolean().optional(), - tumblr: z.boolean().optional(), + twitter: z.boolean().nullish(), + mastodon: z.boolean().nullish(), + tumblr: z.boolean().nullish(), }) - .optional() + .nullish() .describe( `The sharing object is optional and will apply the user's settings if not sent. If sharing is sent, each key will override the user's setting for that social network. diff --git a/projects/api/src/contracts/checkin/_internal/request/showCheckinRequestSchema.ts b/projects/api/src/contracts/checkin/_internal/request/showCheckinRequestSchema.ts index c8837795..2eb82672 100644 --- a/projects/api/src/contracts/checkin/_internal/request/showCheckinRequestSchema.ts +++ b/projects/api/src/contracts/checkin/_internal/request/showCheckinRequestSchema.ts @@ -4,30 +4,30 @@ import { sharingRequestSchema } from './sharingRequestSchema.ts'; const showAbsoluteCheckinRequestSchema = z.object({ show: z.object({ - title: z.string().optional(), - year: z.number().int().optional(), + title: z.string().nullish(), + year: z.number().int().nullish(), ids: showIdsRequestSchema, }), episode: z.object({ number_abs: z.number().int() }), sharing: sharingRequestSchema, - message: z.string().optional(), + message: z.string().nullish(), }); const episodeCheckinRequestSchema = z.object({ episode: z.object({ ids: showIdsRequestSchema }), sharing: sharingRequestSchema, - message: z.string().optional(), + message: z.string().nullish(), }); const episodeWithShowCheckinRequestSchema = z.object({ show: z.object({ - title: z.string().optional(), - year: z.number().int().optional(), + title: z.string().nullish(), + year: z.number().int().nullish(), ids: showIdsRequestSchema, }), episode: z.object({ season: z.number().int(), number: z.number().int() }), sharing: sharingRequestSchema, - message: z.string().optional(), + message: z.string().nullish(), }); export const showCheckinRequestSchema = z.union([ diff --git a/projects/api/src/contracts/movies/_internal/response/movieStreamingResponseSchema.ts b/projects/api/src/contracts/movies/_internal/response/movieStreamingResponseSchema.ts index c1f13b8f..17f7e8fd 100644 --- a/projects/api/src/contracts/movies/_internal/response/movieStreamingResponseSchema.ts +++ b/projects/api/src/contracts/movies/_internal/response/movieStreamingResponseSchema.ts @@ -3,6 +3,6 @@ import { z } from '../../../_internal/z.ts'; export const movieStreamingResponseSchema = z.object({ rank: z.number().int(), - delta: z.number().int().nullable(), + delta: z.number().int().nullish(), movie: movieResponseSchema, }); diff --git a/projects/api/src/contracts/people/_internal/response/peopleMovieCreditsResponseSchema.ts b/projects/api/src/contracts/people/_internal/response/peopleMovieCreditsResponseSchema.ts index 6745ecca..6ac00a8a 100644 --- a/projects/api/src/contracts/people/_internal/response/peopleMovieCreditsResponseSchema.ts +++ b/projects/api/src/contracts/people/_internal/response/peopleMovieCreditsResponseSchema.ts @@ -9,7 +9,7 @@ export const peopleMovieCreditsResponseSchema = z.object({ z.object({ movie: movieResponseSchema, }).merge(characterResponseSchema), - ).optional(), + ).nullish(), crew: z.record( crewPositionResponseSchema, z.array( @@ -17,5 +17,5 @@ export const peopleMovieCreditsResponseSchema = z.object({ movie: movieResponseSchema, }).merge(jobsResponseSchema), ), - ).optional(), + ).nullish(), }); diff --git a/projects/api/src/contracts/people/_internal/response/peopleShowCreditsResponseSchema.ts b/projects/api/src/contracts/people/_internal/response/peopleShowCreditsResponseSchema.ts index d8c6ea16..a6185579 100644 --- a/projects/api/src/contracts/people/_internal/response/peopleShowCreditsResponseSchema.ts +++ b/projects/api/src/contracts/people/_internal/response/peopleShowCreditsResponseSchema.ts @@ -11,7 +11,7 @@ export const peopleShowCreditsResponseSchema = z.object({ episode_count: z.number().int(), series_regular: z.boolean(), }).merge(characterResponseSchema), - ).optional(), + ).nullish(), crew: z.record( crewPositionResponseSchema, z.array( @@ -20,5 +20,5 @@ export const peopleShowCreditsResponseSchema = z.object({ episode_count: z.number().int(), }).merge(jobsResponseSchema), ), - ).optional(), + ).nullish(), }); diff --git a/projects/api/src/contracts/people/_internal/response/peopleSummaryResponseSchema.ts b/projects/api/src/contracts/people/_internal/response/peopleSummaryResponseSchema.ts index d0f0681b..d4f72cc0 100644 --- a/projects/api/src/contracts/people/_internal/response/peopleSummaryResponseSchema.ts +++ b/projects/api/src/contracts/people/_internal/response/peopleSummaryResponseSchema.ts @@ -6,27 +6,27 @@ export const peopleSummaryResponseSchema = z.object({ ids: z.object({ slug: z.string(), trakt: z.number().int(), - tvdb: z.number().int().optional(), - imdb: z.string().optional(), - tmdb: z.number().int().optional(), + tvdb: z.number().int().nullish(), + imdb: z.string().nullish(), + tmdb: z.number().int().nullish(), }), /*** * Available if requesting extended `full`. */ social_ids: z.object({ - twitter: z.string().nullable(), - facebook: z.string().nullable(), - instagram: z.string().nullable(), - wikipedia: z.string().nullable(), - }).optional(), + twitter: z.string().nullish(), + facebook: z.string().nullish(), + instagram: z.string().nullish(), + wikipedia: z.string().nullish(), + }).nullish(), /*** * Available if requesting extended `full`. */ - biography: z.string().optional(), + biography: z.string().nullish(), /*** * Available if requesting extended `full`. */ - birthday: z.string().optional(), + birthday: z.string().nullish(), /*** * Available if requesting extended `full`. */ @@ -34,7 +34,7 @@ export const peopleSummaryResponseSchema = z.object({ /*** * Available if requesting extended `full`. */ - birthplace: z.string().optional(), + birthplace: z.string().nullish(), /*** * Available if requesting extended `full`. */ @@ -46,16 +46,16 @@ export const peopleSummaryResponseSchema = z.object({ /*** * Available if requesting extended `full`. */ - known_for_department: crewPositionResponseSchema.optional(), + known_for_department: crewPositionResponseSchema.nullish(), /*** * Available if requesting extended `full`. */ - updated_at: z.string().datetime().optional(), + updated_at: z.string().datetime().nullish(), /*** * Available if requesting extended `images`. */ images: z.object({ headshot: z.array(z.string()), fanart: z.array(z.string()), - }).optional(), + }).nullish(), }); diff --git a/projects/api/src/contracts/recommendations/_internal/request/recommendationsQuerySchema.ts b/projects/api/src/contracts/recommendations/_internal/request/recommendationsQuerySchema.ts index 9b886f54..be61f8a4 100644 --- a/projects/api/src/contracts/recommendations/_internal/request/recommendationsQuerySchema.ts +++ b/projects/api/src/contracts/recommendations/_internal/request/recommendationsQuerySchema.ts @@ -5,7 +5,7 @@ export const recommendationsQuerySchema = z.object({ limit: z.number().int().openapi({ description: 'Limit the number of results.', }), - watch_window: z.number().int().optional().openapi({ + watch_window: z.number().int().nullish().openapi({ description: 'The watch window in days for the recommendations.', }), }).merge(ignoreQuerySchema); diff --git a/projects/api/src/contracts/search/_internal/request/searchQuerySchema.ts b/projects/api/src/contracts/search/_internal/request/searchQuerySchema.ts index b2f9e502..6204ca05 100644 --- a/projects/api/src/contracts/search/_internal/request/searchQuerySchema.ts +++ b/projects/api/src/contracts/search/_internal/request/searchQuerySchema.ts @@ -1,7 +1,7 @@ import { z } from '../../../_internal/z.ts'; export const searchQuerySchema = z.object({ - query: z.string().optional().openapi({ + query: z.string().nullish().openapi({ description: 'The search query to search all text based fields.', }), }); diff --git a/projects/api/src/contracts/search/_internal/request/searchTypeParamFactory.ts b/projects/api/src/contracts/search/_internal/request/searchTypeParamFactory.ts index 308d12c7..58bb9e7e 100644 --- a/projects/api/src/contracts/search/_internal/request/searchTypeParamFactory.ts +++ b/projects/api/src/contracts/search/_internal/request/searchTypeParamFactory.ts @@ -5,7 +5,7 @@ export const searchTypeParamFactory = () => z.object({ type: z .custom>() - .optional() + .nullish() .openapi({ description: 'Specify the type of results by sending a single value or a comma delimited string for multiple types.', diff --git a/projects/api/src/contracts/shows/_internal/request/showQueryParamsSchema.ts b/projects/api/src/contracts/shows/_internal/request/showQueryParamsSchema.ts index 25bb02a3..4a5ff3d1 100644 --- a/projects/api/src/contracts/shows/_internal/request/showQueryParamsSchema.ts +++ b/projects/api/src/contracts/shows/_internal/request/showQueryParamsSchema.ts @@ -1,13 +1,13 @@ import { z } from '../../../_internal/z.ts'; export const showQueryParamsSchema = z.object({ - hidden: z.boolean().optional().openapi({ + hidden: z.boolean().nullish().openapi({ description: 'Whether to include any hidden seasons', }), - specials: z.boolean().optional().openapi({ + specials: z.boolean().nullish().openapi({ description: 'Whether to include special seasons as season 0.', }), - count_specials: z.boolean().optional().openapi({ + count_specials: z.boolean().nullish().openapi({ description: 'Whether to count specials in the overall stats (only applies if specials are included).', }), diff --git a/projects/api/src/contracts/shows/_internal/response/seasonResponseSchema.ts b/projects/api/src/contracts/shows/_internal/response/seasonResponseSchema.ts index ede7f43b..be35b2d2 100644 --- a/projects/api/src/contracts/shows/_internal/response/seasonResponseSchema.ts +++ b/projects/api/src/contracts/shows/_internal/response/seasonResponseSchema.ts @@ -7,7 +7,7 @@ export const seasonResponseSchema = z.object({ /** * Available if requesting extended `full`. */ - aired_episodes: z.number().int().optional(), + aired_episodes: z.number().int().nullish(), /** * Available if requesting extended `full`. */ @@ -16,15 +16,15 @@ export const seasonResponseSchema = z.object({ * Available if requesting extended `full`. */ ), - votes: z.number().int().optional(), + votes: z.number().int().nullish(), /** * Available if requesting extended `full`. */ - episode_count: z.number().int().optional(), + episode_count: z.number().int().nullish(), /** * Available if requesting extended `full`. */ - title: z.string().optional(), + title: z.string().nullish(), /** * Available if requesting extended `full`. */ @@ -37,16 +37,16 @@ export const seasonResponseSchema = z.object({ * Available if requesting extended `full`. */ ), - updated_at: z.string().datetime().optional(), + updated_at: z.string().datetime().nullish(), /** * Available if requesting extended `full`. */ - network: z.string().optional(), + network: z.string().nullish(), /** * Available if requesting extended `images`. */ images: z.object({ poster: z.array(z.string()), thumb: z.array(z.string()), - }).optional(), + }).nullish(), }); diff --git a/projects/api/src/contracts/shows/_internal/response/showProgressResponseSchema.ts b/projects/api/src/contracts/shows/_internal/response/showProgressResponseSchema.ts index a423c8c8..eb33b7cf 100644 --- a/projects/api/src/contracts/shows/_internal/response/showProgressResponseSchema.ts +++ b/projects/api/src/contracts/shows/_internal/response/showProgressResponseSchema.ts @@ -7,24 +7,24 @@ export const showProgressResponseSchema = progressResponseSchema.extend({ seasons: z.array( z.object({ number: z.number().int(), - title: z.string().nullable(), + title: z.string().nullish(), aired: z.number().int(), completed: z.number().int(), episodes: z.array( z.object({ number: z.number().int(), completed: z.boolean(), - last_watched_at: z.string().datetime().nullable(), + last_watched_at: z.string().datetime().nullish(), /*** * Available if requesting include_stats `true`. */ - stats: statsResponseSchema.optional(), + stats: statsResponseSchema.nullish(), }), ), /*** * Available if requesting include_stats `true`. */ - stats: statsResponseSchema.optional(), + stats: statsResponseSchema.nullish(), }), ), hidden_seasons: z.array( @@ -36,5 +36,5 @@ export const showProgressResponseSchema = progressResponseSchema.extend({ /*** * Available if requesting include_stats `true`. */ - stats: statsResponseSchema.optional(), + stats: statsResponseSchema.nullish(), }); diff --git a/projects/api/src/contracts/shows/_internal/response/showStreamingResponseSchema.ts b/projects/api/src/contracts/shows/_internal/response/showStreamingResponseSchema.ts index 576fde88..6874d95d 100644 --- a/projects/api/src/contracts/shows/_internal/response/showStreamingResponseSchema.ts +++ b/projects/api/src/contracts/shows/_internal/response/showStreamingResponseSchema.ts @@ -3,6 +3,6 @@ import { z } from '../../../_internal/z.ts'; export const showStreamingResponseSchema = z.object({ rank: z.number().int(), - delta: z.number().int().nullable(), + delta: z.number().int().nullish(), show: showResponseSchema, }); diff --git a/projects/api/src/contracts/sync/_internal/request/favoritesParamSchema.ts b/projects/api/src/contracts/sync/_internal/request/favoritesParamSchema.ts index 66607cc7..909e8139 100644 --- a/projects/api/src/contracts/sync/_internal/request/favoritesParamSchema.ts +++ b/projects/api/src/contracts/sync/_internal/request/favoritesParamSchema.ts @@ -6,5 +6,5 @@ import { z } from '../../../_internal/z.ts'; export const favoriteParamSchema = z.object({ movies: z.array( z.object({ ids: movieIdsRequestSchema }), - ).optional(), + ).nullish(), }); diff --git a/projects/api/src/contracts/sync/_internal/request/historyIdsRequestSchema.ts b/projects/api/src/contracts/sync/_internal/request/historyIdsRequestSchema.ts index a86c7a03..0a212195 100644 --- a/projects/api/src/contracts/sync/_internal/request/historyIdsRequestSchema.ts +++ b/projects/api/src/contracts/sync/_internal/request/historyIdsRequestSchema.ts @@ -1,5 +1,5 @@ import { z } from '../../../_internal/z.ts'; export const historyIdsRequestSchema = z.object({ - ids: z.array(z.number().int()).optional(), + ids: z.array(z.number().int()).nullish(), }); diff --git a/projects/api/src/contracts/sync/_internal/request/ratingsParamSchema.ts b/projects/api/src/contracts/sync/_internal/request/ratingsParamSchema.ts index 5f8c721c..e4bdb3d3 100644 --- a/projects/api/src/contracts/sync/_internal/request/ratingsParamSchema.ts +++ b/projects/api/src/contracts/sync/_internal/request/ratingsParamSchema.ts @@ -14,17 +14,17 @@ export const ratingsParamSchema = z.object({ movies: z.array( mediaRatingSchema .merge(z.object({ ids: movieIdsRequestSchema })), - ).optional(), + ).nullish(), shows: z.array( mediaRatingSchema .merge(z.object({ ids: showIdsRequestSchema })), - ).optional(), + ).nullish(), seasons: z.array( mediaRatingSchema .merge(z.object({ ids: seasonIdsRequestSchema })), - ).optional(), + ).nullish(), episodes: z.array( mediaRatingSchema .merge(z.object({ ids: episodeIdsRequestSchema })), - ).optional(), + ).nullish(), }); diff --git a/projects/api/src/contracts/sync/_internal/response/favoritesRemoveResponseSchema.ts b/projects/api/src/contracts/sync/_internal/response/favoritesRemoveResponseSchema.ts index 782d6070..28b28224 100644 --- a/projects/api/src/contracts/sync/_internal/response/favoritesRemoveResponseSchema.ts +++ b/projects/api/src/contracts/sync/_internal/response/favoritesRemoveResponseSchema.ts @@ -5,7 +5,7 @@ export const favoritesRemoveResponseSchema = z.object({ deleted: z.object({ movies: z.number().int(), shows: z.number().int(), - }).optional(), + }).nullish(), not_found: favoriteParamSchema, list: z.object({ updated_at: z.string().datetime(), diff --git a/projects/api/src/contracts/sync/_internal/response/favoritesResponseSchema.ts b/projects/api/src/contracts/sync/_internal/response/favoritesResponseSchema.ts index b295facd..23ea723e 100644 --- a/projects/api/src/contracts/sync/_internal/response/favoritesResponseSchema.ts +++ b/projects/api/src/contracts/sync/_internal/response/favoritesResponseSchema.ts @@ -5,11 +5,11 @@ export const favoritesResponseSchema = z.object({ added: z.object({ movies: z.number().int(), shows: z.number().int(), - }).optional(), + }).nullish(), existing: z.object({ movies: z.number().int(), shows: z.number().int(), - }).optional(), + }).nullish(), not_found: favoriteParamSchema, list: z.object({ updated_at: z.string().datetime(), diff --git a/projects/api/src/contracts/users/_internal/request/commentsRequestSchema.ts b/projects/api/src/contracts/users/_internal/request/commentsRequestSchema.ts index 2e5fddb6..5aa6521f 100644 --- a/projects/api/src/contracts/users/_internal/request/commentsRequestSchema.ts +++ b/projects/api/src/contracts/users/_internal/request/commentsRequestSchema.ts @@ -1,5 +1,5 @@ import { z } from '../../../_internal/z.ts'; export const commentsRequestSchema = z.object({ - include_replies: z.enum(['true', 'false', 'only']).optional(), + include_replies: z.enum(['true', 'false', 'only']).nullish(), }); diff --git a/projects/api/src/contracts/users/_internal/request/dateRangeParamsSchema.ts b/projects/api/src/contracts/users/_internal/request/dateRangeParamsSchema.ts index d8a40ada..1ca3e1b7 100644 --- a/projects/api/src/contracts/users/_internal/request/dateRangeParamsSchema.ts +++ b/projects/api/src/contracts/users/_internal/request/dateRangeParamsSchema.ts @@ -1,12 +1,12 @@ import { z } from '../../../_internal/z.ts'; export const dateRangeParamsSchema = z.object({ - start_at: z.string().datetime().optional() + start_at: z.string().datetime().nullish() .openapi({ description: 'Start date for the range. Must be formatted as "YYYY-MM-DD".', }), - end_at: z.string().datetime().optional() + end_at: z.string().datetime().nullish() .openapi({ description: 'End date for the range. Must be formatted as "YYYY-MM-DD".', }), diff --git a/projects/api/src/contracts/users/_internal/request/listCommentsSortParamsSchema.ts b/projects/api/src/contracts/users/_internal/request/listCommentsSortParamsSchema.ts index 691b1213..0f1282f5 100644 --- a/projects/api/src/contracts/users/_internal/request/listCommentsSortParamsSchema.ts +++ b/projects/api/src/contracts/users/_internal/request/listCommentsSortParamsSchema.ts @@ -6,5 +6,5 @@ export const listCommentsSortParamsSchema = z.object({ 'oldest', 'likes', 'replies', - ]).optional(), + ]).nullish(), }); diff --git a/projects/api/src/contracts/users/_internal/request/settingsRequestSchema.ts b/projects/api/src/contracts/users/_internal/request/settingsRequestSchema.ts index 6f5d3241..783d1420 100644 --- a/projects/api/src/contracts/users/_internal/request/settingsRequestSchema.ts +++ b/projects/api/src/contracts/users/_internal/request/settingsRequestSchema.ts @@ -4,29 +4,29 @@ import { z } from '../../../_internal/z.ts'; const spoilerEnumSchema = z.enum(['show', 'hide']); const userSettingsSettingsSchema = z.object({ - name: z.string().optional(), - about: z.string().optional(), - private: z.boolean().optional(), + name: z.string().nullish(), + about: z.string().nullish(), + private: z.boolean().nullish(), }); const browsingSettingsSchema = z.object({ genres: z.object({ - favorites: z.array(genreEnumSchema).optional(), - disliked: z.array(genreEnumSchema).optional(), - }).optional(), + favorites: z.array(genreEnumSchema).nullish(), + disliked: z.array(genreEnumSchema).nullish(), + }).nullish(), spoilers: z.object({ - episodes: spoilerEnumSchema.optional(), - shows: spoilerEnumSchema.optional(), - movies: spoilerEnumSchema.optional(), - }).optional(), + episodes: spoilerEnumSchema.nullish(), + shows: spoilerEnumSchema.nullish(), + movies: spoilerEnumSchema.nullish(), + }).nullish(), watchnow: z.object({ - country: z.string().optional(), - favorites: z.array(z.string()).optional(), - only_favorites: z.boolean().optional(), - }).optional(), + country: z.string().nullish(), + favorites: z.array(z.string()).nullish(), + only_favorites: z.boolean().nullish(), + }).nullish(), }); export const settingsRequestSchema = z.object({ - user: userSettingsSettingsSchema.optional(), - browsing: browsingSettingsSchema.optional(), + user: userSettingsSettingsSchema.nullish(), + browsing: browsingSettingsSchema.nullish(), }); diff --git a/projects/api/src/contracts/users/_internal/response/favoritedMoviesResponseSchema.ts b/projects/api/src/contracts/users/_internal/response/favoritedMoviesResponseSchema.ts index 0d048b9b..32346992 100644 --- a/projects/api/src/contracts/users/_internal/response/favoritedMoviesResponseSchema.ts +++ b/projects/api/src/contracts/users/_internal/response/favoritedMoviesResponseSchema.ts @@ -4,7 +4,7 @@ import { z } from '../../../_internal/z.ts'; export const favoritedMoviesResponseSchema = z.object({ id: z.number().int(), listed_at: z.string().datetime(), - notes: z.string().nullable(), + notes: z.string().nullish(), type: z.literal('movie'), movie: movieResponseSchema, rank: z.number().int(), diff --git a/projects/api/src/contracts/users/_internal/response/favoritedShowsResponseSchema.ts b/projects/api/src/contracts/users/_internal/response/favoritedShowsResponseSchema.ts index ae34329d..9357943f 100644 --- a/projects/api/src/contracts/users/_internal/response/favoritedShowsResponseSchema.ts +++ b/projects/api/src/contracts/users/_internal/response/favoritedShowsResponseSchema.ts @@ -4,7 +4,7 @@ import { z } from '../../../_internal/z.ts'; export const favoritedShowsResponseSchema = z.object({ id: z.number().int(), listed_at: z.string().datetime(), - notes: z.string().nullable(), + notes: z.string().nullish(), type: z.literal('show'), show: showResponseSchema, rank: z.number().int(), diff --git a/projects/api/src/contracts/users/_internal/response/likedItemResponseSchema.ts b/projects/api/src/contracts/users/_internal/response/likedItemResponseSchema.ts index a6ab0c44..cb754281 100644 --- a/projects/api/src/contracts/users/_internal/response/likedItemResponseSchema.ts +++ b/projects/api/src/contracts/users/_internal/response/likedItemResponseSchema.ts @@ -14,7 +14,7 @@ const likedMovieCommentResponseSchema = z.object({ /*** * Available if requesting extended `comments`. */ - movie: movieResponseSchema.optional(), + movie: movieResponseSchema.nullish(), }); const likedShowCommentResponseSchema = z.object({ @@ -25,7 +25,7 @@ const likedShowCommentResponseSchema = z.object({ /*** * Available if requesting extended `comments`. */ - show: showResponseSchema.optional(), + show: showResponseSchema.nullish(), }); const likedSeasonCommentResponseSchema = z.object({ @@ -36,11 +36,11 @@ const likedSeasonCommentResponseSchema = z.object({ /*** * Available if requesting extended `comments`. */ - show: showResponseSchema.optional(), + show: showResponseSchema.nullish(), /*** * Available if requesting extended `comments`. */ - season: seasonResponseSchema.optional(), + season: seasonResponseSchema.nullish(), }); const likedEpisodeCommentResponseSchema = z.object({ @@ -51,7 +51,7 @@ const likedEpisodeCommentResponseSchema = z.object({ /*** * Available if requesting extended `comments`. */ - episode: episodeResponseSchema.optional(), + episode: episodeResponseSchema.nullish(), }); const likedExtendedCommentResponseSchema = z.union( diff --git a/projects/api/src/contracts/users/_internal/response/settingsResponseSchema.ts b/projects/api/src/contracts/users/_internal/response/settingsResponseSchema.ts index cec38496..e20bb705 100644 --- a/projects/api/src/contracts/users/_internal/response/settingsResponseSchema.ts +++ b/projects/api/src/contracts/users/_internal/response/settingsResponseSchema.ts @@ -7,7 +7,7 @@ export const settingsResponseSchema = z.object({ user: z.object({ username: z.string(), private: z.boolean(), - name: z.string().nullable(), + name: z.string().nullish(), vip: z.boolean(), vip_ep: z.boolean(), director: z.boolean(), @@ -17,15 +17,15 @@ export const settingsResponseSchema = z.object({ uuid: z.string(), }), joined_at: z.string().datetime(), - location: z.string().nullable(), - about: z.string().optional(), - gender: z.string().nullable(), - age: z.number().int().optional(), + location: z.string().nullish(), + about: z.string().nullish(), + gender: z.string().nullish(), + age: z.number().int().nullish(), images: z.object({ avatar: z.object({ full: z.string() }) }), vip_og: z.boolean(), vip_years: z.number().int(), - vip_cover_image: z.string().optional(), - dob: z.string().optional(), + vip_cover_image: z.string().nullish(), + dob: z.string().nullish(), }), permissions: z.object({ commenting: z.boolean(), @@ -48,18 +48,18 @@ export const settingsResponseSchema = z.object({ hide_episode_type_tags: z.boolean(), hide_unsaved_filters_prompt: z.boolean(), spoilers: z.object({ - episodes: z.string().nullable(), - shows: z.string().nullable(), - movies: z.string().nullable(), - comments: z.string().nullable(), - ratings: z.string().nullable(), - actors: z.string().nullable(), + episodes: z.string().nullish(), + shows: z.string().nullish(), + movies: z.string().nullish(), + comments: z.string().nullish(), + ratings: z.string().nullish(), + actors: z.string().nullish(), }), calendar: z.object({ period: z.string(), start_day: z.string(), layout: z.string(), - image_type: z.string().nullable(), + image_type: z.string().nullish(), hide_special: z.boolean(), autoscroll: z.boolean(), }), @@ -92,7 +92,7 @@ export const settingsResponseSchema = z.object({ sort_how: sortDirectionSchema, use_last_activity: z.boolean(), grid_view: z.boolean(), - }).optional(), + }).nullish(), }), watchnow: z.object({ country: z.string(), @@ -129,15 +129,15 @@ export const settingsResponseSchema = z.object({ created_at: z.number().int(), }), ), - }).optional(), - }).optional(), + }).nullish(), + }).nullish(), account: z.object({ timezone: z.string(), date_format: z.string(), time_24hr: z.boolean(), - cover_image: z.string().nullable(), + cover_image: z.string().nullish(), token: z.string().nullish(), - display_ads: z.boolean().optional(), + display_ads: z.boolean().nullish(), }), connections: z.object({ facebook: z.boolean(), @@ -150,15 +150,15 @@ export const settingsResponseSchema = z.object({ apple: z.boolean(), dropbox: z.boolean(), microsoft: z.boolean(), - }).optional(), + }).nullish(), sharing_text: z.object({ watching: z.string(), watched: z.string(), - rated: z.string().optional(), - }).optional(), + rated: z.string().nullish(), + }).nullish(), limits: z.object({ list: z.object({ count: z.number().int(), item_count: z.number().int() }), watchlist: z.object({ item_count: z.number().int() }), favorites: z.object({ item_count: z.number().int() }), - }).optional(), + }).nullish(), }); diff --git a/projects/api/src/contracts/users/_internal/response/watchedShowsResponseSchema.ts b/projects/api/src/contracts/users/_internal/response/watchedShowsResponseSchema.ts index 76d4cc8f..6f74cc98 100644 --- a/projects/api/src/contracts/users/_internal/response/watchedShowsResponseSchema.ts +++ b/projects/api/src/contracts/users/_internal/response/watchedShowsResponseSchema.ts @@ -26,5 +26,5 @@ export const watchedShowsResponseSchema = z.array(z.object({ }), ), }), - ).optional(), + ).nullish(), })); diff --git a/projects/api/src/contracts/watchnow/_internal/response/watchNowSourcesResponseSchema.ts b/projects/api/src/contracts/watchnow/_internal/response/watchNowSourcesResponseSchema.ts index e34d58de..f70ec805 100644 --- a/projects/api/src/contracts/watchnow/_internal/response/watchNowSourcesResponseSchema.ts +++ b/projects/api/src/contracts/watchnow/_internal/response/watchNowSourcesResponseSchema.ts @@ -9,8 +9,8 @@ export const watchNowSourceResponseSchema = z.object({ color: z.string(), link_count: z.number().int(), images: z.object({ - logo: z.string().nullable(), - channel: z.string().nullable(), + logo: z.string().nullish(), + channel: z.string().nullish(), }), });