Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Bruno Predot
/
tmdb_test
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Bruno Predot
2025-05-13 19:09:45 +0200
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
4e6b60f5e0cc323d4a17947595f3cdcc939ca505
4e6b60f5
1 parent
f8a3b1a6
Mise à jour dépendance + fix
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
389 additions
and
489 deletions
components/MovieCard.vue
components/MovieCommentList.vue
components/MoviesList.vue
components/details/MovieGender.vue
components/details/ScoreAndVote.vue
components/form/MovieCommentForm.vue
components/ui-components/Loader.vue
components/ui-components/Poster.vue
components/ui-components/SearchBar.vue
components/ui-components/SkeletonMoviesLoader.vue
components/ui-components/TinyMceFieldEditor.vue
components/ui-components/skeletonMovieDetailLoader.vue
package-lock.json
package.json
pages/movies/[id]/index.vue
components/MovieCard.vue
View file @
4e6b60f
...
...
@@ -26,15 +26,9 @@ defineProps({
:alt="movie.title"
:src="`https://image.tmdb.org/t/p/w500${movie.poster_path}`"
class="absolute inset-0 w-full h-full object-cover"
>
<div
v-else
class="absolute inset-0 w-full h-full bg-gray-700 flex items-center justify-center"
>
<FilmIcon
:size="48"
class="text-gray-500"
/>
<div v-else class="absolute inset-0 w-full h-full bg-gray-700 flex items-center justify-center">
<FilmIcon :size="48" class="text-gray-500" />
</div>
<div
class="absolute top-2 right-2 bg-primary text-white rounded-full w-10 h-10 flex items-center justify-center font-bold"
...
...
components/MovieCommentList.vue
View file @
4e6b60f
...
...
@@ -35,49 +35,27 @@ watch(
<template>
<section>
<!-- Liste des commentaires -->
<section
v-if="comments.length > 0"
class="mt-10"
>
<section v-if="comments.length > 0" class="mt-10">
<h2>Commentaires publiés</h2>
<div
v-for="(comment, index) in comments"
:key="index"
class="bg-gray-800 rounded-lg p-6 mb-4"
>
<div v-for="(comment, index) in comments" :key="index" class="bg-gray-800 rounded-lg p-6 mb-4">
<div class="flex justify-between items-start mb-2">
<section>
<h4 class="font-bold text-lg">
Par {{ comment.username }}
</h4>
<p class="text-sm text-gray-400">
Le {{ useDateFormat(comment.createdAt, "DD-MM-YYYY") }}
</p>
<h4 class="font-bold text-lg">Par {{ comment.username }}</h4>
<p class="text-sm text-gray-400">Le {{ useDateFormat(comment.createdAt, "DD-MM-YYYY") }}</p>
</section>
<section class="bg-primary text-white rounded-full w-10 h-10 flex items-center justify-center font-bold">
{{ comment.rating }}
</section>
</div>
<p
:id="`message${index}`"
class="text-gray-300"
>
<p :id="`message${index}`" class="text-gray-300">
{{ comment.message }}
</p>
</div>
</section>
<!-- Si aucun commentaire -->
<section
v-else
class="text-center py-8 bg-gray-800 rounded-lg mt-10"
>
<MessageSquareIcon
:size="48"
class="mx-auto mb-3 text-gray-600"
/>
<p class="text-gray-400">
Aucun commentaire pour le moment. Soyez le premier à donner votre avis !
</p>
<section v-else class="text-center py-8 bg-gray-800 rounded-lg mt-10">
<MessageSquareIcon :size="48" class="mx-auto mb-3 text-gray-600" />
<p class="text-gray-400">Aucun commentaire pour le moment. Soyez le premier à donner votre avis !</p>
</section>
</section>
</template>
...
...
components/MoviesList.vue
View file @
4e6b60f
...
...
@@ -151,9 +151,7 @@ onBeforeUnmount(() => {
<template>
<section>
<h1 class="text-4xl font-bold mb-8 text-center">
Découvrez les films populaires
</h1>
<h1 class="text-4xl font-bold mb-8 text-center">Découvrez les films populaires</h1>
<!-- Barre de recherche -->
<ui-components-search-bar
placeholder="Rechercher un film..."
...
...
@@ -169,46 +167,24 @@ onBeforeUnmount(() => {
/>
<!-- Liste des films -->
<div
v-else-if="movies.length > 0"
class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6"
>
<div
v-for="movie in movies"
:key="movie.id"
>
<div v-else-if="movies.length > 0" class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6">
<div v-for="movie in movies" :key="movie.id">
<movie-card :movie="movie" />
</div>
</div>
<!-- Message si aucun film trouvé -->
<section
v-else-if="searchQuery && !movies.length"
class="text-center py-12"
>
<SearchXIcon
:size="64"
class="mx-auto mb-4 text-gray-600"
/>
<h3 class="text-xl font-bold mb-2">
Aucun film trouvé
</h3>
<p class="text-gray-400">
Essayez avec un autre terme de recherche
</p>
<section v-else-if="searchQuery && !movies.length" class="text-center py-12">
<SearchXIcon :size="64" class="mx-auto mb-4 text-gray-600" />
<h3 class="text-xl font-bold mb-2">Aucun film trouvé</h3>
<p class="text-gray-400">Essayez avec un autre terme de recherche</p>
</section>
<!-- Loader pour le chargement de plus de films -->
<ui-components-loader
:is-initial-loading="isInitialLoading"
:is-loading="isLoadingMore"
/>
<ui-components-loader :is-initial-loading="isInitialLoading" :is-loading="isLoadingMore" />
<!-- Élément observé pour le défilement infini -->
<div
ref="loadMoreTrigger"
class="h-10 mt-4"
/>
<div ref="loadMoreTrigger" class="h-10 mt-4" />
</section>
</template>
...
...
components/details/MovieGender.vue
View file @
4e6b60f
...
...
@@ -17,11 +17,7 @@ defineProps({
<template>
<section class="mb-6">
<div class="flex flex-wrap gap-2">
<span
v-for="genre in genres"
:key="genre.id"
class="px-3 py-1 bg-gray-800 rounded-full text-sm"
>
<span v-for="genre in genres" :key="genre.id" class="px-3 py-1 bg-gray-800 rounded-full text-sm">
{{ genre.name }}
</span>
</div>
...
...
components/details/ScoreAndVote.vue
View file @
4e6b60f
...
...
@@ -34,9 +34,7 @@ const formatVoteCount = (count: number) => {
{{ score.toFixed(1) }}
</section>
<section>
<p class="font-semibold">
Note TMDB
</p>
<p class="font-semibold">Note TMDB</p>
<div class="text-sm text-gray-400">
{{ formatVoteCount(nbVote) }}
</div>
...
...
components/form/MovieCommentForm.vue
View file @
4e6b60f
...
...
@@ -123,22 +123,13 @@ function handleMessageEvent(event: string) {
}
"
>
<span
v-if="isSubmitting"
class="flex items-center justify-center"
>
<span v-if="isSubmitting" class="flex items-center justify-center">
<span class="w-5 h-5 border-2 border-white border-t-transparent rounded-full animate-spin mr-2" />
Envoi en cours...
</span>
<span v-else>Publier le commentaire</span>
</v-btn>
<v-btn
class="mt-6 mr-4"
color="primary"
@click="clear"
>
effacer
</v-btn>
<v-btn class="mt-6 mr-4" color="primary" @click="clear"> effacer </v-btn>
</VForm>
</section>
</template>
...
...
components/ui-components/Loader.vue
View file @
4e6b60f
...
...
@@ -17,10 +17,7 @@ defineProps({
</script>
<template>
<section
v-if="isLoading && !isInitialLoading"
class="flex justify-center mt-8"
>
<section v-if="isLoading && !isInitialLoading" class="flex justify-center mt-8">
<div class="w-10 h-10 border-4 border-primary border-t-transparent rounded-full animate-spin" />
</section>
</template>
...
...
components/ui-components/Poster.vue
View file @
4e6b60f
...
...
@@ -20,20 +20,9 @@ defineProps({
<template>
<section class="w-full md:w-1/3 lg:w-1/4">
<div class="rounded-lg overflow-hidden shadow-lg bg-gray-800">
<v-img
v-if="src"
:alt="title"
:src="`https://image.tmdb.org/t/p/w500${src}`"
class="w-full h-auto"
/>
<div
v-else
class="aspect-[2/3] bg-gray-700 flex items-center justify-center"
>
<FilmIcon
:size="64"
class="text-gray-500"
/>
<v-img v-if="src" :alt="title" :src="`https://image.tmdb.org/t/p/w500${src}`" class="w-full h-auto" />
<div v-else class="aspect-[2/3] bg-gray-700 flex items-center justify-center">
<FilmIcon :size="64" class="text-gray-500" />
</div>
</div>
</section>
...
...
components/ui-components/SearchBar.vue
View file @
4e6b60f
...
...
@@ -49,7 +49,7 @@ function handleClearSearchEvent() {
class="w-full px-4 py-3 bg-gray-800 rounded-full text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-primary"
type="text"
@input="handleSearchEvent"
>
/
>
<button
v-if="searchQuery"
class="absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-white"
...
...
@@ -57,10 +57,7 @@ function handleClearSearchEvent() {
>
<XIcon :size="20" />
</button>
<button
v-else
class="absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400"
>
<button v-else class="absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400">
<SearchIcon :size="20" />
</button>
</div>
...
...
components/ui-components/SkeletonMoviesLoader.vue
View file @
4e6b60f
...
...
@@ -18,15 +18,8 @@ defineProps({
<template>
<!-- Skeleton loader pendant le chargement initial -->
<section
v-if="isInitialLoading"
class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6"
>
<div
v-for="i in skeletonNumber"
:key="i"
class="bg-gray-800 rounded-lg overflow-hidden shadow-lg animate-pulse"
>
<section v-if="isInitialLoading" class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6">
<div v-for="i in skeletonNumber" :key="i" class="bg-gray-800 rounded-lg overflow-hidden shadow-lg animate-pulse">
<div class="h-80 bg-gray-700" />
<div class="p-4">
<div class="h-6 bg-gray-700 rounded mb-3" />
...
...
components/ui-components/TinyMceFieldEditor.vue
View file @
4e6b60f
...
...
@@ -79,16 +79,9 @@ watch(
<template>
<div>
<editor
v-model="content"
:api-key="runtimeConfig.public.apiTinyMceSecret"
:init="init"
/>
<editor v-model="content" :api-key="runtimeConfig.public.apiTinyMceSecret" :init="init" />
</div>
<div
v-if="errorMessage"
class="text-red-500 text-sm mt-1"
>
<div v-if="errorMessage" class="text-red-500 text-sm mt-1">
{{ errorMessage }}
</div>
</template>
...
...
components/ui-components/skeletonMovieDetailLoader.vue
View file @
4e6b60f
...
...
@@ -3,10 +3,7 @@
<template>
<v-container class="bg-gray-900">
<v-row class="bg-gray-900">
<v-col
cols="12"
sm="4"
>
<v-col cols="12" sm="4">
<v-skeleton-loader
class="mx-auto border bg-gray-800"
color="#1f2937"
...
...
@@ -15,10 +12,7 @@
type="paragraph, image"
/>
</v-col>
<v-col
cols="12"
sm="8"
>
<v-col cols="12" sm="8">
<v-skeleton-loader
class="mx-auto mt-10"
color="#1f2937"
...
...
package-lock.json
View file @
4e6b60f
...
...
@@ -43,6 +43,7 @@
"jsdom"
:
"^26.1.0"
,
"playwright-core"
:
"^1.52.0"
,
"prettier"
:
"^3.5.3"
,
"typescript-eslint"
:
"^8.32.1"
,
"vitest"
:
"^3.1.2"
}
},
...
...
@@ -72,33 +73,18 @@
}
},
"node_modules/@antfu/install-pkg"
:
{
"version"
:
"1.
0
.0"
,
"resolved"
:
"https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.
0
.0.tgz"
,
"integrity"
:
"sha512-
xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw
=="
,
"version"
:
"1.
1
.0"
,
"resolved"
:
"https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.
1
.0.tgz"
,
"integrity"
:
"sha512-
MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"package-manager-detector"
:
"^
0.2.8
"
,
"tinyexec"
:
"^
0.3.2
"
"package-manager-detector"
:
"^
1.3.0
"
,
"tinyexec"
:
"^
1.0.1
"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/antfu"
}
},
"node_modules/@antfu/install-pkg/node_modules/package-manager-detector"
:
{
"version"
:
"0.2.11"
,
"resolved"
:
"https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz"
,
"integrity"
:
"sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"quansync"
:
"^0.2.7"
}
},
"node_modules/@antfu/install-pkg/node_modules/tinyexec"
:
{
"version"
:
"0.3.2"
,
"resolved"
:
"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz"
,
"integrity"
:
"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="
,
"license"
:
"MIT"
},
"node_modules/@antfu/utils"
:
{
"version"
:
"8.1.1"
,
"resolved"
:
"https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz"
,
...
...
@@ -1217,9 +1203,9 @@
}
},
"node_modules/@eslint-community/eslint-utils"
:
{
"version"
:
"4.
6.1
"
,
"resolved"
:
"https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.
6.1
.tgz"
,
"integrity"
:
"sha512-
KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYD
w=="
,
"version"
:
"4.
7.0
"
,
"resolved"
:
"https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.
7.0
.tgz"
,
"integrity"
:
"sha512-
dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpC
w=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"eslint-visitor-keys"
:
"^3.4.3"
...
...
@@ -1244,9 +1230,9 @@
}
},
"node_modules/@eslint/compat"
:
{
"version"
:
"1.2.
8
"
,
"resolved"
:
"https://registry.npmjs.org/@eslint/compat/-/compat-1.2.
8
.tgz"
,
"integrity"
:
"sha512-
LqCYHdWL/QqKIJuZ/ucMAv8d4luKGs4oCPgpt8mWztQAtPrHfXKQ/XAUc8ljCHAfJCn6SvkpTcGt5Tsh8saow
A=="
,
"version"
:
"1.2.
9
"
,
"resolved"
:
"https://registry.npmjs.org/@eslint/compat/-/compat-1.2.
9
.tgz"
,
"integrity"
:
"sha512-
gCdSY54n7k+driCadyMNv8JSPzYLeDVM/ikZRtvtROBpRdFSkS8W9A82MqsaY7lZuwL0wiapgD0NT1xT0hyJs
A=="
,
"license"
:
"Apache-2.0"
,
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -1482,9 +1468,9 @@
}
},
"node_modules/@eslint/js"
:
{
"version"
:
"9.2
5.1
"
,
"resolved"
:
"https://registry.npmjs.org/@eslint/js/-/js-9.2
5.1
.tgz"
,
"integrity"
:
"sha512-
dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg
=="
,
"version"
:
"9.2
6.0
"
,
"resolved"
:
"https://registry.npmjs.org/@eslint/js/-/js-9.2
6.0
.tgz"
,
"integrity"
:
"sha512-
I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ
=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -3012,9 +2998,9 @@
}
},
"node_modules/@nuxt/eslint-config/node_modules/globals"
:
{
"version"
:
"16.
0
.0"
,
"resolved"
:
"https://registry.npmjs.org/globals/-/globals-16.
0
.0.tgz"
,
"integrity"
:
"sha512-
iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A
=="
,
"version"
:
"16.
1
.0"
,
"resolved"
:
"https://registry.npmjs.org/globals/-/globals-16.
1
.0.tgz"
,
"integrity"
:
"sha512-
aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g
=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
">=18"
...
...
@@ -3037,9 +3023,9 @@
}
},
"node_modules/@nuxt/eslint-plugin/node_modules/@typescript-eslint/types"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg
=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -3049,6 +3035,80 @@
"url"
:
"https://opencollective.com/typescript-eslint"
}
},
"node_modules/@nuxt/eslint/node_modules/@nuxt/kit"
:
{
"version"
:
"3.17.3"
,
"resolved"
:
"https://registry.npmjs.org/@nuxt/kit/-/kit-3.17.3.tgz"
,
"integrity"
:
"sha512-aw6u6mT3TnM/MmcCRDMv3i9Sbm5/ZMSJgDl+N+WsrWNDIQ2sWmsqdDkjb/HyXF20SNwc2891hRBkaQr3hG2mhA=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"c12"
:
"^3.0.3"
,
"consola"
:
"^3.4.2"
,
"defu"
:
"^6.1.4"
,
"destr"
:
"^2.0.5"
,
"errx"
:
"^0.1.0"
,
"exsolve"
:
"^1.0.5"
,
"ignore"
:
"^7.0.4"
,
"jiti"
:
"^2.4.2"
,
"klona"
:
"^2.0.6"
,
"knitwork"
:
"^1.2.0"
,
"mlly"
:
"^1.7.4"
,
"ohash"
:
"^2.0.11"
,
"pathe"
:
"^2.0.3"
,
"pkg-types"
:
"^2.1.0"
,
"scule"
:
"^1.3.0"
,
"semver"
:
"^7.7.1"
,
"std-env"
:
"^3.9.0"
,
"tinyglobby"
:
"^0.2.13"
,
"ufo"
:
"^1.6.1"
,
"unctx"
:
"^2.4.1"
,
"unimport"
:
"^5.0.1"
,
"untyped"
:
"^2.0.0"
},
"engines"
:
{
"node"
:
">=18.12.0"
}
},
"node_modules/@nuxt/eslint/node_modules/tinyglobby"
:
{
"version"
:
"0.2.13"
,
"resolved"
:
"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz"
,
"integrity"
:
"sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"fdir"
:
"^6.4.4"
,
"picomatch"
:
"^4.0.2"
},
"engines"
:
{
"node"
:
">=12.0.0"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/SuperchupuDev"
}
},
"node_modules/@nuxt/eslint/node_modules/unimport"
:
{
"version"
:
"5.0.1"
,
"resolved"
:
"https://registry.npmjs.org/unimport/-/unimport-5.0.1.tgz"
,
"integrity"
:
"sha512-1YWzPj6wYhtwHE+9LxRlyqP4DiRrhGfJxdtH475im8ktyZXO3jHj/3PZ97zDdvkYoovFdi0K4SKl3a7l92v3sQ=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"acorn"
:
"^8.14.1"
,
"escape-string-regexp"
:
"^5.0.0"
,
"estree-walker"
:
"^3.0.3"
,
"local-pkg"
:
"^1.1.1"
,
"magic-string"
:
"^0.30.17"
,
"mlly"
:
"^1.7.4"
,
"pathe"
:
"^2.0.3"
,
"picomatch"
:
"^4.0.2"
,
"pkg-types"
:
"^2.1.0"
,
"scule"
:
"^1.3.0"
,
"strip-literal"
:
"^3.0.0"
,
"tinyglobby"
:
"^0.2.13"
,
"unplugin"
:
"^2.3.2"
,
"unplugin-utils"
:
"^0.2.4"
},
"engines"
:
{
"node"
:
">=18.12.0"
}
},
"node_modules/@nuxt/icon"
:
{
"version"
:
"1.12.0"
,
"resolved"
:
"https://registry.npmjs.org/@nuxt/icon/-/icon-1.12.0.tgz"
,
...
...
@@ -4030,6 +4090,7 @@
"version"
:
"0.2.4"
,
"resolved"
:
"https://registry.npmjs.org/@pkgr/core/-/core-0.2.4.tgz"
,
"integrity"
:
"sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
"^12.20.0 || ^14.18.0 || >=16.0.0"
...
...
@@ -4749,12 +4810,6 @@
"tslib"
:
"^2.4.0"
}
},
"node_modules/@types/doctrine"
:
{
"version"
:
"0.0.9"
,
"resolved"
:
"https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz"
,
"integrity"
:
"sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA=="
,
"license"
:
"MIT"
},
"node_modules/@types/estree"
:
{
"version"
:
"1.0.7"
,
"resolved"
:
"https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz"
,
...
...
@@ -4876,20 +4931,20 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@eslint-community/regexpp"
:
"^4.10.0"
,
"@typescript-eslint/scope-manager"
:
"8.3
1.0
"
,
"@typescript-eslint/type-utils"
:
"8.3
1.0
"
,
"@typescript-eslint/utils"
:
"8.3
1.0
"
,
"@typescript-eslint/visitor-keys"
:
"8.3
1.0
"
,
"@typescript-eslint/scope-manager"
:
"8.3
2.1
"
,
"@typescript-eslint/type-utils"
:
"8.3
2.1
"
,
"@typescript-eslint/utils"
:
"8.3
2.1
"
,
"@typescript-eslint/visitor-keys"
:
"8.3
2.1
"
,
"graphemer"
:
"^1.4.0"
,
"ignore"
:
"^
5.3.1
"
,
"ignore"
:
"^
7.0.0
"
,
"natural-compare"
:
"^1.4.0"
,
"ts-api-utils"
:
"^2.
0.1
"
"ts-api-utils"
:
"^2.
1.0
"
},
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -4905,9 +4960,9 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg
=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -4918,12 +4973,12 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@typescript-eslint/types"
:
"8.3
1.0
"
,
"@typescript-eslint/types"
:
"8.3
2.1
"
,
"eslint-visitor-keys"
:
"^4.2.0"
},
"engines"
:
{
...
...
@@ -4946,25 +5001,16 @@
"url"
:
"https://opencollective.com/eslint"
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore"
:
{
"version"
:
"5.3.2"
,
"resolved"
:
"https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz"
,
"integrity"
:
"sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
">= 4"
}
},
"node_modules/@typescript-eslint/parser"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@typescript-eslint/scope-manager"
:
"8.3
1.0
"
,
"@typescript-eslint/types"
:
"8.3
1.0
"
,
"@typescript-eslint/typescript-estree"
:
"8.3
1.0
"
,
"@typescript-eslint/visitor-keys"
:
"8.3
1.0
"
,
"@typescript-eslint/scope-manager"
:
"8.3
2.1
"
,
"@typescript-eslint/types"
:
"8.3
2.1
"
,
"@typescript-eslint/typescript-estree"
:
"8.3
2.1
"
,
"@typescript-eslint/visitor-keys"
:
"8.3
2.1
"
,
"debug"
:
"^4.3.4"
},
"engines"
:
{
...
...
@@ -4980,9 +5026,9 @@
}
},
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg
=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -4993,19 +5039,19 @@
}
},
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@typescript-eslint/types"
:
"8.3
1.0
"
,
"@typescript-eslint/visitor-keys"
:
"8.3
1.0
"
,
"@typescript-eslint/types"
:
"8.3
2.1
"
,
"@typescript-eslint/visitor-keys"
:
"8.3
2.1
"
,
"debug"
:
"^4.3.4"
,
"fast-glob"
:
"^3.3.2"
,
"is-glob"
:
"^4.0.3"
,
"minimatch"
:
"^9.0.4"
,
"semver"
:
"^7.6.0"
,
"ts-api-utils"
:
"^2.
0.1
"
"ts-api-utils"
:
"^2.
1.0
"
},
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -5019,12 +5065,12 @@
}
},
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@typescript-eslint/types"
:
"8.3
1.0
"
,
"@typescript-eslint/types"
:
"8.3
2.1
"
,
"eslint-visitor-keys"
:
"^4.2.0"
},
"engines"
:
{
...
...
@@ -5048,13 +5094,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@typescript-eslint/types"
:
"8.3
1.0
"
,
"@typescript-eslint/visitor-keys"
:
"8.3
1.0
"
"@typescript-eslint/types"
:
"8.3
2.1
"
,
"@typescript-eslint/visitor-keys"
:
"8.3
2.1
"
},
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -5065,9 +5111,9 @@
}
},
"node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg
=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -5078,12 +5124,12 @@
}
},
"node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/visitor-keys"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@typescript-eslint/types"
:
"8.3
1.0
"
,
"@typescript-eslint/types"
:
"8.3
2.1
"
,
"eslint-visitor-keys"
:
"^4.2.0"
},
"engines"
:
{
...
...
@@ -5107,15 +5153,15 @@
}
},
"node_modules/@typescript-eslint/type-utils"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@typescript-eslint/typescript-estree"
:
"8.3
1.0
"
,
"@typescript-eslint/utils"
:
"8.3
1.0
"
,
"@typescript-eslint/typescript-estree"
:
"8.3
2.1
"
,
"@typescript-eslint/utils"
:
"8.3
2.1
"
,
"debug"
:
"^4.3.4"
,
"ts-api-utils"
:
"^2.
0.1
"
"ts-api-utils"
:
"^2.
1.0
"
},
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -5130,9 +5176,9 @@
}
},
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg
=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -5143,19 +5189,19 @@
}
},
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@typescript-eslint/types"
:
"8.3
1.0
"
,
"@typescript-eslint/visitor-keys"
:
"8.3
1.0
"
,
"@typescript-eslint/types"
:
"8.3
2.1
"
,
"@typescript-eslint/visitor-keys"
:
"8.3
2.1
"
,
"debug"
:
"^4.3.4"
,
"fast-glob"
:
"^3.3.2"
,
"is-glob"
:
"^4.0.3"
,
"minimatch"
:
"^9.0.4"
,
"semver"
:
"^7.6.0"
,
"ts-api-utils"
:
"^2.
0.1
"
"ts-api-utils"
:
"^2.
1.0
"
},
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -5169,12 +5215,12 @@
}
},
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@typescript-eslint/types"
:
"8.3
1.0
"
,
"@typescript-eslint/types"
:
"8.3
2.1
"
,
"eslint-visitor-keys"
:
"^4.2.0"
},
"engines"
:
{
...
...
@@ -5276,15 +5322,15 @@
}
},
"node_modules/@typescript-eslint/utils"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@eslint-community/eslint-utils"
:
"^4.
4
.0"
,
"@typescript-eslint/scope-manager"
:
"8.3
1.0
"
,
"@typescript-eslint/types"
:
"8.3
1.0
"
,
"@typescript-eslint/typescript-estree"
:
"8.3
1.0
"
"@eslint-community/eslint-utils"
:
"^4.
7
.0"
,
"@typescript-eslint/scope-manager"
:
"8.3
2.1
"
,
"@typescript-eslint/types"
:
"8.3
2.1
"
,
"@typescript-eslint/typescript-estree"
:
"8.3
2.1
"
},
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -5299,9 +5345,9 @@
}
},
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg
=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -5312,19 +5358,19 @@
}
},
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@typescript-eslint/types"
:
"8.3
1.0
"
,
"@typescript-eslint/visitor-keys"
:
"8.3
1.0
"
,
"@typescript-eslint/types"
:
"8.3
2.1
"
,
"@typescript-eslint/visitor-keys"
:
"8.3
2.1
"
,
"debug"
:
"^4.3.4"
,
"fast-glob"
:
"^3.3.2"
,
"is-glob"
:
"^4.0.3"
,
"minimatch"
:
"^9.0.4"
,
"semver"
:
"^7.6.0"
,
"ts-api-utils"
:
"^2.
0.1
"
"ts-api-utils"
:
"^2.
1.0
"
},
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -5338,12 +5384,12 @@
}
},
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys"
:
{
"version"
:
"8.3
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3
1.0
.tgz"
,
"integrity"
:
"sha512-
QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ
=="
,
"version"
:
"8.3
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3
2.1
.tgz"
,
"integrity"
:
"sha512-
ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@typescript-eslint/types"
:
"8.3
1.0
"
,
"@typescript-eslint/types"
:
"8.3
2.1
"
,
"eslint-visitor-keys"
:
"^4.2.0"
},
"engines"
:
{
...
...
@@ -5400,9 +5446,9 @@
}
},
"node_modules/@unrs/resolver-binding-darwin-arm64"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
ehtknxfSIlAIVFmQ9/yVbW4SzyjWuQpKAtRujNzuR0qS1avz4+BSmM0lVhl4OnU7nJaun/g+AM2FeaUY5KwZs
g=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLR
g=="
,
"cpu"
:
[
"arm64"
],
...
...
@@ -5413,9 +5459,9 @@
]
},
"node_modules/@unrs/resolver-binding-darwin-x64"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
CtPj8lqQNVaNjnURq4lCAsanQGN/zO8yFKbL8a7RKH4SU7EMYhOrK8JgW5mbcEDinB4hVuZdgsDCTA3x24CuV
Q=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
qhVa8ozu92C23Hsmv0BF4+5Dyyd5STT1FolV4whNgbY6mj3kA0qsrGPe35zNR3wAN7eFict3s4Rc2dDTPBTuF
Q=="
,
"cpu"
:
[
"x64"
],
...
...
@@ -5426,9 +5472,9 @@
]
},
"node_modules/@unrs/resolver-binding-freebsd-x64"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
N8UpCG5vis1srGACnJ03WG4N9YfkpzcF7Ooztv9uOE3IG7yjxT4wSVpfbTUof2kOM8TmVhgINoIDQ5wxo+CCxQ
=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
zKKdm2uMXqLFX6Ac7K5ElnnG5VIXbDlFWzg4WJ8CGUedJryM5A3cTgHuGMw1+P5ziV8CRhnSEgOnurTI4vpHpg
=="
,
"cpu"
:
[
"x64"
],
...
...
@@ -5439,9 +5485,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-arm-gnueabihf"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
Hllz4okH+R2P0YdFivGhrA1gjDLjQrhLmfu37TidpQpcp6tcTK40T9mt7SF8frXuPjd2/YNxXIyowOvswwnfOg
=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
8N1z1TbPnHH+iDS/42GJ0bMPLiGK+cUqOhNbMKtWJ4oFGzqSJk/zoXFzcQkgtI63qMcUI7wW1tq2usZQSb2jxw
=="
,
"cpu"
:
[
"arm"
],
...
...
@@ -5452,9 +5498,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-arm-musleabihf"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
Mem13rJYfFvBj4xlkuok0zH5qn8vTm9FEm+FyiZeRK/6AFVPc/y596HihKcHIk7djvJ4BYXs7yIZo2ezabE7I
A=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
tjYzI9LcAXR9MYd9rO45m1s0B/6bJNuZ6jeOxo1pq1K6OBuRMMmfyvJYval3s9FPPGmrldYA3mi4gWDlWuTFG
A=="
,
"cpu"
:
[
"arm"
],
...
...
@@ -5465,9 +5511,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-arm64-gnu"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
kgyNRMgN7Z2pF2GJBHGIxhkN9e0rMOZwWORH3RjGHZnjtdrThxyQSMUGjK5MDM6+V3waPL0Kv9Y6pJnYxlvcX
A=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
jon9M7DKRLGZ9VYSkFMflvNqu9hDtOCEnO2QAryFWgT6o6AXU8du56V7YqnaLKr6rAbZBWYsYpikF226v423Q
A=="
,
"cpu"
:
[
"arm64"
],
...
...
@@ -5478,9 +5524,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-arm64-musl"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
bLlGWp3Z7eiO6sytt5T3NFwiUfvIjYH9wGIVD01lnVOIBxHUjQQo+7Nv+SkZVP+Y7oySlyyrrzn5y9VFn1MLeQ
=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
c8Cg4/h+kQ63pL43wBNaVMmOjXI/X62wQmru51qjfTvI7kmCy5uHTJvK/9LrF0G8Jdx8r34d019P1DVJmhXQpA
=="
,
"cpu"
:
[
"arm64"
],
...
...
@@ -5491,9 +5537,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-ppc64-gnu"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
Qt3g8MRemL9h51MCMh4BtQMNzK2JPo2CG8rVeTw8F2xKuUtLRqTsRGitOCbA6cuogv8EezBNyddKKT+bZ70W3
g=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
A+lcwRFyrjeJmv3JJvhz5NbcCkLQL6Mk16kHTNm6/aGNc4FwPHPE4DR9DwuCvCnVHvF5IAd9U4VIs/VvVir5l
g=="
,
"cpu"
:
[
"ppc64"
],
...
...
@@ -5504,9 +5550,22 @@
]
},
"node_modules/@unrs/resolver-binding-linux-riscv64-gnu"
:
{
"version"
:
"1.6.4"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.6.4.tgz"
,
"integrity"
:
"sha512-MFMn6TCZZkaOt90lTC+OzfGuGTcOyNDDB6gqgmHEiNUAz8sfljbhKIyms8e792J/Dsq0H1LSWcNhtMjnRZtv8g=="
,
"version"
:
"1.7.2"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.7.2.tgz"
,
"integrity"
:
"sha512-hQQ4TJQrSQW8JlPm7tRpXN8OCNP9ez7PajJNjRD1ZTHQAy685OYqPrKjfaMw/8LiHCt8AZ74rfUVHP9vn0N69Q=="
,
"cpu"
:
[
"riscv64"
],
"license"
:
"MIT"
,
"optional"
:
true
,
"os"
:
[
"linux"
]
},
"node_modules/@unrs/resolver-binding-linux-riscv64-musl"
:
{
"version"
:
"1.7.2"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.7.2.tgz"
,
"integrity"
:
"sha512-NoAGbiqrxtY8kVooZ24i70CjLDlUFI7nDj3I9y54U94p+3kPxwd2L692YsdLa+cqQ0VoqMWoehDFp21PKRUoIQ=="
,
"cpu"
:
[
"riscv64"
],
...
...
@@ -5517,9 +5576,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-s390x-gnu"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
RGV8V4VjxH8WhcAqvVuHAv85nbdU87dbcJmarXYuAUPLWC76ptJ32eGY5CM4MmmdU8NA3m4EkiBilSvzSt+BM
A=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
KaZByo8xuQZbUhhreBTW+yUnOIHUsv04P8lKjQ5otiGoSJ17ISGYArc+4vKdLEpGaLbemGzr4ZeUbYQQsLWFj
A=="
,
"cpu"
:
[
"s390x"
],
...
...
@@ -5530,9 +5589,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-x64-gnu"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
9SWe0F8kD7+4oD1dLvyHiVXN77PrBKbo46JVuwiCGtv3HnbSgNpjyl/9N4xqsXQScERwRWS6qjjA8fTaedwjRQ
=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
dEidzJDubxxhUCBJ/SHSMJD/9q7JkyfBMT77Px1npl4xpg9t0POLvnWywSk66BgZS/b2Hy9Y1yFaoMTFJUe9yg
=="
,
"cpu"
:
[
"x64"
],
...
...
@@ -5543,9 +5602,9 @@
]
},
"node_modules/@unrs/resolver-binding-linux-x64-musl"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
EJP5VyeRTPHqm1CEVoeAcGY7z6fmvAl8MGi06NFxdvczRRwazg0SZre+kzYis/Px4jZY6nZwBXMsHamyY0CELg
=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
RvP+Ux3wDjmnZDT4XWFfNBRVG0fMsc+yVzNFUqOflnDfZ9OYujv6nkh+GOr+watwrW4wdp6ASfG/e7bkDradsw
=="
,
"cpu"
:
[
"x64"
],
...
...
@@ -5556,9 +5615,9 @@
]
},
"node_modules/@unrs/resolver-binding-wasm32-wasi"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
/Igzy4K6QTajH0m1PesWaYyor/USENYiX7PQQHHsVvewX9rx2mUwpH0ckOLXKpnLNghm+mzDcEufdgFsZQEK3A
=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
y797JBmO9IsvXVRCKDXOxjyAE4+CcZpla2GSoBQ33TVb3ILXuFnMrbR/QQZoauBYeOFuu4w3ifWLw52sdHGz6g
=="
,
"cpu"
:
[
"wasm32"
],
...
...
@@ -5572,9 +5631,9 @@
}
},
"node_modules/@unrs/resolver-binding-win32-arm64-msvc"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
MXx3CyX+XbNJm5HXgZrkiL1JbizaRbpEE1GnXYxIOjfBDFqzWl4tge5Fdp+sBtGeGPB42q6ZBnECEa/tzSWa6A
=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
gtYTh4/VREVSLA+gHrfbWxaMO/00y+34htY7XpioBTy56YN2eBjkPrY1ML1Zys89X3RJDKVaogzwxlM1qU7egg
=="
,
"cpu"
:
[
"arm64"
],
...
...
@@ -5585,9 +5644,9 @@
]
},
"node_modules/@unrs/resolver-binding-win32-ia32-msvc"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
ZDIZ4HMZI8GNEUfBaM844O0LfguwDBvpu7orTv+9kxPOAW/6Cxyh768f/qlHIl8Xp0AHZOSJKLc1UneMdt9O6w
=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
Ywv20XHvHTDRQs12jd3MY8X5C8KLjDbg/jyaal/QLKx3fAShhJyD4blEANInsjxW3P7isHx1Blt56iUDDJO3jg
=="
,
"cpu"
:
[
"ia32"
],
...
...
@@ -5598,9 +5657,9 @@
]
},
"node_modules/@unrs/resolver-binding-win32-x64-msvc"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
jZIMKjruJy9ddDIZBLGzyi2rqfRzi3lNQkQTuaQkcpUMSy+HValMS/fvRHZIB0BGw/fdu2uCDfpxB6dNwB1Ung
=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
friS8NEQfHaDbkThxopGk+LuE5v3iY0StruifjQEt7SLbA46OnfgMO15sOTkbpJkol6RB+1l1TYPXh0sCddpvA
=="
,
"cpu"
:
[
"x64"
],
...
...
@@ -7716,9 +7775,9 @@
}
},
"node_modules/core-js-compat"
:
{
"version"
:
"3.4
1
.0"
,
"resolved"
:
"https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4
1
.0.tgz"
,
"integrity"
:
"sha512-
RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A
=="
,
"version"
:
"3.4
2
.0"
,
"resolved"
:
"https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4
2
.0.tgz"
,
"integrity"
:
"sha512-
bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"browserslist"
:
"^4.24.4"
...
...
@@ -8492,18 +8551,6 @@
"integrity"
:
"sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
,
"license"
:
"MIT"
},
"node_modules/doctrine"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
,
"integrity"
:
"sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w=="
,
"license"
:
"Apache-2.0"
,
"dependencies"
:
{
"esutils"
:
"^2.0.2"
},
"engines"
:
{
"node"
:
">=6.0.0"
}
},
"node_modules/dom-serializer"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz"
,
...
...
@@ -9028,16 +9075,14 @@
}
},
"node_modules/eslint-plugin-import-x"
:
{
"version"
:
"4.1
0.6
"
,
"resolved"
:
"https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.1
0.6
.tgz"
,
"integrity"
:
"sha512-
sWIaoezWK7kuPA7u29ULsO8WzlYYC8uivaipsazyHiZDykjNsuPtwRsYZIK2luqc5wppwXOop8iFdW7xffo/Xw
=="
,
"version"
:
"4.1
1.1
"
,
"resolved"
:
"https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.1
1.1
.tgz"
,
"integrity"
:
"sha512-
CiqREASJRnhwCB0NujkTdo4jU+cJAnhQrd4aCnWC1o+rYWIWakVbyuzVbnCriUUSLAnn5CoJ2ob36TEgNzejBQ
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@pkgr/core"
:
"^0.2.4"
,
"@types/doctrine"
:
"^0.0.9"
,
"@typescript-eslint/utils"
:
"^8.30.1"
,
"@typescript-eslint/utils"
:
"^8.31.0"
,
"comment-parser"
:
"^1.4.1"
,
"debug"
:
"^4.4.0"
,
"doctrine"
:
"^3.0.0"
,
"eslint-import-resolver-node"
:
"^0.3.9"
,
"get-tsconfig"
:
"^4.10.0"
,
"is-glob"
:
"^4.0.3"
,
...
...
@@ -9045,7 +9090,7 @@
"semver"
:
"^7.7.1"
,
"stable-hash"
:
"^0.0.5"
,
"tslib"
:
"^2.8.1"
,
"unrs-resolver"
:
"^1.
6
.0"
"unrs-resolver"
:
"^1.
7
.0"
},
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
...
...
@@ -9058,9 +9103,9 @@
}
},
"node_modules/eslint-plugin-jsdoc"
:
{
"version"
:
"50.6.
9
"
,
"resolved"
:
"https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.
9
.tgz"
,
"integrity"
:
"sha512-
7/nHu3FWD4QRG8tCVqcv+BfFtctUtEDWc29oeDXB4bwmDM2/r1ndl14AG/2DUntdqH7qmpvdemJKwb3R97/QEw
=="
,
"version"
:
"50.6.
14
"
,
"resolved"
:
"https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.
14
.tgz"
,
"integrity"
:
"sha512-
JUudvooQbUx3iB8n/MzXMOV/VtaXq7xL4CeXhYryinr8osck7nV6fE2/xUXTiH3epPXcvq6TE3HQfGQuRHErTQ
=="
,
"license"
:
"BSD-3-Clause"
,
"dependencies"
:
{
"@es-joy/jsdoccomment"
:
"~0.49.0"
,
...
...
@@ -9070,10 +9115,9 @@
"escape-string-regexp"
:
"^4.0.0"
,
"espree"
:
"^10.1.0"
,
"esquery"
:
"^1.6.0"
,
"parse-imports
"
:
"^2.1.1
"
,
"parse-imports
-exports"
:
"^0.2.4
"
,
"semver"
:
"^7.6.3"
,
"spdx-expression-parse"
:
"^4.0.0"
,
"synckit"
:
"^0.9.1"
"spdx-expression-parse"
:
"^4.0.0"
},
"engines"
:
{
"node"
:
">=18"
...
...
@@ -9220,9 +9264,9 @@
}
},
"node_modules/eslint-plugin-unicorn/node_modules/globals"
:
{
"version"
:
"16.
0
.0"
,
"resolved"
:
"https://registry.npmjs.org/globals/-/globals-16.
0
.0.tgz"
,
"integrity"
:
"sha512-
iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A
=="
,
"version"
:
"16.
1
.0"
,
"resolved"
:
"https://registry.npmjs.org/globals/-/globals-16.
1
.0.tgz"
,
"integrity"
:
"sha512-
aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g
=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
">=18"
...
...
@@ -9247,9 +9291,9 @@
}
},
"node_modules/eslint-plugin-vue"
:
{
"version"
:
"10.
0
.0"
,
"resolved"
:
"https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.
0
.0.tgz"
,
"integrity"
:
"sha512-
XKckedtajqwmaX6u1VnECmZ6xJt+YvlmMzBPZd+/sI3ub2lpYZyFnsyWo7c3nMOQKJQudeyk1lw/JxdgeKT64w
=="
,
"version"
:
"10.
1
.0"
,
"resolved"
:
"https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.
1
.0.tgz"
,
"integrity"
:
"sha512-
/VTiJ1eSfNLw6lvG9ENySbGmcVvz6wZ9nA7ZqXlLBY2RkaF15iViYKxglWiIch12KiLAj0j1iXPYU6W4wTROFA
=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@eslint-community/eslint-utils"
:
"^4.4.0"
,
...
...
@@ -9337,6 +9381,15 @@
"url"
:
"https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/@eslint/js"
:
{
"version"
:
"9.25.1"
,
"resolved"
:
"https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz"
,
"integrity"
:
"sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/eslint/node_modules/brace-expansion"
:
{
"version"
:
"1.1.11"
,
"resolved"
:
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
,
...
...
@@ -10701,9 +10754,9 @@
"license"
:
"BSD-3-Clause"
},
"node_modules/ignore"
:
{
"version"
:
"7.0.
3
"
,
"resolved"
:
"https://registry.npmjs.org/ignore/-/ignore-7.0.
3
.tgz"
,
"integrity"
:
"sha512-
bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuC
A=="
,
"version"
:
"7.0.
4
"
,
"resolved"
:
"https://registry.npmjs.org/ignore/-/ignore-7.0.
4
.tgz"
,
"integrity"
:
"sha512-
gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8
A=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
">= 4"
...
...
@@ -12900,9 +12953,9 @@
"optional"
:
true
},
"node_modules/napi-postinstall"
:
{
"version"
:
"0.
1.5
"
,
"resolved"
:
"https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.
1.5
.tgz"
,
"integrity"
:
"sha512-
HI5bHONOUYqV+FJvueOSgjRxHTLB25a3xIv59ugAxFe7xRNbW96hyYbMbsKzl+QvFV9mN/SrtHwiU+vYhMwA7Q
=="
,
"version"
:
"0.
2.4
"
,
"resolved"
:
"https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.
2.4
.tgz"
,
"integrity"
:
"sha512-
ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg
=="
,
"license"
:
"MIT"
,
"bin"
:
{
"napi-postinstall"
:
"lib/cli.js"
...
...
@@ -13734,9 +13787,9 @@
"license"
:
"BlueOak-1.0.0"
},
"node_modules/package-manager-detector"
:
{
"version"
:
"1.
2
.0"
,
"resolved"
:
"https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.
2
.0.tgz"
,
"integrity"
:
"sha512-
PutJepsOtsqVfUsxCzgTTpyXmiAgvKptIgY4th5eq5UXXFhj5PxfQ9hnGkypMeovpAvVshFRItoFHYO18TCOqA
=="
,
"version"
:
"1.
3
.0"
,
"resolved"
:
"https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.
3
.0.tgz"
,
"integrity"
:
"sha512-
ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ
=="
,
"license"
:
"MIT"
},
"node_modules/parent-module"
:
{
...
...
@@ -13751,17 +13804,13 @@
"node"
:
">=6"
}
},
"node_modules/parse-imports"
:
{
"version"
:
"
2.2.1
"
,
"resolved"
:
"https://registry.npmjs.org/parse-imports
/-/parse-imports-2.2.1
.tgz"
,
"integrity"
:
"sha512-
OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4Je
Q=="
,
"license"
:
"
Apache-2.0 AND
MIT"
,
"node_modules/parse-imports
-exports
"
:
{
"version"
:
"
0.2.4
"
,
"resolved"
:
"https://registry.npmjs.org/parse-imports
-exports/-/parse-imports-exports-0.2.4
.tgz"
,
"integrity"
:
"sha512-
4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPyb
Q=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"es-module-lexer"
:
"^1.5.3"
,
"slashes"
:
"^3.0.12"
},
"engines"
:
{
"node"
:
">= 18"
"parse-statements"
:
"1.0.11"
}
},
"node_modules/parse-json"
:
{
...
...
@@ -13790,6 +13839,12 @@
"protocols"
:
"^2.0.0"
}
},
"node_modules/parse-statements"
:
{
"version"
:
"1.0.11"
,
"resolved"
:
"https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz"
,
"integrity"
:
"sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA=="
,
"license"
:
"MIT"
},
"node_modules/parse-url"
:
{
"version"
:
"9.2.0"
,
"resolved"
:
"https://registry.npmjs.org/parse-url/-/parse-url-9.2.0.tgz"
,
...
...
@@ -16139,12 +16194,6 @@
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/slashes"
:
{
"version"
:
"3.0.12"
,
"resolved"
:
"https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz"
,
"integrity"
:
"sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA=="
,
"license"
:
"ISC"
},
"node_modules/smob"
:
{
"version"
:
"1.5.0"
,
"resolved"
:
"https://registry.npmjs.org/smob/-/smob-1.5.0.tgz"
,
...
...
@@ -16622,34 +16671,6 @@
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/synckit"
:
{
"version"
:
"0.9.2"
,
"resolved"
:
"https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz"
,
"integrity"
:
"sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw=="
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@pkgr/core"
:
"^0.1.0"
,
"tslib"
:
"^2.6.2"
},
"engines"
:
{
"node"
:
"^14.18.0 || >=16.0.0"
},
"funding"
:
{
"url"
:
"https://opencollective.com/unts"
}
},
"node_modules/synckit/node_modules/@pkgr/core"
:
{
"version"
:
"0.1.2"
,
"resolved"
:
"https://registry.npmjs.org/@pkgr/core/-/core-0.1.2.tgz"
,
"integrity"
:
"sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ=="
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
"^12.20.0 || ^14.18.0 || >=16.0.0"
},
"funding"
:
{
"url"
:
"https://opencollective.com/unts"
}
},
"node_modules/system-architecture"
:
{
"version"
:
"0.1.0"
,
"resolved"
:
"https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz"
,
...
...
@@ -17352,6 +17373,29 @@
"node"
:
">=14.17"
}
},
"node_modules/typescript-eslint"
:
{
"version"
:
"8.32.1"
,
"resolved"
:
"https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.32.1.tgz"
,
"integrity"
:
"sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@typescript-eslint/eslint-plugin"
:
"8.32.1"
,
"@typescript-eslint/parser"
:
"8.32.1"
,
"@typescript-eslint/utils"
:
"8.32.1"
},
"engines"
:
{
"node"
:
"^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/typescript-eslint"
},
"peerDependencies"
:
{
"eslint"
:
"^8.57.0 || ^9.0.0"
,
"typescript"
:
">=4.8.4 <5.9.0"
}
},
"node_modules/ufo"
:
{
"version"
:
"1.6.1"
,
"resolved"
:
"https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz"
,
...
...
@@ -17569,34 +17613,35 @@
}
},
"node_modules/unrs-resolver"
:
{
"version"
:
"1.
6.4
"
,
"resolved"
:
"https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.
6.4
.tgz"
,
"integrity"
:
"sha512-
Fb6KH4pQK0XjR5PdRW8BEzsQmbYjkeRHF3IIIZtOVXVFM6Nh+Gb2fQh23Ba7qaYloDp+Aa8/JeNqyImJ8xHlkQ
=="
,
"version"
:
"1.
7.2
"
,
"resolved"
:
"https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.
7.2
.tgz"
,
"integrity"
:
"sha512-
BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A
=="
,
"hasInstallScript"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"napi-postinstall"
:
"^0.
1.5
"
"napi-postinstall"
:
"^0.
2.2
"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/JounQin"
},
"optionalDependencies"
:
{
"@unrs/resolver-binding-darwin-arm64"
:
"1.6.4"
,
"@unrs/resolver-binding-darwin-x64"
:
"1.6.4"
,
"@unrs/resolver-binding-freebsd-x64"
:
"1.6.4"
,
"@unrs/resolver-binding-linux-arm-gnueabihf"
:
"1.6.4"
,
"@unrs/resolver-binding-linux-arm-musleabihf"
:
"1.6.4"
,
"@unrs/resolver-binding-linux-arm64-gnu"
:
"1.6.4"
,
"@unrs/resolver-binding-linux-arm64-musl"
:
"1.6.4"
,
"@unrs/resolver-binding-linux-ppc64-gnu"
:
"1.6.4"
,
"@unrs/resolver-binding-linux-riscv64-gnu"
:
"1.6.4"
,
"@unrs/resolver-binding-linux-s390x-gnu"
:
"1.6.4"
,
"@unrs/resolver-binding-linux-x64-gnu"
:
"1.6.4"
,
"@unrs/resolver-binding-linux-x64-musl"
:
"1.6.4"
,
"@unrs/resolver-binding-wasm32-wasi"
:
"1.6.4"
,
"@unrs/resolver-binding-win32-arm64-msvc"
:
"1.6.4"
,
"@unrs/resolver-binding-win32-ia32-msvc"
:
"1.6.4"
,
"@unrs/resolver-binding-win32-x64-msvc"
:
"1.6.4"
"@unrs/resolver-binding-darwin-arm64"
:
"1.7.2"
,
"@unrs/resolver-binding-darwin-x64"
:
"1.7.2"
,
"@unrs/resolver-binding-freebsd-x64"
:
"1.7.2"
,
"@unrs/resolver-binding-linux-arm-gnueabihf"
:
"1.7.2"
,
"@unrs/resolver-binding-linux-arm-musleabihf"
:
"1.7.2"
,
"@unrs/resolver-binding-linux-arm64-gnu"
:
"1.7.2"
,
"@unrs/resolver-binding-linux-arm64-musl"
:
"1.7.2"
,
"@unrs/resolver-binding-linux-ppc64-gnu"
:
"1.7.2"
,
"@unrs/resolver-binding-linux-riscv64-gnu"
:
"1.7.2"
,
"@unrs/resolver-binding-linux-riscv64-musl"
:
"1.7.2"
,
"@unrs/resolver-binding-linux-s390x-gnu"
:
"1.7.2"
,
"@unrs/resolver-binding-linux-x64-gnu"
:
"1.7.2"
,
"@unrs/resolver-binding-linux-x64-musl"
:
"1.7.2"
,
"@unrs/resolver-binding-wasm32-wasi"
:
"1.7.2"
,
"@unrs/resolver-binding-win32-arm64-msvc"
:
"1.7.2"
,
"@unrs/resolver-binding-win32-ia32-msvc"
:
"1.7.2"
,
"@unrs/resolver-binding-win32-x64-msvc"
:
"1.7.2"
}
},
"node_modules/unstorage"
:
{
...
...
package.json
View file @
4e6b60f
...
...
@@ -51,6 +51,7 @@
"jsdom"
:
"^26.1.0"
,
"playwright-core"
:
"^1.52.0"
,
"prettier"
:
"^3.5.3"
,
"typescript-eslint"
:
"^8.32.1"
,
"vitest"
:
"^3.1.2"
}
}
...
...
pages/movies/[id]/index.vue
View file @
4e6b60f
...
...
@@ -153,16 +153,9 @@ onMounted(() => {
<ui-components-skeleton-movie-detail-loader v-if="isLoading" />
<!-- Contenu du film -->
<div
v-else-if="movie"
class="relative"
>
<div v-else-if="movie" class="relative">
<!-- Backdrop image -->
<ui-components-backdrop-image
v-if="movie.backdrop_path"
:src="movie.backdrop_path"
:title="movie.title"
/>
<ui-components-backdrop-image v-if="movie.backdrop_path" :src="movie.backdrop_path" :title="movie.title" />
<!-- Contenu principal -->
<div class="container mx-auto px-4 py-8 relative z-10 pt-20">
...
...
@@ -170,64 +163,41 @@ onMounted(() => {
class="flex items-center text-gray-400 hover:text-white mb-8 transition-colors"
@click="navigateTo('/')"
>
<ArrowLeftIcon
:size="20"
class="mr-2"
/>
<ArrowLeftIcon :size="20" class="mr-2" />
Retour
</button>
<div class="flex flex-col md:flex-row gap-8">
<!-- Poster -->
<ui-components-poster
v-if="movie.poster_path"
:src="movie.poster_path"
:title="movie.title"
/>
<ui-components-poster v-if="movie.poster_path" :src="movie.poster_path" :title="movie.title" />
<!-- Informations du film -->
<section class="w-full md:w-2/3 lg:w-3/4">
<h1 class="text-3xl md:text-4xl font-bold mb-2">
{{ movie.title }}
</h1>
<p
v-if="movie.release_date"
class="text-gray-400 mb-4"
>
<p v-if="movie.release_date" class="text-gray-400 mb-4">
{{ useDateFormat(movie.release_date, "DD-MM-YYYY") }} • {{ formatRuntime(movie.runtime) }}
</p>
<!-- Note et votes -->
<details-score-and-vote
:nb-vote="movie.vote_count"
:score="movie.vote_average"
/>
<details-score-and-vote :nb-vote="movie.vote_count" :score="movie.vote_average" />
<!-- Genres -->
<details-movie-gender :genres="movie.genres" />
<!-- Synopsis -->
<div class="mb-6">
<h2 class="text-xl font-bold mb-2">
Synopsis
</h2>
<h2 class="text-xl font-bold mb-2">Synopsis</h2>
<p class="text-gray-300">
{{ movie.overview || "Aucun synopsis disponible." }}
</p>
</div>
<!-- Réalisateur et têtes d'affiche -->
<div
v-if="movie.credit"
class="mb-6"
>
<h2 class="text-xl font-bold mb-2">
Équipe
</h2>
<div
v-if="director"
class="mb-2"
>
<div v-if="movie.credit" class="mb-6">
<h2 class="text-xl font-bold mb-2">Équipe</h2>
<div v-if="director" class="mb-2">
<span class="font-semibold">Réalisateur:</span> {{ director.name }}
</div>
<div v-if="movie.credit.cast.length > 0">
...
...
@@ -242,9 +212,7 @@ onMounted(() => {
</div>
</div>
<!-- Comments form. -->
<h3 class="text-xl font-bold mt-8 mb-4">
Ajouter un commentaire
</h3>
<h3 class="text-xl font-bold mt-8 mb-4">Ajouter un commentaire</h3>
<form-movie-comment-form @event:submit="handleSubmitEvent" />
<!-- Liste des commentaires -->
...
...
@@ -255,20 +223,10 @@ onMounted(() => {
</div>
<!-- Erreur -->
<section
v-else
class="container mx-auto px-4 py-16 text-center"
>
<AlertTriangleIcon
:size="64"
class="mx-auto mb-4 text-red-500"
/>
<h2 class="text-2xl font-bold mb-2">
Film non trouvé
</h2>
<p class="text-gray-400 mb-6">
Nous n'avons pas pu trouver le film que vous cherchez.
</p>
<section v-else class="container mx-auto px-4 py-16 text-center">
<AlertTriangleIcon :size="64" class="mx-auto mb-4 text-red-500" />
<h2 class="text-2xl font-bold mb-2">Film non trouvé</h2>
<p class="text-gray-400 mb-6">Nous n'avons pas pu trouver le film que vous cherchez.</p>
<button
class="px-6 py-2 bg-primary text-white font-bold rounded-md hover:bg-primary-dark transition-colors"
@click="navigateTo('/')"
...
...
Please
register
or
login
to post a comment