diff --git a/.all-contributorsrc b/.all-contributorsrc index 113d0af4..37187275 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -809,6 +809,69 @@ "contributions": [ "code" ] + }, + { + "login": "Alexays", + "name": "Alex", + "avatar_url": "https://avatars.githubusercontent.com/u/13947260?v=4", + "profile": "https://arouillard.fr", + "contributions": [ + "code" + ] + }, + { + "login": "Zebebles", + "name": "Zeb Muller", + "avatar_url": "https://avatars.githubusercontent.com/u/11425451?v=4", + "profile": "https://github.com/Zebebles", + "contributions": [ + "code" + ] + }, + { + "login": "SMores", + "name": "Shane Friedman", + "avatar_url": "https://avatars.githubusercontent.com/u/5354254?v=4", + "profile": "http://smoores.dev", + "contributions": [ + "code" + ] + }, + { + "login": "IzaacJ", + "name": "Izaac Brånn", + "avatar_url": "https://avatars.githubusercontent.com/u/711323?v=4", + "profile": "https://izaacj.me", + "contributions": [ + "code" + ] + }, + { + "login": "SalmanTariq", + "name": "Salman Tariq", + "avatar_url": "https://avatars.githubusercontent.com/u/13284494?v=4", + "profile": "https://github.com/SalmanTariq", + "contributions": [ + "code" + ] + }, + { + "login": "andrew-kennedy", + "name": "Andrew Kennedy", + "avatar_url": "https://avatars.githubusercontent.com/u/2387159?v=4", + "profile": "https://github.com/andrew-kennedy", + "contributions": [ + "code" + ] + }, + { + "login": "Fallenbagel", + "name": "Fallenbagel", + "avatar_url": "https://avatars.githubusercontent.com/u/98979876?v=4", + "profile": "https://github.com/Fallenbagel", + "contributions": [ + "code" + ] } ], "badgeTemplate": "\"All-orange.svg\"/>", @@ -818,5 +881,6 @@ "repoType": "github", "repoHost": "https://github.com", "skipCi": false, - "commitConvention": "angular" + "commitConvention": "angular", + "commitType": "docs" } diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 759bad47..b2f0d8b7 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,7 +1,2 @@ # Global code ownership - -- @Fallenbagel - -# i18n locale files - -src/i18n/locale/ @Fallenbagel +* @Fallenbagel diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b4c88ba9..77da7ea1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: build_and_push: name: Build & Publish Docker Images if: github.ref == 'refs/heads/develop' && !contains(github.event.head_commit.message, '[skip ci]') - runs-on: ubuntu-20.04 + runs-on: self-hosted steps: - name: Checkout uses: actions/checkout@v3 diff --git a/.github/workflows/snap.yaml b/.github/workflows/snap.yaml index 4039c58e..9c5b143b 100644 --- a/.github/workflows/snap.yaml +++ b/.github/workflows/snap.yaml @@ -41,6 +41,8 @@ jobs: fi - name: Set Up QEMU uses: docker/setup-qemu-action@v2 + - name: Configure Git + run: git config --add safe.directory /data/parts/jellyseerr/src - name: Build Snap Package uses: diddlesnaps/snapcraft-multiarch-action@v1 id: build diff --git a/cypress/e2e/discover.cy.ts b/cypress/e2e/discover.cy.ts index 545f2565..50dacde1 100644 --- a/cypress/e2e/discover.cy.ts +++ b/cypress/e2e/discover.cy.ts @@ -187,7 +187,7 @@ describe('Discover', () => { cy.wait('@getWatchlist'); - const sliderHeader = cy.contains('.slider-header', 'Your Plex Watchlist'); + const sliderHeader = cy.contains('.slider-header', 'Your Watchlist'); sliderHeader.scrollIntoView(); @@ -203,7 +203,7 @@ describe('Discover', () => { .find('[data-testid=title-card-title]') .invoke('text') .then((text) => { - cy.contains('.slider-header', 'Plex Watchlist') + cy.contains('.slider-header', 'Watchlist') .next('[data-testid=media-slider]') .find('[data-testid=title-card]') .first() diff --git a/cypress/e2e/pull-to-refresh.cy.ts b/cypress/e2e/pull-to-refresh.cy.ts index d56c5589..732ee413 100644 --- a/cypress/e2e/pull-to-refresh.cy.ts +++ b/cypress/e2e/pull-to-refresh.cy.ts @@ -13,7 +13,7 @@ describe('Pull To Refresh', () => { url: '/api/v1/*', }).as('apiCall'); - cy.get('.searchbar').swipe('bottom', [190, 400]); + cy.get('.searchbar').swipe('bottom', [190, 500]); cy.wait('@apiCall').then((interception) => { assert.isNotNull( diff --git a/overseerr-api.yml b/overseerr-api.yml index 20bc2184..1f38f433 100644 --- a/overseerr-api.yml +++ b/overseerr-api.yml @@ -36,6 +36,8 @@ tags: description: Endpoints related to retrieving collection details. - name: service description: Endpoints related to getting service (Radarr/Sonarr) details. + - name: watchlist + description: Collection of media to watch later servers: - url: '{server}/api/v1' variables: @@ -44,6 +46,34 @@ servers: components: schemas: + Watchlist: + type: object + properties: + id: + type: integer + example: 1 + readOnly: true + tmdbId: + type: number + example: 1 + ratingKey: + type: string + type: + type: string + title: + type: string + media: + $ref: '#/components/schemas/MediaInfo' + createdAt: + type: string + example: '2020-09-12T10:00:27.000Z' + readOnly: true + updatedAt: + type: string + example: '2020-09-12T10:00:27.000Z' + readOnly: true + requestedBy: + $ref: '#/components/schemas/User' User: type: object properties: @@ -3962,6 +3992,41 @@ paths: restricted: type: boolean example: false + /watchlist: + post: + summary: Add media to watchlist + tags: + - watchlist + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Watchlist' + responses: + '200': + description: Watchlist data returned + content: + application/json: + schema: + $ref: '#/components/schemas/Watchlist' + /watchlist/{tmdbId}: + delete: + summary: Delete watchlist item + description: Removes a watchlist item. + tags: + - watchlist + parameters: + - in: path + name: tmdbId + description: tmdbId ID + required: true + example: '1' + schema: + type: string + responses: + '204': + description: Succesfully removed watchlist item /user/{userId}/watchlist: get: summary: Get the Plex watchlist for a specific user @@ -3969,6 +4034,7 @@ paths: Retrieves a user's Plex Watchlist in a JSON object. tags: - users + - watchlist parameters: - in: path name: userId @@ -4439,6 +4505,16 @@ paths: schema: type: number example: 10 + - in: query + name: voteCountGte + schema: + type: number + example: 7 + - in: query + name: voteCountLte + schema: + type: number + example: 10 - in: query name: watchRegion schema: @@ -4718,6 +4794,16 @@ paths: schema: type: number example: 10 + - in: query + name: voteCountGte + schema: + type: number + example: 7 + - in: query + name: voteCountLte + schema: + type: number + example: 10 - in: query name: watchRegion schema: diff --git a/package.json b/package.json index f1f2de39..97c02550 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "build:next": "next build", "build": "yarn build:next && yarn build:server", "lint": "eslint \"./server/**/*.{ts,tsx}\" \"./src/**/*.{ts,tsx}\" --cache", + "lintfix": "eslint \"./server/**/*.{ts,tsx}\" \"./src/**/*.{ts,tsx}\" --fix", "start": "NODE_ENV=production node dist/index.js", "i18n:extract": "extract-messages -l=en -o src/i18n/locale -d en --flat true --overwriteDefault true \"./src/**/!(*.test).{ts,tsx}\"", "migration:generate": "ts-node -r tsconfig-paths/register --project server/tsconfig.json ./node_modules/typeorm/cli.js migration:generate -d server/datasource.ts", @@ -29,17 +30,17 @@ }, "license": "MIT", "dependencies": { - "@formatjs/intl-displaynames": "6.2.3", - "@formatjs/intl-locale": "3.0.11", - "@formatjs/intl-pluralrules": "5.1.8", + "@formatjs/intl-displaynames": "6.2.6", + "@formatjs/intl-locale": "3.1.1", + "@formatjs/intl-pluralrules": "5.1.10", "@formatjs/intl-utils": "3.8.4", - "@headlessui/react": "1.7.7", - "@heroicons/react": "2.0.13", + "@headlessui/react": "1.7.12", + "@heroicons/react": "2.0.16", "@supercharge/request-ip": "1.2.0", "@svgr/webpack": "6.5.1", - "@tanem/react-nprogress": "5.0.22", - "ace-builds": "1.14.0", - "axios": "1.2.2", + "@tanem/react-nprogress": "5.0.30", + "ace-builds": "1.15.2", + "axios": "1.3.4", "axios-rate-limit": "1.3.0", "bcrypt": "5.1.0", "bowser": "2.11.0", @@ -47,7 +48,7 @@ "cookie-parser": "1.4.6", "copy-to-clipboard": "3.3.3", "country-flag-icons": "1.5.5", - "cronstrue": "2.21.0", + "cronstrue": "2.23.0", "csurf": "1.11.0", "date-fns": "2.29.3", "dayjs": "1.11.7", @@ -64,23 +65,22 @@ "next": "12.3.4", "node-cache": "5.1.2", "node-gyp": "9.3.1", - "node-schedule": "2.1.0", - "nodemailer": "6.8.0", - "openpgp": "5.5.0", + "node-schedule": "2.1.1", + "nodemailer": "6.9.1", + "openpgp": "5.7.0", "plex-api": "5.3.2", "pug": "3.0.2", - "pulltorefreshjs": "0.1.22", "react": "18.2.0", "react-ace": "10.1.0", "react-animate-height": "2.1.2", - "react-aria": "3.22.0", + "react-aria": "3.23.0", "react-dom": "18.2.0", - "react-intersection-observer": "9.4.1", - "react-intl": "6.2.5", - "react-markdown": "8.0.4", + "react-intersection-observer": "9.4.3", + "react-intl": "6.2.10", + "react-markdown": "8.0.5", "react-popper-tooltip": "4.4.2", "react-select": "5.7.0", - "react-spring": "9.6.1", + "react-spring": "9.7.1", "react-tailwindcss-datepicker-sct": "1.3.4", "react-toast-notifications": "2.5.1", "react-truncate-markup": "5.1.2", @@ -89,42 +89,41 @@ "secure-random-password": "0.2.3", "semver": "7.3.8", "sqlite3": "5.1.4", - "swagger-ui-express": "4.6.0", - "swr": "2.0.0", - "typeorm": "0.3.11", + "swagger-ui-express": "4.6.2", + "swr": "2.0.4", + "typeorm": "0.3.12", "web-push": "3.5.0", "winston": "3.8.2", "winston-daily-rotate-file": "4.7.1", "xml2js": "0.4.23", "yamljs": "0.3.0", "yup": "0.32.11", - "zod": "3.20.2" + "zod": "3.20.6" }, "devDependencies": { - "@babel/cli": "7.20.7", - "@commitlint/cli": "17.4.0", - "@commitlint/config-conventional": "17.4.0", + "@babel/cli": "7.21.0", + "@commitlint/cli": "17.4.4", + "@commitlint/config-conventional": "17.4.4", "@semantic-release/changelog": "6.0.2", "@semantic-release/commit-analyzer": "9.0.2", "@semantic-release/exec": "6.0.3", "@semantic-release/git": "10.0.1", "@tailwindcss/aspect-ratio": "0.4.2", "@tailwindcss/forms": "0.5.3", - "@tailwindcss/typography": "0.5.8", + "@tailwindcss/typography": "0.5.9", "@types/bcrypt": "5.0.0", "@types/cookie-parser": "1.4.3", "@types/country-flag-icons": "1.2.0", "@types/csurf": "1.11.2", "@types/email-templates": "8.0.4", - "@types/express": "4.17.15", - "@types/express-session": "1.17.5", + "@types/express": "4.17.17", + "@types/express-session": "1.17.6", "@types/lodash": "4.14.191", "@types/node": "17.0.36", "@types/node-schedule": "2.1.0", "@types/nodemailer": "6.4.7", - "@types/pulltorefreshjs": "0.1.5", - "@types/react": "18.0.26", - "@types/react-dom": "18.0.10", + "@types/react": "18.0.28", + "@types/react-dom": "18.0.11", "@types/react-transition-group": "4.4.5", "@types/secure-random-password": "0.2.1", "@types/semver": "7.3.13", @@ -133,45 +132,46 @@ "@types/xml2js": "0.4.11", "@types/yamljs": "0.2.31", "@types/yup": "0.29.14", - "@typescript-eslint/eslint-plugin": "5.48.0", - "@typescript-eslint/parser": "5.48.0", + "@typescript-eslint/eslint-plugin": "5.54.0", + "@typescript-eslint/parser": "5.54.0", "autoprefixer": "10.4.13", "babel-plugin-react-intl": "8.2.25", "babel-plugin-react-intl-auto": "3.3.0", - "commitizen": "4.2.6", + "commitizen": "4.3.0", "copyfiles": "2.4.1", "cy-mobile-commands": "0.3.0", - "cypress": "12.3.0", + "cypress": "12.7.0", "cz-conventional-changelog": "3.3.0", - "eslint": "8.31.0", + "eslint": "8.35.0", "eslint-config-next": "12.3.4", "eslint-config-prettier": "8.6.0", - "eslint-plugin-formatjs": "4.3.9", - "eslint-plugin-jsx-a11y": "6.6.1", + "eslint-plugin-formatjs": "4.9.0", + "eslint-plugin-jsx-a11y": "6.7.1", "eslint-plugin-no-relative-import-paths": "1.5.2", "eslint-plugin-prettier": "4.2.1", - "eslint-plugin-react": "7.31.11", + "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", "extract-react-intl-messages": "4.1.1", "husky": "8.0.3", - "lint-staged": "13.1.0", + "lint-staged": "13.1.2", "nodemon": "2.0.20", - "postcss": "8.4.20", - "prettier": "2.8.1", - "prettier-plugin-organize-imports": "3.2.1", - "prettier-plugin-tailwindcss": "0.2.1", + "postcss": "8.4.21", + "prettier": "2.8.4", + "prettier-plugin-organize-imports": "3.2.2", + "prettier-plugin-tailwindcss": "0.2.3", "semantic-release": "19.0.5", "semantic-release-docker-buildx": "1.0.1", - "tailwindcss": "3.2.4", + "tailwindcss": "3.2.7", "ts-node": "10.9.1", "tsc-alias": "1.8.2", "tsconfig-paths": "4.1.2", - "typescript": "4.9.4" + "typescript": "4.9.5" }, "resolutions": { "sqlite3/node-gyp": "8.4.1", - "@types/react": "18.0.26", - "@types/react-dom": "18.0.10" + "@types/react": "18.0.28", + "@types/react-dom": "18.0.11", + "@types/express-session": "1.17.6" }, "config": { "commitizen": { diff --git a/server/api/rottentomatoes.ts b/server/api/rottentomatoes.ts index 7695e398..99a74eb1 100644 --- a/server/api/rottentomatoes.ts +++ b/server/api/rottentomatoes.ts @@ -17,7 +17,7 @@ interface RTAlgoliaHit { title: string; titles: string[]; description: string; - releaseYear: string; + releaseYear: number; rating: string; genres: string[]; updateDate: string; @@ -111,22 +111,19 @@ class RottenTomatoes extends ExternalAPI { // First, attempt to match exact name and year let movie = contentResults.hits.find( - (movie) => movie.releaseYear === year.toString() && movie.title === name + (movie) => movie.releaseYear === year && movie.title === name ); // If we don't find a movie, try to match partial name and year if (!movie) { movie = contentResults.hits.find( - (movie) => - movie.releaseYear === year.toString() && movie.title.includes(name) + (movie) => movie.releaseYear === year && movie.title.includes(name) ); } // If we still dont find a movie, try to match just on year if (!movie) { - movie = contentResults.hits.find( - (movie) => movie.releaseYear === year.toString() - ); + movie = contentResults.hits.find((movie) => movie.releaseYear === year); } // One last try, try exact name match only @@ -181,7 +178,7 @@ class RottenTomatoes extends ExternalAPI { if (year) { tvshow = contentResults.hits.find( - (series) => series.releaseYear === year.toString() + (series) => series.releaseYear === year ); } diff --git a/server/api/servarr/sonarr.ts b/server/api/servarr/sonarr.ts index 2d80c65b..bba039cf 100644 --- a/server/api/servarr/sonarr.ts +++ b/server/api/servarr/sonarr.ts @@ -76,6 +76,15 @@ export interface SonarrSeries { ignoreEpisodesWithoutFiles?: boolean; searchForMissingEpisodes?: boolean; }; + statistics: { + seasonCount: number; + episodeFileCount: number; + episodeCount: number; + totalEpisodeCount: number; + sizeOnDisk: number; + releaseGroups: string[]; + percentOfEpisodes: number; + }; } export interface AddSeriesOptions { @@ -116,6 +125,16 @@ class SonarrAPI extends ServarrBase<{ } } + public async getSeriesById(id: number): Promise { + try { + const response = await this.axios.get(`/series/${id}`); + + return response.data; + } catch (e) { + throw new Error(`[Sonarr] Failed to retrieve series by ID: ${e.message}`); + } + } + public async getSeriesByTitle(title: string): Promise { try { const response = await this.axios.get('/series/lookup', { diff --git a/server/api/themoviedb/index.ts b/server/api/themoviedb/index.ts index 4c931ff9..ef36fcd6 100644 --- a/server/api/themoviedb/index.ts +++ b/server/api/themoviedb/index.ts @@ -65,6 +65,8 @@ interface DiscoverMovieOptions { withRuntimeLte?: string; voteAverageGte?: string; voteAverageLte?: string; + voteCountGte?: string; + voteCountLte?: string; originalLanguage?: string; genre?: string; studio?: string; @@ -83,6 +85,8 @@ interface DiscoverTvOptions { withRuntimeLte?: string; voteAverageGte?: string; voteAverageLte?: string; + voteCountGte?: string; + voteCountLte?: string; includeEmptyReleaseDate?: boolean; originalLanguage?: string; genre?: string; @@ -460,6 +464,8 @@ class TheMovieDb extends ExternalAPI { withRuntimeLte, voteAverageGte, voteAverageLte, + voteCountGte, + voteCountLte, watchProviders, watchRegion, }: DiscoverMovieOptions = {}): Promise => { @@ -504,6 +510,8 @@ class TheMovieDb extends ExternalAPI { 'with_runtime.lte': withRuntimeLte, 'vote_average.gte': voteAverageGte, 'vote_average.lte': voteAverageLte, + 'vote_count.gte': voteCountGte, + 'vote_count.lte': voteCountLte, watch_region: watchRegion, with_watch_providers: watchProviders, }, @@ -530,6 +538,8 @@ class TheMovieDb extends ExternalAPI { withRuntimeLte, voteAverageGte, voteAverageLte, + voteCountGte, + voteCountLte, watchProviders, watchRegion, }: DiscoverTvOptions = {}): Promise => { @@ -574,6 +584,8 @@ class TheMovieDb extends ExternalAPI { 'with_runtime.lte': withRuntimeLte, 'vote_average.gte': voteAverageGte, 'vote_average.lte': voteAverageLte, + 'vote_count.gte': voteCountGte, + 'vote_count.lte': voteCountLte, with_watch_providers: watchProviders, watch_region: watchRegion, }, diff --git a/server/api/themoviedb/interfaces.ts b/server/api/themoviedb/interfaces.ts index 955e1b12..775a8976 100644 --- a/server/api/themoviedb/interfaces.ts +++ b/server/api/themoviedb/interfaces.ts @@ -28,6 +28,18 @@ export interface TmdbTvResult extends TmdbMediaResult { first_air_date: string; } +export interface TmdbCollectionResult { + id: number; + media_type: 'collection'; + title: string; + original_title: string; + adult: boolean; + poster_path?: string; + backdrop_path?: string; + overview: string; + original_language: string; +} + export interface TmdbPersonResult { id: number; name: string; @@ -45,7 +57,12 @@ interface TmdbPaginatedResponse { } export interface TmdbSearchMultiResponse extends TmdbPaginatedResponse { - results: (TmdbMovieResult | TmdbTvResult | TmdbPersonResult)[]; + results: ( + | TmdbMovieResult + | TmdbTvResult + | TmdbPersonResult + | TmdbCollectionResult + )[]; } export interface TmdbSearchMovieResponse extends TmdbPaginatedResponse { diff --git a/server/constants/discover.ts b/server/constants/discover.ts index a19f0742..fda06822 100644 --- a/server/constants/discover.ts +++ b/server/constants/discover.ts @@ -20,6 +20,8 @@ export enum DiscoverSliderType { TMDB_SEARCH, TMDB_STUDIO, TMDB_NETWORK, + TMDB_MOVIE_STREAMING_SERVICES, + TMDB_TV_STREAMING_SERVICES, } export const defaultSliders: Partial[] = [ diff --git a/server/entity/Media.ts b/server/entity/Media.ts index 47217aa0..68a5622c 100644 --- a/server/entity/Media.ts +++ b/server/entity/Media.ts @@ -3,6 +3,8 @@ import SonarrAPI from '@server/api/servarr/sonarr'; import { MediaStatus, MediaType } from '@server/constants/media'; import { MediaServerType } from '@server/constants/server'; import { getRepository } from '@server/datasource'; +import type { User } from '@server/entity/User'; +import { Watchlist } from '@server/entity/Watchlist'; import type { DownloadingItem } from '@server/lib/downloadtracker'; import downloadTracker from '@server/lib/downloadtracker'; import { getSettings } from '@server/lib/settings'; @@ -12,7 +14,6 @@ import { Column, CreateDateColumn, Entity, - In, Index, OneToMany, PrimaryGeneratedColumn, @@ -25,6 +26,7 @@ import Season from './Season'; @Entity() class Media { public static async getRelatedMedia( + user: User | undefined, tmdbIds: number | number[] ): Promise { const mediaRepository = getRepository(Media); @@ -37,9 +39,16 @@ class Media { finalIds = tmdbIds; } - const media = await mediaRepository.find({ - where: { tmdbId: In(finalIds) }, - }); + const media = await mediaRepository + .createQueryBuilder('media') + .leftJoinAndSelect( + 'media.watchlists', + 'watchlist', + 'media.id= watchlist.media and watchlist.requestedBy = :userId', + { userId: user?.id } + ) //, + .where(' media.tmdbId in (:...finalIds)', { finalIds }) + .getMany(); return media; } catch (e) { @@ -94,6 +103,9 @@ class Media { @OneToMany(() => MediaRequest, (request) => request.media, { cascade: true }) public requests: MediaRequest[]; + @OneToMany(() => Watchlist, (watchlist) => watchlist.media) + public watchlists: null | Watchlist[]; + @OneToMany(() => Season, (season) => season.media, { cascade: true, eager: true, diff --git a/server/entity/MediaRequest.ts b/server/entity/MediaRequest.ts index 61122afc..e980860c 100644 --- a/server/entity/MediaRequest.ts +++ b/server/entity/MediaRequest.ts @@ -704,7 +704,7 @@ export class MediaRequest { let rootFolder = radarrSettings.activeDirectory; let qualityProfile = radarrSettings.activeProfileId; - let tags = radarrSettings.tags; + let tags = radarrSettings.tags ? [...radarrSettings.tags] : []; if ( this.rootFolder && @@ -764,6 +764,38 @@ export class MediaRequest { return; } + if (radarrSettings.tagRequests) { + let userTag = (await radarr.getTags()).find((v) => + v.label.startsWith(this.requestedBy.id + ' - ') + ); + if (!userTag) { + logger.info(`Requester has no active tag. Creating new`, { + label: 'Media Request', + requestId: this.id, + mediaId: this.media.id, + userId: this.requestedBy.id, + newTag: + this.requestedBy.id + ' - ' + this.requestedBy.displayName, + }); + userTag = await radarr.createTag({ + label: this.requestedBy.id + ' - ' + this.requestedBy.displayName, + }); + } + if (userTag.id) { + if (!tags?.find((v) => v === userTag?.id)) { + tags?.push(userTag.id); + } + } else { + logger.warn(`Requester has no tag and failed to add one`, { + label: 'Media Request', + requestId: this.id, + mediaId: this.media.id, + userId: this.requestedBy.id, + radarrServer: radarrSettings.hostname + ':' + radarrSettings.port, + }); + } + } + if ( media[this.is4k ? 'status4k' : 'status'] === MediaStatus.AVAILABLE ) { @@ -970,7 +1002,11 @@ export class MediaRequest { let tags = seriesType === 'anime' ? sonarrSettings.animeTags - : sonarrSettings.tags; + ? [...sonarrSettings.animeTags] + : [] + : sonarrSettings.tags + ? [...sonarrSettings.tags] + : []; if ( this.rootFolder && @@ -1022,6 +1058,38 @@ export class MediaRequest { }); } + if (sonarrSettings.tagRequests) { + let userTag = (await sonarr.getTags()).find((v) => + v.label.startsWith(this.requestedBy.id + ' - ') + ); + if (!userTag) { + logger.info(`Requester has no active tag. Creating new`, { + label: 'Media Request', + requestId: this.id, + mediaId: this.media.id, + userId: this.requestedBy.id, + newTag: + this.requestedBy.id + ' - ' + this.requestedBy.displayName, + }); + userTag = await sonarr.createTag({ + label: this.requestedBy.id + ' - ' + this.requestedBy.displayName, + }); + } + if (userTag.id) { + if (!tags?.find((v) => v === userTag?.id)) { + tags?.push(userTag.id); + } + } else { + logger.warn(`Requester has no tag and failed to add one`, { + label: 'Media Request', + requestId: this.id, + mediaId: this.media.id, + userId: this.requestedBy.id, + sonarrServer: sonarrSettings.hostname + ':' + sonarrSettings.port, + }); + } + } + const sonarrSeriesOptions: AddSeriesOptions = { profileId: qualityProfile, languageProfileId: languageProfile, diff --git a/server/entity/User.ts b/server/entity/User.ts index 8780e2d8..e4c8314c 100644 --- a/server/entity/User.ts +++ b/server/entity/User.ts @@ -1,6 +1,7 @@ import { MediaRequestStatus, MediaType } from '@server/constants/media'; import { UserType } from '@server/constants/user'; import { getRepository } from '@server/datasource'; +import { Watchlist } from '@server/entity/Watchlist'; import type { QuotaResponse } from '@server/interfaces/api/userInterfaces'; import PreparedEmail from '@server/lib/email'; import type { PermissionCheckOptions } from '@server/lib/permissions'; @@ -103,6 +104,9 @@ export class User { @OneToMany(() => MediaRequest, (request) => request.requestedBy) public requests: MediaRequest[]; + @OneToMany(() => Watchlist, (watchlist) => watchlist.requestedBy) + public watchlists: Watchlist[]; + @Column({ nullable: true }) public movieQuotaLimit?: number; diff --git a/server/entity/Watchlist.ts b/server/entity/Watchlist.ts new file mode 100644 index 00000000..df820120 --- /dev/null +++ b/server/entity/Watchlist.ts @@ -0,0 +1,157 @@ +import TheMovieDb from '@server/api/themoviedb'; +import { MediaType } from '@server/constants/media'; +import { getRepository } from '@server/datasource'; +import Media from '@server/entity/Media'; +import { User } from '@server/entity/User'; +import type { WatchlistItem } from '@server/interfaces/api/discoverInterfaces'; +import logger from '@server/logger'; +import { + Column, + CreateDateColumn, + Entity, + Index, + ManyToOne, + PrimaryGeneratedColumn, + Unique, + UpdateDateColumn, +} from 'typeorm'; +import type { ZodNumber, ZodOptional, ZodString } from 'zod'; + +export class DuplicateWatchlistRequestError extends Error {} +export class NotFoundError extends Error { + constructor(message = 'Not found') { + super(message); + this.name = 'NotFoundError'; + } +} + +@Entity() +@Unique('UNIQUE_USER_DB', ['tmdbId', 'requestedBy']) +export class Watchlist implements WatchlistItem { + @PrimaryGeneratedColumn() + id: number; + + @Column({ type: 'varchar' }) + public ratingKey = ''; + + @Column({ type: 'varchar' }) + public mediaType: MediaType; + + @Column({ type: 'varchar' }) + title = ''; + + @Column() + @Index() + public tmdbId: number; + + @ManyToOne(() => User, (user) => user.watchlists, { + eager: true, + onDelete: 'CASCADE', + }) + public requestedBy: User; + + @ManyToOne(() => Media, (media) => media.watchlists, { + eager: true, + onDelete: 'CASCADE', + }) + public media: Media; + + @CreateDateColumn() + public createdAt: Date; + + @UpdateDateColumn() + public updatedAt: Date; + + constructor(init?: Partial) { + Object.assign(this, init); + } + + public static async createWatchlist({ + watchlistRequest, + user, + }: { + watchlistRequest: { + mediaType: MediaType; + ratingKey?: ZodOptional['_output']; + title?: ZodOptional['_output']; + tmdbId: ZodNumber['_output']; + }; + user: User; + }): Promise { + const watchlistRepository = getRepository(this); + const mediaRepository = getRepository(Media); + const tmdb = new TheMovieDb(); + + const tmdbMedia = + watchlistRequest.mediaType === MediaType.MOVIE + ? await tmdb.getMovie({ movieId: watchlistRequest.tmdbId }) + : await tmdb.getTvShow({ tvId: watchlistRequest.tmdbId }); + + const existing = await watchlistRepository + .createQueryBuilder('watchlist') + .leftJoinAndSelect('watchlist.requestedBy', 'user') + .where('user.id = :userId', { userId: user.id }) + .andWhere('watchlist.tmdbId = :tmdbId', { + tmdbId: watchlistRequest.tmdbId, + }) + .andWhere('watchlist.mediaType = :mediaType', { + mediaType: watchlistRequest.mediaType, + }) + .getMany(); + + if (existing && existing.length > 0) { + logger.warn('Duplicate request for watchlist blocked', { + tmdbId: watchlistRequest.tmdbId, + mediaType: watchlistRequest.mediaType, + label: 'Watchlist', + }); + + throw new DuplicateWatchlistRequestError(); + } + + let media = await mediaRepository.findOne({ + where: { + tmdbId: watchlistRequest.tmdbId, + mediaType: watchlistRequest.mediaType, + }, + }); + + if (!media) { + media = new Media({ + tmdbId: tmdbMedia.id, + tvdbId: tmdbMedia.external_ids.tvdb_id, + mediaType: watchlistRequest.mediaType, + }); + } + + const watchlist = new this({ + ...watchlistRequest, + requestedBy: user, + media, + }); + + await mediaRepository.save(media); + await watchlistRepository.save(watchlist); + return watchlist; + } + + public static async deleteWatchlist( + tmdbId: Watchlist['tmdbId'], + user: User + ): Promise { + const watchlistRepository = getRepository(this); + const watchlist = await watchlistRepository.findOneBy({ + tmdbId, + requestedBy: { id: user.id }, + }); + if (!watchlist) { + throw new NotFoundError('not Found'); + } + + if (watchlist) { + await watchlistRepository.delete(watchlist.id); + } + + return watchlist; + } +} diff --git a/server/interfaces/api/watchlistCreate.ts b/server/interfaces/api/watchlistCreate.ts new file mode 100644 index 00000000..6cc6af3b --- /dev/null +++ b/server/interfaces/api/watchlistCreate.ts @@ -0,0 +1,9 @@ +import { MediaType } from '@server/constants/media'; +import { z } from 'zod'; + +export const watchlistCreate = z.object({ + ratingKey: z.coerce.string().optional(), + tmdbId: z.coerce.number(), + mediaType: z.nativeEnum(MediaType), + title: z.coerce.string().optional(), +}); diff --git a/server/lib/availabilitySync.ts b/server/lib/availabilitySync.ts index 93ccfe39..a9f61fff 100644 --- a/server/lib/availabilitySync.ts +++ b/server/lib/availabilitySync.ts @@ -1,7 +1,8 @@ import type { PlexMetadata } from '@server/api/plexapi'; import PlexAPI from '@server/api/plexapi'; +import type { RadarrMovie } from '@server/api/servarr/radarr'; import RadarrAPI from '@server/api/servarr/radarr'; -import type { SonarrSeason } from '@server/api/servarr/sonarr'; +import type { SonarrSeason, SonarrSeries } from '@server/api/servarr/sonarr'; import SonarrAPI from '@server/api/servarr/sonarr'; import { MediaStatus } from '@server/constants/media'; import { getRepository } from '@server/datasource'; @@ -47,158 +48,150 @@ class AvailabilitySync { try { for await (const media of this.loadAvailableMediaPaginated(pageSize)) { - try { - if (!this.running) { - throw new Error('Job aborted'); - } + if (!this.running) { + throw new Error('Job aborted'); + } - const mediaExists = await this.mediaExists(media); + const mediaExists = await this.mediaExists(media); - //We can not delete media so if both versions do not exist, we will change both columns to unknown or null - if (!mediaExists) { - if ( - media.status !== MediaStatus.UNKNOWN || - media.status4k !== MediaStatus.UNKNOWN - ) { - const request = await requestRepository.find({ - relations: { - media: true, - }, - where: { media: { id: media.id } }, - }); - - logger.info( - `${ - media.mediaType === 'tv' ? media.tvdbId : media.tmdbId - } does not exist in any of your media instances. We will change its status to unknown.`, - { label: 'AvailabilitySync' } - ); - - await mediaRepository.update(media.id, { - status: MediaStatus.UNKNOWN, - status4k: MediaStatus.UNKNOWN, - serviceId: null, - serviceId4k: null, - externalServiceId: null, - externalServiceId4k: null, - externalServiceSlug: null, - externalServiceSlug4k: null, - ratingKey: null, - ratingKey4k: null, - }); - - await requestRepository.remove(request); - } - } - - if (media.mediaType === 'tv') { - // ok, the show itself exists, but do all it's seasons? - const seasons = await seasonRepository.find({ - where: [ - { status: MediaStatus.AVAILABLE, media: { id: media.id } }, - { - status: MediaStatus.PARTIALLY_AVAILABLE, - media: { id: media.id }, - }, - { status4k: MediaStatus.AVAILABLE, media: { id: media.id } }, - { - status4k: MediaStatus.PARTIALLY_AVAILABLE, - media: { id: media.id }, - }, - ], + // We can not delete media so if both versions do not exist, we will change both columns to unknown or null + if (!mediaExists) { + if ( + media.status !== MediaStatus.UNKNOWN || + media.status4k !== MediaStatus.UNKNOWN + ) { + const request = await requestRepository.find({ + relations: { + media: true, + }, + where: { media: { id: media.id } }, }); - let didDeleteSeasons = false; - for (const season of seasons) { - if ( - !mediaExists && - (season.status !== MediaStatus.UNKNOWN || - season.status4k !== MediaStatus.UNKNOWN) - ) { - await seasonRepository.update( - { id: season.id }, + logger.info( + `Media ID ${media.id} does not exist in any of your media instances. Status will be changed to unknown.`, + { label: 'AvailabilitySync' } + ); + + await mediaRepository.update(media.id, { + status: MediaStatus.UNKNOWN, + status4k: MediaStatus.UNKNOWN, + serviceId: null, + serviceId4k: null, + externalServiceId: null, + externalServiceId4k: null, + externalServiceSlug: null, + externalServiceSlug4k: null, + ratingKey: null, + ratingKey4k: null, + }); + + await requestRepository.remove(request); + } + } + + if (media.mediaType === 'tv') { + // ok, the show itself exists, but do all it's seasons? + const seasons = await seasonRepository.find({ + where: [ + { status: MediaStatus.AVAILABLE, media: { id: media.id } }, + { + status: MediaStatus.PARTIALLY_AVAILABLE, + media: { id: media.id }, + }, + { status4k: MediaStatus.AVAILABLE, media: { id: media.id } }, + { + status4k: MediaStatus.PARTIALLY_AVAILABLE, + media: { id: media.id }, + }, + ], + }); + + let didDeleteSeasons = false; + for (const season of seasons) { + if ( + !mediaExists && + (season.status !== MediaStatus.UNKNOWN || + season.status4k !== MediaStatus.UNKNOWN) + ) { + await seasonRepository.update( + { id: season.id }, + { + status: MediaStatus.UNKNOWN, + status4k: MediaStatus.UNKNOWN, + } + ); + } else { + const seasonExists = await this.seasonExists(media, season); + + if (!seasonExists) { + logger.info( + `Removing season ${season.seasonNumber}, media ID ${media.id} because it does not exist in any of your media instances.`, + { label: 'AvailabilitySync' } + ); + + if ( + season.status !== MediaStatus.UNKNOWN || + season.status4k !== MediaStatus.UNKNOWN + ) { + await seasonRepository.update( + { id: season.id }, + { + status: MediaStatus.UNKNOWN, + status4k: MediaStatus.UNKNOWN, + } + ); + } + + const seasonToBeDeleted = await seasonRequestRepository.findOne( { - status: MediaStatus.UNKNOWN, - status4k: MediaStatus.UNKNOWN, + relations: { + request: { + media: true, + }, + }, + where: { + request: { + media: { + id: media.id, + }, + }, + seasonNumber: season.seasonNumber, + }, } ); - } else { - const seasonExists = await this.seasonExists(media, season); - if (!seasonExists) { - logger.info( - `Removing season ${season.seasonNumber}, media id: ${media.tvdbId} because it does not exist in any of your media instances.`, - { label: 'AvailabilitySync' } - ); - - if ( - season.status !== MediaStatus.UNKNOWN || - season.status4k !== MediaStatus.UNKNOWN - ) { - await seasonRepository.update( - { id: season.id }, - { - status: MediaStatus.UNKNOWN, - status4k: MediaStatus.UNKNOWN, - } - ); - } - - const seasonToBeDeleted = - await seasonRequestRepository.findOne({ - relations: { - request: { - media: true, - }, - }, - where: { - request: { - media: { - id: media.id, - }, - }, - seasonNumber: season.seasonNumber, - }, - }); - - if (seasonToBeDeleted) { - await seasonRequestRepository.remove(seasonToBeDeleted); - } - - didDeleteSeasons = true; + if (seasonToBeDeleted) { + await seasonRequestRepository.remove(seasonToBeDeleted); } + + didDeleteSeasons = true; } + } - if (didDeleteSeasons) { - if ( - media.status === MediaStatus.AVAILABLE || - media.status4k === MediaStatus.AVAILABLE - ) { - logger.info( - `Marking media id: ${media.tvdbId} as PARTIALLY_AVAILABLE because we deleted some of its seasons.`, - { label: 'AvailabilitySync' } - ); + if (didDeleteSeasons) { + if ( + media.status === MediaStatus.AVAILABLE || + media.status4k === MediaStatus.AVAILABLE + ) { + logger.info( + `Marking media ID ${media.id} as PARTIALLY_AVAILABLE because season removal has occurred.`, + { label: 'AvailabilitySync' } + ); - if (media.status === MediaStatus.AVAILABLE) { - await mediaRepository.update(media.id, { - status: MediaStatus.PARTIALLY_AVAILABLE, - }); - } + if (media.status === MediaStatus.AVAILABLE) { + await mediaRepository.update(media.id, { + status: MediaStatus.PARTIALLY_AVAILABLE, + }); + } - if (media.status4k === MediaStatus.AVAILABLE) { - await mediaRepository.update(media.id, { - status4k: MediaStatus.PARTIALLY_AVAILABLE, - }); - } + if (media.status4k === MediaStatus.AVAILABLE) { + await mediaRepository.update(media.id, { + status4k: MediaStatus.PARTIALLY_AVAILABLE, + }); } } } } - } catch (ex) { - logger.error('Failure with media.', { - errorMessage: ex.message, - label: 'AvailabilitySync', - }); } } } catch (ex) { @@ -254,9 +247,9 @@ class AvailabilitySync { }); logger.info( - `${media.tmdbId} does not exist in your ${is4k ? '4k' : 'non-4k'} ${ - isTVType ? 'sonarr' : 'radarr' - } and plex instance. We will change its status to unknown.`, + `Media ID ${media.id} does not exist in your ${is4k ? '4k' : 'non-4k'} ${ + isTVType ? 'Sonarr' : 'Radarr' + } and Plex instance. Status will be changed to unknown.`, { label: 'AvailabilitySync' } ); @@ -306,46 +299,70 @@ class AvailabilitySync { apiKey: server.apiKey, url: RadarrAPI.buildUrl(server, '/api/v3'), }); - const meta = await api.getMovieByTmdbId(media.tmdbId); + try { + // Check if both exist or if a single non-4k or 4k exists + // If both do not exist we will return false - //check if both exist or if a single non-4k or 4k exists - //if both do not exist we will return false - if (!server.is4k && !meta.id) { - existsInRadarr = false; - } + let meta: RadarrMovie | undefined; - if (server.is4k && !meta.id) { - existsInRadarr4k = false; + if (!server.is4k && media.externalServiceId) { + meta = await api.getMovie({ id: media.externalServiceId }); + } + + if (server.is4k && media.externalServiceId4k) { + meta = await api.getMovie({ id: media.externalServiceId4k }); + } + + if (!server.is4k && (!meta || !meta.hasFile)) { + existsInRadarr = false; + } + + if (server.is4k && (!meta || !meta.hasFile)) { + existsInRadarr4k = false; + } + } catch (ex) { + logger.debug( + `Failure retrieving media ID ${media.id} from your ${ + !server.is4k ? 'non-4K' : '4K' + } Radarr.`, + { + errorMessage: ex.message, + label: 'AvailabilitySync', + } + ); + if (!server.is4k) { + existsInRadarr = false; + } + + if (server.is4k) { + existsInRadarr4k = false; + } } } - if (existsInRadarr && existsInRadarr4k) { - return true; - } - - if (!existsInRadarr && existsInPlex) { - return true; - } - - if (!existsInRadarr4k && existsInPlex4k) { - return true; - } - - //if only a single non-4k or 4k exists, then change entity columns accordingly - //related media request will then be deleted - if (!existsInRadarr && existsInRadarr4k && !existsInPlex) { + // If only a single non-4k or 4k exists, then change entity columns accordingly + // Related media request will then be deleted + if ( + !existsInRadarr && + (existsInRadarr4k || existsInPlex4k) && + !existsInPlex + ) { if (media.status !== MediaStatus.UNKNOWN) { this.mediaUpdater(media, false); } } - if (existsInRadarr && !existsInRadarr4k && !existsInPlex4k) { + if ( + (existsInRadarr || existsInPlex) && + !existsInRadarr4k && + !existsInPlex4k + ) { if (media.status4k !== MediaStatus.UNKNOWN) { this.mediaUpdater(media, true); } } - if (existsInRadarr || existsInRadarr4k) { + if (existsInRadarr || existsInRadarr4k || existsInPlex || existsInPlex4k) { return true; } @@ -357,10 +374,6 @@ class AvailabilitySync { existsInPlex: boolean, existsInPlex4k: boolean ): Promise { - if (!media.tvdbId) { - return false; - } - let existsInSonarr = true; let existsInSonarr4k = true; @@ -369,49 +382,75 @@ class AvailabilitySync { apiKey: server.apiKey, url: SonarrAPI.buildUrl(server, '/api/v3'), }); + try { + // Check if both exist or if a single non-4k or 4k exists + // If both do not exist we will return false - const meta = await api.getSeriesByTvdbId(media.tvdbId); + let meta: SonarrSeries | undefined; - this.sonarrSeasonsCache[`${server.id}-${media.tvdbId}`] = meta.seasons; + if (!server.is4k && media.externalServiceId) { + meta = await api.getSeriesById(media.externalServiceId); + this.sonarrSeasonsCache[`${server.id}-${media.externalServiceId}`] = + meta.seasons; + } - //check if both exist or if a single non-4k or 4k exists - //if both do not exist we will return false - if (!server.is4k && !meta.id) { - existsInSonarr = false; - } + if (server.is4k && media.externalServiceId4k) { + meta = await api.getSeriesById(media.externalServiceId4k); + this.sonarrSeasonsCache[`${server.id}-${media.externalServiceId4k}`] = + meta.seasons; + } - if (server.is4k && !meta.id) { - existsInSonarr4k = false; + if (!server.is4k && (!meta || meta.statistics.episodeFileCount === 0)) { + existsInSonarr = false; + } + + if (server.is4k && (!meta || meta.statistics.episodeFileCount === 0)) { + existsInSonarr4k = false; + } + } catch (ex) { + logger.debug( + `Failure retrieving media ID ${media.id} from your ${ + !server.is4k ? 'non-4K' : '4K' + } Sonarr.`, + { + errorMessage: ex.message, + label: 'AvailabilitySync', + } + ); + + if (!server.is4k) { + existsInSonarr = false; + } + + if (server.is4k) { + existsInSonarr4k = false; + } } } - if (existsInSonarr && existsInSonarr4k) { - return true; - } - - if (!existsInSonarr && existsInPlex) { - return true; - } - - if (!existsInSonarr4k && existsInPlex4k) { - return true; - } - - //if only a single non-4k or 4k exists, then change entity columns accordingly - //related media request will then be deleted - if (!existsInSonarr && existsInSonarr4k && !existsInPlex) { + // If only a single non-4k or 4k exists, then change entity columns accordingly + // Related media request will then be deleted + if ( + !existsInSonarr && + (existsInSonarr4k || existsInPlex4k) && + !existsInPlex + ) { if (media.status !== MediaStatus.UNKNOWN) { this.mediaUpdater(media, false); } } - if (existsInSonarr && !existsInSonarr4k && !existsInPlex4k) { + if ( + (existsInSonarr || existsInPlex) && + !existsInSonarr4k && + !existsInPlex4k + ) { if (media.status4k !== MediaStatus.UNKNOWN) { this.mediaUpdater(media, true); } } - if (existsInSonarr || existsInSonarr4k) { + if (existsInSonarr || existsInSonarr4k || existsInPlex || existsInPlex4k) { return true; } @@ -424,10 +463,6 @@ class AvailabilitySync { seasonExistsInPlex: boolean, seasonExistsInPlex4k: boolean ): Promise { - if (!media.tvdbId) { - return false; - } - let seasonExistsInSonarr = true; let seasonExistsInSonarr4k = true; @@ -441,35 +476,67 @@ class AvailabilitySync { url: SonarrAPI.buildUrl(server, '/api/v3'), }); - const seasons = - this.sonarrSeasonsCache[`${server.id}-${media.tvdbId}`] ?? - (await api.getSeriesByTvdbId(media.tvdbId)).seasons; - this.sonarrSeasonsCache[`${server.id}-${media.tvdbId}`] = seasons; + try { + // Here we can use the cache we built when we fetched the series with mediaExistsInSonarr + // If the cache does not have data, we will fetch with the api route - const hasMonitoredSeason = seasons.find( - ({ monitored, seasonNumber }) => - monitored && season.seasonNumber === seasonNumber - ); + let seasons: SonarrSeason[] = + this.sonarrSeasonsCache[ + `${server.id}-${ + !server.is4k ? media.externalServiceId : media.externalServiceId4k + }` + ]; - if (!server.is4k && !hasMonitoredSeason) { - seasonExistsInSonarr = false; + if (!server.is4k && media.externalServiceId) { + seasons = + this.sonarrSeasonsCache[ + `${server.id}-${media.externalServiceId}` + ] ?? (await api.getSeriesById(media.externalServiceId)).seasons; + this.sonarrSeasonsCache[`${server.id}-${media.externalServiceId}`] = + seasons; + } + + if (server.is4k && media.externalServiceId4k) { + seasons = + this.sonarrSeasonsCache[ + `${server.id}-${media.externalServiceId4k}` + ] ?? (await api.getSeriesById(media.externalServiceId4k)).seasons; + this.sonarrSeasonsCache[`${server.id}-${media.externalServiceId4k}`] = + seasons; + } + + const seasonIsUnavailable = seasons?.find( + ({ seasonNumber, statistics }) => + season.seasonNumber === seasonNumber && + statistics?.episodeFileCount === 0 + ); + + if (!server.is4k && seasonIsUnavailable) { + seasonExistsInSonarr = false; + } + + if (server.is4k && seasonIsUnavailable) { + seasonExistsInSonarr4k = false; + } + } catch (ex) { + logger.debug( + `Failure retrieving media ID ${media.id} from your ${ + !server.is4k ? 'non-4K' : '4K' + } Sonarr.`, + { + errorMessage: ex.message, + label: 'AvailabilitySync', + } + ); + + if (!server.is4k) { + seasonExistsInSonarr = false; + } + + if (server.is4k) { + seasonExistsInSonarr4k = false; + } } - - if (server.is4k && !hasMonitoredSeason) { - seasonExistsInSonarr4k = false; - } - } - - if (seasonExistsInSonarr && seasonExistsInSonarr4k) { - return true; - } - - if (!seasonExistsInSonarr && seasonExistsInPlex) { - return true; - } - - if (!seasonExistsInSonarr4k && seasonExistsInPlex4k) { - return true; } const seasonToBeDeleted = await seasonRequestRepository.findOne({ @@ -489,16 +556,16 @@ class AvailabilitySync { }, }); - //if season does not exist, we will change status to unknown and delete related season request - //if parent media request is empty(all related seasons have been removed), parent is automatically deleted + // If season does not exist, we will change status to unknown and delete related season request + // If parent media request is empty(all related seasons have been removed), parent is automatically deleted if ( !seasonExistsInSonarr && - seasonExistsInSonarr4k && + (seasonExistsInSonarr4k || seasonExistsInPlex4k) && !seasonExistsInPlex ) { if (season.status !== MediaStatus.UNKNOWN) { logger.info( - `${media.tvdbId}, season: ${season.seasonNumber} does not exist in your non-4k sonarr and plex instance. We will change its status to unknown.`, + `Season ${season.seasonNumber}, media ID ${media.id} does not exist in your non-4k Sonarr and Plex instance. Status will be changed to unknown.`, { label: 'AvailabilitySync' } ); await seasonRepository.update(season.id, { @@ -511,7 +578,7 @@ class AvailabilitySync { if (media.status === MediaStatus.AVAILABLE) { logger.info( - `Marking media id: ${media.tvdbId} as PARTIALLY_AVAILABLE because we deleted one of its seasons.`, + `Marking media ID ${media.id} as PARTIALLY_AVAILABLE because season removal has occurred.`, { label: 'AvailabilitySync' } ); await mediaRepository.update(media.id, { @@ -522,13 +589,13 @@ class AvailabilitySync { } if ( - seasonExistsInSonarr && + (seasonExistsInSonarr || seasonExistsInPlex) && !seasonExistsInSonarr4k && !seasonExistsInPlex4k ) { if (season.status4k !== MediaStatus.UNKNOWN) { logger.info( - `${media.tvdbId}, season: ${season.seasonNumber} does not exist in your 4k sonarr and plex instance. We will change its status to unknown.`, + `Season ${season.seasonNumber}, media ID ${media.id} does not exist in your 4k Sonarr and Plex instance. Status will be changed to unknown.`, { label: 'AvailabilitySync' } ); await seasonRepository.update(season.id, { @@ -541,7 +608,7 @@ class AvailabilitySync { if (media.status4k === MediaStatus.AVAILABLE) { logger.info( - `Marking media id: ${media.tvdbId} as PARTIALLY_AVAILABLE because we deleted one of its seasons.`, + `Marking media ID ${media.id} as PARTIALLY_AVAILABLE because season removal has occurred.`, { label: 'AvailabilitySync' } ); await mediaRepository.update(media.id, { @@ -551,7 +618,12 @@ class AvailabilitySync { } } - if (seasonExistsInSonarr || seasonExistsInSonarr4k) { + if ( + seasonExistsInSonarr || + seasonExistsInSonarr4k || + seasonExistsInPlex || + seasonExistsInPlex4k + ) { return true; } @@ -565,7 +637,7 @@ class AvailabilitySync { let existsInPlex = false; let existsInPlex4k = false; - //check each plex instance to see if media exists + // Check each plex instance to see if media exists try { if (ratingKey) { const meta = await this.plexClient?.getMetadata(ratingKey); @@ -573,6 +645,7 @@ class AvailabilitySync { existsInPlex = true; } } + if (ratingKey4k) { const meta4k = await this.plexClient?.getMetadata(ratingKey4k); if (meta4k) { @@ -580,18 +653,17 @@ class AvailabilitySync { } } } catch (ex) { - // TODO: oof, not the nicest way of handling this, but plex-api does not leave us with any other options... if (!ex.message.includes('response code: 404')) { throw ex; } } - //base case for if both media versions exist in plex + // Base case if both media versions exist in plex if (existsInPlex && existsInPlex4k) { return true; } - //we then check radarr or sonarr has that specific media. If not, then we will move to delete - //if a non-4k or 4k version exists in at least one of the instances, we will only update that specific version + // We then check radarr or sonarr has that specific media. If not, then we will move to delete + // If a non-4k or 4k version exists in at least one of the instances, we will only update that specific version if (media.mediaType === 'movie') { const existsInRadarr = await this.mediaExistsInRadarr( media, @@ -599,10 +671,10 @@ class AvailabilitySync { existsInPlex4k ); - //if true, media exists in at least one radarr or plex instance. + // If true, media exists in at least one radarr or plex instance. if (existsInRadarr) { logger.warn( - `${media.tmdbId} exists in at least one radarr or plex instance. Media will be updated if set to available.`, + `${media.id} exists in at least one Radarr or Plex instance. Media will be updated if set to available.`, { label: 'AvailabilitySync', } @@ -619,10 +691,10 @@ class AvailabilitySync { existsInPlex4k ); - //if true, media exists in at least one sonarr or plex instance. + // If true, media exists in at least one sonarr or plex instance. if (existsInSonarr) { logger.warn( - `${media.tvdbId} exists in at least one sonarr or plex instance. Media will be updated if set to available.`, + `${media.id} exists in at least one Sonarr or Plex instance. Media will be updated if set to available.`, { label: 'AvailabilitySync', } @@ -672,7 +744,7 @@ class AvailabilitySync { } } - //base case for if both season versions exist in plex + // Base case if both season versions exist in plex if (seasonExistsInPlex && seasonExistsInPlex4k) { return true; } @@ -686,7 +758,7 @@ class AvailabilitySync { if (existsInSonarr) { logger.warn( - `${media.tvdbId}, season: ${season.seasonNumber} exists in at least one sonarr or plex instance. Media will be updated if set to available.`, + `Season ${season.seasonNumber}, media ID ${media.id} exists in at least one Sonarr or Plex instance. Media will be updated if set to available.`, { label: 'AvailabilitySync', } diff --git a/server/lib/settings.ts b/server/lib/settings.ts index ebc8f4af..b1d10577 100644 --- a/server/lib/settings.ts +++ b/server/lib/settings.ts @@ -69,6 +69,7 @@ export interface DVRSettings { externalUrl?: string; syncEnabled: boolean; preventSearch: boolean; + tagRequests: boolean; } export interface RadarrSettings extends DVRSettings { diff --git a/server/lib/watchlistsync.ts b/server/lib/watchlistsync.ts index 46147f3f..b4a07297 100644 --- a/server/lib/watchlistsync.ts +++ b/server/lib/watchlistsync.ts @@ -65,6 +65,7 @@ class WatchlistSync { const response = await plexTvApi.getWatchlist({ size: 200 }); const mediaItems = await Media.getRelatedMedia( + user, response.items.map((i) => i.tmdbId) ); diff --git a/server/migration/1682608634546-AddWatchlists.ts b/server/migration/1682608634546-AddWatchlists.ts new file mode 100644 index 00000000..492fb183 --- /dev/null +++ b/server/migration/1682608634546-AddWatchlists.ts @@ -0,0 +1,19 @@ +import type { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddWatchlists1682608634546 implements MigrationInterface { + name = 'AddWatchlists1682608634546'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "watchlist" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "ratingKey" varchar NOT NULL, "mediaType" varchar NOT NULL, "title" varchar NOT NULL, "tmdbId" integer NOT NULL, "createdAt" datetime NOT NULL DEFAULT (datetime('now')), "updatedAt" datetime NOT NULL DEFAULT (datetime('now')), "requestedById" integer, "mediaId" integer, CONSTRAINT "UNIQUE_USER_DB" UNIQUE ("tmdbId", "requestedById"))` + ); + await queryRunner.query( + `CREATE INDEX "IDX_939f205946256cc0d2a1ac51a8" ON "watchlist" ("tmdbId") ` + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP INDEX "IDX_939f205946256cc0d2a1ac51a8"`); + await queryRunner.query(`DROP TABLE "watchlist"`); + } +} diff --git a/server/models/Search.ts b/server/models/Search.ts index 6ab696fe..2193bbe1 100644 --- a/server/models/Search.ts +++ b/server/models/Search.ts @@ -1,4 +1,5 @@ import type { + TmdbCollectionResult, TmdbMovieDetails, TmdbMovieResult, TmdbPersonDetails, @@ -9,7 +10,7 @@ import type { import { MediaType as MainMediaType } from '@server/constants/media'; import type Media from '@server/entity/Media'; -export type MediaType = 'tv' | 'movie' | 'person'; +export type MediaType = 'tv' | 'movie' | 'person' | 'collection'; interface SearchResult { id: number; @@ -43,6 +44,18 @@ export interface TvResult extends SearchResult { firstAirDate: string; } +export interface CollectionResult { + id: number; + mediaType: 'collection'; + title: string; + originalTitle: string; + adult: boolean; + posterPath?: string; + backdropPath?: string; + overview: string; + originalLanguage: string; +} + export interface PersonResult { id: number; name: string; @@ -53,7 +66,7 @@ export interface PersonResult { knownFor: (MovieResult | TvResult)[]; } -export type Results = MovieResult | TvResult | PersonResult; +export type Results = MovieResult | TvResult | PersonResult | CollectionResult; export const mapMovieResult = ( movieResult: TmdbMovieResult, @@ -99,6 +112,20 @@ export const mapTvResult = ( mediaInfo: media, }); +export const mapCollectionResult = ( + collectionResult: TmdbCollectionResult +): CollectionResult => ({ + id: collectionResult.id, + mediaType: collectionResult.media_type || 'collection', + adult: collectionResult.adult, + originalLanguage: collectionResult.original_language, + originalTitle: collectionResult.original_title, + title: collectionResult.title, + overview: collectionResult.overview, + backdropPath: collectionResult.backdrop_path, + posterPath: collectionResult.poster_path, +}); + export const mapPersonResult = ( personResult: TmdbPersonResult ): PersonResult => ({ @@ -118,7 +145,12 @@ export const mapPersonResult = ( }); export const mapSearchResults = ( - results: (TmdbMovieResult | TmdbTvResult | TmdbPersonResult)[], + results: ( + | TmdbMovieResult + | TmdbTvResult + | TmdbPersonResult + | TmdbCollectionResult + )[], media?: Media[] ): Results[] => results.map((result) => { @@ -139,6 +171,8 @@ export const mapSearchResults = ( req.tmdbId === result.id && req.mediaType === MainMediaType.TV ) ); + case 'collection': + return mapCollectionResult(result); default: return mapPersonResult(result); } diff --git a/server/repositories/watchlist.repository.ts b/server/repositories/watchlist.repository.ts new file mode 100644 index 00000000..128e64f5 --- /dev/null +++ b/server/repositories/watchlist.repository.ts @@ -0,0 +1,11 @@ +import { getRepository } from '@server/datasource'; +import { Watchlist } from '@server/entity/Watchlist'; + +export const UserRepository = getRepository(Watchlist).extend({ + // findByName(firstName: string, lastName: string) { + // return this.createQueryBuilder("user") + // .where("user.firstName = :firstName", { firstName }) + // .andWhere("user.lastName = :lastName", { lastName }) + // .getMany() + // }, +}); diff --git a/server/routes/auth.ts b/server/routes/auth.ts index 1dabcdf3..7adcc73a 100644 --- a/server/routes/auth.ts +++ b/server/routes/auth.ts @@ -380,7 +380,7 @@ authRoutes.post('/jellyfin', async (req, res, next) => { return res.status(200).json(user?.filter() ?? {}); } catch (e) { if (e.message === 'Unauthorized') { - logger.info( + logger.warn( 'Failed login attempt from user with incorrect Jellyfin credentials', { label: 'Auth', diff --git a/server/routes/collection.ts b/server/routes/collection.ts index d58b0357..cc2a36e7 100644 --- a/server/routes/collection.ts +++ b/server/routes/collection.ts @@ -16,6 +16,7 @@ collectionRoutes.get<{ id: string }>('/:id', async (req, res, next) => { }); const media = await Media.getRelatedMedia( + req.user, collection.parts.map((part) => part.id) ); diff --git a/server/routes/discover.ts b/server/routes/discover.ts index f032fa66..b5fe22ea 100644 --- a/server/routes/discover.ts +++ b/server/routes/discover.ts @@ -6,6 +6,7 @@ import { MediaType } from '@server/constants/media'; import { getRepository } from '@server/datasource'; import Media from '@server/entity/Media'; import { User } from '@server/entity/User'; +import { Watchlist } from '@server/entity/Watchlist'; import type { GenreSliderItem, WatchlistResponse, @@ -14,12 +15,13 @@ import { getSettings } from '@server/lib/settings'; import logger from '@server/logger'; import { mapProductionCompany } from '@server/models/Movie'; import { + mapCollectionResult, mapMovieResult, mapPersonResult, mapTvResult, } from '@server/models/Search'; import { mapNetwork } from '@server/models/Tv'; -import { isMovie, isPerson } from '@server/utils/typeHelpers'; +import { isCollection, isMovie, isPerson } from '@server/utils/typeHelpers'; import { Router } from 'express'; import { sortBy } from 'lodash'; import { z } from 'zod'; @@ -64,6 +66,8 @@ const QueryFilterOptions = z.object({ withRuntimeLte: z.coerce.string().optional(), voteAverageGte: z.coerce.string().optional(), voteAverageLte: z.coerce.string().optional(), + voteCountGte: z.coerce.string().optional(), + voteCountLte: z.coerce.string().optional(), network: z.coerce.string().optional(), watchProviders: z.coerce.string().optional(), watchRegion: z.coerce.string().optional(), @@ -95,11 +99,14 @@ discoverRoutes.get('/movies', async (req, res, next) => { withRuntimeLte: query.withRuntimeLte, voteAverageGte: query.voteAverageGte, voteAverageLte: query.voteAverageLte, + voteCountGte: query.voteCountGte, + voteCountLte: query.voteCountLte, watchProviders: query.watchProviders, watchRegion: query.watchRegion, }); const media = await Media.getRelatedMedia( + req.user, data.results.map((result) => result.id) ); @@ -164,6 +171,7 @@ discoverRoutes.get<{ language: string }>( }); const media = await Media.getRelatedMedia( + req.user, data.results.map((result) => result.id) ); @@ -221,6 +229,7 @@ discoverRoutes.get<{ genreId: string }>( }); const media = await Media.getRelatedMedia( + req.user, data.results.map((result) => result.id) ); @@ -268,6 +277,7 @@ discoverRoutes.get<{ studioId: string }>( }); const media = await Media.getRelatedMedia( + req.user, data.results.map((result) => result.id) ); @@ -317,6 +327,7 @@ discoverRoutes.get('/movies/upcoming', async (req, res, next) => { }); const media = await Media.getRelatedMedia( + req.user, data.results.map((result) => result.id) ); @@ -370,11 +381,14 @@ discoverRoutes.get('/tv', async (req, res, next) => { withRuntimeLte: query.withRuntimeLte, voteAverageGte: query.voteAverageGte, voteAverageLte: query.voteAverageLte, + voteCountGte: query.voteCountGte, + voteCountLte: query.voteCountLte, watchProviders: query.watchProviders, watchRegion: query.watchRegion, }); const media = await Media.getRelatedMedia( + req.user, data.results.map((result) => result.id) ); @@ -438,6 +452,7 @@ discoverRoutes.get<{ language: string }>( }); const media = await Media.getRelatedMedia( + req.user, data.results.map((result) => result.id) ); @@ -495,6 +510,7 @@ discoverRoutes.get<{ genreId: string }>( }); const media = await Media.getRelatedMedia( + req.user, data.results.map((result) => result.id) ); @@ -542,6 +558,7 @@ discoverRoutes.get<{ networkId: string }>( }); const media = await Media.getRelatedMedia( + req.user, data.results.map((result) => result.id) ); @@ -591,6 +608,7 @@ discoverRoutes.get('/tv/upcoming', async (req, res, next) => { }); const media = await Media.getRelatedMedia( + req.user, data.results.map((result) => result.id) ); @@ -629,6 +647,7 @@ discoverRoutes.get('/trending', async (req, res, next) => { }); const media = await Media.getRelatedMedia( + req.user, data.results.map((result) => result.id) ); @@ -647,6 +666,8 @@ discoverRoutes.get('/trending', async (req, res, next) => { ) : isPerson(result) ? mapPersonResult(result) + : isCollection(result) + ? mapCollectionResult(result) : mapTvResult( result, media.find( @@ -681,6 +702,7 @@ discoverRoutes.get<{ keywordId: string }>( }); const media = await Media.getRelatedMedia( + req.user, data.results.map((result) => result.id) ); @@ -813,6 +835,25 @@ discoverRoutes.get, WatchlistResponse>( select: ['id', 'plexToken'], }); + if (activeUser) { + const [result, total] = await getRepository(Watchlist).findAndCount({ + where: { requestedBy: { id: activeUser?.id } }, + relations: { + /*requestedBy: true,media:true*/ + }, + // loadRelationIds: true, + take: itemsPerPage, + skip: offset, + }); + if (total) { + return res.json({ + page: page, + totalPages: total / itemsPerPage, + totalResults: total, + results: result, + }); + } + } if (!activeUser?.plexToken) { // We will just return an empty array if the user has no Plex token return res.json({ diff --git a/server/routes/index.ts b/server/routes/index.ts index f76f09fa..552ca78d 100644 --- a/server/routes/index.ts +++ b/server/routes/index.ts @@ -15,6 +15,7 @@ import { mapWatchProviderDetails } from '@server/models/common'; import { mapProductionCompany } from '@server/models/Movie'; import { mapNetwork } from '@server/models/Tv'; import settingsRoutes from '@server/routes/settings'; +import watchlistRoutes from '@server/routes/watchlist'; import { appDataPath, appDataStatus } from '@server/utils/appDataVolume'; import { getAppVersion, getCommitTag } from '@server/utils/appVersion'; import restartFlag from '@server/utils/restartFlag'; @@ -116,6 +117,7 @@ router.use('/settings', isAuthenticated(Permission.ADMIN), settingsRoutes); router.use('/search', isAuthenticated(), searchRoutes); router.use('/discover', isAuthenticated(), discoverRoutes); router.use('/request', isAuthenticated(), requestRoutes); +router.use('/watchlist', isAuthenticated(), watchlistRoutes); router.use('/movie', isAuthenticated(), movieRoutes); router.use('/tv', isAuthenticated(), tvRoutes); router.use('/media', isAuthenticated(), mediaRoutes); diff --git a/server/routes/movie.ts b/server/routes/movie.ts index f11cead8..8d609262 100644 --- a/server/routes/movie.ts +++ b/server/routes/movie.ts @@ -45,6 +45,7 @@ movieRoutes.get('/:id/recommendations', async (req, res, next) => { }); const media = await Media.getRelatedMedia( + req.user, results.results.map((result) => result.id) ); @@ -86,6 +87,7 @@ movieRoutes.get('/:id/similar', async (req, res, next) => { }); const media = await Media.getRelatedMedia( + req.user, results.results.map((result) => result.id) ); diff --git a/server/routes/person.ts b/server/routes/person.ts index 7f5d6223..d5cb8986 100644 --- a/server/routes/person.ts +++ b/server/routes/person.ts @@ -42,10 +42,12 @@ personRoutes.get('/:id/combined_credits', async (req, res, next) => { }); const castMedia = await Media.getRelatedMedia( + req.user, combinedCredits.cast.map((result) => result.id) ); const crewMedia = await Media.getRelatedMedia( + req.user, combinedCredits.crew.map((result) => result.id) ); diff --git a/server/routes/search.ts b/server/routes/search.ts index b9254221..0de090ca 100644 --- a/server/routes/search.ts +++ b/server/routes/search.ts @@ -34,6 +34,7 @@ searchRoutes.get('/', async (req, res, next) => { } const media = await Media.getRelatedMedia( + req.user, results.results.map((result) => result.id) ); diff --git a/server/routes/service.ts b/server/routes/service.ts index b77d58c9..083e1eb5 100644 --- a/server/routes/service.ts +++ b/server/routes/service.ts @@ -183,9 +183,7 @@ serviceRoutes.get<{ tmdbId: string }>( const sonarr = new SonarrAPI({ apiKey: sonarrSettings.apiKey, - url: `${sonarrSettings.useSsl ? 'https' : 'http'}://${ - sonarrSettings.hostname - }:${sonarrSettings.port}${sonarrSettings.baseUrl ?? ''}/api`, + url: SonarrAPI.buildUrl(sonarrSettings, '/api/v3'), }); try { diff --git a/server/routes/tv.ts b/server/routes/tv.ts index d45e4062..1d2b4dee 100644 --- a/server/routes/tv.ts +++ b/server/routes/tv.ts @@ -69,6 +69,7 @@ tvRoutes.get('/:id/recommendations', async (req, res, next) => { }); const media = await Media.getRelatedMedia( + req.user, results.results.map((result) => result.id) ); @@ -109,6 +110,7 @@ tvRoutes.get('/:id/similar', async (req, res, next) => { }); const media = await Media.getRelatedMedia( + req.user, results.results.map((result) => result.id) ); diff --git a/server/routes/user/index.ts b/server/routes/user/index.ts index 55a912f3..046a1471 100644 --- a/server/routes/user/index.ts +++ b/server/routes/user/index.ts @@ -8,6 +8,7 @@ import Media from '@server/entity/Media'; import { MediaRequest } from '@server/entity/MediaRequest'; import { User } from '@server/entity/User'; import { UserPushSubscription } from '@server/entity/UserPushSubscription'; +import { Watchlist } from '@server/entity/Watchlist'; import type { WatchlistResponse } from '@server/interfaces/api/discoverInterfaces'; import type { QuotaResponse, @@ -382,7 +383,14 @@ router.delete<{ id: string }>( * we manually remove all requests from the user here so the parent media's * properly reflect the change. */ - await requestRepository.remove(user.requests); + await requestRepository.remove(user.requests, { + /** + * Break-up into groups of 1000 requests to be removed at a time. + * Necessary for users with >1000 requests, else an SQLite 'Expression tree is too large' error occurs. + * https://typeorm.io/repository-api#additional-options + */ + chunk: user.requests.length / 1000, + }); await userRepository.delete(user.id); return res.status(200).json(user.filter()); @@ -699,8 +707,7 @@ router.get<{ id: string }, WatchlistResponse>( ) { return next({ status: 403, - message: - "You do not have permission to view this user's Plex Watchlist.", + message: "You do not have permission to view this user's Watchlist.", }); } @@ -714,6 +721,24 @@ router.get<{ id: string }, WatchlistResponse>( }); if (!user?.plexToken) { + if (user) { + const [result, total] = await getRepository(Watchlist).findAndCount({ + where: { requestedBy: { id: user?.id } }, + relations: { requestedBy: true }, + // loadRelationIds: true, + take: itemsPerPage, + skip: offset, + }); + if (total) { + return res.json({ + page: page, + totalPages: total / itemsPerPage, + totalResults: total, + results: result, + }); + } + } + // We will just return an empty array if the user has no Plex token return res.json({ page: 1, diff --git a/server/routes/watchlist.ts b/server/routes/watchlist.ts new file mode 100644 index 00000000..bbb44da0 --- /dev/null +++ b/server/routes/watchlist.ts @@ -0,0 +1,73 @@ +import { + DuplicateWatchlistRequestError, + NotFoundError, + Watchlist, +} from '@server/entity/Watchlist'; +import logger from '@server/logger'; +import { Router } from 'express'; +import { QueryFailedError } from 'typeorm'; + +import { watchlistCreate } from '@server/interfaces/api/watchlistCreate'; + +const watchlistRoutes = Router(); + +watchlistRoutes.post( + '/', + async (req, res, next) => { + try { + if (!req.user) { + return next({ + status: 401, + message: 'You must be logged in to add watchlist.', + }); + } + const values = watchlistCreate.parse(req.body); + + const request = await Watchlist.createWatchlist({ + watchlistRequest: values, + user: req.user, + }); + return res.status(201).json(request); + } catch (error) { + if (!(error instanceof Error)) { + return; + } + switch (error.constructor) { + case QueryFailedError: + logger.warn('Something wrong with data watchlist', { + tmdbId: req.body.tmdbId, + mediaType: req.body.mediaType, + label: 'Watchlist', + }); + return next({ status: 409, message: 'Something wrong' }); + case DuplicateWatchlistRequestError: + return next({ status: 409, message: error.message }); + default: + return next({ status: 500, message: error.message }); + } + } + } +); + +watchlistRoutes.delete('/:tmdbId', async (req, res, next) => { + if (!req.user) { + return next({ + status: 401, + message: 'You must be logged in to delete watchlist data.', + }); + } + try { + await Watchlist.deleteWatchlist(Number(req.params.tmdbId), req.user); + return res.status(204).send(); + } catch (e) { + if (e instanceof NotFoundError) { + return next({ + status: 401, + message: e.message, + }); + } + return next({ status: 500, message: e.message }); + } +}); + +export default watchlistRoutes; diff --git a/server/utils/typeHelpers.ts b/server/utils/typeHelpers.ts index 507ece8c..548378ff 100644 --- a/server/utils/typeHelpers.ts +++ b/server/utils/typeHelpers.ts @@ -1,4 +1,5 @@ import type { + TmdbCollectionResult, TmdbMovieDetails, TmdbMovieResult, TmdbPersonDetails, @@ -8,17 +9,35 @@ import type { } from '@server/api/themoviedb/interfaces'; export const isMovie = ( - movie: TmdbMovieResult | TmdbTvResult | TmdbPersonResult + movie: + | TmdbMovieResult + | TmdbTvResult + | TmdbPersonResult + | TmdbCollectionResult ): movie is TmdbMovieResult => { return (movie as TmdbMovieResult).title !== undefined; }; export const isPerson = ( - person: TmdbMovieResult | TmdbTvResult | TmdbPersonResult + person: + | TmdbMovieResult + | TmdbTvResult + | TmdbPersonResult + | TmdbCollectionResult ): person is TmdbPersonResult => { return (person as TmdbPersonResult).known_for !== undefined; }; +export const isCollection = ( + collection: + | TmdbMovieResult + | TmdbTvResult + | TmdbPersonResult + | TmdbCollectionResult +): collection is TmdbCollectionResult => { + return (collection as TmdbCollectionResult).media_type === 'collection'; +}; + export const isMovieDetails = ( movie: TmdbMovieDetails | TmdbTvDetails | TmdbPersonDetails ): movie is TmdbMovieDetails => { diff --git a/src/assets/services/emby.svg b/src/assets/services/emby.svg new file mode 100644 index 00000000..eddc540c --- /dev/null +++ b/src/assets/services/emby.svg @@ -0,0 +1,46 @@ + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/components/CollectionDetails/index.tsx b/src/components/CollectionDetails/index.tsx index 34b379e2..2274d275 100644 --- a/src/components/CollectionDetails/index.tsx +++ b/src/components/CollectionDetails/index.tsx @@ -338,6 +338,7 @@ const CollectionDetails = ({ collection }: CollectionDetailsProps) => { { /> ))} /> -
+
); }; diff --git a/src/components/Common/Badge/index.tsx b/src/components/Common/Badge/index.tsx index 47ce6586..17eda5b1 100644 --- a/src/components/Common/Badge/index.tsx +++ b/src/components/Common/Badge/index.tsx @@ -71,7 +71,7 @@ const Badge = ( 'bg-indigo-500 bg-opacity-80 border border-indigo-500 !text-indigo-100' ); if (href) { - badgeStyle.push('hover:bg-indigo-500 bg-opacity-100'); + badgeStyle.push('hover:bg-indigo-500 hover:bg-opacity-100'); } } diff --git a/src/components/Common/ListView/index.tsx b/src/components/Common/ListView/index.tsx index 6f09f768..907cc8e2 100644 --- a/src/components/Common/ListView/index.tsx +++ b/src/components/Common/ListView/index.tsx @@ -5,6 +5,7 @@ import useVerticalScroll from '@app/hooks/useVerticalScroll'; import globalMessages from '@app/i18n/globalMessages'; import type { WatchlistItem } from '@server/interfaces/api/discoverInterfaces'; import type { + CollectionResult, MovieResult, PersonResult, TvResult, @@ -12,7 +13,7 @@ import type { import { useIntl } from 'react-intl'; type ListViewProps = { - items?: (TvResult | MovieResult | PersonResult)[]; + items?: (TvResult | MovieResult | PersonResult | CollectionResult)[]; plexItems?: WatchlistItem[]; isEmpty?: boolean; isLoading?: boolean; @@ -57,7 +58,9 @@ const ListView = ({ case 'movie': titleCard = ( ); break; + case 'collection': + titleCard = ( + + ); + break; case 'person': titleCard = ( { @@ -276,6 +277,20 @@ const CreateSlider = ({ onCreate, slider }: CreateSliderProps) => { titlePlaceholderText: intl.formatMessage(messages.slidernameplaceholder), dataPlaceholderText: intl.formatMessage(messages.providetmdbsearch), }, + { + type: DiscoverSliderType.TMDB_MOVIE_STREAMING_SERVICES, + title: intl.formatMessage(sliderTitles.tmdbmoviestreamingservices), + dataUrl: '/api/v1/discover/movies', + params: 'watchRegion=$regionValue&watchProviders=$providersValue', + titlePlaceholderText: intl.formatMessage(messages.slidernameplaceholder), + }, + { + type: DiscoverSliderType.TMDB_TV_STREAMING_SERVICES, + title: intl.formatMessage(sliderTitles.tmdbtvstreamingservices), + dataUrl: '/api/v1/discover/tv', + params: 'watchRegion=$regionValue&watchProviders=$providersValue', + titlePlaceholderText: intl.formatMessage(messages.slidernameplaceholder), + }, ]; return ( @@ -417,6 +432,40 @@ const CreateSlider = ({ onCreate, slider }: CreateSliderProps) => { /> ); break; + case DiscoverSliderType.TMDB_MOVIE_STREAMING_SERVICES: + dataInput = ( + Number(v)) ?? [] + } + onChange={(region, providers) => { + setFieldValue('data', `${region},${providers.join('|')}`); + }} + /> + ); + break; + case DiscoverSliderType.TMDB_TV_STREAMING_SERVICES: + dataInput = ( + Number(v)) ?? [] + } + onChange={(region, providers) => { + setFieldValue('data', `${region},${providers.join('|')}`); + }} + /> + ); + break; default: dataInput = ( { '$value', encodeURIExtraParams(values.data) )} - extraParams={activeOption.params?.replace( - '$value', - encodeURIExtraParams(values.data) - )} + extraParams={ + activeOption.type === + DiscoverSliderType.TMDB_MOVIE_STREAMING_SERVICES || + activeOption.type === + DiscoverSliderType.TMDB_TV_STREAMING_SERVICES + ? activeOption.params + ?.replace( + '$regionValue', + encodeURIExtraParams(values?.data.split(',')[0]) + ) + .replace( + '$providersValue', + encodeURIExtraParams(values?.data.split(',')[1]) + ) + : activeOption.params?.replace( + '$value', + encodeURIExtraParams(values.data) + ) + } onNewTitles={updateResultCount} />
diff --git a/src/components/Discover/DiscoverSliderEdit/index.tsx b/src/components/Discover/DiscoverSliderEdit/index.tsx index 970a9887..9a0f3aa7 100644 --- a/src/components/Discover/DiscoverSliderEdit/index.tsx +++ b/src/components/Discover/DiscoverSliderEdit/index.tsx @@ -164,6 +164,10 @@ const DiscoverSliderEdit = ({ return intl.formatMessage(sliderTitles.tmdbnetwork); case DiscoverSliderType.TMDB_SEARCH: return intl.formatMessage(sliderTitles.tmdbsearch); + case DiscoverSliderType.TMDB_MOVIE_STREAMING_SERVICES: + return intl.formatMessage(sliderTitles.tmdbmoviestreamingservices); + case DiscoverSliderType.TMDB_TV_STREAMING_SERVICES: + return intl.formatMessage(sliderTitles.tmdbtvstreamingservices); default: return 'Unknown Slider'; } @@ -195,7 +199,9 @@ const DiscoverSliderEdit = ({ className={`${slider.data ? 'mb-4' : 'mb-0'} flex space-x-2 md:mb-0`} > -
{getSliderTitle(slider)}
+
+ {getSliderTitle(slider)} +
+ + {intl.formatMessage(messages.tmdbuservotecount)} + +
+ { + updateQueryParams( + 'voteCountGte', + min !== 0 && Number(currentFilters.voteCountLte) !== 1000 + ? min.toString() + : undefined + ); + }} + onUpdateMax={(max) => { + updateQueryParams( + 'voteCountLte', + max !== 1000 && Number(currentFilters.voteCountGte) !== 0 + ? max.toString() + : undefined + ); + }} + subText={intl.formatMessage(messages.voteCount, { + minValue: currentFilters.voteCountGte ?? 0, + maxValue: currentFilters.voteCountLte ?? 1000, + })} + /> +
{intl.formatMessage(messages.streamingservices)} diff --git a/src/components/Discover/PlexWatchlistSlider/index.tsx b/src/components/Discover/PlexWatchlistSlider/index.tsx index 76fba57c..bfb52a05 100644 --- a/src/components/Discover/PlexWatchlistSlider/index.tsx +++ b/src/components/Discover/PlexWatchlistSlider/index.tsx @@ -1,6 +1,6 @@ import Slider from '@app/components/Slider'; import TmdbTitleCard from '@app/components/TitleCard/TmdbTitleCard'; -import { UserType, useUser } from '@app/hooks/useUser'; +import { useUser } from '@app/hooks/useUser'; import { ArrowRightCircleIcon } from '@heroicons/react/24/outline'; import type { WatchlistItem } from '@server/interfaces/api/discoverInterfaces'; import Link from 'next/link'; @@ -8,7 +8,7 @@ import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; const messages = defineMessages({ - plexwatchlist: 'Your Plex Watchlist', + plexwatchlist: 'Your Watchlist', emptywatchlist: 'Media added to your Plex Watchlist will appear here.', }); @@ -22,12 +22,11 @@ const PlexWatchlistSlider = () => { totalPages: number; totalResults: number; results: WatchlistItem[]; - }>(user?.userType === UserType.PLEX ? '/api/v1/discover/watchlist' : null, { + }>('/api/v1/discover/watchlist', { revalidateOnMount: true, }); if ( - user?.userType !== UserType.PLEX || (watchlistItems && watchlistItems.results.length === 0 && !user?.settings?.watchlistSyncMovies && @@ -69,6 +68,7 @@ const PlexWatchlistSlider = () => { key={`watchlist-slider-item-${item.ratingKey}`} tmdbId={item.tmdbId} type={item.mediaType} + isAddedToWatchlist={true} /> ))} /> diff --git a/src/components/Discover/constants.ts b/src/components/Discover/constants.ts index 6fcbe43c..c7013f9c 100644 --- a/src/components/Discover/constants.ts +++ b/src/components/Discover/constants.ts @@ -74,7 +74,7 @@ export const sliderTitles = defineMessages({ recentlyAdded: 'Recently Added', upcoming: 'Upcoming Movies', trending: 'Trending', - plexwatchlist: 'Your Plex Watchlist', + plexwatchlist: 'Your Watchlist', moviegenres: 'Movie Genres', tvgenres: 'Series Genres', studios: 'Studios', @@ -86,6 +86,8 @@ export const sliderTitles = defineMessages({ tmdbnetwork: 'TMDB Network', tmdbstudio: 'TMDB Studio', tmdbsearch: 'TMDB Search', + tmdbmoviestreamingservices: 'TMDB Movie Streaming Services', + tmdbtvstreamingservices: 'TMDB TV Streaming Services', }); export const QueryFilterOptions = z.object({ @@ -102,6 +104,8 @@ export const QueryFilterOptions = z.object({ withRuntimeLte: z.string().optional(), voteAverageGte: z.string().optional(), voteAverageLte: z.string().optional(), + voteCountLte: z.string().optional(), + voteCountGte: z.string().optional(), watchRegion: z.string().optional(), watchProviders: z.string().optional(), }); @@ -167,6 +171,14 @@ export const prepareFilterValues = ( filterValues.voteAverageLte = values.voteAverageLte; } + if (values.voteCountGte) { + filterValues.voteCountGte = values.voteCountGte; + } + + if (values.voteCountLte) { + filterValues.voteCountLte = values.voteCountLte; + } + if (values.watchProviders) { filterValues.watchProviders = values.watchProviders; } @@ -188,6 +200,12 @@ export const countActiveFilters = (filterValues: FilterOptions): number => { delete clonedFilters.voteAverageLte; } + if (clonedFilters.voteCountGte || filterValues.voteCountLte) { + totalCount += 1; + delete clonedFilters.voteCountGte; + delete clonedFilters.voteCountLte; + } + if (clonedFilters.withRuntimeGte || filterValues.withRuntimeLte) { totalCount += 1; delete clonedFilters.withRuntimeGte; diff --git a/src/components/Discover/index.tsx b/src/components/Discover/index.tsx index 74383f13..38875dbe 100644 --- a/src/components/Discover/index.tsx +++ b/src/components/Discover/index.tsx @@ -365,6 +365,36 @@ const Discover = () => { /> ); break; + case DiscoverSliderType.TMDB_MOVIE_STREAMING_SERVICES: + sliderComponent = ( + + ); + break; + case DiscoverSliderType.TMDB_TV_STREAMING_SERVICES: + sliderComponent = ( + + ); + break; } if (isEditing) { diff --git a/src/components/ExternalLinkBlock/index.tsx b/src/components/ExternalLinkBlock/index.tsx index d7c4b460..1de0b5a3 100644 --- a/src/components/ExternalLinkBlock/index.tsx +++ b/src/components/ExternalLinkBlock/index.tsx @@ -1,3 +1,4 @@ +import EmbyLogo from '@app/assets/services/emby.svg'; import ImdbLogo from '@app/assets/services/imdb.svg'; import JellyfinLogo from '@app/assets/services/jellyfin.svg'; import PlexLogo from '@app/assets/services/plex.svg'; @@ -9,6 +10,7 @@ import useLocale from '@app/hooks/useLocale'; import useSettings from '@app/hooks/useSettings'; import { MediaType } from '@server/constants/media'; import { MediaServerType } from '@server/constants/server'; +import getConfig from 'next/config'; interface ExternalLinkBlockProps { mediaType: 'movie' | 'tv'; @@ -28,6 +30,7 @@ const ExternalLinkBlock = ({ mediaUrl, }: ExternalLinkBlockProps) => { const settings = useSettings(); + const { publicRuntimeConfig } = getConfig(); const { locale } = useLocale(); return ( @@ -41,6 +44,8 @@ const ExternalLinkBlock = ({ > {settings.currentSettings.mediaServerType === MediaServerType.PLEX ? ( + ) : publicRuntimeConfig.JELLYFIN_TYPE == 'emby' ? ( + ) : ( )} diff --git a/src/components/Layout/PullToRefresh/index.tsx b/src/components/Layout/PullToRefresh/index.tsx new file mode 100644 index 00000000..cdedcf43 --- /dev/null +++ b/src/components/Layout/PullToRefresh/index.tsx @@ -0,0 +1,118 @@ +import { ArrowPathIcon } from '@heroicons/react/24/outline'; +import { useRouter } from 'next/router'; +import { useEffect, useRef, useState } from 'react'; + +const PullToRefresh = () => { + const router = useRouter(); + + const [pullStartPoint, setPullStartPoint] = useState(0); + const [pullChange, setPullChange] = useState(0); + const refreshDiv = useRef(null); + + // Various pull down thresholds that determine icon location + const pullDownInitThreshold = pullChange > 20; + const pullDownStopThreshold = 120; + const pullDownReloadThreshold = pullChange > 340; + const pullDownIconLocation = pullChange / 3; + + useEffect(() => { + // Reload function that is called when reload threshold has been hit + // Add loading class to determine when to add spin animation + const forceReload = () => { + refreshDiv.current?.classList.add('loading'); + setTimeout(() => { + router.reload(); + }, 1000); + }; + + const html = document.querySelector('html'); + + // Determines if we are at the top of the page + // Locks or unlocks page when pulling down to refresh + const pullStart = (e: TouchEvent) => { + setPullStartPoint(e.targetTouches[0].screenY); + + if (window.scrollY === 0 && window.scrollX === 0) { + refreshDiv.current?.classList.add('block'); + refreshDiv.current?.classList.remove('hidden'); + document.body.style.touchAction = 'none'; + document.body.style.overscrollBehavior = 'none'; + if (html) { + html.style.overscrollBehaviorY = 'none'; + } + } else { + refreshDiv.current?.classList.remove('block'); + refreshDiv.current?.classList.add('hidden'); + } + }; + + // Tracks how far we have pulled down the refresh icon + const pullDown = async (e: TouchEvent) => { + const screenY = e.targetTouches[0].screenY; + + const pullLength = + pullStartPoint < screenY ? Math.abs(screenY - pullStartPoint) : 0; + + setPullChange(pullLength); + }; + + // Will reload the page if we are past the threshold + // Otherwise, we reset the pull + const pullFinish = () => { + setPullStartPoint(0); + + if (pullDownReloadThreshold) { + forceReload(); + } else { + setPullChange(0); + } + + document.body.style.touchAction = 'auto'; + document.body.style.overscrollBehaviorY = 'auto'; + if (html) { + html.style.overscrollBehaviorY = 'auto'; + } + }; + + window.addEventListener('touchstart', pullStart, { passive: false }); + window.addEventListener('touchmove', pullDown, { passive: false }); + window.addEventListener('touchend', pullFinish, { passive: false }); + + return () => { + window.removeEventListener('touchstart', pullStart); + window.removeEventListener('touchmove', pullDown); + window.removeEventListener('touchend', pullFinish); + }; + }, [pullDownInitThreshold, pullDownReloadThreshold, pullStartPoint, router]); + + return ( +
+
+ +
+
+ ); +}; + +export default PullToRefresh; diff --git a/src/components/Layout/index.tsx b/src/components/Layout/index.tsx index f18e879a..a1964b0b 100644 --- a/src/components/Layout/index.tsx +++ b/src/components/Layout/index.tsx @@ -1,8 +1,8 @@ import MobileMenu from '@app/components/Layout/MobileMenu'; +import PullToRefresh from '@app/components/Layout/PullToRefresh'; import SearchInput from '@app/components/Layout/SearchInput'; import Sidebar from '@app/components/Layout/Sidebar'; import UserDropdown from '@app/components/Layout/UserDropdown'; -import PullToRefresh from '@app/components/PullToRefresh'; import type { AvailableLocale } from '@app/context/LanguageContext'; import useLocale from '@app/hooks/useLocale'; import useSettings from '@app/hooks/useSettings'; diff --git a/src/components/MediaSlider/index.tsx b/src/components/MediaSlider/index.tsx index 54b5cc80..4ca34d8f 100644 --- a/src/components/MediaSlider/index.tsx +++ b/src/components/MediaSlider/index.tsx @@ -95,7 +95,9 @@ const MediaSlider = ({ case 'movie': return ( { return (
  • { return (
  • { - const router = useRouter(); - - useEffect(() => { - PR.init({ - mainElement: '#pull-to-refresh', - onRefresh() { - router.reload(); - }, - iconArrow: ReactDOMServer.renderToString( -
    - -
    - ), - iconRefreshing: ReactDOMServer.renderToString( -
    - -
    - ), - instructionsPullToRefresh: ReactDOMServer.renderToString(
    ), - instructionsReleaseToRefresh: ReactDOMServer.renderToString(
    ), - instructionsRefreshing: ReactDOMServer.renderToString(
    ), - distReload: 60, - distIgnore: 15, - shouldPullToRefresh: () => - !window.scrollY && document.body.style.overflow !== 'hidden', - }); - return () => { - PR.destroyAll(); - }; - }, [router]); - - return
    ; -}; - -export default PullToRefresh; diff --git a/src/components/Selector/index.tsx b/src/components/Selector/index.tsx index 3b863fd7..78ae33ea 100644 --- a/src/components/Selector/index.tsx +++ b/src/components/Selector/index.tsx @@ -169,15 +169,19 @@ export const GenreSelector = ({ loadDefaultGenre(); }, [defaultValue, type]); - const loadGenreOptions = async () => { + const loadGenreOptions = async (inputValue: string) => { const results = await axios.get( `/api/v1/discover/genreslider/${type}` ); - return results.data.map((result) => ({ - label: result.name, - value: result.id, - })); + return results.data + .map((result) => ({ + label: result.name, + value: result.id, + })) + .filter(({ label }) => + label.toLowerCase().includes(inputValue.toLowerCase()) + ); }; return ( @@ -305,7 +309,9 @@ export const WatchProviderSelector = ({ useEffect(() => { onChange(watchRegion, activeProvider); - }, [activeProvider, watchRegion, onChange]); + // removed onChange as a dependency as we only need to call it when the value(s) change + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [activeProvider, watchRegion]); const orderedData = useMemo(() => { if (!data) { @@ -344,7 +350,7 @@ export const WatchProviderSelector = ({ ) : (
    -
    +
    {initialProviders.map((provider) => { const isActive = activeProvider.includes(provider.id); return ( @@ -353,7 +359,7 @@ export const WatchProviderSelector = ({ key={`prodiver-${provider.id}`} >
    {showMore && otherProviders.length > 0 && ( -
    +
    {otherProviders.map((provider) => { const isActive = activeProvider.includes(provider.id); return ( @@ -395,7 +401,7 @@ export const WatchProviderSelector = ({ key={`prodiver-${provider.id}`} >
    { externalUrl: radarr?.externalUrl, syncEnabled: radarr?.syncEnabled ?? false, enableSearch: !radarr?.preventSearch, + tagRequests: radarr?.tagRequests ?? false, }} validationSchema={RadarrSettingsSchema} onSubmit={async (values) => { @@ -263,6 +267,7 @@ const RadarrModal = ({ onClose, radarr, onSave }: RadarrModalProps) => { externalUrl: values.externalUrl, syncEnabled: values.syncEnabled, preventSearch: !values.enableSearch, + tagRequests: values.tagRequests, }; if (!radarr) { await axios.post('/api/v1/settings/radarr', submission); @@ -713,6 +718,21 @@ const RadarrModal = ({ onClose, radarr, onSave }: RadarrModalProps) => { />
    +
    + +
    + +
    +
    ); diff --git a/src/components/Settings/SonarrModal/index.tsx b/src/components/Settings/SonarrModal/index.tsx index d9ff0c17..6c61d5db 100644 --- a/src/components/Settings/SonarrModal/index.tsx +++ b/src/components/Settings/SonarrModal/index.tsx @@ -62,6 +62,9 @@ const messages = defineMessages({ syncEnabled: 'Enable Scan', externalUrl: 'External URL', enableSearch: 'Enable Automatic Search', + tagRequests: 'Tag Requests', + tagRequestsInfo: + "Automatically add an additional tag with the requester's user ID & display name", validationApplicationUrl: 'You must provide a valid URL', validationApplicationUrlTrailingSlash: 'URL must not end in a trailing slash', validationBaseUrlLeadingSlash: 'Base URL must have a leading slash', @@ -252,6 +255,7 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => { externalUrl: sonarr?.externalUrl, syncEnabled: sonarr?.syncEnabled ?? false, enableSearch: !sonarr?.preventSearch, + tagRequests: sonarr?.tagRequests ?? false, }} validationSchema={SonarrSettingsSchema} onSubmit={async (values) => { @@ -292,6 +296,7 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => { externalUrl: values.externalUrl, syncEnabled: values.syncEnabled, preventSearch: !values.enableSearch, + tagRequests: values.tagRequests, }; if (!sonarr) { await axios.post('/api/v1/settings/sonarr', submission); @@ -960,6 +965,21 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => { />
    +
    + +
    + +
    +
    ); diff --git a/src/components/TitleCard/TmdbTitleCard.tsx b/src/components/TitleCard/TmdbTitleCard.tsx index f031c997..0764f3aa 100644 --- a/src/components/TitleCard/TmdbTitleCard.tsx +++ b/src/components/TitleCard/TmdbTitleCard.tsx @@ -11,6 +11,7 @@ export interface TmdbTitleCardProps { tvdbId?: number; type: 'movie' | 'tv'; canExpand?: boolean; + isAddedToWatchlist?: boolean; } const isMovie = (movie: MovieDetails | TvDetails): movie is MovieDetails => { @@ -23,6 +24,7 @@ const TmdbTitleCard = ({ tvdbId, type, canExpand, + isAddedToWatchlist = false, }: TmdbTitleCardProps) => { const { hasPermission } = useUser(); @@ -56,7 +58,11 @@ const TmdbTitleCard = ({ return isMovie(title) ? ( ) : ( {title} added to watchlist successfully!', + watchlistDeleted: + '{title} Removed from watchlist successfully!', + watchlistCancel: 'watchlist for {title} canceled.', + watchlistError: 'Something went wrong try again.', +}); + const TitleCard = ({ id, image, @@ -38,6 +58,7 @@ const TitleCard = ({ title, status, mediaType, + isAddedToWatchlist = false, inProgress = false, canExpand = false, }: TitleCardProps) => { @@ -48,6 +69,10 @@ const TitleCard = ({ const [currentStatus, setCurrentStatus] = useState(status); const [showDetail, setShowDetail] = useState(false); const [showRequestModal, setShowRequestModal] = useState(false); + const { addToast } = useToasts(); + const [toggleWatchlist, setToggleWatchlist] = useState( + !isAddedToWatchlist + ); // Just to get the year from the date if (year) { @@ -68,12 +93,73 @@ const TitleCard = ({ [] ); + const onClickWatchlistBtn = async (): Promise => { + setIsUpdating(true); + try { + const response = await axios.post('/api/v1/watchlist', { + tmdbId: id, + mediaType, + title, + }); + mutate('/api/v1/discover/watchlist'); + if (response.data) { + addToast( + + {intl.formatMessage(messages.watchlistSuccess, { + title, + strong: (msg: React.ReactNode) => {msg}, + })} + , + { appearance: 'success', autoDismiss: true } + ); + } + } catch (e) { + addToast(intl.formatMessage(messages.watchlistError), { + appearance: 'error', + autoDismiss: true, + }); + } finally { + setIsUpdating(false); + setToggleWatchlist((prevState) => !prevState); + } + }; + + const onClickDeleteWatchlistBtn = async (): Promise => { + setIsUpdating(true); + try { + const response = await axios.delete('/api/v1/watchlist/' + id); + + if (response.status === 204) { + addToast( + + {intl.formatMessage(messages.watchlistDeleted, { + title, + strong: (msg: React.ReactNode) => {msg}, + })} + , + { appearance: 'info', autoDismiss: true } + ); + } + } catch (e) { + addToast(intl.formatMessage(messages.watchlistError), { + appearance: 'error', + autoDismiss: true, + }); + } finally { + setIsUpdating(false); + mutate('/api/v1/discover/watchlist'); + setToggleWatchlist((prevState) => !prevState); + } + }; + const closeModal = useCallback(() => setShowRequestModal(false), []); const showRequestButton = hasPermission( [ Permission.REQUEST, - mediaType === 'movie' ? Permission.REQUEST_MOVIE : Permission.REQUEST_TV, + mediaType === 'movie' || mediaType === 'collection' + ? Permission.REQUEST_MOVIE + : Permission.REQUEST_TV, ], { type: 'or' } ); @@ -86,7 +172,13 @@ const TitleCard = ({
    {mediaType === 'movie' ? intl.formatMessage(globalMessages.movie) + : mediaType === 'collection' + ? intl.formatMessage(globalMessages.collection) : intl.formatMessage(globalMessages.tvshow)}
    + {showDetail && ( + <> + {toggleWatchlist ? ( + + ) : ( + + )} + + )} {currentStatus && currentStatus !== MediaStatus.UNKNOWN && (
    - + { useEffect(() => { - const originalStyle = window.getComputedStyle(document.body).overflow; + const originalOverflowStyle = window.getComputedStyle( + document.body + ).overflow; + const originalTouchActionStyle = window.getComputedStyle( + document.body + ).touchAction; if (isLocked && !disabled) { document.body.style.overflow = 'hidden'; + document.body.style.touchAction = 'none'; } return () => { if (!disabled) { - document.body.style.overflow = originalStyle; + document.body.style.overflow = originalOverflowStyle; + document.body.style.touchAction = originalTouchActionStyle; } }; }, [isLocked, disabled]); diff --git a/src/i18n/globalMessages.ts b/src/i18n/globalMessages.ts index 076312a1..ca66a891 100644 --- a/src/i18n/globalMessages.ts +++ b/src/i18n/globalMessages.ts @@ -16,6 +16,7 @@ const globalMessages = defineMessages({ approved: 'Approved', movie: 'Movie', movies: 'Movies', + collection: 'Collection', tvshow: 'Series', tvshows: 'Series', cancel: 'Cancel', diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json index b7658f6a..5dc30620 100644 --- a/src/i18n/locale/en.json +++ b/src/i18n/locale/en.json @@ -59,7 +59,7 @@ "components.Discover.DiscoverTvGenre.genreSeries": "{genre} Series", "components.Discover.DiscoverTvKeyword.keywordSeries": "{keywordTitle} Series", "components.Discover.DiscoverTvLanguage.languageSeries": "{language} Series", - "components.Discover.DiscoverWatchlist.discoverwatchlist": "Your Plex Watchlist", + "components.Discover.DiscoverWatchlist.discoverwatchlist": "Your Watchlist", "components.Discover.DiscoverWatchlist.watchlist": "Plex Watchlist", "components.Discover.FilterSlideover.activefilters": "{count, plural, one {# Active Filter} other {# Active Filters}}", "components.Discover.FilterSlideover.clearfilters": "Clear Active Filters", @@ -76,7 +76,9 @@ "components.Discover.FilterSlideover.streamingservices": "Streaming Services", "components.Discover.FilterSlideover.studio": "Studio", "components.Discover.FilterSlideover.tmdbuserscore": "TMDB User Score", + "components.Discover.FilterSlideover.tmdbuservotecount": "TMDB User Vote Count", "components.Discover.FilterSlideover.to": "To", + "components.Discover.FilterSlideover.voteCount": "Number of votes between {minValue} and {maxValue}", "components.Discover.MovieGenreList.moviegenres": "Movie Genres", "components.Discover.MovieGenreSlider.moviegenres": "Movie Genres", "components.Discover.NetworkSlider.networks": "Networks", @@ -92,7 +94,8 @@ "components.Discover.emptywatchlist": "Media added to your Plex Watchlist will appear here.", "components.Discover.moviegenres": "Movie Genres", "components.Discover.networks": "Networks", - "components.Discover.plexwatchlist": "Your Plex Watchlist", + "components.Discover.noRequests": "No requests.", + "components.Discover.plexwatchlist": "Your Watchlist", "components.Discover.popularmovies": "Popular Movies", "components.Discover.populartv": "Popular Series", "components.Discover.recentlyAdded": "Recently Added", @@ -105,11 +108,13 @@ "components.Discover.studios": "Studios", "components.Discover.tmdbmoviegenre": "TMDB Movie Genre", "components.Discover.tmdbmoviekeyword": "TMDB Movie Keyword", + "components.Discover.tmdbmoviestreamingservices": "TMDB Movie Streaming Services", "components.Discover.tmdbnetwork": "TMDB Network", "components.Discover.tmdbsearch": "TMDB Search", "components.Discover.tmdbstudio": "TMDB Studio", "components.Discover.tmdbtvgenre": "TMDB Series Genre", "components.Discover.tmdbtvkeyword": "TMDB Series Keyword", + "components.Discover.tmdbtvstreamingservices": "TMDB TV Streaming Services", "components.Discover.trending": "Trending", "components.Discover.tvgenres": "Series Genres", "components.Discover.upcoming": "Upcoming Movies", @@ -198,6 +203,8 @@ "components.Layout.Sidebar.browsemovies": "Movies", "components.Layout.Sidebar.browsetv": "Series", "components.Layout.Sidebar.dashboard": "Discover", + "components.Layout.Sidebar.browsemovies": "Movies", + "components.Layout.Sidebar.browsetv": "Series", "components.Layout.Sidebar.issues": "Issues", "components.Layout.Sidebar.requests": "Requests", "components.Layout.Sidebar.settings": "Settings", @@ -320,7 +327,7 @@ "components.NotificationTypeSelector.mediaapproved": "Request Approved", "components.NotificationTypeSelector.mediaapprovedDescription": "Send notifications when media requests are manually approved.", "components.NotificationTypeSelector.mediaautorequested": "Request Automatically Submitted", - "components.NotificationTypeSelector.mediaautorequestedDescription": "Get notified when new media requests are automatically submitted for items on your Plex Watchlist.", + "components.NotificationTypeSelector.mediaautorequestedDescription": "Get notified when new media requests are automatically submitted for items on Your Watchlist.", "components.NotificationTypeSelector.mediaavailable": "Request Available", "components.NotificationTypeSelector.mediaavailableDescription": "Send notifications when media requests become available.", "components.NotificationTypeSelector.mediadeclined": "Request Declined", @@ -706,6 +713,8 @@ "components.Settings.RadarrModal.servername": "Server Name", "components.Settings.RadarrModal.ssl": "Use SSL", "components.Settings.RadarrModal.syncEnabled": "Enable Scan", + "components.Settings.RadarrModal.tagRequests": "Tag Requests", + "components.Settings.RadarrModal.tagRequestsInfo": "Automatically add an additional tag with the requester's user ID & display name", "components.Settings.RadarrModal.tags": "Tags", "components.Settings.RadarrModal.testFirstQualityProfiles": "Test connection to load quality profiles", "components.Settings.RadarrModal.testFirstRootFolders": "Test connection to load root folders", @@ -885,6 +894,8 @@ "components.Settings.SonarrModal.servername": "Server Name", "components.Settings.SonarrModal.ssl": "Use SSL", "components.Settings.SonarrModal.syncEnabled": "Enable Scan", + "components.Settings.SonarrModal.tagRequests": "Tag Requests", + "components.Settings.SonarrModal.tagRequestsInfo": "Automatically add an additional tag with the requester's user ID & display name", "components.Settings.SonarrModal.tags": "Tags", "components.Settings.SonarrModal.testFirstLanguageProfiles": "Test connection to load language profiles", "components.Settings.SonarrModal.testFirstQualityProfiles": "Test connection to load quality profiles", @@ -1222,6 +1233,11 @@ "components.UserProfile.seriesrequest": "Series Requests", "components.UserProfile.totalrequests": "Total Requests", "components.UserProfile.unlimited": "Unlimited", + "components.TitleCard.addToWatchList": "Add to watchlist", + "components.TitleCard.watchlistCancel": "watchlist for {title} canceled.", + "components.TitleCard.watchlistDeleted": "{title} Removed from watchlist successfully!", + "components.TitleCard.watchlistError": "Something went wrong try again.", + "components.TitleCard.watchlistSuccess": "{title} added to watchlist successfully!", "i18n.advanced": "Advanced", "i18n.all": "All", "i18n.approve": "Approve", @@ -1232,6 +1248,7 @@ "i18n.cancel": "Cancel", "i18n.canceling": "Canceling…", "i18n.close": "Close", + "i18n.collection": "Collection", "i18n.decline": "Decline", "i18n.declined": "Declined", "i18n.delete": "Delete", diff --git a/src/i18n/locale/ua.json b/src/i18n/locale/ua.json index 6cb972a6..b2fd2d69 100644 --- a/src/i18n/locale/ua.json +++ b/src/i18n/locale/ua.json @@ -12,7 +12,7 @@ "components.Discover.DiscoverStudio.studioMovies": "Фільми {studio}", "components.Discover.DiscoverTvGenre.genreSeries": "Серіали в жанрі \"{genre}\"", "components.Discover.DiscoverTvLanguage.languageSeries": "Серіали мовою \"{language}\"", - "components.Discover.DiscoverWatchlist.discoverwatchlist": "Your Plex Watchlist", + "components.Discover.DiscoverWatchlist.discoverwatchlist": "Your Watchlist", "components.Discover.DiscoverWatchlist.watchlist": "Список спостереження Plex", "components.Discover.MovieGenreList.moviegenres": "Фільми за жанрами", "components.Discover.MovieGenreSlider.moviegenres": "Фільми за жанрами", diff --git a/src/i18n/locale/zh_Hans.json b/src/i18n/locale/zh_Hans.json index 2b641150..fe9590e8 100644 --- a/src/i18n/locale/zh_Hans.json +++ b/src/i18n/locale/zh_Hans.json @@ -274,6 +274,8 @@ "components.Layout.UserDropdown.signout": "登出", "components.Layout.UserDropdown.settings": "用户设定", "components.Layout.UserDropdown.myprofile": "个人档案", + "components.Layout.Sidebar.browsemovies": "电影", + "components.Layout.Sidebar.browsetv": "电视节目", "components.Layout.Sidebar.users": "用户", "components.Layout.Sidebar.settings": "设定", "components.Layout.Sidebar.requests": "请求", @@ -289,6 +291,7 @@ "components.Discover.trending": "趋势", "components.Discover.recentrequests": "最新请求", "components.Discover.recentlyAdded": "最新添加", + "components.Discover.RecentlyAddedSlider.recentlyAdded": "最近添加", "components.Discover.populartv": "热门电视节目", "components.Discover.popularmovies": "热门电影", "components.Discover.discovertv": "热门电视节目", diff --git a/src/pages/movie/[movieId]/index.tsx b/src/pages/movie/[movieId]/index.tsx index 2bb971c1..053ee3ff 100644 --- a/src/pages/movie/[movieId]/index.tsx +++ b/src/pages/movie/[movieId]/index.tsx @@ -1,7 +1,7 @@ import MovieDetails from '@app/components/MovieDetails'; import type { MovieDetails as MovieDetailsType } from '@server/models/Movie'; import axios from 'axios'; -import type { NextPage } from 'next'; +import type { GetServerSideProps, NextPage } from 'next'; interface MoviePageProps { movie?: MovieDetailsType; @@ -11,25 +11,25 @@ const MoviePage: NextPage = ({ movie }) => { return ; }; -MoviePage.getInitialProps = async (ctx) => { - if (ctx.req) { - const response = await axios.get( - `http://localhost:${process.env.PORT || 5055}/api/v1/movie/${ - ctx.query.movieId - }`, - { - headers: ctx.req?.headers?.cookie - ? { cookie: ctx.req.headers.cookie } - : undefined, - } - ); +export const getServerSideProps: GetServerSideProps = async ( + ctx +) => { + const response = await axios.get( + `http://localhost:${process.env.PORT || 5055}/api/v1/movie/${ + ctx.query.movieId + }`, + { + headers: ctx.req?.headers?.cookie + ? { cookie: ctx.req.headers.cookie } + : undefined, + } + ); - return { + return { + props: { movie: response.data, - }; - } - - return {}; + }, + }; }; export default MoviePage; diff --git a/src/pages/tv/[tvId]/index.tsx b/src/pages/tv/[tvId]/index.tsx index 69fe216f..a8a3cbd7 100644 --- a/src/pages/tv/[tvId]/index.tsx +++ b/src/pages/tv/[tvId]/index.tsx @@ -1,7 +1,7 @@ import TvDetails from '@app/components/TvDetails'; import type { TvDetails as TvDetailsType } from '@server/models/Tv'; import axios from 'axios'; -import type { NextPage } from 'next'; +import type { GetServerSideProps, NextPage } from 'next'; interface TvPageProps { tv?: TvDetailsType; @@ -11,25 +11,23 @@ const TvPage: NextPage = ({ tv }) => { return ; }; -TvPage.getInitialProps = async (ctx) => { - if (ctx.req) { - const response = await axios.get( - `http://localhost:${process.env.PORT || 5055}/api/v1/tv/${ - ctx.query.tvId - }`, - { - headers: ctx.req?.headers?.cookie - ? { cookie: ctx.req.headers.cookie } - : undefined, - } - ); +export const getServerSideProps: GetServerSideProps = async ( + ctx +) => { + const response = await axios.get( + `http://localhost:${process.env.PORT || 5055}/api/v1/tv/${ctx.query.tvId}`, + { + headers: ctx.req?.headers?.cookie + ? { cookie: ctx.req.headers.cookie } + : undefined, + } + ); - return { + return { + props: { tv: response.data, - }; - } - - return {}; + }, + }; }; export default TvPage; diff --git a/src/styles/globals.css b/src/styles/globals.css index 97b2a7b8..8110e87e 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -17,7 +17,7 @@ body { @apply bg-gray-900; - overscroll-behavior-y: contain; + -webkit-overflow-scrolling: touch; } code { @@ -73,6 +73,10 @@ grid-template-columns: repeat(auto-fill, minmax(16.5rem, 1fr)); } + .provider-icons { + grid-template-columns: repeat(auto-fill, minmax(3.5rem, 1fr)); + } + .slider-header { @apply relative mt-6 mb-4 flex; } diff --git a/yarn.lock b/yarn.lock index 24ffecf5..09b5a3ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,12 +20,12 @@ call-me-maybe "^1.0.1" js-yaml "^4.1.0" -"@babel/cli@7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.20.7.tgz#8fc12e85c744a1a617680eacb488fab1fcd35b7c" - integrity sha512-WylgcELHB66WwQqItxNILsMlaTd8/SO6SgTTjMp4uCI7P4QyH1r3nqgFmO3BfM4AtfniHgFMH3EpYFj/zynBkQ== +"@babel/cli@7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.21.0.tgz#1868eb70e9824b427fc607610cce8e9e7889e7e1" + integrity sha512-xi7CxyS8XjSyiwUGCfwf+brtJxjW1/ZTcBUkP10xawIEXLX5HzLn+3aXkgxozcP2UhRhtKTmQurw9Uaes7jZrA== dependencies: - "@jridgewell/trace-mapping" "^0.3.8" + "@jridgewell/trace-mapping" "^0.3.17" commander "^4.0.1" convert-source-map "^1.1.0" fs-readdir-recursive "^1.1.0" @@ -973,18 +973,17 @@ "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-transform-typescript" "^7.18.6" -"@babel/runtime-corejs3@^7.10.2": - version "7.20.13" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.20.13.tgz#ad012857db412ab0b5ccf184b67be2cfcc2a1dcf" - integrity sha512-p39/6rmY9uvlzRiLZBIB3G9/EBr66LBMcYm7fIDeSBNdRjF2AGD3rFZucUyAgGHC2N+7DdLvVi33uTjSE44FIw== +"@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd" + integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ== dependencies: - core-js-pure "^3.25.1" regenerator-runtime "^0.13.11" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": - version "7.20.13" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" - integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== +"@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== dependencies: regenerator-runtime "^0.13.11" @@ -1027,89 +1026,117 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@commitlint/cli@17.4.0": - version "17.4.0" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.4.0.tgz#14a5f9b713a5b60ff1a0cfce66b0bb207954c1ad" - integrity sha512-SEY4sYe8yVlgxPP7X0wJb96DBAGBPsCsy6QbqJt/UECbIAjDeDV5xXBV4jnS7T/qMC10sk6Ub9kDhEX0VWvblw== +"@commitlint/cli@17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.4.4.tgz#36df08bfa31dbb9a2b6b1d7187a31e578f001a06" + integrity sha512-HwKlD7CPVMVGTAeFZylVNy14Vm5POVY0WxPkZr7EXLC/os0LH/obs6z4HRvJtH/nHCMYBvUBQhGwnufKfTjd5g== dependencies: - "@commitlint/format" "^17.4.0" - "@commitlint/lint" "^17.4.0" - "@commitlint/load" "^17.4.0" - "@commitlint/read" "^17.4.0" - "@commitlint/types" "^17.4.0" + "@commitlint/format" "^17.4.4" + "@commitlint/lint" "^17.4.4" + "@commitlint/load" "^17.4.4" + "@commitlint/read" "^17.4.4" + "@commitlint/types" "^17.4.4" execa "^5.0.0" lodash.isfunction "^3.0.9" resolve-from "5.0.0" resolve-global "1.0.0" yargs "^17.0.0" -"@commitlint/config-conventional@17.4.0": - version "17.4.0" - resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-17.4.0.tgz#9188d793886d8a1c633834602f06a642dd16ed64" - integrity sha512-G4XBf45J4ZMspO4NwBFzY3g/1Kb+B42BcIxeikF8wucQxcyxcmhRdjeQpRpS1XEcBq5pdtEEQFipuB9IuiNFhw== +"@commitlint/config-conventional@17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-17.4.4.tgz#f30b1e5b2e48ce5799a483c200c52f218a98efcc" + integrity sha512-u6ztvxqzi6NuhrcEDR7a+z0yrh11elY66nRrQIpqsqW6sZmpxYkDLtpRH8jRML+mmxYQ8s4qqF06Q/IQx5aJeQ== dependencies: conventional-changelog-conventionalcommits "^5.0.0" -"@commitlint/config-validator@^17.4.0": - version "17.4.0" - resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-17.4.0.tgz#2cb229672a22476cf1f21bedbfcd788e5da5b54f" - integrity sha512-Sa/+8KNpDXz4zT4bVbz2fpFjvgkPO6u2V2fP4TKgt6FjmOw2z3eEX859vtfeaTav/ukBw0/0jr+5ZTZp9zCBhA== +"@commitlint/config-validator@^17.1.0": + version "17.1.0" + resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-17.1.0.tgz#51d09ca53d7a0d19736abf34eb18a66efce0f97a" + integrity sha512-Q1rRRSU09ngrTgeTXHq6ePJs2KrI+axPTgkNYDWSJIuS1Op4w3J30vUfSXjwn5YEJHklK3fSqWNHmBhmTR7Vdg== dependencies: - "@commitlint/types" "^17.4.0" + "@commitlint/types" "^17.0.0" ajv "^8.11.0" -"@commitlint/ensure@^17.4.0": - version "17.4.0" - resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-17.4.0.tgz#3de65768bfccb9956ec3a0ecd8a415421bf315e5" - integrity sha512-7oAxt25je0jeQ/E0O/M8L3ADb1Cvweu/5lc/kYF8g/kXatI0wxGE5La52onnAUAWeWlsuvBNar15WcrmDmr5Mw== +"@commitlint/config-validator@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-17.4.4.tgz#d0742705719559a101d2ee49c0c514044af6d64d" + integrity sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg== dependencies: - "@commitlint/types" "^17.4.0" + "@commitlint/types" "^17.4.4" + ajv "^8.11.0" + +"@commitlint/ensure@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-17.4.4.tgz#a36e7719bdb9c2b86c8b8c2e852b463a7bfda5fa" + integrity sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g== + dependencies: + "@commitlint/types" "^17.4.4" lodash.camelcase "^4.3.0" lodash.kebabcase "^4.1.1" lodash.snakecase "^4.1.1" lodash.startcase "^4.4.0" lodash.upperfirst "^4.3.1" -"@commitlint/execute-rule@^17.4.0": +"@commitlint/execute-rule@^17.0.0", "@commitlint/execute-rule@^17.4.0": version "17.4.0" resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz#4518e77958893d0a5835babe65bf87e2638f6939" integrity sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA== -"@commitlint/format@^17.4.0": - version "17.4.0" - resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-17.4.0.tgz#1c80cf3a6274ff9b3d3c0dd150a97882d557aa0f" - integrity sha512-Z2bWAU5+f1YZh9W76c84J8iLIWIvvm+mzqogTz0Nsc1x6EHW0Z2gI38g5HAjB0r0I3ZjR15IDEJKhsxyblcyhA== +"@commitlint/format@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-17.4.4.tgz#0f6e1b4d7a301c7b1dfd4b6334edd97fc050b9f5" + integrity sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ== dependencies: - "@commitlint/types" "^17.4.0" + "@commitlint/types" "^17.4.4" chalk "^4.1.0" -"@commitlint/is-ignored@^17.4.2": - version "17.4.2" - resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-17.4.2.tgz#2d40a34e071c3e595e485fafe8460457a7b7af9d" - integrity sha512-1b2Y2qJ6n7bHG9K6h8S4lBGUl6kc7mMhJN9gy1SQfUZqe92ToDjUTtgNWb6LbzR1X8Cq4SEus4VU8Z/riEa94Q== +"@commitlint/is-ignored@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-17.4.4.tgz#82e03f1abe2de2c0c8c162a250b8d466225e922b" + integrity sha512-Y3eo1SFJ2JQDik4rWkBC4tlRIxlXEFrRWxcyrzb1PUT2k3kZ/XGNuCDfk/u0bU2/yS0tOA/mTjFsV+C4qyACHw== dependencies: - "@commitlint/types" "^17.4.0" + "@commitlint/types" "^17.4.4" semver "7.3.8" -"@commitlint/lint@^17.4.0": - version "17.4.2" - resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-17.4.2.tgz#1277cb4d5395e9d6c39cbc351984bac9dcc6b7cd" - integrity sha512-HcymabrdBhsDMNzIv146+ZPNBPBK5gMNsVH+el2lCagnYgCi/4ixrHooeVyS64Fgce2K26+MC7OQ4vVH8wQWVw== +"@commitlint/lint@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-17.4.4.tgz#0ecd70b44ec5f4823c2e00e0c4b04ebd41d42856" + integrity sha512-qgkCRRFjyhbMDWsti/5jRYVJkgYZj4r+ZmweZObnbYqPUl5UKLWMf9a/ZZisOI4JfiPmRktYRZ2JmqlSvg+ccw== dependencies: - "@commitlint/is-ignored" "^17.4.2" - "@commitlint/parse" "^17.4.2" - "@commitlint/rules" "^17.4.2" - "@commitlint/types" "^17.4.0" + "@commitlint/is-ignored" "^17.4.4" + "@commitlint/parse" "^17.4.4" + "@commitlint/rules" "^17.4.4" + "@commitlint/types" "^17.4.4" -"@commitlint/load@>6.1.1", "@commitlint/load@^17.4.0": - version "17.4.2" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.4.2.tgz#551875c3e1dce6dc0375dc9c8ad551de8ba35de4" - integrity sha512-Si++F85rJ9t4hw6JcOw1i2h0fdpdFQt0YKwjuK4bk9KhFjyFkRxvR3SB2dPaMs+EwWlDrDBGL+ygip1QD6gmPw== +"@commitlint/load@>6.1.1": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.3.0.tgz#ebfec0198dd1627627e32a2b2ae4744d297599a8" + integrity sha512-u/pV6rCAJrCUN+HylBHLzZ4qj1Ew3+eN9GBPhNi9otGxtOfA8b+8nJSxaNbcC23Ins/kcpjGf9zPSVW7628Umw== dependencies: - "@commitlint/config-validator" "^17.4.0" + "@commitlint/config-validator" "^17.1.0" + "@commitlint/execute-rule" "^17.0.0" + "@commitlint/resolve-extends" "^17.3.0" + "@commitlint/types" "^17.0.0" + "@types/node" "^14.0.0" + chalk "^4.1.0" + cosmiconfig "^7.0.0" + cosmiconfig-typescript-loader "^4.0.0" + lodash.isplainobject "^4.0.6" + lodash.merge "^4.6.2" + lodash.uniq "^4.5.0" + resolve-from "^5.0.0" + ts-node "^10.8.1" + typescript "^4.6.4" + +"@commitlint/load@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.4.4.tgz#13fcb553572f265339801cde6dd10ee5eea07f5e" + integrity sha512-z6uFIQ7wfKX5FGBe1AkOF4l/ShOQsaa1ml/nLMkbW7R/xF8galGS7Zh0yHvzVp/srtfS0brC+0bUfQfmpMPFVQ== + dependencies: + "@commitlint/config-validator" "^17.4.4" "@commitlint/execute-rule" "^17.4.0" - "@commitlint/resolve-extends" "^17.4.0" - "@commitlint/types" "^17.4.0" + "@commitlint/resolve-extends" "^17.4.4" + "@commitlint/types" "^17.4.4" "@types/node" "*" chalk "^4.1.0" cosmiconfig "^8.0.0" @@ -1126,47 +1153,59 @@ resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-17.4.2.tgz#f4753a79701ad6db6db21f69076e34de6580e22c" integrity sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q== -"@commitlint/parse@^17.4.2": - version "17.4.2" - resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-17.4.2.tgz#b0f8a257a1f93387a497408b0b4cadba60ee3359" - integrity sha512-DK4EwqhxfXpyCA+UH8TBRIAXAfmmX4q9QRBz/2h9F9sI91yt6mltTrL6TKURMcjUVmgaB80wgS9QybNIyVBIJA== +"@commitlint/parse@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-17.4.4.tgz#8311b12f2b730de6ea0679ae2a37b386bcc5b04b" + integrity sha512-EKzz4f49d3/OU0Fplog7nwz/lAfXMaDxtriidyGF9PtR+SRbgv4FhsfF310tKxs6EPj8Y+aWWuX3beN5s+yqGg== dependencies: - "@commitlint/types" "^17.4.0" + "@commitlint/types" "^17.4.4" conventional-changelog-angular "^5.0.11" conventional-commits-parser "^3.2.2" -"@commitlint/read@^17.4.0": - version "17.4.2" - resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-17.4.2.tgz#4880a05271fb44cefa54d365a17d5753496a6de0" - integrity sha512-hasYOdbhEg+W4hi0InmXHxtD/1favB4WdwyFxs1eOy/DvMw6+2IZBmATgGOlqhahsypk4kChhxjAFJAZ2F+JBg== +"@commitlint/read@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-17.4.4.tgz#de6ec00aad827764153009aa54517e3df2154555" + integrity sha512-B2TvUMJKK+Svzs6eji23WXsRJ8PAD+orI44lVuVNsm5zmI7O8RSGJMvdEZEikiA4Vohfb+HevaPoWZ7PiFZ3zA== dependencies: "@commitlint/top-level" "^17.4.0" - "@commitlint/types" "^17.4.0" + "@commitlint/types" "^17.4.4" fs-extra "^11.0.0" git-raw-commits "^2.0.0" minimist "^1.2.6" -"@commitlint/resolve-extends@^17.4.0": - version "17.4.0" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-17.4.0.tgz#9023da6c70c4ebd173b4b0995fe29f27051da2d3" - integrity sha512-3JsmwkrCzoK8sO22AzLBvNEvC1Pmdn/65RKXzEtQMy6oYMl0Snrq97a5bQQEFETF0VsvbtUuKttLqqgn99OXRQ== +"@commitlint/resolve-extends@^17.3.0": + version "17.3.0" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-17.3.0.tgz#413a9ec393266d0673e6b9ec2f0974c358ed662d" + integrity sha512-Lf3JufJlc5yVEtJWC8o4IAZaB8FQAUaVlhlAHRACd0TTFizV2Lk2VH70et23KgvbQNf7kQzHs/2B4QZalBv6Cg== dependencies: - "@commitlint/config-validator" "^17.4.0" - "@commitlint/types" "^17.4.0" + "@commitlint/config-validator" "^17.1.0" + "@commitlint/types" "^17.0.0" import-fresh "^3.0.0" lodash.mergewith "^4.6.2" resolve-from "^5.0.0" resolve-global "^1.0.0" -"@commitlint/rules@^17.4.2": - version "17.4.2" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-17.4.2.tgz#cdf203bc82af979cb319210ef9215cb1de216a9b" - integrity sha512-OGrPsMb9Fx3/bZ64/EzJehY9YDSGWzp81Pj+zJiY+r/NSgJI3nUYdlS37jykNIugzazdEXfMtQ10kmA+Kx2pZQ== +"@commitlint/resolve-extends@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-17.4.4.tgz#8f931467dea8c43b9fe38373e303f7c220de6fdc" + integrity sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A== dependencies: - "@commitlint/ensure" "^17.4.0" + "@commitlint/config-validator" "^17.4.4" + "@commitlint/types" "^17.4.4" + import-fresh "^3.0.0" + lodash.mergewith "^4.6.2" + resolve-from "^5.0.0" + resolve-global "^1.0.0" + +"@commitlint/rules@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-17.4.4.tgz#9b33f41e5eb529f916396bac7c62e61f0edd6791" + integrity sha512-0tgvXnHi/mVcyR8Y8mjTFZIa/FEQXA4uEutXS/imH2v1UNkYDSEMsK/68wiXRpfW1euSgEdwRkvE1z23+yhNrQ== + dependencies: + "@commitlint/ensure" "^17.4.4" "@commitlint/message" "^17.4.2" "@commitlint/to-lines" "^17.4.0" - "@commitlint/types" "^17.4.0" + "@commitlint/types" "^17.4.4" execa "^5.0.0" "@commitlint/to-lines@^17.4.0": @@ -1181,10 +1220,17 @@ dependencies: find-up "^5.0.0" -"@commitlint/types@^17.4.0": - version "17.4.0" - resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-17.4.0.tgz#c7c2b97b959f6175c164632bf26208ce417b3f31" - integrity sha512-2NjAnq5IcxY9kXtUeO2Ac0aPpvkuOmwbH/BxIm36XXK5LtWFObWJWjXOA+kcaABMrthjWu6la+FUpyYFMHRvbA== +"@commitlint/types@^17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-17.0.0.tgz#3b4604c1a0f06c340ce976e6c6903d4f56e3e690" + integrity sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ== + dependencies: + chalk "^4.1.0" + +"@commitlint/types@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-17.4.4.tgz#1416df936e9aad0d6a7bbc979ecc31e55dade662" + integrity sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ== dependencies: chalk "^4.1.0" @@ -1402,10 +1448,10 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== -"@eslint/eslintrc@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" - integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== +"@eslint/eslintrc@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.0.tgz#943309d8697c52fc82c076e90c1c74fbbe69dbff" + integrity sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -1417,6 +1463,11 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.35.0": + version "8.35.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.35.0.tgz#b7569632b0b788a0ca0e438235154e45d42813a7" + integrity sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw== + "@floating-ui/core@^1.0.5": version "1.1.0" resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.1.0.tgz#0a1dee4bbce87ff71602625d33f711cafd8afc08" @@ -1451,13 +1502,6 @@ dependencies: tslib "^2.0.1" -"@formatjs/fast-memoize@1.2.7": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-1.2.7.tgz#90d5de031fc80e0027b2d4e8a3197b0df4a94457" - integrity sha512-hPeM5LXUUjtCKPybWOUAWpv8lpja8Xz+uKprFPJcg5F2Rd+/bf1E0UUsLRpaAgOReAf5HMRtoIgv/UcyPICrTQ== - dependencies: - tslib "^2.4.0" - "@formatjs/fast-memoize@1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-1.2.8.tgz#425a69f783005f69e11f9e38a7f87f8822d330c6" @@ -1474,6 +1518,15 @@ "@formatjs/icu-skeleton-parser" "1.3.18" tslib "^2.4.0" +"@formatjs/icu-messageformat-parser@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.3.0.tgz#8e8fd577c3e39454ef14bba4963f2e1d5f2cc46c" + integrity sha512-xqtlqYAbfJDF4b6e4O828LBNOWXrFcuYadqAbYORlDRwhyJ2bH+xpUBPldZbzRGUN2mxlZ4Ykhm7jvERtmI8NQ== + dependencies: + "@formatjs/ecma402-abstract" "1.14.3" + "@formatjs/icu-skeleton-parser" "1.3.18" + tslib "^2.4.0" + "@formatjs/icu-skeleton-parser@1.3.18": version "1.3.18" resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.18.tgz#7aed3d60e718c8ad6b0e64820be44daa1e29eeeb" @@ -1482,38 +1535,46 @@ "@formatjs/ecma402-abstract" "1.14.3" tslib "^2.4.0" -"@formatjs/intl-displaynames@6.2.3": - version "6.2.3" - resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-6.2.3.tgz#65bc954fe891fdfe197268602f4d2d3ccd631cce" - integrity sha512-teB0L68MDGM8jEKQg55w7nvFjzeLHE6e3eK/04s+iuEVYYmvjjiHJKHrthKENzcJ0F6mHf/AwXrbX+1mKxT6AQ== +"@formatjs/intl-displaynames@6.2.6": + version "6.2.6" + resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-6.2.6.tgz#6bc02fe0bf6571391aac0e01e74ecbf38542ff32" + integrity sha512-scf5AQTk9EjpvPhboo5sizVOvidTdMOnajv9z+0cejvl7JNl9bl/aMrNBgC72UH+bP3l45usPUKAGskV6sNIrA== dependencies: "@formatjs/ecma402-abstract" "1.14.3" "@formatjs/intl-localematcher" "0.2.32" tslib "^2.4.0" -"@formatjs/intl-getcanonicallocales@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-2.0.5.tgz#d405cf5221f49531e62ecfde50acdfb62fcc4854" - integrity sha512-YOk+Fa5gpPq5bdpm8JDAY5bkfCkR+NENZKQbLHeqhm8JchHcclPwZ9FU48gYGg3CW6Wi/cTCOvmOrzsIhlkr0w== +"@formatjs/intl-enumerator@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@formatjs/intl-enumerator/-/intl-enumerator-1.2.1.tgz#2bed9e59385105d8a234fe5b71f27cda7c093e61" + integrity sha512-hK54SSi3hwwWZd7zz9wjYo7AIOlovhHBoUYjQJ5sZXHSLdwAnxE2ck5VaTwWKr4X6Vryq5stmy+MQXA4nDT9jg== dependencies: tslib "^2.4.0" -"@formatjs/intl-listformat@7.1.7": - version "7.1.7" - resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-7.1.7.tgz#b46fec1038ef9ca062d1e7b9b3412c2a14dca18f" - integrity sha512-Zzf5ruPpfJnrAA2hGgf/6pMgQ3tx9oJVhpqycFDavHl3eEzrwdHddGqGdSNwhd0bB4NAFttZNQdmKDldc5iDZw== +"@formatjs/intl-getcanonicallocales@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-2.1.0.tgz#57ef487ff2d90c12bbda9fba86f56b7c28cb80ba" + integrity sha512-gpPVLNSjNnwG4ctvSs7XiFQ/sIOyxcZrXukg1G226FUE+Cy6KMcAxo22zPZXhCTZt50b1FQZ/Zua5U/k9inb0Q== + dependencies: + tslib "^2.4.0" + +"@formatjs/intl-listformat@7.1.9": + version "7.1.9" + resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-7.1.9.tgz#0c2ce67b610054f215dd2635a6da7da308cfbe3d" + integrity sha512-5YikxwRqRXTVWVujhswDOTCq6gs+m9IcNbNZLa6FLtyBStAjEsuE2vAU+lPsbz9ZTST57D5fodjIh2JXT6sMWQ== dependencies: "@formatjs/ecma402-abstract" "1.14.3" "@formatjs/intl-localematcher" "0.2.32" tslib "^2.4.0" -"@formatjs/intl-locale@3.0.11": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@formatjs/intl-locale/-/intl-locale-3.0.11.tgz#6b3bee5692fab3c70a0ce9c642c2a2bec3700aa4" - integrity sha512-gLEX9kzebBjIVCkXMMN+VFMUV2aj0vhmrP+nke2muxUSJ3fLs/DJjlkv+s59rAL3nNaGdvphqKLhQsul0mmhAw== +"@formatjs/intl-locale@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@formatjs/intl-locale/-/intl-locale-3.1.1.tgz#8d2efe6d1cade0cda367b1aeee38909b880ae067" + integrity sha512-UshFvThVOloYsHagGe7m2mDifEbZaS9+a+x3Va8YKU3NxFDyNr8s5EQgYkZhZ2kTzWqBxeKB/qZE9VT6LR/lRg== dependencies: "@formatjs/ecma402-abstract" "1.14.3" - "@formatjs/intl-getcanonicallocales" "2.0.5" + "@formatjs/intl-enumerator" "1.2.1" + "@formatjs/intl-getcanonicallocales" "2.1.0" tslib "^2.4.0" "@formatjs/intl-localematcher@0.2.32": @@ -1531,10 +1592,10 @@ "@formatjs/ecma402-abstract" "1.4.0" tslib "^2.0.1" -"@formatjs/intl-pluralrules@5.1.8": - version "5.1.8" - resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-5.1.8.tgz#11eeca3cde088fd68d258a09b0791b327a8eb019" - integrity sha512-uevO916EWoeuueqeNzHjnUzpfWZzXFJibC/sEvPR/ZiZH5btWuOLeJLdb1To4nMH8ZJQlmAf8SDpFf+eWvz5lQ== +"@formatjs/intl-pluralrules@5.1.10": + version "5.1.10" + resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-5.1.10.tgz#46ad0680f013cdbcccab36891c4ccdd9e4069070" + integrity sha512-c8VZ0J0LalJ+4PHyYkwn/Vc9XX6TJPcY1HHyOixhEnr1x4zxk3ehvdQE8pB0/zuSE1RQTos/pKMF/8XmEsM/cA== dependencies: "@formatjs/ecma402-abstract" "1.14.3" "@formatjs/intl-localematcher" "0.2.32" @@ -1547,17 +1608,17 @@ dependencies: emojis-list "^3.0.0" -"@formatjs/intl@2.6.3": - version "2.6.3" - resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.6.3.tgz#7cedd184fb62d39174fbf62ee636b1b306524b7c" - integrity sha512-JaVZk14U/GypVfCZPevQ0KdruFkq16FXx7g398/Dm+YEx/W7sRiftbZeDy4wQ7WGryb45e763XycxD9o/vm9BA== +"@formatjs/intl@2.6.7": + version "2.6.7" + resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.6.7.tgz#a64cf37d01c3d09ce18cf9390982534655cae14b" + integrity sha512-9FvEJfUMzlmP5ZBK3EE0928kVsZmD5aeWXg+faP8+mKIvG3c0hkLEXQ2MiUrXQt4rsEzOPbYVtBdthzSM0e2fw== dependencies: "@formatjs/ecma402-abstract" "1.14.3" - "@formatjs/fast-memoize" "1.2.7" - "@formatjs/icu-messageformat-parser" "2.1.14" - "@formatjs/intl-displaynames" "6.2.3" - "@formatjs/intl-listformat" "7.1.7" - intl-messageformat "10.2.5" + "@formatjs/fast-memoize" "1.2.8" + "@formatjs/icu-messageformat-parser" "2.3.0" + "@formatjs/intl-displaynames" "6.2.6" + "@formatjs/intl-listformat" "7.1.9" + intl-messageformat "10.3.1" tslib "^2.4.0" "@formatjs/ts-transformer@2.13.0", "@formatjs/ts-transformer@^2.6.0": @@ -1569,12 +1630,12 @@ tslib "^2.0.1" typescript "^4.0" -"@formatjs/ts-transformer@3.11.5": - version "3.11.5" - resolved "https://registry.yarnpkg.com/@formatjs/ts-transformer/-/ts-transformer-3.11.5.tgz#0502c0c38d4ad628efbef61f1c2e35b7ea37959e" - integrity sha512-cAmvKzgPqdetAr/RsxoXYhfNhMf5tERlXzJTsQw+j6tddPwIAbihACQx6KaajyJJ4aNssiziWNmcaHtjTqrrVw== +"@formatjs/ts-transformer@3.12.0": + version "3.12.0" + resolved "https://registry.yarnpkg.com/@formatjs/ts-transformer/-/ts-transformer-3.12.0.tgz#7d6340c164db38202ece328ca37d1e9a0d5e62ed" + integrity sha512-/jEpXcqA6y/vdijgkxSoKGfkGR5VcClJeI8hnpJ2PBCHfrc4ywFMyoZqRAakKW3IJVttaDo7mGvBAIDxV1F4Qg== dependencies: - "@formatjs/icu-messageformat-parser" "2.1.14" + "@formatjs/icu-messageformat-parser" "2.3.0" "@types/json-stable-stringify" "^1.0.32" "@types/node" "14 || 16 || 17" chalk "^4.0.0" @@ -1599,17 +1660,17 @@ resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== -"@headlessui/react@1.7.7": - version "1.7.7" - resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.7.7.tgz#d6f8708d8943ae8ebb1a6929108234e4515ac7e8" - integrity sha512-BqDOd/tB9u2tA0T3Z0fn18ktw+KbVwMnkxxsGPIH2hzssrQhKB5n/6StZOyvLYP/FsYtvuXfi9I0YowKPv2c1w== +"@headlessui/react@1.7.12": + version "1.7.12" + resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.7.12.tgz#9ab2baa3c4f632782631e00937f9531a34033619" + integrity sha512-FhSx5V+Qp0GvbTpaxyS+ymGDDNntCacClWsk/d8Upbr19g3AsPbjfPk4+m2CgJGcuCB5Dz7LpUIOAbvQTyjL2g== dependencies: client-only "^0.0.1" -"@heroicons/react@2.0.13": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.0.13.tgz#9b1cc54ff77d6625c9565efdce0054a4bcd9074c" - integrity sha512-iSN5XwmagrnirWlYEWNPdCDj9aRYVD/lnK3JlsC9/+fqGF80k8C7rl+1HCvBX0dBoagKqOFBs6fMhJJ1hOg1EQ== +"@heroicons/react@2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.0.16.tgz#562883c19ba2690c83380b42a9a5cce39dcbdb4a" + integrity sha512-x89rFxH3SRdYaA+JCXwfe+RkE1SFTo9GcOkZettHer71Y3T7V+ogKmfw5CjTazgS3d0ClJ7p1NA+SP7VQLQcLw== "@humanwhocodes/config-array@^0.11.8": version "0.11.8" @@ -1630,32 +1691,32 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@internationalized/date@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.0.2.tgz#1566a0bcbd82dce4dd54a5b26456bb701068cb89" - integrity sha512-9V1IxesP6ASZj/hYyOXOC4yPJvidbbStyWQKLCQSqhhKACMOXoo+BddXZJy47ju9mqOMpWdrJ2rTx4yTxK9oag== +"@internationalized/date@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.1.0.tgz#da48aeaa971df6ad410cd32597c174d6cab9a3b4" + integrity sha512-wjeur7K4AecT+YwoBmBXQ/+n5lP69tuZc34hw09s44EozZK7FZHSyfPvRp5/xEb2D6abLboskDY4jG+Nt0TNUQ== dependencies: "@swc/helpers" "^0.4.14" -"@internationalized/message@^3.0.10": - version "3.0.10" - resolved "https://registry.yarnpkg.com/@internationalized/message/-/message-3.0.10.tgz#340dcfd14ace37234e09419427c991a0c466b96e" - integrity sha512-vfLqEop/NH68IgqMcXJNSDqZ5Leg3EEgCxhuuSefU7vvdbptD3pwpUWXaK9igYPa+aZfUU0eqv86yqm76obtsw== +"@internationalized/message@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@internationalized/message/-/message-3.1.0.tgz#b284014cd8bbb430a648b76c87c62bdca968b04c" + integrity sha512-Oo5m70FcBdADf7G8NkUffVSfuCdeAYVfsvNjZDi9ELpjvkc4YNJVTHt/NyTI9K7FgAVoELxiP9YmN0sJ+HNHYQ== dependencies: "@swc/helpers" "^0.4.14" intl-messageformat "^10.1.0" -"@internationalized/number@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.1.2.tgz#4482a6ac573acfb18efd354a42008af20da6c89c" - integrity sha512-Mbys8SGsn0ApXz3hJLNU+d95B8luoUbwnmCpBwl7d63UmYAlcT6TRDyvaS/vwdbElXLcsQJjQCu0gox2cv/Tig== +"@internationalized/number@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.2.0.tgz#dffb661cacd61a87b814c47b7d5240a286249066" + integrity sha512-GUXkhXSX1Ee2RURnzl+47uvbOxnlMnvP9Er+QePTjDjOPWuunmLKlEkYkEcLiiJp7y4l9QxGDLOlVr8m69LS5w== dependencies: "@swc/helpers" "^0.4.14" -"@internationalized/string@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@internationalized/string/-/string-3.0.1.tgz#2c70a81ae5eb84f156f40330369c2469bad6d504" - integrity sha512-2+rHfXZ56YgsC6i3fKvBue/xatnSm0Jv+C/x4+n3wg5xAcLh4LPW3GvZ/9ifxNAz9+IWplgZHa1FRIbSuUvNWg== +"@internationalized/string@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@internationalized/string/-/string-3.1.0.tgz#0b365906a8c3f44800b0db52c2e990cff345abce" + integrity sha512-TJQKiyUb+wyAfKF59UNeZ/kELMnkxyecnyPCnBI1ma4NaXReJW+7Cc2mObXAqraIBJUVv7rgI46RLKrLgi35ng== dependencies: "@swc/helpers" "^0.4.14" @@ -1691,7 +1752,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== @@ -1704,7 +1765,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.8", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.17" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== @@ -2206,1073 +2267,1073 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== -"@react-aria/breadcrumbs@^3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@react-aria/breadcrumbs/-/breadcrumbs-3.4.1.tgz#f0fc1353bf402cac2d2312d7de60f545366e1413" - integrity sha512-3dotDXcXX5IbES9tS9gK5m/2inlZH1ZESi61aBUoD/kQbUcf4CJ3TniVqzBKjNqQN8yIBH/LjwkAoGmuvtPVRQ== +"@react-aria/breadcrumbs@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-aria/breadcrumbs/-/breadcrumbs-3.5.0.tgz#e2ff9b39dd92f355c4059b70b13a639245d1dbb9" + integrity sha512-WiNMlk8COR+4zpJ8mFgTgWQqCxoFE6OMJ16anJzR8IgP1xMzUmIQ7l0s0Dv4D5qE+xVlgNF0ccDdw1x6A+WzPw== dependencies: - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/link" "^3.3.6" - "@react-aria/utils" "^3.14.2" - "@react-types/breadcrumbs" "^3.4.6" - "@react-types/shared" "^3.16.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/link" "^3.4.0" + "@react-aria/utils" "^3.15.0" + "@react-types/breadcrumbs" "^3.5.0" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" -"@react-aria/button@^3.6.4": - version "3.6.4" - resolved "https://registry.yarnpkg.com/@react-aria/button/-/button-3.6.4.tgz#51927c9d968d0c1f741ee2081ca7f2e244abbc12" - integrity sha512-OEs5fNGiuZzyC5y0cNl96+6pRf/3ZhI1i2m6LlRYhJLsWXPhHt21UHEnlSchE/XGtgKojJEeTsXottoBFTBi5w== +"@react-aria/button@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@react-aria/button/-/button-3.7.0.tgz#b00635c8be0e47e19733c96f3702b699f65242b7" + integrity sha512-4DSGXrAWflzT4cQe/x0KdrPzz7hv9vZgqYJuNXQkpmeIMs1EmUKuby2xC+W9GHuZ+8dMxjTWKy3XdwX2tCM42A== dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/interactions" "^3.13.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/toggle" "^3.4.4" - "@react-types/button" "^3.7.0" - "@react-types/shared" "^3.16.0" + "@react-aria/focus" "^3.11.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/toggle" "^3.5.0" + "@react-types/button" "^3.7.1" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" -"@react-aria/calendar@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@react-aria/calendar/-/calendar-3.0.5.tgz#78b4138688d325a3c3f8dc0be3e45291b3e8670b" - integrity sha512-RIOwGYIwMizN/MAF5RkTb2ic9OJ0rJyR2VqqgtV3c7ADHNejzyLYMQmaalEFDUHS+AbvaXM1LCXdFBhSB8nf5w== +"@react-aria/calendar@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@react-aria/calendar/-/calendar-3.1.0.tgz#58565af2bca09ef72dddb246ff4a70157c008add" + integrity sha512-XWtoGMBTYpj5De2yfboAv60SMXa/T2BjPd0uSkiaPXAC0vPjdB0VPhGbSi6LKCYIiTAMs98mMP0P4WYhWyW4jA== dependencies: - "@internationalized/date" "^3.0.2" - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/live-announcer" "^3.1.2" - "@react-aria/utils" "^3.14.2" - "@react-stately/calendar" "^3.0.5" - "@react-types/button" "^3.7.0" - "@react-types/calendar" "^3.0.5" - "@react-types/shared" "^3.16.0" + "@internationalized/date" "^3.1.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/live-announcer" "^3.2.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/calendar" "^3.1.0" + "@react-types/button" "^3.7.1" + "@react-types/calendar" "^3.1.0" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" -"@react-aria/checkbox@^3.7.1": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@react-aria/checkbox/-/checkbox-3.7.1.tgz#217ea3173ad37ae85cb39bcb9932eb5c1cde2e0b" - integrity sha512-3KRg/KrTRwQdw5Yg7gpbIKWWVt57PbGSEXAS/diQvRf9pTXbOuChTES8uVlcwF8q+3mKXc4ppzE3gsNQ5jOMqg== +"@react-aria/checkbox@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@react-aria/checkbox/-/checkbox-3.8.0.tgz#bded3e1238901c6cac109c8d1a0b2a66d452f8be" + integrity sha512-VjezmSfDx1/A+Yz5naZ9xCxkasmtsO7uK+Ur+Z6bKmHwvoazRK5cATdRG4mj++0JUBYn6bvBGBEXFZHTkkGahw== dependencies: - "@react-aria/label" "^3.4.4" - "@react-aria/toggle" "^3.4.2" - "@react-aria/utils" "^3.14.2" - "@react-stately/checkbox" "^3.3.2" - "@react-stately/toggle" "^3.4.4" - "@react-types/checkbox" "^3.4.1" - "@react-types/shared" "^3.16.0" + "@react-aria/label" "^3.5.0" + "@react-aria/toggle" "^3.5.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/checkbox" "^3.4.0" + "@react-stately/toggle" "^3.5.0" + "@react-types/checkbox" "^3.4.2" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" -"@react-aria/combobox@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@react-aria/combobox/-/combobox-3.4.4.tgz#0a968bfefedc9106e4b098ea84707f6da93dfc83" - integrity sha512-aviSDt4JkYZC1Ww83gvrNB4cHetXu73n5NuEfMNBC3B6fiL0MP5Av5+lMgf8FzpQks39QkZNxBtQ/h4I3D7SBA== +"@react-aria/combobox@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-aria/combobox/-/combobox-3.5.0.tgz#ebb7d412a5b9b066da97cafc1e8da249629c6961" + integrity sha512-xbeZMxcWLDhyLqdy/0qltX5b6/YH4RV6JlBLFhRP20x0inPcnBSCdS2aarRghXAAzRagoLUtul2O8t4gfWwWxQ== dependencies: - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/listbox" "^3.7.2" - "@react-aria/live-announcer" "^3.1.2" - "@react-aria/menu" "^3.7.1" - "@react-aria/overlays" "^3.12.1" - "@react-aria/selection" "^3.12.1" - "@react-aria/textfield" "^3.8.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/collections" "^3.5.1" - "@react-stately/combobox" "^3.3.1" - "@react-stately/layout" "^3.10.0" - "@react-types/button" "^3.7.0" - "@react-types/combobox" "^3.5.5" - "@react-types/shared" "^3.16.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/listbox" "^3.8.0" + "@react-aria/live-announcer" "^3.2.0" + "@react-aria/menu" "^3.8.0" + "@react-aria/overlays" "^3.13.0" + "@react-aria/selection" "^3.13.0" + "@react-aria/textfield" "^3.9.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/collections" "^3.6.0" + "@react-stately/combobox" "^3.4.0" + "@react-stately/layout" "^3.11.0" + "@react-types/button" "^3.7.1" + "@react-types/combobox" "^3.6.0" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" -"@react-aria/datepicker@^3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@react-aria/datepicker/-/datepicker-3.2.1.tgz#56a222c4b1c9c65b9b9371d3066611134f537ab7" - integrity sha512-NnW9VgX/YjxkgjcIaxmOhzpfiQmTQpCXjpPJ1+3nPhKzPKpcjtPxIYTDMkm/R+6i5FRukEGtjhg3QY9amLK6hQ== +"@react-aria/datepicker@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@react-aria/datepicker/-/datepicker-3.3.0.tgz#15bc746d75f43c2d31c826fcc34c6859433b205a" + integrity sha512-76/5a2Dfe/SCcW0j4hqeSTnlh6SSW/AYPKPr5fNaiGnLFJ3oLsc9SAuUgTsOBglR/J3N/hqtH+UO2U8X1QC6Ng== dependencies: - "@internationalized/date" "^3.0.2" - "@internationalized/number" "^3.1.2" - "@internationalized/string" "^3.0.1" - "@react-aria/focus" "^3.10.1" - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/label" "^3.4.4" - "@react-aria/spinbutton" "^3.2.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/datepicker" "^3.2.1" - "@react-types/button" "^3.7.0" - "@react-types/calendar" "^3.0.5" - "@react-types/datepicker" "^3.1.4" - "@react-types/dialog" "^3.4.5" - "@react-types/shared" "^3.16.0" + "@internationalized/date" "^3.1.0" + "@internationalized/number" "^3.2.0" + "@internationalized/string" "^3.1.0" + "@react-aria/focus" "^3.11.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/label" "^3.5.0" + "@react-aria/spinbutton" "^3.3.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/datepicker" "^3.3.0" + "@react-types/button" "^3.7.1" + "@react-types/calendar" "^3.1.0" + "@react-types/datepicker" "^3.2.0" + "@react-types/dialog" "^3.5.0" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" -"@react-aria/dialog@^3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@react-aria/dialog/-/dialog-3.4.2.tgz#b35f13e47d5d7d5363c7089d5d847069815bb5ea" - integrity sha512-Z6YZYXtwwmC5ZHjJldF3zuTjHnli7fXe/sM1ts3bw6jvU2L0kzhV/DRbPXYg8h695Oj9t+OIi4qxjEyKVH7SEA== +"@react-aria/dialog@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-aria/dialog/-/dialog-3.5.0.tgz#678787127a0fcc66184e1fe7b2e23d9470f8cb7e" + integrity sha512-QcGwrNSn7hya6tcs0CTuYEMYBPk6YT1vaO6xMTfsSyRhJNCRvvtx/NJ3Bg26M7WvzbuC2aKaSDBw2c14ZeXr5g== dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/overlays" "^3.12.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/overlays" "^3.4.4" - "@react-types/dialog" "^3.4.5" - "@react-types/shared" "^3.16.0" + "@react-aria/focus" "^3.11.0" + "@react-aria/overlays" "^3.13.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/overlays" "^3.5.0" + "@react-types/dialog" "^3.5.0" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" -"@react-aria/dnd@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@react-aria/dnd/-/dnd-3.0.1.tgz#6e601873bde4173578ce63ba6bcfb78abf3bba59" - integrity sha512-z/T59Jc+6mj3OMcLjfA6MYd0zD6K3DYw+kB2CZ0EPte7BRN8wtU4+q/bx1iX+If97X6bTcHjMGX6nrQJ5vX/fw== +"@react-aria/dnd@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@react-aria/dnd/-/dnd-3.1.0.tgz#42a08e436ad1a62ad802c015113791efb7a07081" + integrity sha512-SSkz9i7EcsoTrafDPpzlx+laYNfsUrCM7xX6yu68l9zO96kdoemZuv9OqbDBw2D1peqHT7kMoLreTLWsubb5bg== dependencies: - "@internationalized/string" "^3.0.1" - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/live-announcer" "^3.1.2" - "@react-aria/overlays" "^3.12.1" - "@react-aria/utils" "^3.14.2" - "@react-aria/visually-hidden" "^3.6.1" - "@react-stately/dnd" "^3.0.1" - "@react-types/button" "^3.7.0" - "@react-types/shared" "^3.16.0" + "@internationalized/string" "^3.1.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/live-announcer" "^3.2.0" + "@react-aria/overlays" "^3.13.0" + "@react-aria/utils" "^3.15.0" + "@react-aria/visually-hidden" "^3.7.0" + "@react-stately/dnd" "^3.1.0" + "@react-types/button" "^3.7.1" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" -"@react-aria/focus@^3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.10.1.tgz#624d02d2565151030a4156aeb17685d87f18ad58" - integrity sha512-HjgFUC1CznuYC7CxtBIFML6bOBxW3M3cSNtvmXU9QWlrPSwwOLkXCnfY6+UkjCc5huP4v7co4PoRDX8Vbe/cVQ== +"@react-aria/focus@^3.11.0": + version "3.11.0" + resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.11.0.tgz#8124b2341e8d43af72f3da85b08567bda45421b7" + integrity sha512-yPuWs9bAR9CMfIwyOPm2oXLPF19gNkUqW+ozSPhWbLMTEa8Ma09eHW1br4xbN+4ONOm/dCJsIkxTNPUkiLdQoA== dependencies: - "@react-aria/interactions" "^3.13.1" - "@react-aria/utils" "^3.14.2" - "@react-types/shared" "^3.16.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/utils" "^3.15.0" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" clsx "^1.1.1" -"@react-aria/grid@^3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@react-aria/grid/-/grid-3.5.2.tgz#17454be19d4f53bde27fc4b676fa02dae4f3a85d" - integrity sha512-+cDtTvTT0YF4jgy1pv0omcweub6z1N+GdkpHC6L6/jtH2gFRVns3IC6pf5ihLDIpLloylthaMMR8C3lus7035g== +"@react-aria/grid@^3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@react-aria/grid/-/grid-3.6.0.tgz#0a42f7423eddcb0c77384f71dcf00b3214de5732" + integrity sha512-O8MJdCfJ0weDbTOxYWN+nq6e9v00NGa9wXy35BdcmVnOOtk7WR8NHeH+/qPXwAm6/NBzl0ud9PZDjw2VKONALg== dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/live-announcer" "^3.1.2" - "@react-aria/selection" "^3.12.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/grid" "^3.4.2" - "@react-stately/selection" "^3.11.2" - "@react-stately/virtualizer" "^3.4.1" - "@react-types/checkbox" "^3.4.1" - "@react-types/grid" "^3.1.5" - "@react-types/shared" "^3.16.0" + "@react-aria/focus" "^3.11.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/live-announcer" "^3.2.0" + "@react-aria/selection" "^3.13.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/grid" "^3.5.0" + "@react-stately/selection" "^3.12.0" + "@react-stately/virtualizer" "^3.5.0" + "@react-types/checkbox" "^3.4.2" + "@react-types/grid" "^3.1.6" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" -"@react-aria/gridlist@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@react-aria/gridlist/-/gridlist-3.1.2.tgz#ffb7bc5e4e15e3bacdf036e4762f1eea0e6292f7" - integrity sha512-3HI/e8HzyBRWdEbDH+3Hvj9U5fD/1TYaqA0f4XnBdSEDd7LHPOzZyNzbZMdlMmaq2W0Dmm1YRCMELacFVUehUA== +"@react-aria/gridlist@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@react-aria/gridlist/-/gridlist-3.2.0.tgz#1a1be6fe454bcc37aa5cefa9d79b072acd5291ce" + integrity sha512-DUlE2cnzNAyTM8oQ6DIm4FX634HPohtnfzqh+WyQ5rwxagrDLtdeQJBMo/bzWk5pDNKnM/oZCICyR+wPR43gag== dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/grid" "^3.5.2" - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/selection" "^3.12.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/list" "^3.6.1" - "@react-types/checkbox" "^3.4.1" - "@react-types/shared" "^3.16.0" + "@react-aria/focus" "^3.11.0" + "@react-aria/grid" "^3.6.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/selection" "^3.13.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/list" "^3.7.0" + "@react-types/checkbox" "^3.4.2" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" -"@react-aria/i18n@^3.6.3": - version "3.6.3" - resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.6.3.tgz#2b4d72d0baf07b514d2c35eb6ac356d0247ea84a" - integrity sha512-cDWl8FXJIXsw/raWcThywBueCJ5ncoogq81wYVS6hfZVmSyncONIB3bwUL12cojmjX1VEP31sN0ujT/83QP95Q== - dependencies: - "@internationalized/date" "^3.0.2" - "@internationalized/message" "^3.0.10" - "@internationalized/number" "^3.1.2" - "@internationalized/string" "^3.0.1" - "@react-aria/ssr" "^3.4.1" - "@react-aria/utils" "^3.14.2" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/interactions@^3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.13.1.tgz#75e102c50a5c1d002cad4ee8d59677aee226186b" - integrity sha512-WCvfZOi1hhussVTHxVq76OR48ry13Zvp9U5hmuQufyxIUlf4hOvDk4/cbK4o4JiCs8X7C7SRzcwFM34M4NHzmg== - dependencies: - "@react-aria/utils" "^3.14.2" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/label@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@react-aria/label/-/label-3.4.4.tgz#b891d3cebeeffc7a1413a492d8a694083dc3253e" - integrity sha512-1fuYf2UctNhBy31uYN7OhdcrwzlB5GS0+C49gDkwWzccB7yr+CoOJ5UQUoVB7WBmzrc+CuzwWxSDd4OupSYIZQ== - dependencies: - "@react-aria/utils" "^3.14.2" - "@react-types/label" "^3.7.1" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/link@^3.3.6": - version "3.3.6" - resolved "https://registry.yarnpkg.com/@react-aria/link/-/link-3.3.6.tgz#e9e3203c41c4dd5c4113d0a06b7620b476f78345" - integrity sha512-UjbdBJ8EB+jCC3mPZD6cYykHqZKTy6/VvI5RGJoKtF8cg9639tRy6g102pd4ncFTdD4DfU5PPWtthC24nQRCyQ== - dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/interactions" "^3.13.1" - "@react-aria/utils" "^3.14.2" - "@react-types/link" "^3.3.6" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/listbox@^3.7.2": - version "3.7.2" - resolved "https://registry.yarnpkg.com/@react-aria/listbox/-/listbox-3.7.2.tgz#0cbbd4dc39712ac927542259bf4663e087353448" - integrity sha512-e3O/u2T3TccinmfS/UvHywxLbASmh28U4020WTpZnIrsaoriVCkGZvG1AYNNPDIESz2WO0oRF6vDrmGunglJ2A== - dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/interactions" "^3.13.1" - "@react-aria/label" "^3.4.4" - "@react-aria/selection" "^3.12.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/collections" "^3.5.1" - "@react-stately/list" "^3.6.1" - "@react-types/listbox" "^3.3.5" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/live-announcer@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@react-aria/live-announcer/-/live-announcer-3.1.2.tgz#a492c7ec1e664c8f41a572368cdbc53e22241a0c" - integrity sha512-BqtVLPWU10sZssoOJF1lJiRvZe5zqZ5BM39PsFyO7dWhVkR/9O9bZviqvKXnC1oXCnypfa+85gUshbK9unFcWA== - dependencies: - "@swc/helpers" "^0.4.14" - -"@react-aria/menu@^3.7.1": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@react-aria/menu/-/menu-3.7.1.tgz#74c60dcd33bba47faa79deb89523ad21d9855221" - integrity sha512-5KIUTs3xYSmERB8qzofFghznMVLcG3RWDnJcQjpRtrrYjm6Oc39TJeodDH874fiEr6o3i5WwMrEYVp7NSxz/TQ== - dependencies: - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/overlays" "^3.12.1" - "@react-aria/selection" "^3.12.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/collections" "^3.5.1" - "@react-stately/menu" "^3.4.4" - "@react-stately/tree" "^3.4.1" - "@react-types/button" "^3.7.0" - "@react-types/menu" "^3.7.3" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/meter@^3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@react-aria/meter/-/meter-3.3.4.tgz#7361a663ff21bc14df48d9eedec288e21146fabf" - integrity sha512-RdVd5vlb6//HI8G1hhH4G+E0Y387GYFKjmewSUKK0Lzp9PFLili26s+xLvgigUX9ald7HiPmfPdAlXzotvo54Q== - dependencies: - "@react-aria/progress" "^3.3.4" - "@react-types/meter" "^3.2.5" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/numberfield@^3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@react-aria/numberfield/-/numberfield-3.3.4.tgz#79fc2db5449a09efc20b83530aa2d69ae7140438" - integrity sha512-yoYeYaEW5v84Ff0x+oSN0h3uzqrSOBEgjtv8ZMaFVsZfm9yMjsVLu+QWGBYCEOPcASMkNZpNR3o91nBPK3XTDw== - dependencies: - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/live-announcer" "^3.1.2" - "@react-aria/spinbutton" "^3.2.1" - "@react-aria/textfield" "^3.8.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/numberfield" "^3.3.1" - "@react-types/button" "^3.7.0" - "@react-types/numberfield" "^3.3.5" - "@react-types/shared" "^3.16.0" - "@react-types/textfield" "^3.6.2" - "@swc/helpers" "^0.4.14" - -"@react-aria/overlays@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.12.1.tgz#429fe33b0da7b920334f241c688d73dc9a750a28" - integrity sha512-OSgSopk2uQI5unvC3+fUyngbRFFe4GnF0iopCmrsI7qSQEusJUd4M2SuPVXUBBwWFt5TsiH7TnxmIPWeh5LSoA== - dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/ssr" "^3.4.1" - "@react-aria/utils" "^3.14.2" - "@react-aria/visually-hidden" "^3.6.1" - "@react-stately/overlays" "^3.4.4" - "@react-types/button" "^3.7.0" - "@react-types/overlays" "^3.6.5" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/progress@^3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@react-aria/progress/-/progress-3.3.4.tgz#21138195532ae8807fb1dfc2f8162c6032d513dc" - integrity sha512-MVlWdH7L2e0u1SvkVk+C6/onS8opex9rIKUKHM08s++y80Xe3BIAh8jd5tgdlutDtcZ1kKgfb4bet9dvjymo4A== - dependencies: - "@react-aria/i18n" "^3.6.3" - "@react-aria/label" "^3.4.4" - "@react-aria/utils" "^3.14.2" - "@react-types/progress" "^3.2.5" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/radio@^3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@react-aria/radio/-/radio-3.4.2.tgz#bcd2deb8326f934046545fee9b2568f9d3b0655b" - integrity sha512-PpEsQjwkYOkSfKfnqXpBzf0FM/V2GSC0g/NG2ZAI5atDIACeic+kHCcs8fm2QzXtUDaRltNurvYdDJ+XzZ8g1g== - dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/label" "^3.4.4" - "@react-aria/utils" "^3.14.2" - "@react-stately/radio" "^3.6.2" - "@react-types/radio" "^3.3.1" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/searchfield@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@react-aria/searchfield/-/searchfield-3.4.4.tgz#f77f057fcd2582534bec60b5d65db5cf84490f27" - integrity sha512-Z3nZI2FXrWLPNUeJ3QV2ruTKBR9eHhPoHi+Iiuq4n+e02ib5s0Jlbam29FFiOxmf6vUMhScNcEYP9p2BNANmQA== - dependencies: - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/textfield" "^3.8.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/searchfield" "^3.3.4" - "@react-types/button" "^3.7.0" - "@react-types/searchfield" "^3.3.6" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/select@^3.8.4": - version "3.8.4" - resolved "https://registry.yarnpkg.com/@react-aria/select/-/select-3.8.4.tgz#cbb02f0cfca816e1f6b472212f0fb6aad9899fdb" - integrity sha512-d2JOe11lUoGLvsE32bZRMq32SzXuyLNczyTOLrWM0e9fsOr49A8p6L6bFm3symU/KpwjjnO+pf5IkvgEq+GoJg== - dependencies: - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/label" "^3.4.4" - "@react-aria/listbox" "^3.7.2" - "@react-aria/menu" "^3.7.1" - "@react-aria/selection" "^3.12.1" - "@react-aria/utils" "^3.14.2" - "@react-aria/visually-hidden" "^3.6.1" - "@react-stately/select" "^3.3.4" - "@react-types/button" "^3.7.0" - "@react-types/select" "^3.6.5" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/selection@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@react-aria/selection/-/selection-3.12.1.tgz#a21ea85952c55b5a7ce8c846478226fe3d03f1f8" - integrity sha512-UX1vSY+iUdHe0itFZIOizX1BCI8SAeFnEh5VIQ1bYRt93+kAxeC914fsxFPPgrodJyqWRCX1dblPyRUIWAzQiw== - dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/collections" "^3.5.1" - "@react-stately/selection" "^3.11.2" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/separator@^3.2.6": - version "3.2.6" - resolved "https://registry.yarnpkg.com/@react-aria/separator/-/separator-3.2.6.tgz#516fb27aa02862fc8e555042d9a8edde30214f40" - integrity sha512-QhYqoLfu+4T3ASCs5Q8ZWfBbRKBUmqquVdREWvHyvVyOBk9kRN9nxsoIxlkss1RJlJJx59AYF9T9CwgL80/bvw== - dependencies: - "@react-aria/utils" "^3.14.2" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/slider@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@react-aria/slider/-/slider-3.2.4.tgz#b272c13b5651f7e76a5b9d4ef300226ae315a64d" - integrity sha512-+BDPFaCgm0gtGewO33ZDNZz1b3Fc1p5Y/HSuwCcru+jHetODJXy23IIVpWsDri1vG3fHECRnWcDZAjLZgkVnAw== - dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/label" "^3.4.4" - "@react-aria/utils" "^3.14.2" - "@react-stately/radio" "^3.6.2" - "@react-stately/slider" "^3.2.4" - "@react-types/radio" "^3.3.1" - "@react-types/shared" "^3.16.0" - "@react-types/slider" "^3.3.1" - "@swc/helpers" "^0.4.14" - -"@react-aria/spinbutton@^3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@react-aria/spinbutton/-/spinbutton-3.2.1.tgz#8e9fff341deef3e14109c69f2b52fffa8a878a5b" - integrity sha512-y9QZ0VzWL7qzbWSPOCsAdvZhVlQrnHLRGc8bkRa2jmWrnCqS0iua/TRuLGgazIf2Rb7GmdbKBJJuPSScytVDUw== - dependencies: - "@react-aria/i18n" "^3.6.3" - "@react-aria/live-announcer" "^3.1.2" - "@react-aria/utils" "^3.14.2" - "@react-types/button" "^3.7.0" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-aria/ssr@^3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.4.1.tgz#79e8bb621487e8f52890c917d3c734f448ba95e7" - integrity sha512-NmhoilMDyIfQiOSdQgxpVH2tC2u85Y0mVijtBNbI9kcDYLEiW/r6vKYVKtkyU+C4qobXhGMPfZ70PTc0lysSVA== - dependencies: - "@swc/helpers" "^0.4.14" - -"@react-aria/switch@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@react-aria/switch/-/switch-3.3.1.tgz#c0f92f417a78972a3a9d10592eb474698b827d5a" - integrity sha512-o9MvXiSK9c7rUZjA6oQ0PNlVCnHEctue6v6W8Vn4HNbQMfhJiWqiSSff4RFcgRgs8WsPsEqbT+vHi2kXykQzdA== - dependencies: - "@react-aria/toggle" "^3.4.2" - "@react-stately/toggle" "^3.4.4" - "@react-types/switch" "^3.2.5" - "@swc/helpers" "^0.4.14" - -"@react-aria/table@^3.7.0": +"@react-aria/i18n@^3.7.0": version "3.7.0" - resolved "https://registry.yarnpkg.com/@react-aria/table/-/table-3.7.0.tgz#234c905b6b2e2212bac6cc8ef93fe750bf606425" - integrity sha512-1YqOeb8r8pxIYyfa5qNdCoM3fNQELM4d+9DanoNJhgnehoq9QDI9A1pGC2pvK2PN2y9IuTJM+U/ITjSpPBoGjQ== + resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.7.0.tgz#c1dfcd7a76a5161cbccbd6980ecf201c9b4d1826" + integrity sha512-PZCWmhO9mJvelwiYlsXLY6W4L2o+oza3xnDx0cZDVqp/Hf+OwMAPHWtZsFRTKdjk4TaOPB/ISc9HknWn6UpY4w== dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/grid" "^3.5.2" - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/live-announcer" "^3.1.2" - "@react-aria/selection" "^3.12.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/table" "^3.7.0" - "@react-stately/virtualizer" "^3.4.1" - "@react-types/checkbox" "^3.4.1" - "@react-types/grid" "^3.1.5" - "@react-types/shared" "^3.16.0" - "@react-types/table" "^3.4.0" + "@internationalized/date" "^3.1.0" + "@internationalized/message" "^3.1.0" + "@internationalized/number" "^3.2.0" + "@internationalized/string" "^3.1.0" + "@react-aria/ssr" "^3.5.0" + "@react-aria/utils" "^3.15.0" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" -"@react-aria/tabs@^3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@react-aria/tabs/-/tabs-3.3.4.tgz#0cbe65d4c99c9c9e5d8ebd5e1442da68964b9e14" - integrity sha512-SqlgfPvpRHlWelFk/lF9Ziu/8881NVErhKcpyyi+A9jASv5tvILWiwK8na82oI22UXXzyp0Y1EojLB25HnCB+w== +"@react-aria/interactions@^3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.14.0.tgz#d6480985048c009d58b8572428010dc61093cfcc" + integrity sha512-e1Tkr0UTuYFpV21PJrXy7jEY542Vl+C2Fo70oukZ1fN+wtfQkzodsTIzyepXb7kVMGmC34wDisMJUrksVkfY2w== dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/selection" "^3.12.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/list" "^3.6.1" - "@react-stately/tabs" "^3.2.4" - "@react-types/shared" "^3.16.0" - "@react-types/tabs" "^3.1.5" + "@react-aria/utils" "^3.15.0" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" -"@react-aria/textfield@^3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@react-aria/textfield/-/textfield-3.8.1.tgz#b6df2decc587824a3757ec33bd9b432fed1bacc5" - integrity sha512-jgun/B9ecuRCfBSJLX2xDuNwfuj1lL0oibMWoSv6Y++W+CSS8a7LjR1f9Kll5TDVkQiRRUm9qHwI0og9xTJrNw== +"@react-aria/label@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-aria/label/-/label-3.5.0.tgz#817710d719bc95105e369f4993a3a60dbad73ba9" + integrity sha512-sNiPYiFg06s1zGuifEUeUqRiYje0lfHem+GIUh0Y5ZxfpqIyxEmyV9Aw+C7TTjjo8BAG4NZ4bR7iF9ujf9QvKQ== dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/label" "^3.4.4" - "@react-aria/utils" "^3.14.2" - "@react-types/shared" "^3.16.0" - "@react-types/textfield" "^3.6.2" + "@react-aria/utils" "^3.15.0" + "@react-types/label" "^3.7.2" + "@react-types/shared" "^3.17.0" "@swc/helpers" "^0.4.14" -"@react-aria/toggle@^3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@react-aria/toggle/-/toggle-3.4.2.tgz#1c57539a26722219979c80dcebfbd0701c518789" - integrity sha512-xokCGf0fn96mOMqQku5QW672iQoMsN9RMpFbKvvgg2seceh8ifblyAXElWf/6YmluOZSgUSZljDkFrbMMYlzVA== - dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/interactions" "^3.13.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/toggle" "^3.4.4" - "@react-types/checkbox" "^3.4.1" - "@react-types/shared" "^3.16.0" - "@react-types/switch" "^3.2.5" - "@swc/helpers" "^0.4.14" - -"@react-aria/tooltip@^3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@react-aria/tooltip/-/tooltip-3.3.4.tgz#e508a6f4092ee632ca69fd202268c8f4317f04d2" - integrity sha512-KPDkDu7fquuUOOnNh9S7KfhPMwB1w9K+yLIFrYaj4iYSOLk/HH5TDkyiUQ7j5+B963D1fWlQjYFEGQ9o2KwO/Q== - dependencies: - "@react-aria/focus" "^3.10.1" - "@react-aria/interactions" "^3.13.1" - "@react-aria/utils" "^3.14.2" - "@react-stately/tooltip" "^3.2.4" - "@react-types/shared" "^3.16.0" - "@react-types/tooltip" "^3.2.5" - "@swc/helpers" "^0.4.14" - -"@react-aria/utils@^3.14.2": - version "3.14.2" - resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.14.2.tgz#3a8d0d14abab4bb1095e101ee44dc5e3e43e6217" - integrity sha512-3nr5gsAf/J/W+6Tu4NF3Q7m+1mXjfpXESh7TPa6UR6v3tVDTsJVMrITg2BkHN1jM8xELcl2ZxyUffOWqOXzWuA== - dependencies: - "@react-aria/ssr" "^3.4.1" - "@react-stately/utils" "^3.5.2" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - clsx "^1.1.1" - -"@react-aria/visually-hidden@^3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.6.1.tgz#b0a94b1531b9a8942d0d9a5cc6ed88109b8f5487" - integrity sha512-7rUbiaIiR1nok9HAHPn/WcyQlvuldUqxnvh81V4dlI3NtXOgMw7/QaNc5Xo5FFWlsSVpbyK3UVJgzIui0Ns0Xg== - dependencies: - "@react-aria/interactions" "^3.13.1" - "@react-aria/utils" "^3.14.2" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - clsx "^1.1.1" - -"@react-spring/animated@~9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.6.1.tgz#ccc626d847cbe346f5f8815d0928183c647eb425" - integrity sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ== - dependencies: - "@react-spring/shared" "~9.6.1" - "@react-spring/types" "~9.6.1" - -"@react-spring/core@~9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.6.1.tgz#ebe07c20682b360b06af116ea24e2b609e778c10" - integrity sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ== - dependencies: - "@react-spring/animated" "~9.6.1" - "@react-spring/rafz" "~9.6.1" - "@react-spring/shared" "~9.6.1" - "@react-spring/types" "~9.6.1" - -"@react-spring/konva@~9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@react-spring/konva/-/konva-9.6.1.tgz#66e63da0e9681e42395e995402a7e73ba6892461" - integrity sha512-MevnU+tnG1LPsmMRpfJfevfLtI0ObIvrwYc+Xg+kmYJe00vwMRSdulQOztKANKalFXBewwk72XrQCeRLXFaUIg== - dependencies: - "@react-spring/animated" "~9.6.1" - "@react-spring/core" "~9.6.1" - "@react-spring/shared" "~9.6.1" - "@react-spring/types" "~9.6.1" - -"@react-spring/native@~9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@react-spring/native/-/native-9.6.1.tgz#b66e237f2faaa4f88569d5a03b6fb0136bcdf2b9" - integrity sha512-ZIfSytxFGLw4gYOb8gsmwG0+JZYxuM/Y1XPCXCkhuoMn+RmOYrr0kQ4gLczbmf+TRxth7OT1c8vBYz0+SCGcIQ== - dependencies: - "@react-spring/animated" "~9.6.1" - "@react-spring/core" "~9.6.1" - "@react-spring/shared" "~9.6.1" - "@react-spring/types" "~9.6.1" - -"@react-spring/rafz@~9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.6.1.tgz#d71aafb92b78b24e4ff84639f52745afc285c38d" - integrity sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ== - -"@react-spring/shared@~9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.6.1.tgz#4e2e4296910656c02bd9fd54c559702bc836ac4e" - integrity sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw== - dependencies: - "@react-spring/rafz" "~9.6.1" - "@react-spring/types" "~9.6.1" - -"@react-spring/three@~9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.6.1.tgz#095fcd1dc6509127c33c14486d88289b89baeb9d" - integrity sha512-Tyw2YhZPKJAX3t2FcqvpLRb71CyTe1GvT3V+i+xJzfALgpk10uPGdGaQQ5Xrzmok1340DAeg2pR/MCfaW7b8AA== - dependencies: - "@react-spring/animated" "~9.6.1" - "@react-spring/core" "~9.6.1" - "@react-spring/shared" "~9.6.1" - "@react-spring/types" "~9.6.1" - -"@react-spring/types@~9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.6.1.tgz#913d3a68c5cbc1124fdb18eff919432f7b6abdde" - integrity sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q== - -"@react-spring/web@~9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.6.1.tgz#3e4c03b724d2b545dc2fa2649eb6109318ab9178" - integrity sha512-X2zR6q2Z+FjsWfGAmAXlQaoUHbPmfuCaXpuM6TcwXPpLE1ZD4A1eys/wpXboFQmDkjnrlTmKvpVna1MjWpZ5Hw== - dependencies: - "@react-spring/animated" "~9.6.1" - "@react-spring/core" "~9.6.1" - "@react-spring/shared" "~9.6.1" - "@react-spring/types" "~9.6.1" - -"@react-spring/zdog@~9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@react-spring/zdog/-/zdog-9.6.1.tgz#5292c374e23e3846db3eb9d7557ed5a7bb40dada" - integrity sha512-0jSGm2OFW/+/+4dkRp46KzEkcLVfzV2k6DO1om0dLDtQ4q6FpX4dmDTlRc7Apzin6VtfQONMFIGITtbqoS28MQ== - dependencies: - "@react-spring/animated" "~9.6.1" - "@react-spring/core" "~9.6.1" - "@react-spring/shared" "~9.6.1" - "@react-spring/types" "~9.6.1" - -"@react-stately/calendar@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@react-stately/calendar/-/calendar-3.0.5.tgz#78decc870ddf33ce1f7b7c8da57d2639e9a46c30" - integrity sha512-vu5hKsiA8edqNtsqBTGi8QR38qZ+uHDjuq3vp2m0f6TZSnp0kg8fkPNHEOuBTQ8ZXFFbGUZKhL/1B+ZWwLHwMQ== - dependencies: - "@internationalized/date" "^3.0.2" - "@react-stately/utils" "^3.5.2" - "@react-types/calendar" "^3.0.5" - "@react-types/datepicker" "^3.1.4" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/checkbox@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@react-stately/checkbox/-/checkbox-3.3.2.tgz#fd81866a7624c79cab2ec2c32234f164205a85e8" - integrity sha512-eU3zvWgQrcqS8UK8ZVkb3fMP816PeuN9N0/dOJKuOXXhkoLPuxtuja1oEqKU3sFMa5+bx3czZhhNIRpr60NAdw== - dependencies: - "@react-stately/toggle" "^3.4.4" - "@react-stately/utils" "^3.5.2" - "@react-types/checkbox" "^3.4.1" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/collections@^3.5.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.5.1.tgz#502a56658e4859aa7d31bd4b9189879b5b5a0255" - integrity sha512-egzVrZC5eFc5RJBpqUkzxd2aJOHZ2T1o7horEi8tAWZkg4YI+AmKrqela4ijVrrB9l1GO9z06qPT1UoPkFrC1w== - dependencies: - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/combobox@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@react-stately/combobox/-/combobox-3.3.1.tgz#5be13467dd64ddd09199b5e00e9f7d4a1aec5688" - integrity sha512-DgYn0MyfbDySf54o7ofXRd29TWznqtRRRbMG8TWgi/RaB0piDckT/TYWWSYOH3iMgnOEhReJhUUdMiQG4QLpIg== - dependencies: - "@react-stately/list" "^3.6.1" - "@react-stately/menu" "^3.4.4" - "@react-stately/select" "^3.3.4" - "@react-stately/utils" "^3.5.2" - "@react-types/combobox" "^3.5.5" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/datepicker@^3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@react-stately/datepicker/-/datepicker-3.2.1.tgz#4c545981f73771bff76885e50014b4274fa4b554" - integrity sha512-nd6thX2Z+rOLDHduB3EgMKA0n5U83lrwn3IUfjRGrcE21zFaFmhTPsHyvol5jHy3eSyjWSN9kGpKFzOxES+uoA== - dependencies: - "@internationalized/date" "^3.0.2" - "@internationalized/string" "^3.0.1" - "@react-stately/overlays" "^3.4.4" - "@react-stately/utils" "^3.5.2" - "@react-types/datepicker" "^3.1.4" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/dnd@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@react-stately/dnd/-/dnd-3.0.1.tgz#b8e8190c147dcaeac1a90eabce5bd20891f2c620" - integrity sha512-pwtyY/TR6Rdk33lFdF6dztQTV9gPujFmTqJG31NSSs6ei1FfUW9ZMq+311Zb8OhZ0TFiwZqAutVmmaaUrtl5+A== - dependencies: - "@react-stately/selection" "^3.11.2" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/grid@^3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@react-stately/grid/-/grid-3.4.2.tgz#d7d1a4ed4b5bb431b5e5429f8f557cf7d88a7ae8" - integrity sha512-NeIUykQeA7Hen+dV4771ARW5SRrHYNn5VTOsQwn3KBUd2Z2gZ01OwUl3gETl5u0e3/tzMUdJ1LUoSPhDMwcmKw== - dependencies: - "@react-stately/selection" "^3.11.2" - "@react-types/grid" "^3.1.5" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/layout@^3.10.0": - version "3.10.0" - resolved "https://registry.yarnpkg.com/@react-stately/layout/-/layout-3.10.0.tgz#86bcb9117a05df56f02d7b55d1d24c5593285c18" - integrity sha512-ThFgivQSD5ksLMX7tbu0HqIxbxac/E8a/0vA21wB9QF9IQnUKO796QAQqwfA5rwPvTT41LL2Xn00GkrwQ9g/zg== - dependencies: - "@react-stately/table" "^3.7.0" - "@react-stately/virtualizer" "^3.4.1" - "@react-types/grid" "^3.1.5" - "@react-types/shared" "^3.16.0" - "@react-types/table" "^3.4.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/list@^3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@react-stately/list/-/list-3.6.1.tgz#75d07a4e04111b804fb13c975df5a0c1265f3aa1" - integrity sha512-+/fVkK3UO+N2NoUGpe57k9gcnfIsyEgWP8SD6CXZUkJho7BTp6mwrH0Wm8tcOclT3uBk+fZaQrk8mR3uWsPZGw== - dependencies: - "@react-stately/collections" "^3.5.1" - "@react-stately/selection" "^3.11.2" - "@react-stately/utils" "^3.5.2" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/menu@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.4.4.tgz#222ffd283691f1c4137a85ff0484b98a4385b099" - integrity sha512-WKak1NSV9yDY0tDB4mzsbj0FboTtR06gekio0VmKb1+FmnrC07mef8eGKUn974F0WhTNUy5A1iI5eM0W2YNynA== - dependencies: - "@react-stately/overlays" "^3.4.4" - "@react-stately/utils" "^3.5.2" - "@react-types/menu" "^3.7.3" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/numberfield@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@react-stately/numberfield/-/numberfield-3.3.1.tgz#ef411062ffdb3646eae2a320e07443b2bf78a76f" - integrity sha512-GOu6wE2L2eal4AOL+rJQ4wQnFRgRkwiS9xdAFPu9B4qfP0DVfEIUC3XV4jws9nBhANxEf5LyilUv400nG881wg== - dependencies: - "@internationalized/number" "^3.1.2" - "@react-stately/utils" "^3.5.2" - "@react-types/numberfield" "^3.3.5" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/overlays@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.4.4.tgz#a228a230f46f0d593ffb7bc8f836439bbc08e9ed" - integrity sha512-IIlx+VXtXS4snDXrocUOls8QZ5XBQ4SNonaz1ox8/5W7Nsvq4VtdKsIaXsUP4agOudswaimlpj3pTDO/KuF5tQ== - dependencies: - "@react-stately/utils" "^3.5.2" - "@react-types/overlays" "^3.6.5" - "@swc/helpers" "^0.4.14" - -"@react-stately/radio@^3.6.2": - version "3.6.2" - resolved "https://registry.yarnpkg.com/@react-stately/radio/-/radio-3.6.2.tgz#6a13e3f97d130fccc1b404673cbe1414ac018621" - integrity sha512-qjbebR0YSkdEocLsPSzNnCsUYllWY938/5Z8mETxk4+74PJLxC3z0qjqVRq+aDO8hOgIfqSgrRRp3cJz9vIsBg== - dependencies: - "@react-stately/utils" "^3.5.2" - "@react-types/radio" "^3.3.1" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/searchfield@^3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@react-stately/searchfield/-/searchfield-3.3.4.tgz#a2d885fd68a3e8936d60b9d56e15f785022b448e" - integrity sha512-H/1evv7lsJl6PlD7/Sv7VgbCe0Yd2E2eKFihD6/tXPWO6L/ngYp5siqqhdwazjWTK2Hgw4TL0eviHGOGXKItzQ== - dependencies: - "@react-stately/utils" "^3.5.2" - "@react-types/searchfield" "^3.3.6" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/select@^3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@react-stately/select/-/select-3.3.4.tgz#61c3e739175e86babf0e585f8c68e30f3bf6363c" - integrity sha512-gD4JnF9/OIrQNdA4VqPIbifqpBC84BXHR5N7KmG7Ef06K9WGGVNB4FS538wno/znKg7lR6A45CPlaV53qfvWHg== - dependencies: - "@react-stately/collections" "^3.5.1" - "@react-stately/list" "^3.6.1" - "@react-stately/menu" "^3.4.4" - "@react-stately/selection" "^3.11.2" - "@react-stately/utils" "^3.5.2" - "@react-types/select" "^3.6.5" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/selection@^3.11.2": - version "3.11.2" - resolved "https://registry.yarnpkg.com/@react-stately/selection/-/selection-3.11.2.tgz#15c35dfb386e5218b8106070137a8b3ecded5a8b" - integrity sha512-g21Y36xhYkXO3yzz0BYSBqnD38olvEwsJUqBXGZfx//bshMC2FNmI5sRYMAi36stxWbwzBvB01OytxfLLxCXCA== - dependencies: - "@react-stately/collections" "^3.5.1" - "@react-stately/utils" "^3.5.2" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/slider@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@react-stately/slider/-/slider-3.2.4.tgz#4e9e22cd8c2c449497e8476f2bc8d1399a5b0f80" - integrity sha512-J97lTLqQKsrVSovYr4dTz7IJO/+j9OStT78N6bumDklnIKT7bsH3g857zITUFjs8yCcq0Jt3sfOvEU0ts6vyww== - dependencies: - "@react-aria/i18n" "^3.6.3" - "@react-aria/utils" "^3.14.2" - "@react-stately/utils" "^3.5.2" - "@react-types/shared" "^3.16.0" - "@react-types/slider" "^3.3.1" - "@swc/helpers" "^0.4.14" - -"@react-stately/table@^3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@react-stately/table/-/table-3.7.0.tgz#fbb50081805c391d43de8ca4153bcd89edb82368" - integrity sha512-oPvMEabRUD4LSJ/NZsal3TT2YjoRmpEK8t2pqG20+Vapxy5tC6QKEZQvrDxJwF4Z8fqQnX/GvnqmfypvqWDUSA== - dependencies: - "@react-stately/collections" "^3.5.1" - "@react-stately/grid" "^3.4.2" - "@react-stately/selection" "^3.11.2" - "@react-types/grid" "^3.1.5" - "@react-types/shared" "^3.16.0" - "@react-types/table" "^3.4.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/tabs@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@react-stately/tabs/-/tabs-3.2.4.tgz#e596623de62731efc769ee0d58e54f9f1400551c" - integrity sha512-qSnkoxzbC21KXZYGtg6TEDaex34WSNmPN4sJzXc9Xe39L6+wXNCA2tqZxWCfpIcWQklFm+BmnnNNCO8/PDDrMA== - dependencies: - "@react-stately/list" "^3.6.1" - "@react-stately/utils" "^3.5.2" - "@react-types/tabs" "^3.1.5" - "@swc/helpers" "^0.4.14" - -"@react-stately/toggle@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.4.4.tgz#b7825bf900725dcee0444fe6132b06948be36b44" - integrity sha512-OwVJpd2M7P7fekTWpl3TUdD3Brq+Z/xElOCJYP5QuVytXCa5seKsk40YPld8JQnA5dRKojpbUxMDOJpb6hOOfw== - dependencies: - "@react-stately/utils" "^3.5.2" - "@react-types/checkbox" "^3.4.1" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/tooltip@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@react-stately/tooltip/-/tooltip-3.2.4.tgz#387bb53539c39b0f3a0807537e9d404e03dc5d3f" - integrity sha512-t7ksDRs9jKcOS25BVLM5cNCyzSCnzrin8OZ3AEmgeNxfiS58HhHbNxYk725hyGrbdpugQ03cRcJG70EZ6VgwDQ== - dependencies: - "@react-stately/overlays" "^3.4.4" - "@react-stately/utils" "^3.5.2" - "@react-types/tooltip" "^3.2.5" - "@swc/helpers" "^0.4.14" - -"@react-stately/tree@^3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@react-stately/tree/-/tree-3.4.1.tgz#bb267784000b22c7c1aa6415103ad1b9f3566677" - integrity sha512-kIXeJOHgGGaUFnAD2wyRIiOwOw/+PN1OXo46n8+dPTFIYwR4+IWFNG8OMjVlIiSLPYWMCzzxZBE9a5grmbmNWQ== - dependencies: - "@react-stately/collections" "^3.5.1" - "@react-stately/selection" "^3.11.2" - "@react-stately/utils" "^3.5.2" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-stately/utils@^3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.5.2.tgz#9b5f3bb9ad500bf9c5b636a42988dba60a221669" - integrity sha512-639gSKqamPHIEPaApb9ahVJS0HgAqNdVF3tQRoh+Ky6759Mbk6i3HqG4zk4IGQ1tVlYSYZvCckwehF7b2zndMg== - dependencies: - "@swc/helpers" "^0.4.14" - -"@react-stately/virtualizer@^3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@react-stately/virtualizer/-/virtualizer-3.4.1.tgz#00c7b36b989244cf985b9ad5fb13dc1ecbb81a0f" - integrity sha512-2S7GARkZl41X7fN0Xa94TkN8ELAUbA89zn1xH59d02NOvAKLAFXHkCe69AivvVvbhXo8/nONzO8NXqqgBS/XQw== - dependencies: - "@react-aria/utils" "^3.14.2" - "@react-types/shared" "^3.16.0" - "@swc/helpers" "^0.4.14" - -"@react-types/breadcrumbs@^3.4.6": - version "3.4.6" - resolved "https://registry.yarnpkg.com/@react-types/breadcrumbs/-/breadcrumbs-3.4.6.tgz#cbc1132b5bfa87dde5467b037c563ed77a211980" - integrity sha512-hvGUI4mKHvOl3QyKFHk1qT/UkG+C4iJsRTlk6pbQgwk4lb7rplEm1CEa7fxzRdI8Gh4Id+C9+WyKCxZf9GNWUw== - dependencies: - "@react-types/link" "^3.3.6" - "@react-types/shared" "^3.16.0" - -"@react-types/button@^3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.7.0.tgz#774c043d8090a505e60fdf26f026d5f0cc968f0f" - integrity sha512-81BQO3QxSgF9PTXsVozNdNCKxBOB1lpbCWocV99dN1ws9s8uaYw8pmJJZ0LJKLiOsIECQ/3QrhQjmWTDW/qTug== - dependencies: - "@react-types/shared" "^3.16.0" - -"@react-types/calendar@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@react-types/calendar/-/calendar-3.0.5.tgz#a91fca7d5a2bbbd554748471f9920600cb364d18" - integrity sha512-Kx00132hFEVvqay/Ub7q2oZEA1AzksirAuCsjakamn4LAXvitlo3PZxqBdEsyRc3nP5NR48KJj8yo276mXY8kQ== - dependencies: - "@internationalized/date" "^3.0.2" - "@react-types/shared" "^3.16.0" - -"@react-types/checkbox@^3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.4.1.tgz#75a78b3f21f4cc72d2382761ba4c326aefd699db" - integrity sha512-kDMpy9SntjGQ7x00m5zmW8GENPouOtyiDgiEDKsPXUr2iYqHsNtricqVyG9S9+6hqpzuu8BzTcvZamc/xYjzlg== - dependencies: - "@react-types/shared" "^3.16.0" - -"@react-types/combobox@^3.5.5": - version "3.5.5" - resolved "https://registry.yarnpkg.com/@react-types/combobox/-/combobox-3.5.5.tgz#13410106fc2df8e3d02d53a33e9d2a6f3f2f6b61" - integrity sha512-gpDo/NTQFd5IfCZoNnG16N4/JfvwXpZBNc15Kn7bF+NcpSDhDpI26BZN4mvK4lljKCheD4VrEl9/3PtImCg7cA== - dependencies: - "@react-types/shared" "^3.16.0" - -"@react-types/datepicker@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@react-types/datepicker/-/datepicker-3.1.4.tgz#46fd291d8acd40fdd304c4c0bf1a47e71eaa1801" - integrity sha512-NBCXBCe3YZqeA/JrVKy0IAvJ2XSnXaVpR9iAlUwKu7V8P81CtnXHsVCrd/0HSH8QZWsGdIV5E23z0TctvW8trA== - dependencies: - "@internationalized/date" "^3.0.2" - "@react-types/overlays" "^3.6.5" - "@react-types/shared" "^3.16.0" - -"@react-types/dialog@^3.4.5": - version "3.4.5" - resolved "https://registry.yarnpkg.com/@react-types/dialog/-/dialog-3.4.5.tgz#a12c4e6d69dd7f098eb8b1534107ae6d970f734b" - integrity sha512-FkxZAYNRWkZVH5rjlw6qyQ/SpoGcYtNI/JQvn1H/xtZy/OJh2b2ERxGWv5x0RItGSeyATdSwFO1Qnf1Kl2K02A== - dependencies: - "@react-types/overlays" "^3.6.5" - "@react-types/shared" "^3.16.0" - -"@react-types/grid@^3.1.5": - version "3.1.5" - resolved "https://registry.yarnpkg.com/@react-types/grid/-/grid-3.1.5.tgz#b0efef48202b40aa05913f1fe5b05d80e7d26c15" - integrity sha512-KiEywsOJ+wdzLmJerAKEMADdvdItaLfhdo3bFfn1lgNUaKiNDJctDYWlhOYsRePf7MIrzoZuXEFnJj45jfpiOQ== - dependencies: - "@react-types/shared" "^3.16.0" - -"@react-types/label@^3.7.1": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@react-types/label/-/label-3.7.1.tgz#ad4d3d7a6b5ea6aca70f89661d7c358cf2ab5f94" - integrity sha512-wFpdtjSDBWO4xQQGF57V3PqvVVyE9TPj9ELWLs1yzL09fpXosycuEl5d79RywVlC9aF9dQYUfES09q/DZhRhMQ== - dependencies: - "@react-types/shared" "^3.16.0" - -"@react-types/link@^3.3.6": - version "3.3.6" - resolved "https://registry.yarnpkg.com/@react-types/link/-/link-3.3.6.tgz#74ff1602c7aba38d3200f0d597a04e1f94989e25" - integrity sha512-HMFd94CW8WrHbwXeTtCP/WOZmGugrEkN8f16R0i7T9xlTumk5GxubDMjA41ND/ehH72Xq7lP9VX8qezHWCGSoQ== - dependencies: - "@react-aria/interactions" "^3.13.1" - "@react-types/shared" "^3.16.0" - -"@react-types/listbox@^3.3.5": - version "3.3.5" - resolved "https://registry.yarnpkg.com/@react-types/listbox/-/listbox-3.3.5.tgz#c2222e3f50fbf377ed20b2d16e761b9c09d7adc8" - integrity sha512-7SMRJWUi7ayzQ7SUPCXXwgI/Ua3vg0PPQOZFsmJ4/E8VG/xK82IV7BYSZiNjUQuGpVZJL0VPndt/RwIrQO4S3w== - dependencies: - "@react-types/shared" "^3.16.0" - -"@react-types/menu@^3.7.3": - version "3.7.3" - resolved "https://registry.yarnpkg.com/@react-types/menu/-/menu-3.7.3.tgz#beb8d0fb7f1e50254e2e7661dfbfa4bb38826dad" - integrity sha512-3Pax24I/FyNKBjKyNR4ePD8eZs35Th57HzJAVjamQg2fHEDRomg9GQ7fdmfGj72Dv3x3JRCoPYqhJ3L5R3kbzg== - dependencies: - "@react-types/overlays" "^3.6.5" - "@react-types/shared" "^3.16.0" - -"@react-types/meter@^3.2.5": - version "3.2.5" - resolved "https://registry.yarnpkg.com/@react-types/meter/-/meter-3.2.5.tgz#99a381808e98765e7b645721bcc2bff4b5d5f19e" - integrity sha512-pBrHoWRSwrfo3JtCCxoniSEd27Pokt20Fj4ZkJxjjDtLdcHOM4Z1JIKvOlcXMCV35iknrVu4veDHpmXolI+vAw== - dependencies: - "@react-types/progress" "^3.2.5" - "@react-types/shared" "^3.16.0" - -"@react-types/numberfield@^3.3.5": - version "3.3.5" - resolved "https://registry.yarnpkg.com/@react-types/numberfield/-/numberfield-3.3.5.tgz#423aced559f7431e88b7988bf7e2cb3870fcdb1c" - integrity sha512-qBhUSkahiIeTW5IvKvyfLtVHgzyqwKfuDIOlJQiBwgrOPR96X8KDDsOib4r5SFv0lhibv0gQ5L5ucXbmwLyQ8A== - dependencies: - "@react-types/shared" "^3.16.0" - -"@react-types/overlays@^3.6.5": - version "3.6.5" - resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.6.5.tgz#466b325d9be51f67beb98b7bec3fd9295c72efac" - integrity sha512-IeWcF+YTucCYYHagNh8fZLH6R4YUONO1VHY57WJyIHwMy0qgEaKSQCwq72VO1fQJ0ySZgOgm31FniOyKkg6+eQ== - dependencies: - "@react-types/shared" "^3.16.0" - -"@react-types/progress@^3.2.5": - version "3.2.5" - resolved "https://registry.yarnpkg.com/@react-types/progress/-/progress-3.2.5.tgz#71780e48402cb25813c8edd07ee6075cdd972488" - integrity sha512-pFSqaj6rlSdPqGHVErJ8G3RkIyYigoJ3EVozvhR9bcKkLlhnzJiFgOZl+k5u/ZKJOA+YHivIHJwg+Kl1sG0J6A== - dependencies: - "@react-types/shared" "^3.16.0" - -"@react-types/radio@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@react-types/radio/-/radio-3.3.1.tgz#688570ba9901d21850a16c2aaafed5dd83e09966" - integrity sha512-q/x0kMvBsu6mH4bIkp/Jjrm9ff5y/p3UR0V4CmQFI7604gQd2Dt1dZMU/2HV9x70r1JfWRrDeRrVjUHVfFL5Vg== - dependencies: - "@react-types/shared" "^3.16.0" - -"@react-types/searchfield@^3.3.6": - version "3.3.6" - resolved "https://registry.yarnpkg.com/@react-types/searchfield/-/searchfield-3.3.6.tgz#8f33ef6938e2db9f80b7e4008d81fc4de65f07d3" - integrity sha512-DIv5eznnJVv0CM4f8SEEiptEZSzXUJWUyxRPkTzYNWt91pPPaCNbCQbmzZtyR9/R9KRJ9hlZN2bMkrtfVLvl1g== - dependencies: - "@react-types/shared" "^3.16.0" - "@react-types/textfield" "^3.6.2" - -"@react-types/select@^3.6.5": - version "3.6.5" - resolved "https://registry.yarnpkg.com/@react-types/select/-/select-3.6.5.tgz#798abf0073b39eef041952198a9e84eff0ce9edc" - integrity sha512-FDeSA7TYMNnhsbXREnD4dWRSu21T5M4BLy+J/5VgwDpr3IN9pzbvngK8a3jc8Yg2S3igKYLMLYfmcsx+yk7ohA== - dependencies: - "@react-types/shared" "^3.16.0" - -"@react-types/shared@^3.16.0": - version "3.16.0" - resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.16.0.tgz#cab7bf0376969d1773480ecb2d6da5aa91391db5" - integrity sha512-IQgU4oAEvMwylEvaTsr2XB1G/mAoMe1JFYLD6G78v++oAR9l8o9MQxZ0YSeANDkqTamb2gKezGoT1RxvSKjVxw== - -"@react-types/slider@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@react-types/slider/-/slider-3.3.1.tgz#0e6a8d0767b1ab94f8c32541d50aaa6d93683df4" - integrity sha512-CbEa1v1IcUJD7VrFhWyOOlT7VyQ5DHEf/pNMkvICOBLMAwnWxS+tnTiRFgA/EbvV/vp24ydeszHYtMvsyRONRw== - dependencies: - "@react-types/shared" "^3.16.0" - -"@react-types/switch@^3.2.5": - version "3.2.5" - resolved "https://registry.yarnpkg.com/@react-types/switch/-/switch-3.2.5.tgz#e1db722e8beeed846cfcf9de94cad81b4e0ead78" - integrity sha512-DlUL0Bz79SUTRje/i8m6qn4Ipn+q8QnyIkyJhkoHeH1R0YNude8xZrBPWbj3zfdddAGDFSF1NzP69q0xmNAcTQ== - dependencies: - "@react-types/checkbox" "^3.4.1" - "@react-types/shared" "^3.16.0" - -"@react-types/table@^3.4.0": +"@react-aria/link@^3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@react-types/table/-/table-3.4.0.tgz#64715f6c355b880467f67b1e5288e6c28d6092e8" - integrity sha512-G2L5WtaBMeG3v/5Kj/ZXH4ywz95vyPUBj7qy9UZJOYNaAR7uJWZkbe+Ka4xD4H/AaOk4mqW8dSo8cj7gtD66GQ== + resolved "https://registry.yarnpkg.com/@react-aria/link/-/link-3.4.0.tgz#f3f7c5277ab9fc0b8c55c76503e1fbe764e02ca6" + integrity sha512-d/h4y7SFO+KweMX5IRU99L1jz9AAwp6mNStkBjYGxCD29QYTVWClpZHjRlO1s6a9e2QTpk/LzsvjiytowzfHyA== dependencies: - "@react-types/grid" "^3.1.5" - "@react-types/shared" "^3.16.0" + "@react-aria/focus" "^3.11.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/utils" "^3.15.0" + "@react-types/link" "^3.4.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" -"@react-types/tabs@^3.1.5": - version "3.1.5" - resolved "https://registry.yarnpkg.com/@react-types/tabs/-/tabs-3.1.5.tgz#8676dd16e0dc4be2d4d1cc33bb89cc679ef93abe" - integrity sha512-YgWY8IajCDBZmBzR3eii0aW6+SjcAT/dmqDNmfIuVVnDN7sHQ3PFa0nbmByvb0SfjOkJYumt8TJwFUCugohS8A== +"@react-aria/listbox@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@react-aria/listbox/-/listbox-3.8.0.tgz#2598415cbb6de420e1edfd67391f9548f1abc571" + integrity sha512-v9tvyNsB887H5hpqPBoeBxNDr+3EKavImZk68h/+LKgZehMNSD3TGcmhcQ5Q4xqZJqYrQtKIYdtk+BP2huswAg== dependencies: - "@react-types/shared" "^3.16.0" + "@react-aria/focus" "^3.11.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/label" "^3.5.0" + "@react-aria/selection" "^3.13.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/collections" "^3.6.0" + "@react-stately/list" "^3.7.0" + "@react-types/listbox" "^3.4.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" -"@react-types/textfield@^3.6.2": - version "3.6.2" - resolved "https://registry.yarnpkg.com/@react-types/textfield/-/textfield-3.6.2.tgz#6cc87c2bac286a06ba04b9465d23fa9078bf280e" - integrity sha512-QhFcpXvmSEW1/PwkWkvHJkcjsVezLW0OAvA0kMt/FMOChQNxnO36Pha+WjfcVbiFHXMhCBl6akbY2xG9NsHJrQ== +"@react-aria/live-announcer@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@react-aria/live-announcer/-/live-announcer-3.2.0.tgz#ff4bd263789aa246de9f966e188649f6454e8b36" + integrity sha512-uSqDDy+9CbmNTZh0Roi4dvWKWcbuMTYKh3RnUw3XBPw0aYxSkcFQeWGfxFoOwXCDcXez02cFJtAxpR2bShkrsw== dependencies: - "@react-types/shared" "^3.16.0" + "@swc/helpers" "^0.4.14" -"@react-types/tooltip@^3.2.5": - version "3.2.5" - resolved "https://registry.yarnpkg.com/@react-types/tooltip/-/tooltip-3.2.5.tgz#f2940d3edbcf846dc15f9222f0162664641f183c" - integrity sha512-D4lN32JwQuA3JbCgcI26mgCkLHIj1WE8MTzf1McaasPkx7gVaqW+wfPyFwt99/Oo52TLvA/1oin78qePP67PSw== +"@react-aria/menu@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@react-aria/menu/-/menu-3.8.0.tgz#847396ce69757cc3780c00cbd838deaf4a8cca90" + integrity sha512-5V/EXzdxFxJc1Dh7rqYWeGWeHLgIwyyN4fv+u1Y5+q5dikgTVplbjnO34VHMELHHVWDIqvSikJSyYsdKprVnEQ== dependencies: - "@react-types/overlays" "^3.6.5" - "@react-types/shared" "^3.16.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/overlays" "^3.13.0" + "@react-aria/selection" "^3.13.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/collections" "^3.6.0" + "@react-stately/menu" "^3.5.0" + "@react-stately/tree" "^3.5.0" + "@react-types/button" "^3.7.1" + "@react-types/menu" "^3.8.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/meter@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-aria/meter/-/meter-3.4.0.tgz#2d46157668ba3331b505329a961e32e81da06f77" + integrity sha512-2CqpTwkZ1Vnblqd+z+mP+3ZhQRg3oNkz7GxN9nRLTDrpxVLY+WtSeIGDK7x8EwmYrVo4q4wHl3DGa2VOLNNgVA== + dependencies: + "@react-aria/progress" "^3.4.0" + "@react-types/meter" "^3.3.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/numberfield@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-aria/numberfield/-/numberfield-3.4.0.tgz#158f37d8a388f210c947b0b2baf303f3fd58c95d" + integrity sha512-gZMZAjE+tcwtdDW5X5rlot7ihir1OCCEyzbIDFztte2h+I57b45ET9P4AmgrmqfOnyscPXI3kJn9eILNYHdZVw== + dependencies: + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/live-announcer" "^3.2.0" + "@react-aria/spinbutton" "^3.3.0" + "@react-aria/textfield" "^3.9.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/numberfield" "^3.4.0" + "@react-types/button" "^3.7.1" + "@react-types/numberfield" "^3.4.0" + "@react-types/shared" "^3.17.0" + "@react-types/textfield" "^3.7.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/overlays@^3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.13.0.tgz#f5a8cdce4754b4fd487baf9f356a5a3cdd731c12" + integrity sha512-hRZyhAYzrlCcEWQ2k2jP24b0wc5/355Xl5w5FZHRmPeU1U4XlFwKX/eFlBs/li9Sprm1bTDXrCY480Kl6UsKDA== + dependencies: + "@react-aria/focus" "^3.11.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/ssr" "^3.5.0" + "@react-aria/utils" "^3.15.0" + "@react-aria/visually-hidden" "^3.7.0" + "@react-stately/overlays" "^3.5.0" + "@react-types/button" "^3.7.1" + "@react-types/overlays" "^3.7.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/progress@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-aria/progress/-/progress-3.4.0.tgz#76f7ece245e9f33972ba05836daa530a9656901b" + integrity sha512-G8Wew/EjgzoBM6OOAtVinA0hEng/DXWZF7luCoMPuqSKOakFzzazHBMpmjcXku0GGoTGzLsqqOK1M5o3kDn4FA== + dependencies: + "@react-aria/i18n" "^3.7.0" + "@react-aria/label" "^3.5.0" + "@react-aria/utils" "^3.15.0" + "@react-types/progress" "^3.3.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/radio@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-aria/radio/-/radio-3.5.0.tgz#3322063e0ff86275762c0d473dfd2a0c3e82e168" + integrity sha512-d/Hxdu+jUdi3wmyaWYRLTyN16vZxr2MOdkmw8tojTOIMLQj7zTaCFc0D4LR4KZEn3E0F5buGCUHL6o4CTqBeBA== + dependencies: + "@react-aria/focus" "^3.11.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/label" "^3.5.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/radio" "^3.7.0" + "@react-types/radio" "^3.4.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/searchfield@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-aria/searchfield/-/searchfield-3.5.0.tgz#0ff853c13b21bb49cadecd0ed130813816417d33" + integrity sha512-eAsOiTBUeD8OiRyXUbU6fWzkEO5ERAODZJtv4yGcMdTjtKJW4jxeRwc6GXMKF3hDvdz7Y9NV6YfMCICSiVSFYg== + dependencies: + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/textfield" "^3.9.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/searchfield" "^3.4.0" + "@react-types/button" "^3.7.1" + "@react-types/searchfield" "^3.4.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/select@^3.9.0": + version "3.9.0" + resolved "https://registry.yarnpkg.com/@react-aria/select/-/select-3.9.0.tgz#cada84973b2fd16cdc0215f7a5e30ac1b60e1970" + integrity sha512-sS/y32BFzHWMeQeeBTdnRuFERgF/8WM2qj6p7e9+F68Nb4Lz8Qpneb2pwWD6a+Dl4UGS1yQMSdZOOnS6aBW41w== + dependencies: + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/label" "^3.5.0" + "@react-aria/listbox" "^3.8.0" + "@react-aria/menu" "^3.8.0" + "@react-aria/selection" "^3.13.0" + "@react-aria/utils" "^3.15.0" + "@react-aria/visually-hidden" "^3.7.0" + "@react-stately/select" "^3.4.0" + "@react-types/button" "^3.7.1" + "@react-types/select" "^3.7.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/selection@^3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@react-aria/selection/-/selection-3.13.0.tgz#3a2c01fe9bead75bde251ce207c89da594fe2dfb" + integrity sha512-KU8xWd2wzL6jacWZeXFx1p6uQ1qAvE4F+K3LqUbj+kWBdmEGYkri9t17A1zQdN7sjaN9cH61eojGpEXYskz01w== + dependencies: + "@react-aria/focus" "^3.11.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/collections" "^3.6.0" + "@react-stately/selection" "^3.12.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/separator@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@react-aria/separator/-/separator-3.3.0.tgz#093fc0d62aa851d1bcc443d899768c278b9c825a" + integrity sha512-AR3Pbik83dygOvmfBiCTRAHz+B13yyGz8nKyw521toT69RMtJTi8ha8qB6Iw1QP3YZWRv+Fn6WWrfGIvR+f2XQ== + dependencies: + "@react-aria/utils" "^3.15.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/slider@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@react-aria/slider/-/slider-3.3.0.tgz#4bb945a93a90607a549d08d99efd543d358fd8e6" + integrity sha512-UgR2XEI3vrJAQU1RVC+1uHVr/vFcVh+Cjt/kaFUO7fdj8usqa4JOnIuX+QKCysiVLJc7IEXw4RCJBJYBSUYK6A== + dependencies: + "@react-aria/focus" "^3.11.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/label" "^3.5.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/radio" "^3.7.0" + "@react-stately/slider" "^3.3.0" + "@react-types/radio" "^3.4.0" + "@react-types/shared" "^3.17.0" + "@react-types/slider" "^3.4.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/spinbutton@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@react-aria/spinbutton/-/spinbutton-3.3.0.tgz#19ae27476ee7acbfb75d40b568164a26466c39d7" + integrity sha512-FXTFNz2RFClqGxQzMIHYdsjkm6fcWRObqelY+lXP5udk7Q8T9aQn+28QhqVpbOFXotLE2PltElbziJeuhkVgNA== + dependencies: + "@react-aria/i18n" "^3.7.0" + "@react-aria/live-announcer" "^3.2.0" + "@react-aria/utils" "^3.15.0" + "@react-types/button" "^3.7.1" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/ssr@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.5.0.tgz#40c1270a75868185f72a88cafe37bd1392f690cb" + integrity sha512-h0MJdSWOd1qObLnJ8mprU31wI8tmKFJMuwT22MpWq6psisOOZaga6Ml4u6Ee6M6duWWISjXvqO4Sb/J0PBA+nQ== + dependencies: + "@swc/helpers" "^0.4.14" + +"@react-aria/switch@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-aria/switch/-/switch-3.4.0.tgz#f3cb0a7b64ddcb93e60b31254e7bb5277a954f30" + integrity sha512-FWbjqNcY+fAjRNXVQTvOx93udhaySgXLsMNLRAVUcFm45FqTaxAhHhNGtRnVhDvzHTJY/Y+kpcGzCcW2rXzPxg== + dependencies: + "@react-aria/toggle" "^3.5.0" + "@react-stately/toggle" "^3.5.0" + "@react-types/switch" "^3.3.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/table@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@react-aria/table/-/table-3.8.0.tgz#f95aba4d3b0cfbf1e98b7cb89e4da83a6cd85cb3" + integrity sha512-uPy7xvZ47sk8r0d66lI7pshXTOnr/A7DlY60BFEKwPNmO2hVGKvp5ptRI8+EoZzti9JXr1Qz5jsMMSKOocWgtQ== + dependencies: + "@react-aria/focus" "^3.11.0" + "@react-aria/grid" "^3.6.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/live-announcer" "^3.2.0" + "@react-aria/selection" "^3.13.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/table" "^3.8.0" + "@react-stately/virtualizer" "^3.5.0" + "@react-types/checkbox" "^3.4.2" + "@react-types/grid" "^3.1.6" + "@react-types/shared" "^3.17.0" + "@react-types/table" "^3.5.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/tabs@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-aria/tabs/-/tabs-3.4.0.tgz#afc6b6d59013f901efa4ec85a2f3cf2844465d48" + integrity sha512-Wwda6yag23eqR6L4+Kwng7jq7va5Enk9xv8y0lFib+ohkPXI6/XhA1Ptc83N2wofmcPtuwLQ6SXSGXOd96lN7w== + dependencies: + "@react-aria/focus" "^3.11.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/selection" "^3.13.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/list" "^3.7.0" + "@react-stately/tabs" "^3.3.0" + "@react-types/shared" "^3.17.0" + "@react-types/tabs" "^3.2.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/textfield@^3.9.0": + version "3.9.0" + resolved "https://registry.yarnpkg.com/@react-aria/textfield/-/textfield-3.9.0.tgz#485904cfe241a4bdffa4345158e4858d8cbb3025" + integrity sha512-plX+/RDidTpz4kfQni2mnH10g9iARC5P7oi4XBXqwrVCIqpTUNoyGLUH952wObYOI9k7lG2QG0+b+3GyrV159g== + dependencies: + "@react-aria/focus" "^3.11.0" + "@react-aria/label" "^3.5.0" + "@react-aria/utils" "^3.15.0" + "@react-types/shared" "^3.17.0" + "@react-types/textfield" "^3.7.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/toggle@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-aria/toggle/-/toggle-3.5.0.tgz#2193fd0a13a6c11ce865768c5b3e4fe37feab433" + integrity sha512-K49OmHBmYW8pk0rXJU1TNRzR+PxLVvfL/ni6ifV5gcxoxV6DmFsNFj+5B/U3AMnCEQeyKQeiY6z9X7EBVX6j9Q== + dependencies: + "@react-aria/focus" "^3.11.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/toggle" "^3.5.0" + "@react-types/checkbox" "^3.4.2" + "@react-types/shared" "^3.17.0" + "@react-types/switch" "^3.3.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/tooltip@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-aria/tooltip/-/tooltip-3.4.0.tgz#a4514570f6ba00d474cfe0b94e639ac3df4ffa93" + integrity sha512-b1E9m6WIPNV0TNRn9VNBnDn1FFt/pwKGtIGDDablLArEmSkkz0HJjwlUqC4+vL0U2dCaQA4TxWl9GDQE7Wzl8w== + dependencies: + "@react-aria/focus" "^3.11.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/tooltip" "^3.3.0" + "@react-types/shared" "^3.17.0" + "@react-types/tooltip" "^3.3.0" + "@swc/helpers" "^0.4.14" + +"@react-aria/utils@^3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.15.0.tgz#a836674dd40ec7f15e9f7a69b1a14f19b1ee42e6" + integrity sha512-aJZBG++iz1UwTW5gXFaHicKju4p0MPhAyBTcf2awHYWeTUUslDjJcEnNg7kjBYZBOrOSlA2rAt7/7C5CCURQPg== + dependencies: + "@react-aria/ssr" "^3.5.0" + "@react-stately/utils" "^3.6.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + clsx "^1.1.1" + +"@react-aria/visually-hidden@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.7.0.tgz#4056b8bb33f30ca8c5192dfcf706ac8bb2beb61a" + integrity sha512-v/0ujJ67H6LjwY8J7mIGPVB1K8suBArLV+w8UGdX/wFXRL7H4r2fiqlrwAElWSmNbhDQl5BDm/Zh/ub9jB9yzA== + dependencies: + "@react-aria/interactions" "^3.14.0" + "@react-aria/utils" "^3.15.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + clsx "^1.1.1" + +"@react-spring/animated@~9.7.1": + version "9.7.1" + resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.7.1.tgz#0f2d78184ee0cce703acd41abb87ea56765b5713" + integrity sha512-EX5KAD9y7sD43TnLeTNG1MgUVpuRO1YaSJRPawHNRgUWYfILge3s85anny4S4eTJGpdp5OoFV2kx9fsfeo0qsw== + dependencies: + "@react-spring/shared" "~9.7.1" + "@react-spring/types" "~9.7.1" + +"@react-spring/core@~9.7.1": + version "9.7.1" + resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.7.1.tgz#cfe176a48ee0a05545b1af5f2fbae718b50e9a99" + integrity sha512-8K9/FaRn5VvMa24mbwYxwkALnAAyMRdmQXrARZLcBW2vxLJ6uw9Cy3d06Z8M12kEqF2bDlccaCSDsn2bSz+Q4A== + dependencies: + "@react-spring/animated" "~9.7.1" + "@react-spring/rafz" "~9.7.1" + "@react-spring/shared" "~9.7.1" + "@react-spring/types" "~9.7.1" + +"@react-spring/konva@~9.7.1": + version "9.7.1" + resolved "https://registry.yarnpkg.com/@react-spring/konva/-/konva-9.7.1.tgz#25640892f88bde06c3ab96c875e5f7408abbce43" + integrity sha512-74svXHtUJi6Tvk9mNLUV1/1WfU8MdWsTK6JUpvmJr/rUr8r3FdOokk22icbgEg6AjxCkIf5e2WFovCCHUSyS0w== + dependencies: + "@react-spring/animated" "~9.7.1" + "@react-spring/core" "~9.7.1" + "@react-spring/shared" "~9.7.1" + "@react-spring/types" "~9.7.1" + +"@react-spring/native@~9.7.1": + version "9.7.1" + resolved "https://registry.yarnpkg.com/@react-spring/native/-/native-9.7.1.tgz#3f397f946fc9a7dd4d7d432f8c0a4726d7723751" + integrity sha512-dHWeH0UuE+Rxc3YZFLp8Aq0RBP07sdOgI7pLVG46OzkMRs2RtJeWJxB6UXIWAgcYDqWDk2REAPhLD3ItDl0tDQ== + dependencies: + "@react-spring/animated" "~9.7.1" + "@react-spring/core" "~9.7.1" + "@react-spring/shared" "~9.7.1" + "@react-spring/types" "~9.7.1" + +"@react-spring/rafz@~9.7.1": + version "9.7.1" + resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.7.1.tgz#bdfea463fcb5ddc4e7253a8fa3870dd52ebbc59a" + integrity sha512-JSsrRfbEJvuE3w/uvU3mCTuWwpQcBXkwoW14lBgzK9XJhuxmscGo59AgJUpFkGOiGAVXFBGB+nEXtSinFsopgw== + +"@react-spring/shared@~9.7.1": + version "9.7.1" + resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.7.1.tgz#29611bb63d0c9e1ac18b6ced7aa4db1d48d136f3" + integrity sha512-R2kZ+VOO6IBeIAYTIA3C1XZ0ZVg/dDP5FKtWaY8k5akMer9iqf5H9BU0jyt3Qtxn0qQY7whQdf6MTcWtKeaawg== + dependencies: + "@react-spring/rafz" "~9.7.1" + "@react-spring/types" "~9.7.1" + +"@react-spring/three@~9.7.1": + version "9.7.1" + resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.7.1.tgz#0dab3b5e96bb6e10db0a1363938e46fc68a861e4" + integrity sha512-5leUe0PDwIIw1M3GN3788zwTY4Ykyy+kNvQmg9+Hqs1DN3T8J1ovRTGwqWfGAu4ApTta9p5BH7SWNxxt3NO59Q== + dependencies: + "@react-spring/animated" "~9.7.1" + "@react-spring/core" "~9.7.1" + "@react-spring/shared" "~9.7.1" + "@react-spring/types" "~9.7.1" + +"@react-spring/types@~9.7.1": + version "9.7.1" + resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.7.1.tgz#b540752a479d210c6fb68d2b1d5ff35556df4308" + integrity sha512-yBcyfKUeZv9wf/ZFrQszvhSPuDx6Py6yMJzpMnS+zxcZmhXPeOCKZSHwqrUz1WxvuRckUhlgb7eNI/x5e1e8CA== + +"@react-spring/web@~9.7.1": + version "9.7.1" + resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.7.1.tgz#a9ee730d06c686b8432cd20f41683b1acb9b6300" + integrity sha512-6uUE5MyKqdrJnIJqlDN/AXf3i8PjOQzUuT26nkpsYxUGOk7c+vZVPcfrExLSoKzTb9kF0i66DcqzO5fXz/Z1AA== + dependencies: + "@react-spring/animated" "~9.7.1" + "@react-spring/core" "~9.7.1" + "@react-spring/shared" "~9.7.1" + "@react-spring/types" "~9.7.1" + +"@react-spring/zdog@~9.7.1": + version "9.7.1" + resolved "https://registry.yarnpkg.com/@react-spring/zdog/-/zdog-9.7.1.tgz#474a1366d7b71d623e0dff0e37a243b505e8c1a6" + integrity sha512-FeDws+7ZSoi91TUjxKnq3xmdOW6fthmqky6zSPIZq1NomeyO7+xwbxjtu15IqoWG4DJ9pouVZDijvBQXUNl0Mw== + dependencies: + "@react-spring/animated" "~9.7.1" + "@react-spring/core" "~9.7.1" + "@react-spring/shared" "~9.7.1" + "@react-spring/types" "~9.7.1" + +"@react-stately/calendar@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@react-stately/calendar/-/calendar-3.1.0.tgz#3254ab630972f5bfeedf821a3580ad83bc087e2e" + integrity sha512-PZXXHyrLoYEUAUL8oFoxHNc7mKrQXLxnYQkY9v3a6SxgST3J4tYoqIXrie0uqpm1LI+1JfKb2lyRGlVPRTBuNQ== + dependencies: + "@internationalized/date" "^3.1.0" + "@react-stately/utils" "^3.6.0" + "@react-types/calendar" "^3.1.0" + "@react-types/datepicker" "^3.2.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/checkbox@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-stately/checkbox/-/checkbox-3.4.0.tgz#34712864e6b6dbae033b30a279dc32a26bbc1a9b" + integrity sha512-zqwHMmlzza1exS6Bbqj4Mom3ygtG8pLguHweZ9OO7BFQLwBmzJsrFNqDcj7xh8iEWxXKQfZ2YOuhkaGvu4GRjA== + dependencies: + "@react-stately/toggle" "^3.5.0" + "@react-stately/utils" "^3.6.0" + "@react-types/checkbox" "^3.4.2" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/collections@^3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.6.0.tgz#4fbecbbbb354badbc46618262e91743754257673" + integrity sha512-znkaqCPo7F1yyzEKDAB5MpX1Vw5UHcUQhDNrys5YOqAkX6/G/AChnBz0B63UxS3fjyqgnuJylRRmUp9nTqO21w== + dependencies: + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/combobox@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-stately/combobox/-/combobox-3.4.0.tgz#d4189bfe7b17a94a6158357de51ebd4166f819c5" + integrity sha512-QVKNosNqSS7PnjrNVrGat9KKlCcv7e3nTehQuIu18ZE2JVH7Jdf/73zkSMurrnQfbPVeiHkGK1deWqrzoNzYQQ== + dependencies: + "@react-stately/list" "^3.7.0" + "@react-stately/menu" "^3.5.0" + "@react-stately/select" "^3.4.0" + "@react-stately/utils" "^3.6.0" + "@react-types/combobox" "^3.6.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/datepicker@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@react-stately/datepicker/-/datepicker-3.3.0.tgz#4dd777756f5f0abb3617b5d61bf34d428f0c563f" + integrity sha512-HH/WPAMXwULyBKHICxTLGDk3cPGf9Yhf8sX2DES935aupd+6YqzQrh97buOedKsF5WKZfzMMtUVqy8uepo6S6g== + dependencies: + "@internationalized/date" "^3.1.0" + "@internationalized/string" "^3.1.0" + "@react-stately/overlays" "^3.5.0" + "@react-stately/utils" "^3.6.0" + "@react-types/datepicker" "^3.2.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/dnd@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@react-stately/dnd/-/dnd-3.1.0.tgz#b8d2c9baba72607bf0d9aa73ab1e0ccd2a39cfb8" + integrity sha512-PctHJqRm37vdKs91vB18lfdas4CypStbgj6ENApUXSDLd8XrVgthH4sYrX1BX/RbZyCr7u+TG7qVKGcRfsvbTw== + dependencies: + "@react-stately/selection" "^3.12.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/grid@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-stately/grid/-/grid-3.5.0.tgz#345a98a2f541d5372ebefe44d42f54e22c08d54e" + integrity sha512-kCmO2KyHoIJWiCqUXJTD0I/4q/6h3pXGdyD4tWmqWdysxf+x09K/Mx/JwwFqee5LICZgt8MtBrfV+ijLZ8mQAg== + dependencies: + "@react-stately/selection" "^3.12.0" + "@react-types/grid" "^3.1.6" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/layout@^3.11.0": + version "3.11.0" + resolved "https://registry.yarnpkg.com/@react-stately/layout/-/layout-3.11.0.tgz#e1009eed8cc61fb00691eaf2ea38a5dd5fd49318" + integrity sha512-QNupEFgIv5hqYEbLxDQfHgBkfk6t1VTTxWftBZMXXJEVCC1GH8vUJ35BJGO7hQNhPoTp3xc3X7yEcBlXy1ZmlA== + dependencies: + "@react-stately/table" "^3.8.0" + "@react-stately/virtualizer" "^3.5.0" + "@react-types/grid" "^3.1.6" + "@react-types/shared" "^3.17.0" + "@react-types/table" "^3.5.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/list@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@react-stately/list/-/list-3.7.0.tgz#7484cc46d995a18b2b43de50449aba7faae76809" + integrity sha512-/BxCqXFjX9P+OJWjIYmUWaOGJ2hlZHUdymVwZPkIWdO9K7069LWckdYFXRqLFMwIGLUcXVfw4jR0BIQqWlR4eA== + dependencies: + "@react-stately/collections" "^3.6.0" + "@react-stately/selection" "^3.12.0" + "@react-stately/utils" "^3.6.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/menu@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.5.0.tgz#04fda461dc3971bc84bf49436625b3e044bca3bc" + integrity sha512-JL6TcT+SbYdlxNLOS84SXp6njDNZuXfkt05o4rS51evmjM2+hlYaB9+yUMqrCb/J2nW7vVAg51TDAhLgmGTYKg== + dependencies: + "@react-stately/overlays" "^3.5.0" + "@react-stately/utils" "^3.6.0" + "@react-types/menu" "^3.8.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/numberfield@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-stately/numberfield/-/numberfield-3.4.0.tgz#09745a220d4d955de4e9a34c8118d7791a1770e7" + integrity sha512-R+LjwRpspttiO0tZ8KikXu184D3HZJG37jVcp/yM1jyMURmQHWfjjR6PHuD66PSV5PtM2KQlBj6PGvDLg1UwlQ== + dependencies: + "@internationalized/number" "^3.2.0" + "@react-stately/utils" "^3.6.0" + "@react-types/numberfield" "^3.4.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/overlays@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.5.0.tgz#3c33a6f678f728497c94729e8a861ddf1e8704bb" + integrity sha512-r+U/G0Y4tCfI5wyBeIu+hmcZVRN8ChoK2zM1srPH9nDKsijQard2goX+9YmKng2LJ01Re/P6F8S8jYbpfEdLfQ== + dependencies: + "@react-stately/utils" "^3.6.0" + "@react-types/overlays" "^3.7.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/radio@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@react-stately/radio/-/radio-3.7.0.tgz#5312503f36677fd3a42f8fb7bc820463cf879b08" + integrity sha512-TKyR6RfX1qZRPAxVWIKMTt2s3J+IlxFZHykiEl85gHBmABSWW4JO4RjkgcmbaAGLAhu1pJU8ktJOyi+MyndpHA== + dependencies: + "@react-stately/utils" "^3.6.0" + "@react-types/radio" "^3.4.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/searchfield@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-stately/searchfield/-/searchfield-3.4.0.tgz#863b9741f17672b39a80eb28cb9860dd715809f8" + integrity sha512-aaQLczPUIJwTGlllALT49RSvWY55oqmJWhLL7j3hnL1cNV0WmkmoSdAo7drDaux5vkgkurxuwMEZ8ymFYeZ+Nw== + dependencies: + "@react-stately/utils" "^3.6.0" + "@react-types/searchfield" "^3.4.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/select@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-stately/select/-/select-3.4.0.tgz#e6df572279b5baed264552032f8060dbf49c9ebb" + integrity sha512-thSqD3apMCSgZgKtqHKGVIQRyvG8l0supIuzJicBwq6xg+J8X5muPCZgchCSNmU6im/l81XXE8LGuHGgMilORA== + dependencies: + "@react-stately/collections" "^3.6.0" + "@react-stately/list" "^3.7.0" + "@react-stately/menu" "^3.5.0" + "@react-stately/selection" "^3.12.0" + "@react-stately/utils" "^3.6.0" + "@react-types/select" "^3.7.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/selection@^3.12.0": + version "3.12.0" + resolved "https://registry.yarnpkg.com/@react-stately/selection/-/selection-3.12.0.tgz#feb5ad753ea93870566f2c0b07f0387b690bd860" + integrity sha512-qgUaPwqtAl7YaZxxGdb55ZaVuMB1rG+Vr+9fgG8dPtDYCNaPeIlg7ndC4ylzDhCWIx8D5qZotcrqCA4+93TwdA== + dependencies: + "@react-stately/collections" "^3.6.0" + "@react-stately/utils" "^3.6.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/slider@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@react-stately/slider/-/slider-3.3.0.tgz#abfd70be9b8fce5f19898d2dcad116a26dd88781" + integrity sha512-17aGJYHBRY3g4ZeiIgCNOvYl3HBARvSJhUKoNxZMRa2pqREW+WmBRRAXv5KTymW/KfcGb0RCq1ytYsderEgZAQ== + dependencies: + "@react-aria/i18n" "^3.7.0" + "@react-aria/utils" "^3.15.0" + "@react-stately/utils" "^3.6.0" + "@react-types/shared" "^3.17.0" + "@react-types/slider" "^3.4.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/table@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@react-stately/table/-/table-3.8.0.tgz#2728ee73ab7dd68f009a39252bf075aafbf8d130" + integrity sha512-WmOcW9+4zm6MQZxYEC77u5HMxTcvcotkFptohHd0YtHXx+z5iwClCVKKFG2mc5lE+K4iQE41Q56nVKLjAu+TsA== + dependencies: + "@react-stately/collections" "^3.6.0" + "@react-stately/grid" "^3.5.0" + "@react-stately/selection" "^3.12.0" + "@react-types/grid" "^3.1.6" + "@react-types/shared" "^3.17.0" + "@react-types/table" "^3.5.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/tabs@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@react-stately/tabs/-/tabs-3.3.0.tgz#9674cb2f7c701bdc7dcc7a0c1bc88f62350da7c1" + integrity sha512-Kf47+aXGf4NvnREMDqH+uuTa0QsYCxOp0poywR8lRPmYsL7V8yrTS2wXQnDL7cq8PXbL5v+ew0xmrV+BiUlNRg== + dependencies: + "@react-stately/list" "^3.7.0" + "@react-stately/utils" "^3.6.0" + "@react-types/tabs" "^3.2.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/toggle@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.5.0.tgz#fee5a29d7699e43867c52981834af5393f47c1c4" + integrity sha512-vKwLLkFsiIve4pXIQC/dqLAz7Z+qtzJ8+D00EXXO1Nf8YHcyIMDkTmi3NTM8Qtvmt4xX2hbJFiPDF6WvF6mBIg== + dependencies: + "@react-stately/utils" "^3.6.0" + "@react-types/checkbox" "^3.4.2" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/tooltip@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@react-stately/tooltip/-/tooltip-3.3.0.tgz#7991bc26e21d07368e0f797407652548fa558811" + integrity sha512-cYg4zKUc0y71L5OO5DyaCoh248A7wvXAU6VGMhppPGx+iPoWJMLBBdEJjf8Oa12NGxNv9SC5lTcv6js2k4+WwQ== + dependencies: + "@react-stately/overlays" "^3.5.0" + "@react-stately/utils" "^3.6.0" + "@react-types/tooltip" "^3.3.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/tree@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-stately/tree/-/tree-3.5.0.tgz#1d0dffd93c17b004953c27817be1ae2da9f96e5b" + integrity sha512-5+MzMQUFq3+lbGkZC0SlcIDrYmPvxBKuC8xL5W6SuFekbrrxrS6IJexRe4QulaaAliDpX2/9DVZTt38eVfyf0A== + dependencies: + "@react-stately/collections" "^3.6.0" + "@react-stately/selection" "^3.12.0" + "@react-stately/utils" "^3.6.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-stately/utils@^3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.6.0.tgz#f273e7fcb348254347d2e88c8f0c45571060c207" + integrity sha512-rptF7iUWDrquaYvBAS4QQhOBQyLBncDeHF03WnHXAxnuPJXNcr9cXJtjJPGCs036ZB8Q2hc9BGG5wNyMkF5v+Q== + dependencies: + "@swc/helpers" "^0.4.14" + +"@react-stately/virtualizer@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-stately/virtualizer/-/virtualizer-3.5.0.tgz#3aa2595757b4120339aadb2c43853137e3742fdc" + integrity sha512-Jjk7V2T9uJ2+1EaVY+v1SJYeKb9dvZKayP35bcUq8/y9+I41kNE+qmgnkr5/SVzkExu4YeZTFxtuOm4l8UX5jg== + dependencies: + "@react-aria/utils" "^3.15.0" + "@react-types/shared" "^3.17.0" + "@swc/helpers" "^0.4.14" + +"@react-types/breadcrumbs@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-types/breadcrumbs/-/breadcrumbs-3.5.0.tgz#f9b600e5a0e6fbbc17d2a771a2c60d436eb60409" + integrity sha512-Nd95NnLhrSw8Eaf2nsgAz23BT/ww6m2d2GS/gT7NxkCcqWK8Dpv8+e+JSbO7CUkHJApm76FtRz16JCdltj4CeQ== + dependencies: + "@react-types/link" "^3.4.0" + "@react-types/shared" "^3.17.0" + +"@react-types/button@^3.7.1": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.7.1.tgz#a51d2617a593d9862c72306b3bf0c4b5bff4793d" + integrity sha512-c+8xjmqWSjI5/mEHVLbVSp0eh/z2UU8Ga+wqjbEUZUjm8uopYj1PaCAwZ7YgcAebyQrL/21GyjK6tFHKzuUdJQ== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/calendar@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@react-types/calendar/-/calendar-3.1.0.tgz#cee348fbc502884237b86c1b4ed22853d9b6ea3c" + integrity sha512-6VKBxG27cLKti8Ik+T2N1y6FqJSgIXuQPMehOA1ASqPQLtnRBEoSgLjuN5qj7RTWgmdTvQmofqVznVFoUe5ozQ== + dependencies: + "@internationalized/date" "^3.1.0" + "@react-types/shared" "^3.17.0" + +"@react-types/checkbox@^3.4.2": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.4.2.tgz#6089e9ef2d023415a5f871e312f30bae54143ba5" + integrity sha512-/NWFCEQLvVgo25afPt2jv4syxYvZeY/D/n2Y92IGtoNV4akdz4AuQ65+1X+JOhQc/ZbAblWw5fFWUZoQs3CLZg== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/combobox@^3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@react-types/combobox/-/combobox-3.6.0.tgz#a78e3d0e73723053d49e15b6660883f755734c05" + integrity sha512-tfZtZ12Kf2bKt3EcFKWcUxrLNc61Y1CGynsOQ/KvHTFwlLTTtKnt/wWuf4kxdqlTK7dDqJzWRGWKlWx6eKlx3w== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/datepicker@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@react-types/datepicker/-/datepicker-3.2.0.tgz#a8b7b5da5160774882e73aa175c0fc76ecd82ac9" + integrity sha512-wcxLI6aW+r6nO2bsypxMIaWJHG5YYAD7WtJmhR5n5GK5juUCu/hzKBhdwxE1qtD3kMvIKTDJkMXLVNGmJP0mFw== + dependencies: + "@internationalized/date" "^3.1.0" + "@react-types/overlays" "^3.7.0" + "@react-types/shared" "^3.17.0" + +"@react-types/dialog@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-types/dialog/-/dialog-3.5.0.tgz#51d942ba377ac1483c90db69e84bfdc3d5f65129" + integrity sha512-QsHqAK8zE4QSCQTJcRm/e6vweSE8S62o4GGvm+e+crMro/doA4it1Y4udE94Yy3WyDQEMFxyfd2P1Q6bI9JuyQ== + dependencies: + "@react-types/overlays" "^3.7.0" + "@react-types/shared" "^3.17.0" + +"@react-types/grid@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@react-types/grid/-/grid-3.1.6.tgz#751828e3cfc6bde41e03c3217f0371166f206674" + integrity sha512-j6dO5KgkuIbIhEZYSxd86ZomohCyv3VNQhY2qBHlRoxZs0976komauEOjOpMOu0PxwsFGUgUFqlKOtc34f1SHQ== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/label@^3.7.2": + version "3.7.2" + resolved "https://registry.yarnpkg.com/@react-types/label/-/label-3.7.2.tgz#593bf1171098134cd5dbb6c66bf1063e552d67ea" + integrity sha512-UlsIvxQjBMl9WwJw1bYoJMwiPvYwRsSLl2yoeeGfGr6IaYn5T/2kzBhDLwe5cpKrmi4Mehn1rbReFLGITOy8+g== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/link@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-types/link/-/link-3.4.0.tgz#1c549ffbc594e49726a4c4e912bea36718feb4cf" + integrity sha512-eImWLzxwzSmjOLa0Ow3HJaguyDCz98191v2pb7nT/zPzGDnhHhDjxB023hrXVUoCbsWrCb5QLp91Ts+VjiCyTA== + dependencies: + "@react-aria/interactions" "^3.14.0" + "@react-types/shared" "^3.17.0" + +"@react-types/listbox@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-types/listbox/-/listbox-3.4.0.tgz#b1fdad5acf8ffd524a9baf31015ff290414f35a0" + integrity sha512-OvHaX4EBRHxKrfFItdJXjY7dYomzejqJ87P5fTL1l1TbDX8gvEP014S3cI+VLQq+EsXeTZ8E/sx0tFUo7ilchA== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/menu@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@react-types/menu/-/menu-3.8.0.tgz#578d4697caa838e72b2652a81f1241a9cb7815cc" + integrity sha512-1nwGUwKNHJf60vOsg7p48NPQIzMsSprxw8VXfStr8eE5uU4vvKfVNQNUgvpkRmHmel8BrYdh1WnERXJJ3yKUgQ== + dependencies: + "@react-types/overlays" "^3.7.0" + "@react-types/shared" "^3.17.0" + +"@react-types/meter@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@react-types/meter/-/meter-3.3.0.tgz#93545ce8fbaf734724aa32a4443cb78662937ee1" + integrity sha512-/IAHquSb+tC/YjcXdcYinFTb7puakkQWzNwS4lkhisIoZ0K0Ym/3fat/nzjgG9s2+sqQrW6f3Ndp9GCfSzvHLg== + dependencies: + "@react-types/progress" "^3.3.0" + "@react-types/shared" "^3.17.0" + +"@react-types/numberfield@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-types/numberfield/-/numberfield-3.4.0.tgz#ecf29f515e0ebafa2145e275018bd04cd2821759" + integrity sha512-3kKkCFJ9cqCHuoz2BWy3DZLg6SQzqjzbO3DvNTrORd2k7bsI0Ydlfsz1rkCU53GStqovgopX4jo6EZLeRfv05Q== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/overlays@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.7.0.tgz#22dcd1bbc1f8e17b0d7a757414c50ce580ae0d26" + integrity sha512-LstucncZ8dM+xJYEijI1V6jGH20w5XO/T60r7JTrgQElMC86phPeoWkMTN4c2lsRikybolDbvXL6XsF76YO56A== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/progress@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@react-types/progress/-/progress-3.3.0.tgz#80e79e00931ae796fdc679ff7deb95cc61af8a19" + integrity sha512-k4xivWiEYogsROLyNqVDVjl33rm+X9RKNbKQXg5pqjGikaC8T9hmIwE4tJr26XkMIIvQS6duEBCcuQN/U1+dGQ== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/radio@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-types/radio/-/radio-3.4.0.tgz#0bfc2bae6b5ac0b57636efdf8d2c90e5826e7c82" + integrity sha512-klgEU+987xVUCRqBoxXJiPJvy0upfo76dFnK5eF7U7BzcxhuiFeLDUcqUHtK92Cy5QOiDAF2ML0vUYGIabKMPA== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/searchfield@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-types/searchfield/-/searchfield-3.4.0.tgz#42bd161af0d75130b7f1417e8b43237a9b1cc5a1" + integrity sha512-rYupNbyBAjycx6SXCALjINj/nOx7lIq9f4Dk1xo1dd8X6yYU0EF4WlahNua7UV8JC5oYlxN40G7yi4lAS+CdWQ== + dependencies: + "@react-types/shared" "^3.17.0" + "@react-types/textfield" "^3.7.0" + +"@react-types/select@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@react-types/select/-/select-3.7.0.tgz#7d1840525d345625ac6ad69005b192930ca5abec" + integrity sha512-BaynMuW0dQ9ModFzW291+3n1D9bwKSFh03g3+1PvhRcBg1EXq1vFyfFBj4uuBymI0T7oCbnjGh19xo0vKIYRrA== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/shared@^3.17.0": + version "3.17.0" + resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.17.0.tgz#b7c5e318664aadb315d305a27dd2a209d1837d95" + integrity sha512-1SNZ/RhVrrQ1e6yE0bPV7d5Sfp+Uv0dfUEhwF9MAu2v5msu7AMewnsiojKNA0QA6Ing1gpDLjHCxtayQfuxqcg== + +"@react-types/slider@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@react-types/slider/-/slider-3.4.0.tgz#3a6e68a0cbe6a9741395eeebb83ca15fbf0893bd" + integrity sha512-Kj+B6njpm4ltiu3gCBOPRnbzllV21IVr0bCQdNnWcf5DX8aN4VdI8EFkTz0DSwMm2WPCwZop0MDWDoRwXJK1ng== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/switch@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@react-types/switch/-/switch-3.3.0.tgz#80172b8960e36ac1b3c19c69a479af407cffc306" + integrity sha512-6h+s//PwWf7/WJQOZKT6k1vdOQCcvPmMZW333AqyxtZX8WV8Q0illgcLMYo5qxT3IWsjYNuPIqMCY+tRbSeA2Q== + dependencies: + "@react-types/checkbox" "^3.4.2" + "@react-types/shared" "^3.17.0" + +"@react-types/table@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-types/table/-/table-3.5.0.tgz#25f5576c56e1678367fe687e3a66f9a74b9ff472" + integrity sha512-/Mvn1MQbdnk7i6ivam8kdIh2PKF9GD3A7KC8v1E4JNAgsbOzOkt5JC4PMc1EtAK2eppMEKTN+B84oHKMl1F8Hg== + dependencies: + "@react-types/grid" "^3.1.6" + "@react-types/shared" "^3.17.0" + +"@react-types/tabs@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@react-types/tabs/-/tabs-3.2.0.tgz#44f9539b003a42ed547ec1625c10247d772c0146" + integrity sha512-rOQm+JDYcGV+HE/EQ23vr6J3tqvXjFiDA107rU7n4B4mNjJ46k5gOhPdGTosv6wr1+Tp7XD5XMaFfqk+O0/ZZw== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/textfield@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@react-types/textfield/-/textfield-3.7.0.tgz#c8e118be03e82a87d2612937accaae903090cdb1" + integrity sha512-4Rqld8VZG324hecw6bqGY2gta1gm5sDhO48nyChfdmjVlFHXLDKazAcrgP76uSmUI6tffUPj3eYxQyTp5uLhyQ== + dependencies: + "@react-types/shared" "^3.17.0" + +"@react-types/tooltip@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@react-types/tooltip/-/tooltip-3.3.0.tgz#676f50860a3cd4317b55581533f749d867becf24" + integrity sha512-TMaKkjYbysZbMnY8zjI2Djh8QMHvB8LoN9EjOZX++3ZsO74CeCeOoGARh6+4c0Bu5rg4BXhNyi+y1JL3jtUEBg== + dependencies: + "@react-types/overlays" "^3.7.0" + "@react-types/shared" "^3.17.0" "@rushstack/eslint-patch@^1.1.3": version "1.2.0" @@ -3406,7 +3467,7 @@ lodash "^4.17.4" read-pkg-up "^7.0.0" -"@sqltools/formatter@^1.2.2": +"@sqltools/formatter@^1.2.5": version "1.2.5" resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.5.tgz#3abc203c79b8c3e90fd6c156a0c62d5403520e12" integrity sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw== @@ -3548,22 +3609,22 @@ dependencies: mini-svg-data-uri "^1.2.3" -"@tailwindcss/typography@0.5.8": - version "0.5.8" - resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.8.tgz#8fb31db5ab0590be6dfa062b1535ac86ad9d12bf" - integrity sha512-xGQEp8KXN8Sd8m6R4xYmwxghmswrd0cPnNI2Lc6fmrC3OojysTBJJGSIVwPV56q4t6THFUK3HJ0EaWwpglSxWw== +"@tailwindcss/typography@0.5.9": + version "0.5.9" + resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.9.tgz#027e4b0674929daaf7c921c900beee80dbad93e8" + integrity sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg== dependencies: lodash.castarray "^4.4.0" lodash.isplainobject "^4.0.6" lodash.merge "^4.6.2" postcss-selector-parser "6.0.10" -"@tanem/react-nprogress@5.0.22": - version "5.0.22" - resolved "https://registry.yarnpkg.com/@tanem/react-nprogress/-/react-nprogress-5.0.22.tgz#31aff13de27ec27401acb8cc4a5976eb034616e6" - integrity sha512-S73v6z7uD8wkCzKARDXn/AGEAVlL8IXI2/pqACRMnn3dTyfaLg2JLrZYtrfBcVaZXf5bgKSB+lK1ncKVN40pQQ== +"@tanem/react-nprogress@5.0.30": + version "5.0.30" + resolved "https://registry.yarnpkg.com/@tanem/react-nprogress/-/react-nprogress-5.0.30.tgz#e3c256834e17925ecc903d05603a836e00743702" + integrity sha512-OBvlGfxWMyAGi6C9V6ZCdu5Kn9drxHZSg977TtF9hBpNtl+GY6lxOsbazkMIQua/xqaDe58Bs1kDTNzdwjIFEA== dependencies: - "@babel/runtime" "^7.20.6" + "@babel/runtime" "^7.20.13" hoist-non-react-statics "^3.3.2" "@tootallnate/once@1": @@ -3709,7 +3770,7 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.31": +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.31", "@types/express-serve-static-core@^4.17.33": version "4.17.33" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== @@ -3718,10 +3779,10 @@ "@types/qs" "*" "@types/range-parser" "*" -"@types/express-session@1.17.5", "@types/express-session@^1.15.5": - version "1.17.5" - resolved "https://registry.yarnpkg.com/@types/express-session/-/express-session-1.17.5.tgz#13f48852b4aa60ff595835faeb4b4dda0ba0866e" - integrity sha512-l0DhkvNVfyUPEEis8fcwbd46VptfA/jmMwHfob2TfDMf3HyPLiB9mKD71LXhz5TMUobODXPD27zXSwtFQLHm+w== +"@types/express-session@1.17.6", "@types/express-session@^1.15.5": + version "1.17.6" + resolved "https://registry.yarnpkg.com/@types/express-session/-/express-session-1.17.6.tgz#1c8881ba0dc836ffbf1071b2f020d60fcca0f08c" + integrity sha512-L6sB04HVA4HEZo1hDL65JXdZdBJtzZnCiw/P7MnO4w6746tJCNtXlHtzEASyI9ccn9zyOw6IbqQuhVa03VpO4w== dependencies: "@types/express" "*" @@ -3735,13 +3796,13 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/express@4.17.15": - version "4.17.15" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.15.tgz#9290e983ec8b054b65a5abccb610411953d417ff" - integrity sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ== +"@types/express@4.17.17": + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== dependencies: "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.31" + "@types/express-serve-static-core" "^4.17.33" "@types/qs" "*" "@types/serve-static" "*" @@ -3848,6 +3909,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.36.tgz#c0d5f2fe76b47b63e0e0efc3d2049a9970d68794" integrity sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA== +"@types/node@^14.0.0": + version "14.18.48" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.48.tgz#ee5c7ac6e38fd2a9e6885f15c003464cf2da343c" + integrity sha512-iL0PIMwejpmuVHgfibHpfDwOdsbmB50wr21X71VnF5d7SsBF7WK+ZvP/SCcFm7Iwb9iiYSap9rlrdhToNAWdxg== + "@types/node@^14.14.31": version "14.18.36" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.36.tgz#c414052cb9d43fab67d679d5f3c641be911f5835" @@ -3880,11 +3946,6 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== -"@types/pulltorefreshjs@0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@types/pulltorefreshjs/-/pulltorefreshjs-0.1.5.tgz#f15c9dbc91b8fdd8135093d81ece9e9d4d2324d7" - integrity sha512-/VRTgBettvBg1KI8mGnA9oeWs359tTXQ7qsxLuXnksL88jvK6ZNMStG5T9x9vUO9O7jLsgREB0cElz/BWFfdew== - "@types/qs@*": version "6.9.7" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" @@ -3895,10 +3956,10 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/react-dom@18.0.10": - version "18.0.10" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.10.tgz#3b66dec56aa0f16a6cc26da9e9ca96c35c0b4352" - integrity sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg== +"@types/react-dom@18.0.11": + version "18.0.11" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33" + integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw== dependencies: "@types/react" "*" @@ -3909,10 +3970,10 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@16 || 17 || 18", "@types/react@18.0.26": - version "18.0.26" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.26.tgz#8ad59fc01fef8eaf5c74f4ea392621749f0b7917" - integrity sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug== +"@types/react@*", "@types/react@16 || 17 || 18", "@types/react@18.0.28": + version "18.0.28" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065" + integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -4007,29 +4068,30 @@ resolved "https://registry.yarnpkg.com/@types/yup/-/yup-0.29.14.tgz#754f1dccedcc66fc2bbe290c27f5323b407ceb00" integrity sha512-Ynb/CjHhE/Xp/4bhHmQC4U1Ox+I2OpfRYF3dnNgQqn1cHa6LK3H1wJMNPT02tSVZA6FYuXE2ITORfbnb6zBCSA== -"@typescript-eslint/eslint-plugin@5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz#54f8368d080eb384a455f60c2ee044e948a8ce67" - integrity sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ== +"@typescript-eslint/eslint-plugin@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.54.0.tgz#2c821ad81b2c786d142279a8292090f77d1881f4" + integrity sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw== dependencies: - "@typescript-eslint/scope-manager" "5.48.0" - "@typescript-eslint/type-utils" "5.48.0" - "@typescript-eslint/utils" "5.48.0" + "@typescript-eslint/scope-manager" "5.54.0" + "@typescript-eslint/type-utils" "5.54.0" + "@typescript-eslint/utils" "5.54.0" debug "^4.3.4" + grapheme-splitter "^1.0.4" ignore "^5.2.0" natural-compare-lite "^1.4.0" regexpp "^3.2.0" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.48.0.tgz#02803355b23884a83e543755349809a50b7ed9ba" - integrity sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg== +"@typescript-eslint/parser@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.54.0.tgz#def186eb1b1dbd0439df0dacc44fb6d8d5c417fe" + integrity sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ== dependencies: - "@typescript-eslint/scope-manager" "5.48.0" - "@typescript-eslint/types" "5.48.0" - "@typescript-eslint/typescript-estree" "5.48.0" + "@typescript-eslint/scope-manager" "5.54.0" + "@typescript-eslint/types" "5.54.0" + "@typescript-eslint/typescript-estree" "5.54.0" debug "^4.3.4" "@typescript-eslint/parser@^5.21.0": @@ -4042,14 +4104,6 @@ "@typescript-eslint/typescript-estree" "5.49.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz#607731cb0957fbc52fd754fd79507d1b6659cecf" - integrity sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow== - dependencies: - "@typescript-eslint/types" "5.48.0" - "@typescript-eslint/visitor-keys" "5.48.0" - "@typescript-eslint/scope-manager@5.49.0": version "5.49.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.49.0.tgz#81b5d899cdae446c26ddf18bd47a2f5484a8af3e" @@ -4058,40 +4112,53 @@ "@typescript-eslint/types" "5.49.0" "@typescript-eslint/visitor-keys" "5.49.0" -"@typescript-eslint/type-utils@5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz#40496dccfdc2daa14a565f8be80ad1ae3882d6d6" - integrity sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g== +"@typescript-eslint/scope-manager@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.54.0.tgz#74b28ac9a3fc8166f04e806c957adb8c1fd00536" + integrity sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg== dependencies: - "@typescript-eslint/typescript-estree" "5.48.0" - "@typescript-eslint/utils" "5.48.0" + "@typescript-eslint/types" "5.54.0" + "@typescript-eslint/visitor-keys" "5.54.0" + +"@typescript-eslint/type-utils@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.54.0.tgz#390717216eb61393a0cad2995da154b613ba7b26" + integrity sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ== + dependencies: + "@typescript-eslint/typescript-estree" "5.54.0" + "@typescript-eslint/utils" "5.54.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.48.0.tgz#d725da8dfcff320aab2ac6f65c97b0df30058449" - integrity sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw== +"@typescript-eslint/types@5.45.0": + version "5.45.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.45.0.tgz#794760b9037ee4154c09549ef5a96599621109c5" + integrity sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA== "@typescript-eslint/types@5.49.0": version "5.49.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.49.0.tgz#ad66766cb36ca1c89fcb6ac8b87ec2e6dac435c3" integrity sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg== -"@typescript-eslint/typescript-estree@5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz#a7f04bccb001003405bb5452d43953a382c2fac2" - integrity sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw== +"@typescript-eslint/types@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.54.0.tgz#7d519df01f50739254d89378e0dcac504cab2740" + integrity sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ== + +"@typescript-eslint/typescript-estree@5.45.0": + version "5.45.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.45.0.tgz#f70a0d646d7f38c0dfd6936a5e171a77f1e5291d" + integrity sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ== dependencies: - "@typescript-eslint/types" "5.48.0" - "@typescript-eslint/visitor-keys" "5.48.0" + "@typescript-eslint/types" "5.45.0" + "@typescript-eslint/visitor-keys" "5.45.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.49.0", "@typescript-eslint/typescript-estree@^5.9.1": +"@typescript-eslint/typescript-estree@5.49.0": version "5.49.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.49.0.tgz#ebd6294c0ea97891fce6af536048181e23d729c8" integrity sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA== @@ -4104,26 +4171,39 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.48.0.tgz#eee926af2733f7156ad8d15e51791e42ce300273" - integrity sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ== +"@typescript-eslint/typescript-estree@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.54.0.tgz#f6f3440cabee8a43a0b25fa498213ebb61fdfe99" + integrity sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ== + dependencies: + "@typescript-eslint/types" "5.54.0" + "@typescript-eslint/visitor-keys" "5.54.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.54.0.tgz#3db758aae078be7b54b8ea8ea4537ff6cd3fbc21" + integrity sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw== dependencies: "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.48.0" - "@typescript-eslint/types" "5.48.0" - "@typescript-eslint/typescript-estree" "5.48.0" + "@typescript-eslint/scope-manager" "5.54.0" + "@typescript-eslint/types" "5.54.0" + "@typescript-eslint/typescript-estree" "5.54.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.48.0": - version "5.48.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz#4446d5e7f6cadde7140390c0e284c8702d944904" - integrity sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q== +"@typescript-eslint/visitor-keys@5.45.0": + version "5.45.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.45.0.tgz#e0d160e9e7fdb7f8da697a5b78e7a14a22a70528" + integrity sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg== dependencies: - "@typescript-eslint/types" "5.48.0" + "@typescript-eslint/types" "5.45.0" eslint-visitor-keys "^3.3.0" "@typescript-eslint/visitor-keys@5.49.0": @@ -4134,6 +4214,14 @@ "@typescript-eslint/types" "5.49.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.54.0.tgz#846878afbf0cd67c19cfa8d75947383d4490db8f" + integrity sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA== + dependencies: + "@typescript-eslint/types" "5.54.0" + eslint-visitor-keys "^3.3.0" + JSONStream@^1.0.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -4155,10 +4243,10 @@ accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -ace-builds@1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.14.0.tgz#85a6733b4fa17b0abc3dbfe38cd8d823cad79716" - integrity sha512-3q8LvawomApRCt4cC0OzxVjDsZ609lDbm8l0Xl9uqG06dKEq4RT0YXLUyk7J2SxmqIp5YXzZNw767Dr8GKUruw== +ace-builds@1.15.2: + version "1.15.2" + resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.15.2.tgz#e9be5c4cbc835894e1202ddc8f7a1f0df049f321" + integrity sha512-ANXWnANcB4XgC9tyCtG8EXjeDdDY6iJuPQs+pDiZF/2chQMU7LTOBgw9xJdeRzRyNX5+KGZKwgB80XyY2n5QvA== ace-builds@^1.4.14: version "1.15.0" @@ -4328,7 +4416,7 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -app-root-path@^3.0.0: +app-root-path@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.1.0.tgz#5971a2fc12ba170369a7a1ef018c71e6e47c2e86" integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== @@ -4396,14 +4484,6 @@ argv-formatter@~1.0.0: resolved "https://registry.yarnpkg.com/argv-formatter/-/argv-formatter-1.0.0.tgz#a0ca0cbc29a5b73e836eebe1cbf6c5e0e4eb82f9" integrity sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw== -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - aria-query@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" @@ -4567,7 +4647,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -axe-core@^4.4.3, axe-core@^4.6.2: +axe-core@^4.6.2: version "4.6.3" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.3.tgz#fc0db6fdb65cc7a80ccf85286d91d64ababa3ece" integrity sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg== @@ -4577,20 +4657,15 @@ axios-rate-limit@1.3.0: resolved "https://registry.yarnpkg.com/axios-rate-limit/-/axios-rate-limit-1.3.0.tgz#03241d24c231c47432dab6e8234cfde819253c2e" integrity sha512-cKR5wTbU/CeeyF1xVl5hl6FlYsmzDVqxlN4rGtfO5x7J83UxKDckudsW0yW21/ZJRcO0Qrfm3fUFbhEbWTLayw== -axios@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.2.tgz#72681724c6e6a43a9fea860fc558127dbe32f9f1" - integrity sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q== +axios@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.4.tgz#f5760cefd9cfb51fd2481acf88c05f67c4523024" + integrity sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" proxy-from-env "^1.1.0" -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - axobject-query@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" @@ -5373,27 +5448,7 @@ commander@^9.0.0, commander@^9.4.1: resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== -commitizen@4.2.6: - version "4.2.6" - resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-4.2.6.tgz#c35af39e1cb5fc2de88511df802da4344dc3ca80" - integrity sha512-RyTM+EiD9GO01DJUn9MRRAet3XUHGfoUZoksLfr+1ym1Xt2q5EYJs9Fg2BtKSb5Mo53i0BtMBmWMHQXVlZ/L9w== - dependencies: - cachedir "2.3.0" - cz-conventional-changelog "3.3.0" - dedent "0.7.0" - detect-indent "6.1.0" - find-node-modules "^2.1.2" - find-root "1.1.0" - fs-extra "9.1.0" - glob "7.2.3" - inquirer "8.2.4" - is-utf8 "^0.2.1" - lodash "4.17.21" - minimist "1.2.6" - strip-bom "4.0.0" - strip-json-comments "3.1.1" - -commitizen@^4.0.3: +commitizen@4.3.0, commitizen@^4.0.3: version "4.3.0" resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-4.3.0.tgz#0d056c542a2d2b1f9b9aba981aa32575b2849924" integrity sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw== @@ -5623,11 +5678,6 @@ core-js-compat@^3.25.1: dependencies: browserslist "^4.21.4" -core-js-pure@^3.25.1: - version "3.27.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.27.2.tgz#47e9cc96c639eefc910da03c3ece26c5067c7553" - integrity sha512-Cf2jqAbXgWH3VVzjyaaFkY1EBazxugUepGymDoeteyYr9ByX51kD2jdHZlsEF/xnJMyN3Prua7mQuzwMg6Zc9A== - core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -5685,18 +5735,17 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cron-parser@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-3.5.0.tgz#b1a9da9514c0310aa7ef99c2f3f1d0f8c235257c" - integrity sha512-wyVZtbRs6qDfFd8ap457w3XVntdvqcwBGxBoTvJQH9KGVKL/fB+h2k3C8AqiVxvUQKN1Ps/Ns46CNViOpVDhfQ== +cron-parser@^4.2.0: + version "4.7.1" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.7.1.tgz#1e325a6a18e797a634ada1e2599ece0b6b5ed177" + integrity sha512-WguFaoQ0hQ61SgsCZLHUcNbAvlK0lypKXu62ARguefYmjzaOXIVRNrAmyXzabTwUn4sQvQLkk6bjH+ipGfw8bA== dependencies: - is-nan "^1.3.2" - luxon "^1.26.0" + luxon "^3.2.1" -cronstrue@2.21.0: - version "2.21.0" - resolved "https://registry.yarnpkg.com/cronstrue/-/cronstrue-2.21.0.tgz#278d19aa0b9e7ecc90a0c1dbd4f84ceece724094" - integrity sha512-YxabE1ZSHA1zJZMPCTSEbc0u4cRRenjqqTgCwJT7OvkspPSvfYFITuPFtsT+VkBuavJtFv2kJXT+mKSnlUJxfg== +cronstrue@2.23.0: + version "2.23.0" + resolved "https://registry.yarnpkg.com/cronstrue/-/cronstrue-2.23.0.tgz#8f000f62c0034a0efae820b6b4f86052836c3d38" + integrity sha512-iPoWUQbCwUmrBf1w9W+9YQs8FowWp/teC2XGz3zAmt0Aja+HWGjyjUkWASWcsdzxSuL0EIIdvlfGEVBljvTbSQ== cross-spawn@^6.0.0: version "6.0.5" @@ -5811,10 +5860,10 @@ cy-mobile-commands@0.3.0: resolved "https://registry.yarnpkg.com/cy-mobile-commands/-/cy-mobile-commands-0.3.0.tgz#2bf242093149154d846b755977da197b4730429e" integrity sha512-Bj5P2ylw88hPqolLu68xWB6euVH5uNt8zyh+Ju8sBukGv39mWZxpjp6LtnUX/LK/YMthwvILYHhvr9SG1TP+4w== -cypress@12.3.0: - version "12.3.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-12.3.0.tgz#ae3fb0540aef4b5eab1ef2bcd0760caf2992b8bf" - integrity sha512-ZQNebibi6NBt51TRxRMYKeFvIiQZ01t50HSy7z/JMgRVqBUey3cdjog5MYEbzG6Ktti5ckDt1tfcC47lmFwXkw== +cypress@12.7.0: + version "12.7.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-12.7.0.tgz#69900f82af76cf3ba0ddb9b59ec3b0d38222ab22" + integrity sha512-7rq+nmhzz0u6yabCFyPtADU2OOrYt6pvUau9qV7xyifJ/hnsaw/vkr0tnLlcuuQKUAOC1v1M1e4Z0zG7S0IAvA== dependencies: "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" @@ -5833,7 +5882,7 @@ cypress@12.3.0: commander "^5.1.0" common-tags "^1.8.0" dayjs "^1.10.4" - debug "^4.3.2" + debug "^4.3.4" enquirer "^2.3.6" eventemitter2 "6.4.7" execa "4.1.0" @@ -5890,7 +5939,7 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -date-fns@2.29.3, date-fns@^2.28.0: +date-fns@2.29.3, date-fns@^2.29.3: version "2.29.3" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== @@ -6241,7 +6290,7 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" -dotenv@^16.0.0: +dotenv@^16.0.3: version "16.0.3" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== @@ -6303,7 +6352,7 @@ email-validator@2.0.4: resolved "https://registry.yarnpkg.com/email-validator/-/email-validator-2.0.4.tgz#b8dfaa5d0dae28f1b03c95881d904d4e40bfe7ed" integrity sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ== -emoji-regex@^10.0.0: +emoji-regex@10.2.1, emoji-regex@^10.2.1: version "10.2.1" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.2.1.tgz#a41c330d957191efd3d9dfe6e1e8e1e9ab048b3f" integrity sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA== @@ -6551,20 +6600,22 @@ eslint-module-utils@^2.7.4: dependencies: debug "^3.2.7" -eslint-plugin-formatjs@4.3.9: - version "4.3.9" - resolved "https://registry.yarnpkg.com/eslint-plugin-formatjs/-/eslint-plugin-formatjs-4.3.9.tgz#cccecfa7bb40b6f150c5e0602ddaca1cd632d116" - integrity sha512-+8kGoTUaNe0qS55eg5XbPDY+eQmeZxnrC8MugQTGUXlqbCyLyG7y4mDsMhAgactVyUMST6Ln1HEm1Tk0KNuIKQ== +eslint-plugin-formatjs@4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-formatjs/-/eslint-plugin-formatjs-4.9.0.tgz#9ba74f731d41c2a18d132092766b30553855c666" + integrity sha512-U3u8TI/Mogo3sunTHDh24mc3p1zWAz/VaYjSkGhuYcLmqfkqEr3BmGUNQ8NTDvZviYHNTkhjHWuXQnUkh81grQ== dependencies: - "@formatjs/icu-messageformat-parser" "2.1.14" - "@formatjs/ts-transformer" "3.11.5" + "@formatjs/icu-messageformat-parser" "2.3.0" + "@formatjs/ts-transformer" "3.12.0" "@types/eslint" "7 || 8" "@types/picomatch" "^2.3.0" - "@typescript-eslint/typescript-estree" "^5.9.1" - emoji-regex "^10.0.0" + "@typescript-eslint/typescript-estree" "5.45.0" + emoji-regex "^10.2.1" + magic-string "^0.29.0" picomatch "^2.3.1" - tslib "^2.4.0" + tslib "2.4.0" typescript "^4.7" + unicode-emoji-utils "^1.1.1" eslint-plugin-import@^2.26.0: version "2.27.5" @@ -6587,26 +6638,7 @@ eslint-plugin-import@^2.26.0: semver "^6.3.0" tsconfig-paths "^3.14.1" -eslint-plugin-jsx-a11y@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" - integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== - dependencies: - "@babel/runtime" "^7.18.9" - aria-query "^4.2.2" - array-includes "^3.1.5" - ast-types-flow "^0.0.7" - axe-core "^4.4.3" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.8" - emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.3.2" - language-tags "^1.0.5" - minimatch "^3.1.2" - semver "^6.3.0" - -eslint-plugin-jsx-a11y@^6.5.1: +eslint-plugin-jsx-a11y@6.7.1, eslint-plugin-jsx-a11y@^6.5.1: version "6.7.1" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== @@ -6645,10 +6677,10 @@ eslint-plugin-react-hooks@4.6.0, eslint-plugin-react-hooks@^4.5.0: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== -eslint-plugin-react@7.31.11: - version "7.31.11" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz#011521d2b16dcf95795df688a4770b4eaab364c8" - integrity sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw== +eslint-plugin-react@7.32.2: + version "7.32.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== dependencies: array-includes "^3.1.6" array.prototype.flatmap "^1.3.1" @@ -6662,7 +6694,7 @@ eslint-plugin-react@7.31.11: object.hasown "^1.1.2" object.values "^1.1.6" prop-types "^15.8.1" - resolve "^2.0.0-next.3" + resolve "^2.0.0-next.4" semver "^6.3.0" string.prototype.matchall "^4.0.8" @@ -6720,12 +6752,13 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@8.31.0: - version "8.31.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.31.0.tgz#75028e77cbcff102a9feae1d718135931532d524" - integrity sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA== +eslint@8.35.0: + version "8.35.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.35.0.tgz#fffad7c7e326bae606f0e8f436a6158566d42323" + integrity sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw== dependencies: - "@eslint/eslintrc" "^1.4.1" + "@eslint/eslintrc" "^2.0.0" + "@eslint/js" "8.35.0" "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -6739,7 +6772,7 @@ eslint@8.31.0: eslint-utils "^3.0.0" eslint-visitor-keys "^3.3.0" espree "^9.4.0" - esquery "^1.4.0" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" @@ -6779,10 +6812,10 @@ esprima@^4.0.0, esprima@~4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.2.tgz#c6d3fee05dd665808e2ad870631f221f5617b1d1" + integrity sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng== dependencies: estraverse "^5.1.0" @@ -7382,7 +7415,7 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== @@ -7503,7 +7536,7 @@ glob@7.2.3, glob@^7.0.5, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1: +glob@^8.0.1, glob@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -8035,27 +8068,6 @@ inline-style-parser@0.1.1: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== -inquirer@8.2.4: - version "8.2.4" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" - integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^7.0.0" - inquirer@8.2.5: version "8.2.5" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" @@ -8077,7 +8089,7 @@ inquirer@8.2.5: through "^2.3.6" wrap-ansi "^7.0.0" -internal-slot@^1.0.3, internal-slot@^1.0.4: +internal-slot@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.4.tgz#8551e7baf74a7a6ba5f749cfb16aa60722f0d6f3" integrity sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ== @@ -8086,6 +8098,15 @@ internal-slot@^1.0.3, internal-slot@^1.0.4: has "^1.0.3" side-channel "^1.0.4" +internal-slot@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + intl-messageformat-parser@6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.1.2.tgz#28c65f3689f538e66c7cf628881548d6a82ff3c2" @@ -8101,14 +8122,14 @@ intl-messageformat-parser@^5.3.7: dependencies: "@formatjs/intl-numberformat" "^5.5.2" -intl-messageformat@10.2.5: - version "10.2.5" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.2.5.tgz#a51e6e2700d82b5b7ccd7a9f3bd45d967d95afc0" - integrity sha512-AievYMN6WLLHwBeCTv4aRKG+w3ZNyZtkObwgsKk3Q7GNTq8zDRvDbJSBQkb2OPeVCcAKcIXvak9FF/bRNavoww== +intl-messageformat@10.3.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.3.1.tgz#99b280b706e4eeb232458dcb1b5758e80abf919c" + integrity sha512-mqHc6arhbogrdImIsEscdjWnJcg2bvg3MiyGXDsTSGmPbbM2KtRUe7oNgDUbkM3HMn4KbyOct2JyJScmwRgGSQ== dependencies: "@formatjs/ecma402-abstract" "1.14.3" - "@formatjs/fast-memoize" "1.2.7" - "@formatjs/icu-messageformat-parser" "2.1.14" + "@formatjs/fast-memoize" "1.2.8" + "@formatjs/icu-messageformat-parser" "2.3.0" tslib "^2.4.0" intl-messageformat@^10.1.0: @@ -8294,14 +8315,6 @@ is-map@^2.0.1, is-map@^2.0.2: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== -is-nan@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" - integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -8672,7 +8685,7 @@ jstransformer@1.0.0: is-promise "^2.0.0" promise "^7.0.1" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2, jsx-ast-utils@^3.3.3: +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== @@ -8744,7 +8757,7 @@ kuler@^2.0.0: resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== -language-subtag-registry@^0.3.20, language-subtag-registry@~0.3.2: +language-subtag-registry@~0.3.2: version "0.3.22" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== @@ -8756,13 +8769,6 @@ language-tags@=1.0.5: dependencies: language-subtag-registry "~0.3.2" -language-tags@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.7.tgz#41cc248730f3f12a452c2e2efe32bc0bbce67967" - integrity sha512-bSytju1/657hFjgUzPAPqszxH62ouE8nQFoFaVlIQfne4wO/wXC9A4+m8jYve7YBBvi59eq0SUpcshvG8h5Usw== - dependencies: - language-subtag-registry "^0.3.20" - lazy-ass@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" @@ -8938,10 +8944,10 @@ linkify-it@4.0.1: dependencies: uc.micro "^1.0.1" -lint-staged@13.1.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.1.0.tgz#d4c61aec939e789e489fa51987ec5207b50fd37e" - integrity sha512-pn/sR8IrcF/T0vpWLilih8jmVouMlxqXxKuAojmbiGX5n/gDnz+abdPptlj0vYnbfE0SQNl3CY/HwtM0+yfOVQ== +lint-staged@13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.1.2.tgz#443636a0cfd834d5518d57d228130dc04c83d6fb" + integrity sha512-K9b4FPbWkpnupvK3WXZLbgu9pchUJ6N7TtVZjbaPsoizkqFUDkUReUL25xdrCljJs7uLUF3tZ7nVPeo/6lp+6w== dependencies: cli-truncate "^3.1.0" colorette "^2.0.19" @@ -9222,10 +9228,17 @@ lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.1.tgz#8da8d2f5f59827edb388e63e459ac23d6d408fea" integrity sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA== -luxon@^1.26.0: - version "1.28.1" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.28.1.tgz#528cdf3624a54506d710290a2341aa8e6e6c61b0" - integrity sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw== +luxon@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.2.1.tgz#14f1af209188ad61212578ea7e3d518d18cee45f" + integrity sha512-QrwPArQCNLAKGO/C+ZIilgIuDnEnKx5QYODdDtbFaxzsbZcc/a7WFq7MhsVYgRlwawLtvOUESTlfJ+hc/USqPg== + +magic-string@^0.29.0: + version "0.29.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.29.0.tgz#f034f79f8c43dba4ae1730ffb5e8c4e084b16cf3" + integrity sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" mailparser@^3.5.0: version "3.6.3" @@ -9775,11 +9788,6 @@ minimist-options@4.1.0, minimist-options@^4.0.2: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - minimist@1.2.7, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.7" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" @@ -9886,6 +9894,11 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.3.tgz#b083ff37be046fd3d6552468c1f0ff44c1545d1f" + integrity sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw== + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -10118,12 +10131,12 @@ node-releases@^2.0.6: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.8.tgz#0f349cdc8fcfa39a92ac0be9bc48b7706292b9ae" integrity sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A== -node-schedule@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/node-schedule/-/node-schedule-2.1.0.tgz#068ae38d7351c330616f7fe7cdb05036f977cbaf" - integrity sha512-nl4JTiZ7ZQDc97MmpTq9BQjYhq7gOtoh7SiPH069gBFBj0PzD8HI7zyFs6rzqL8Y5tTiEEYLxgtbx034YPrbyQ== +node-schedule@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/node-schedule/-/node-schedule-2.1.1.tgz#6958b2c5af8834954f69bb0a7a97c62b97185de3" + integrity sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ== dependencies: - cron-parser "^3.5.0" + cron-parser "^4.2.0" long-timeout "0.1.1" sorted-array-functions "^1.3.0" @@ -10132,10 +10145,15 @@ nodemailer@6.8.0: resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.8.0.tgz#804bcc5256ee5523bc914506ee59f8de8f0b1cd5" integrity sha512-EjYvSmHzekz6VNkNd12aUqAco+bOkRe3Of5jVhltqKhEsjw/y0PYPJfp83+s9Wzh1dspYAkUW/YNQ350NATbSQ== +nodemailer@6.9.1: + version "6.9.1" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.1.tgz#8249d928a43ed85fec17b13d2870c8f758a126ed" + integrity sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA== + nodemailer@^6.7.2, nodemailer@^6.7.7: - version "6.9.0" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.0.tgz#a17488ff470ff9edf1bb31d9ec23079bc94f7dd3" - integrity sha512-jFaCEGTeT3E/m/5R2MHWiyQH3pSARECRUDM+1hokOYc3lQAAG7ASuy+2jIsYVf+RVa9zePopSQwKNVFH8DKUpA== + version "6.9.3" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.3.tgz#e4425b85f05d83c43c5cd81bf84ab968f8ef5cbe" + integrity sha512-fy9v3NgTzBngrMFkDsKEj0r02U7jm6XfC3b52eoNV+GCrGj+s8pt5OqhiJdWKuw51zCTdiNR/IUD1z33LIIGpg== nodemon@2.0.20: version "2.0.20" @@ -10591,10 +10609,10 @@ opener@^1.5.2: resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== -openpgp@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/openpgp/-/openpgp-5.5.0.tgz#235ae5a49d5fda5cfd1d82c4c42cd91433478c14" - integrity sha512-SpwcJnxrK9Y0HRM6KxSFqkAEOSWEabCH/c8dII/+y2e5f6KvuDG5ZE7JXaPBaVJNE4VUZZeTphxXDoZD0KOHrw== +openpgp@5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/openpgp/-/openpgp-5.7.0.tgz#fe0a346f26171ffb726636ae7ccb24a504281dbc" + integrity sha512-wchYJQfFbSaocUvUIYqNrWD+lRSmFSG1d3Ak2CHeXFocDSEsf7Uc1zUzHjSdlZPTvGeeXPQ+MJrwVtalL4QCBg== dependencies: asn1.js "^5.0.0" @@ -11054,7 +11072,7 @@ postcss-selector-parser@6.0.10: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-selector-parser@^6.0.10: +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11: version "6.0.11" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== @@ -11076,16 +11094,7 @@ postcss@8.4.14: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@8.4.20: - version "8.4.20" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.20.tgz#64c52f509644cecad8567e949f4081d98349dc56" - integrity sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postcss@^8.4.18: +postcss@8.4.21, postcss@^8.0.9: version "8.4.21" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== @@ -11106,20 +11115,20 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier-plugin-organize-imports@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.1.tgz#7e0e0a18457e0166e740daaff1aed1c08069fcb9" - integrity sha512-bty7C2Ecard5EOXirtzeCAqj4FU4epeuWrQt/Z+sh8UVEpBlBZ3m3KNPz2kFu7KgRTQx/C9o4/TdquPD1jOqjQ== +prettier-plugin-organize-imports@3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.2.tgz#91993365e017daa5d0d28d8183179834224d8dd1" + integrity sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA== -prettier-plugin-tailwindcss@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.2.1.tgz#989b35afd86c550cb671da69891aba4f4a051159" - integrity sha512-aIO8IguumORyRsmT+E7JfJ3A9FEoyhqZR7Au7TBOege3VZkgMvHJMkufeYp4zjnDK2iq4ktkvGMNOQR9T8lisQ== +prettier-plugin-tailwindcss@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.2.3.tgz#b68a1de10056fc84055426af132c2697bea0955c" + integrity sha512-s2N5Dh7Ao5KTV1mao5ZBnn8EKtUcDPJEkGViZIjI0Ij9TTI5zgTz4IHOxW33jOdjHKa8CSjM88scelUiC5TNRQ== -prettier@2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc" - integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg== +prettier@2.8.4: + version "2.8.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" + integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== pretty-bytes@^5.6.0: version "5.6.0" @@ -11345,11 +11354,6 @@ pug@3.0.2, pug@^3.0.2: pug-runtime "^3.0.1" pug-strip-comments "^2.0.0" -pulltorefreshjs@0.1.22: - version "0.1.22" - resolved "https://registry.yarnpkg.com/pulltorefreshjs/-/pulltorefreshjs-0.1.22.tgz#ddb5e3feee0b2a49fd46e1b18e84fffef2c47ac0" - integrity sha512-haxNVEHnS4NCQA7NeG7TSV69z4uqy/N7nfPRuc4dPWe8H6ygUrMjdNeohE+6v0lVVX/ukSjbLYwPUGUYtFKfvQ== - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -11474,45 +11478,45 @@ react-animate-height@2.1.2: classnames "^2.2.5" prop-types "^15.6.1" -react-aria@3.22.0: - version "3.22.0" - resolved "https://registry.yarnpkg.com/react-aria/-/react-aria-3.22.0.tgz#824dbeac1760240b82359fd60c18bf68769d5815" - integrity sha512-GA+qwnVVTvSirdhB/PsYPwix24vFDlGeK5Lk3zUgB9Q5VHnTfMMJ4+tyu9G38UR0clLQ5SAG1ArNjgzmhexQYg== +react-aria@3.23.0: + version "3.23.0" + resolved "https://registry.yarnpkg.com/react-aria/-/react-aria-3.23.0.tgz#8829ae47373793a7b48e19aa8af1b581021b2a9a" + integrity sha512-CMem/+XnL3yuNHU94usRHS2+rdKLuyUzxRmQ/ndVXresflzKdaLYCH7Dtb2Um4rUEjD0BCz33hiNZPsJ7jBVQQ== dependencies: - "@react-aria/breadcrumbs" "^3.4.1" - "@react-aria/button" "^3.6.4" - "@react-aria/calendar" "^3.0.5" - "@react-aria/checkbox" "^3.7.1" - "@react-aria/combobox" "^3.4.4" - "@react-aria/datepicker" "^3.2.1" - "@react-aria/dialog" "^3.4.2" - "@react-aria/dnd" "^3.0.1" - "@react-aria/focus" "^3.10.1" - "@react-aria/gridlist" "^3.1.2" - "@react-aria/i18n" "^3.6.3" - "@react-aria/interactions" "^3.13.1" - "@react-aria/label" "^3.4.4" - "@react-aria/link" "^3.3.6" - "@react-aria/listbox" "^3.7.2" - "@react-aria/menu" "^3.7.1" - "@react-aria/meter" "^3.3.4" - "@react-aria/numberfield" "^3.3.4" - "@react-aria/overlays" "^3.12.1" - "@react-aria/progress" "^3.3.4" - "@react-aria/radio" "^3.4.2" - "@react-aria/searchfield" "^3.4.4" - "@react-aria/select" "^3.8.4" - "@react-aria/selection" "^3.12.1" - "@react-aria/separator" "^3.2.6" - "@react-aria/slider" "^3.2.4" - "@react-aria/ssr" "^3.4.1" - "@react-aria/switch" "^3.3.1" - "@react-aria/table" "^3.7.0" - "@react-aria/tabs" "^3.3.4" - "@react-aria/textfield" "^3.8.1" - "@react-aria/tooltip" "^3.3.4" - "@react-aria/utils" "^3.14.2" - "@react-aria/visually-hidden" "^3.6.1" + "@react-aria/breadcrumbs" "^3.5.0" + "@react-aria/button" "^3.7.0" + "@react-aria/calendar" "^3.1.0" + "@react-aria/checkbox" "^3.8.0" + "@react-aria/combobox" "^3.5.0" + "@react-aria/datepicker" "^3.3.0" + "@react-aria/dialog" "^3.5.0" + "@react-aria/dnd" "^3.1.0" + "@react-aria/focus" "^3.11.0" + "@react-aria/gridlist" "^3.2.0" + "@react-aria/i18n" "^3.7.0" + "@react-aria/interactions" "^3.14.0" + "@react-aria/label" "^3.5.0" + "@react-aria/link" "^3.4.0" + "@react-aria/listbox" "^3.8.0" + "@react-aria/menu" "^3.8.0" + "@react-aria/meter" "^3.4.0" + "@react-aria/numberfield" "^3.4.0" + "@react-aria/overlays" "^3.13.0" + "@react-aria/progress" "^3.4.0" + "@react-aria/radio" "^3.5.0" + "@react-aria/searchfield" "^3.5.0" + "@react-aria/select" "^3.9.0" + "@react-aria/selection" "^3.13.0" + "@react-aria/separator" "^3.3.0" + "@react-aria/slider" "^3.3.0" + "@react-aria/ssr" "^3.5.0" + "@react-aria/switch" "^3.4.0" + "@react-aria/table" "^3.8.0" + "@react-aria/tabs" "^3.4.0" + "@react-aria/textfield" "^3.9.0" + "@react-aria/tooltip" "^3.4.0" + "@react-aria/utils" "^3.15.0" + "@react-aria/visually-hidden" "^3.7.0" react-dom@18.2.0: version "18.2.0" @@ -11532,25 +11536,25 @@ react-fast-compare@^3.0.1: resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== -react-intersection-observer@9.4.1: - version "9.4.1" - resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-9.4.1.tgz#4ccb21e16acd0b9cf5b28d275af7055bef878f6b" - integrity sha512-IXpIsPe6BleFOEHKzKh5UjwRUaz/JYS0lT/HPsupWEQou2hDqjhLMStc5zyE3eQVT4Fk3FufM8Fw33qW1uyeiw== +react-intersection-observer@9.4.3: + version "9.4.3" + resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-9.4.3.tgz#ec84ce0c25cad548075130ea045ac5c7adf908f3" + integrity sha512-WNRqMQvKpupr6MzecAQI0Pj0+JQong307knLP4g/nBex7kYfIaZsPpXaIhKHR+oV8z+goUbH9e10j6lGRnTzlQ== -react-intl@6.2.5: - version "6.2.5" - resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-6.2.5.tgz#eb871145e0866916d0c9283b2c83a146c6121793" - integrity sha512-nz21POTKbE0sPEuEJU4o5YTZYY7VlIYCPNJaD6D2+xKyk6Noj6DoUK0LRO9LXuQNUuQ044IZl3m6ymzZRj8XFQ== +react-intl@6.2.10: + version "6.2.10" + resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-6.2.10.tgz#586ba261b3ff67be09072fefdee2ef58497e0ea2" + integrity sha512-l2TpskkFR0OzQnq7ChiJ5ZX23USZSzpKOcaR9MYC4UOHE9bT4kQ5JXXolgkq3tiOlvseEOzUCerlzn886AX9Yg== dependencies: "@formatjs/ecma402-abstract" "1.14.3" - "@formatjs/icu-messageformat-parser" "2.1.14" - "@formatjs/intl" "2.6.3" - "@formatjs/intl-displaynames" "6.2.3" - "@formatjs/intl-listformat" "7.1.7" + "@formatjs/icu-messageformat-parser" "2.3.0" + "@formatjs/intl" "2.6.7" + "@formatjs/intl-displaynames" "6.2.6" + "@formatjs/intl-listformat" "7.1.9" "@types/hoist-non-react-statics" "^3.3.1" "@types/react" "16 || 17 || 18" hoist-non-react-statics "^3.3.2" - intl-messageformat "10.2.5" + intl-messageformat "10.3.1" tslib "^2.4.0" react-is@^16.13.1, react-is@^16.7.0: @@ -11563,10 +11567,10 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-markdown@8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-8.0.4.tgz#b5ff1f0f29ead71a7a6f98815eb1a70bcc2a036e" - integrity sha512-2oxHa6oDxc1apg/Gnc1Goh06t3B617xeywqI/92wmDV9FELI6ayRkwge7w7DoEqM0gRpZGTNU6xQG+YpJISnVg== +react-markdown@8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-8.0.5.tgz#c9a70a33ca9aeeafb769c6582e7e38843b9d70ad" + integrity sha512-jGJolWWmOWAvzf+xMdB9zwStViODyyFQhNB/bwCerbBKmrTmgmA599CGiOlP58OId1IMoIRsA8UdI1Lod4zb5A== dependencies: "@types/hast" "^2.0.0" "@types/prop-types" "^15.0.0" @@ -11579,7 +11583,7 @@ react-markdown@8.0.4: remark-parse "^10.0.0" remark-rehype "^10.0.0" space-separated-tokens "^2.0.0" - style-to-object "^0.3.0" + style-to-object "^0.4.0" unified "^10.0.0" unist-util-visit "^4.0.0" vfile "^5.0.0" @@ -11616,17 +11620,17 @@ react-select@5.7.0: react-transition-group "^4.3.0" use-isomorphic-layout-effect "^1.1.2" -react-spring@9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-9.6.1.tgz#e715b2fa523c1a3acfdcf1aaa93e081620b8cc8e" - integrity sha512-BeP80R4SLb1bZHW/Q62nECoScHw/fH+jzGkD7dc892HNGa+lbGIJXURc6U7N8JfZ8peEO46nPxR57aUMuYzquQ== +react-spring@9.7.1: + version "9.7.1" + resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-9.7.1.tgz#8acfed700823490a4d9d4cf131c5fea12d1aaa93" + integrity sha512-o2+r2DNQDVEuefiz33ZF76DPd/gLq3kbdObJmllGF2IUfv2W6x+ZP0gR97QYCSR4QLbmOl1mPKUBbI+FJdys2Q== dependencies: - "@react-spring/core" "~9.6.1" - "@react-spring/konva" "~9.6.1" - "@react-spring/native" "~9.6.1" - "@react-spring/three" "~9.6.1" - "@react-spring/web" "~9.6.1" - "@react-spring/zdog" "~9.6.1" + "@react-spring/core" "~9.7.1" + "@react-spring/konva" "~9.7.1" + "@react-spring/native" "~9.7.1" + "@react-spring/three" "~9.7.1" + "@react-spring/web" "~9.7.1" + "@react-spring/zdog" "~9.7.1" react-tailwindcss-datepicker-sct@1.3.4: version "1.3.4" @@ -11995,7 +11999,7 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.15 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.3, resolve@^2.0.0-next.4: +resolve@^2.0.0-next.4: version "2.0.0-next.4" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== @@ -12746,10 +12750,10 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -style-to-object@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" - integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== +style-to-object@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.1.tgz#53cf856f7cf7f172d72939d9679556469ba5de37" + integrity sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw== dependencies: inline-style-parser "0.1.1" @@ -12820,24 +12824,24 @@ swagger-ui-dist@>=4.11.0: resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-4.15.5.tgz#cda226a79db2a9192579cc1f37ec839398a62638" integrity sha512-V3eIa28lwB6gg7/wfNvAbjwJYmDXy1Jo1POjyTzlB6wPcHiGlRxq39TSjYGVjQrUSAzpv+a7nzp7mDxgNy57xA== -swagger-ui-express@4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-4.6.0.tgz#fc297d80c614c80f5d7def3dab50b56428cfe1c9" - integrity sha512-ZxpQFp1JR2RF8Ar++CyJzEDdvufa08ujNUJgMVTMWPi86CuQeVdBtvaeO/ysrz6dJAYXf9kbVNhWD7JWocwqsA== +swagger-ui-express@4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-4.6.2.tgz#61b2cb9fd7932cdccff99e0efdf700a5459e493c" + integrity sha512-MHIOaq9JrTTB3ygUJD+08PbjM5Tt/q7x80yz9VTFIatw8j5uIWKcr90S0h5NLMzFEDC6+eVprtoeA5MDZXCUKQ== dependencies: swagger-ui-dist ">=4.11.0" -swr@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/swr/-/swr-2.0.0.tgz#91d999359e2be92de1a41f6b6711d72be20ffdbd" - integrity sha512-IhUx5yPkX+Fut3h0SqZycnaNLXLXsb2ECFq0Y29cxnK7d8r7auY2JWNbCW3IX+EqXUg3rwNJFlhrw5Ye/b6k7w== +swr@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/swr/-/swr-2.0.4.tgz#e68a5cc2e87b2a7f5f7ebf8a472cea24fc1c5fce" + integrity sha512-4GUiTjknRUVuw4MWUHR7mzJ9G/DWL+yZz/TgWDfiA0OZ9tL6qyrTkN2wPeboBpL3OJTkej3pexh3mWCnv8cFkQ== dependencies: use-sync-external-store "^1.2.0" -tailwindcss@3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.4.tgz#afe3477e7a19f3ceafb48e4b083e292ce0dc0250" - integrity sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ== +tailwindcss@3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.7.tgz#5936dd08c250b05180f0944500c01dce19188c07" + integrity sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ== dependencies: arg "^5.0.2" chokidar "^3.5.3" @@ -12853,12 +12857,12 @@ tailwindcss@3.2.4: normalize-path "^3.0.0" object-hash "^3.0.0" picocolors "^1.0.0" - postcss "^8.4.18" + postcss "^8.0.9" postcss-import "^14.1.0" postcss-js "^4.0.0" postcss-load-config "^3.1.4" postcss-nested "6.0.0" - postcss-selector-parser "^6.0.10" + postcss-selector-parser "^6.0.11" postcss-value-parser "^4.2.0" quick-lru "^5.1.1" resolve "^1.22.1" @@ -13116,12 +13120,22 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tslib@^1.10.0, tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.1, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.1, tslib@^2.4.0: +tslib@^2.0.1, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + +tslib@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== @@ -13226,30 +13240,35 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typeorm@0.3.11: - version "0.3.11" - resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.3.11.tgz#09b6ab0b0574bf33c1faf7344bab6c363cf28921" - integrity sha512-pzdOyWbVuz/z8Ww6gqvBW4nylsM0KLdUCDExr2gR20/x1khGSVxQkjNV/3YqliG90jrWzrknYbYscpk8yxFJVg== +typeorm@0.3.12: + version "0.3.12" + resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.3.12.tgz#d0fcdc4ce0c32bca42ba5ab04e83f5f58c41ebf3" + integrity sha512-sYSxBmCf1nJLLTcYtwqZ+lQIRtLPyUoO93rHTOKk9vJCyT4UfRtU7oRsJvfvKP3nnZTD1hzz2SEy2zwPEN6OyA== dependencies: - "@sqltools/formatter" "^1.2.2" - app-root-path "^3.0.0" + "@sqltools/formatter" "^1.2.5" + app-root-path "^3.1.0" buffer "^6.0.3" - chalk "^4.1.0" + chalk "^4.1.2" cli-highlight "^2.1.11" - date-fns "^2.28.0" - debug "^4.3.3" - dotenv "^16.0.0" - glob "^7.2.0" + date-fns "^2.29.3" + debug "^4.3.4" + dotenv "^16.0.3" + glob "^8.1.0" js-yaml "^4.1.0" - mkdirp "^1.0.4" + mkdirp "^2.1.3" reflect-metadata "^0.1.13" sha.js "^2.4.11" - tslib "^2.3.1" - uuid "^8.3.2" + tslib "^2.5.0" + uuid "^9.0.0" xml2js "^0.4.23" - yargs "^17.3.1" + yargs "^17.6.2" -typescript@4.9.4, typescript@^4.0, typescript@^4.6.4, typescript@^4.7: +typescript@4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typescript@^4.0, typescript@^4.6.4, typescript@^4.7: version "4.9.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== @@ -13301,6 +13320,13 @@ unicode-canonical-property-names-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== +unicode-emoji-utils@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unicode-emoji-utils/-/unicode-emoji-utils-1.1.1.tgz#26e4ea4bc4308380caf65fd6a527e090e42ecdaf" + integrity sha512-QEg0BNool1kItuftJp79SbWYzgW8Rnf8I+Q5NIDSkUw8y+KS+mLBoOaxSO+nFFUyIHGEt24I2Fn1iJ74LpiDcA== + dependencies: + emoji-regex "10.2.1" + unicode-match-property-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" @@ -13490,6 +13516,11 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + uvu@^0.5.0: version "0.5.6" resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" @@ -13903,7 +13934,7 @@ yargs@^16.0.0, yargs@^16.1.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.0.0, yargs@^17.3.1: +yargs@^17.0.0: version "17.6.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== @@ -13916,6 +13947,19 @@ yargs@^17.0.0, yargs@^17.3.1: y18n "^5.0.5" yargs-parser "^21.1.1" +yargs@^17.6.2: + version "17.7.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" + integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" @@ -13947,7 +13991,7 @@ yup@0.32.11: property-expr "^2.0.4" toposort "^2.0.2" -zod@3.20.2: - version "3.20.2" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.20.2.tgz#068606642c8f51b3333981f91c0a8ab37dfc2807" - integrity sha512-1MzNQdAvO+54H+EaK5YpyEy0T+Ejo/7YLHS93G3RnYWh5gaotGHwGeN/ZO687qEDU2y4CdStQYXVHIgrUl5UVQ== +zod@3.20.6: + version "3.20.6" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.20.6.tgz#2f2f08ff81291d47d99e86140fedb4e0db08361a" + integrity sha512-oyu0m54SGCtzh6EClBVqDDlAYRz4jrVtKwQ7ZnsEmMI9HnzuZFj8QFwAY1M5uniIYACdGvv0PBWPF2kO0aNofA==