diff --git a/.env.example b/.env.example index b6eda3e..8736213 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,14 @@ +# API Endpoint VITE_API_URL= -CMS_SECRET= -CMS_POSTGRES_URL= +# Payload CMS Secret Key (minimum 32 characters) +CMS_SECRET=your-very-long-secret-key + +# PostgreSQL Connection String +CMS_POSTGRES_URL=postgres://user:password@host:port/database + +# S3 Storage Configuration +CMS_STORAGE_ENDPOINT=https://your-s3-endpoint.com +CMS_STORAGE_ACCESS_KEY_ID=your-access-key-id +CMS_STORAGE_SECRET_ACCESS_KEY=your-secret-access-key +CMS_STORAGE_REGION=ap-southeast-1 diff --git a/apps/landing/next.config.js b/apps/landing/next.config.js index 7f7d4ff..e6eccb9 100644 --- a/apps/landing/next.config.js +++ b/apps/landing/next.config.js @@ -1,20 +1,15 @@ -//@ts-check - -// eslint-disable-next-line @typescript-eslint/no-var-requires const { composePlugins, withNx } = require('@nx/next'); const { withPayload } = require('@payloadcms/next/withPayload'); -/** - * @type {import('@nx/next/plugins/with-nx').WithNxOptions} - **/ +/** @type {import('@nx/next/plugins/with-nx').WithNxOptions} */ const nextConfig = { - nx: { - // Set this to true if you would like to to use SVGR - // See: https://github.com/gregberge/svgr - svgr: false, + nx: { svgr: false }, + sassOptions: { + quietDeps: true, + logger: { + warn: () => {}, + }, }, }; -const plugins = [withNx, withPayload]; - -module.exports = composePlugins(...plugins)(nextConfig); +module.exports = composePlugins(withNx, withPayload)(nextConfig); diff --git a/apps/landing/public/hero.jpeg b/apps/landing/public/hero.jpeg deleted file mode 100644 index 5e4ccd0..0000000 Binary files a/apps/landing/public/hero.jpeg and /dev/null differ diff --git a/apps/landing/src/app/(frontend)/_components/call-to-action.tsx b/apps/landing/src/app/(frontend)/_components/call-to-action.tsx index 0ffc74a..a6ee70c 100644 --- a/apps/landing/src/app/(frontend)/_components/call-to-action.tsx +++ b/apps/landing/src/app/(frontend)/_components/call-to-action.tsx @@ -1,10 +1,21 @@ 'use client'; import { Button } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { CallToActionSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; import { useRef } from 'react'; -export function CallToAction() { +export function CallToAction(props: CallToActionSection) { + const { + title, + highlightedTitle, + subtitle, + primaryButtonLabel, + primaryButtonLink, + secondaryButtonLabel, + secondaryButtonLink, + } = props; + const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); @@ -28,30 +39,30 @@ export function CallToAction() {

- Siap Menjadi{' '} + {title}{' '} - Programmer Handal? + {highlightedTitle}

- Bergabunglah dengan komunitas IMPHNEN sekarang dan mulai - perjalanan programming mu dengan cara yang menyenangkan! + {subtitle}

diff --git a/apps/landing/src/app/(frontend)/_components/community.tsx b/apps/landing/src/app/(frontend)/_components/community.tsx index f1c415c..a0d72c7 100644 --- a/apps/landing/src/app/(frontend)/_components/community.tsx +++ b/apps/landing/src/app/(frontend)/_components/community.tsx @@ -1,54 +1,16 @@ 'use client'; -import { - Button, - FacebookIcon, - InstagramIcon, - MessageCircleIcon, -} from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { Icon } from '@iconify/react'; +import { Button } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { CommunitiesSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; import { useRef } from 'react'; -export function Community() { +export function Community(props: CommunitiesSection) { + const { items, stats } = props; const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); - const communities = [ - { - icon: ( - - ), - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Facebook Group', - description: - 'Bergabunglah dengan grup Facebook kami untuk diskusi santai dan berbagi artikel menarik.', - buttonText: 'Gabung Sekarang', - buttonLink: '#', - }, - { - icon: ( - - ), - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Instagram', - description: - 'Ikuti kami di Instagram untuk tips programming, konten inspiratif, dan info event terbaru.', - buttonText: 'Follow Kami', - buttonLink: '#', - }, - { - icon: ( - - ), - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Discord Server', - description: - 'Diskusikan langsung dengan sesama programmer dan dapatkan bantuan langsung dari para ahli.', - buttonText: 'Join Server', - buttonLink: '#', - }, - ]; - const containerVariants = { hidden: { opacity: 0 }, visible: { @@ -73,105 +35,74 @@ export function Community() { id="komunitas" className="w-full py-20 md:py-32 bg-muted relative overflow-hidden" > - {/* Background Elements */}
-
-
- -

- Komunitas{' '} - - Kami - -

-

- Bergabunglah dengan ribuan programmer Indonesia yang saling - membantu dan berbagi pengalaman. -

-
-
- +

+ Komunitas{' '} + + Kami + +

+

+ Bergabunglah dengan ribuan programmer Indonesia yang saling membantu + dan berbagi pengalaman. +

+
+ - {communities.map((community, index) => ( + {items?.map((c, i) => (
-
-
- {community.icon} +
+
-

{community.title}

-

- {community.description} -

+

{c.title}

+

{c.description}

-
))} - - {/* Community Stats */} -
-
- 10K+ + {stats?.map((s, i) => ( +
+
+ {s.value} +
+
{s.label}
-
Member Aktif
-
-
-
- 50+ -
-
Event Bulanan
-
-
-
- 100+ -
-
- Mentor Profesional -
-
-
-
- 5K+ -
-
- Diskusi Mingguan -
-
+ ))}
diff --git a/apps/landing/src/app/(frontend)/_components/features.tsx b/apps/landing/src/app/(frontend)/_components/features.tsx index 40ed3e1..35a970a 100644 --- a/apps/landing/src/app/(frontend)/_components/features.tsx +++ b/apps/landing/src/app/(frontend)/_components/features.tsx @@ -1,45 +1,16 @@ 'use client'; -import { - BookOpenIcon, - CodeIcon, - LaptopIcon, - UsersIcon, -} from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { Icon } from '@iconify/react'; +import { FeaturesSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; import { useRef } from 'react'; -export function Features() { +export function Features(props: FeaturesSection) { + const { heading, subheading, features } = props; + const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); - const features = [ - { - icon: , - title: 'Belajar Tanpa Koding', - description: - 'Pelajari konsep programming dengan cara yang mudah dipahami tanpa harus menulis kode yang rumit.', - }, - { - icon: , - title: 'Komunitas Supportif', - description: - 'Bergabunglah dengan komunitas programmer Indonesia yang siap membantu dan berbagi pengalaman.', - }, - { - icon: , - title: 'Tutorial Interaktif', - description: - 'Akses tutorial interaktif yang membuat konsep programming lebih mudah untuk dipahami.', - }, - { - icon: , - title: 'Proyek Praktis', - description: - 'Terapkan pengetahuan Anda dalam proyek nyata dengan panduan langkah demi langkah.', - }, - ]; - const containerVariants = { hidden: { opacity: 0 }, visible: { @@ -64,7 +35,6 @@ export function Features() { id="fitur" className="w-full py-20 md:py-32 relative overflow-hidden" > - {/* Background Elements */}
@@ -82,14 +52,10 @@ export function Features() { Fitur Unggulan

- Belajar programming dengan{' '} - - cara yang lebih baik - + {heading}

- IMPHNEN hadir dengan berbagai fitur untuk membantu kamu menjadi - programmer handal tanpa harus pusing dengan coding. + {subheading}

@@ -100,7 +66,7 @@ export function Features() { initial="hidden" animate={isInView ? 'visible' : 'hidden'} > - {features.map((feature, index) => ( + {features?.map((feature, index) => (
- {feature.icon} +

{feature.title}

{feature.description}

diff --git a/apps/landing/src/app/(frontend)/_components/header.tsx b/apps/landing/src/app/(frontend)/_components/header.tsx index b9f5c6d..b27daa0 100644 --- a/apps/landing/src/app/(frontend)/_components/header.tsx +++ b/apps/landing/src/app/(frontend)/_components/header.tsx @@ -35,13 +35,15 @@ export function Header() {
- IMPHNEN Logo + + IMPHNEN +
@@ -82,7 +84,13 @@ export function Header() {
- @@ -134,9 +142,15 @@ export function Header() { > Testimoni - + + +
)} diff --git a/apps/landing/src/app/(frontend)/_components/hero.tsx b/apps/landing/src/app/(frontend)/_components/hero.tsx index 28d8ca3..fa543e5 100644 --- a/apps/landing/src/app/(frontend)/_components/hero.tsx +++ b/apps/landing/src/app/(frontend)/_components/hero.tsx @@ -6,11 +6,23 @@ import { SparklesIcon, UsersIcon, } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { formatCMSImageDataToMedia } from 'apps/landing/src/lib/format'; +import { HeroSection } from 'apps/landing/src/payload-types'; import { motion } from 'framer-motion'; import Image from 'next/image'; -import { useEffect, useState } from 'react'; +import { Fragment, useEffect, useState } from 'react'; + +export function Hero(props: HeroSection) { + const { + badgeText, + buttons, + description, + highlight, + title, + stats, + heroImage, + } = props; -export function Hero() { const [scrollY, setScrollY] = useState(0); useEffect(() => { @@ -24,11 +36,8 @@ export function Hero() { return (
- {/* Background Elements */}
- - {/* Animated Gradient Orbs */}
- - {/* Grid Pattern */}
@@ -56,66 +63,56 @@ export function Hero() { animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.5 }} > -
+
- Komunitas Programmer Indonesia + {badgeText}

- Programmer Handal,
+ {title}
- Tanpa Ribet + {highlight}

- Temukan potensi programming Anda bersama komunitas yang - mendukung, tutorial interaktif, dan sumber daya berkualitas - tinggi. + {description}

- - - +
-
-
- 100K+ -
-
Member
-
-
-
-
- 500+ -
-
Tutorial
-
-
-
-
- 24/7 -
-
Yapping
-
+ {stats?.map(({ value, label }, i) => ( + +
+
+ {value} +
+
{label}
+
+ {i < stats.length - 1 && ( +
+ )} + + ))}
@@ -126,24 +123,27 @@ font-bold text-black hover:text-white cursor-pointer" transition={{ duration: 0.5, delay: 0.2 }} >
- {/* Decorative Elements */}
- - {/* Main Image */}
- IMPHNEN Programming Community + {(() => { + const media = formatCMSImageDataToMedia(heroImage); + if (!media) return null; + return ( + {media.alt} + ); + })()}
diff --git a/apps/landing/src/app/(frontend)/_components/learning-resources.tsx b/apps/landing/src/app/(frontend)/_components/learning-resources.tsx index 059e8dd..8f7b2b1 100644 --- a/apps/landing/src/app/(frontend)/_components/learning-resources.tsx +++ b/apps/landing/src/app/(frontend)/_components/learning-resources.tsx @@ -1,65 +1,17 @@ 'use client'; -import { - BookOpenIcon, - Button, - CodeIcon, - Share2Icon, - VideoIcon, -} from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { Icon } from '@iconify/react'; +import { Button } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { LearningResourcesSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; - import { useRef } from 'react'; -export function LearningResources() { +export function LearningResources(props: LearningResourcesSection) { + const { resources, featured, title, description } = props; + const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); - const resources = [ - { - icon: , - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Video Tutorial', - description: - 'Belajar melalui tutorial video dari langkah awal hingga mahir.', - buttonText: 'Lihat Semua Video', - buttonLink: '#', - color: 'from-blue-500 to-blue-700', - }, - { - icon: ( - - ), - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Artikel & Tutorial', - description: - 'Pelajari konsep programming melalui artikel yang disusun secara terstruktur.', - buttonText: 'Baca Artikel', - buttonLink: '#', - color: 'from-blue-500 to-blue-700', - }, - { - icon: , - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Tantangan Koding', - description: - 'Uji kemampuan koding kamu dengan tantangan yang menyenangkan dan menantang.', - buttonText: 'Mulai Tantangan', - buttonLink: '#', - color: 'from-blue-500 to-blue-700', - }, - { - icon: , - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Sharing Session', - description: - 'Ikuti sesi berbagi pengalaman dari programmer berpengalaman dan belajar dari pengalaman mereka.', - buttonText: 'Jadwal Session', - buttonLink: '#', - color: 'from-blue-500 to-blue-700', - }, - ]; - const containerVariants = { hidden: { opacity: 0 }, visible: { @@ -84,97 +36,96 @@ export function LearningResources() { id="sumber-belajar" className="w-full py-20 md:py-32 relative overflow-hidden" > - {/* Background Elements */}
-

- Sumber{' '} - - Belajar - + {title}

- Akses berbagai materi belajar yang akan membantu kamu menguasai - konsep programming dengan cara yang menyenangkan. + {description}

- - {resources.map((resource, index) => ( + {resources.map((r, i) => (
-
-
- {resource.icon} +
+
-

{resource.title}

-

- {resource.description} -

+

{r.title}

+

{r.description}

+
-
))} - - {/* Featured Resource */}
-
- Rekomendasi Terbaik +
+ {featured.label}

- Kursus Lengkap Web Development + {featured.title}

- Pelajari HTML, CSS, JavaScript, React, dan Node.js dalam satu - kursus komprehensif yang dirancang untuk pemula hingga tingkat - menengah. + {featured.description}

- + -
diff --git a/apps/landing/src/app/(frontend)/_components/testimonials.tsx b/apps/landing/src/app/(frontend)/_components/testimonials.tsx index 1c1458c..36ee5b5 100644 --- a/apps/landing/src/app/(frontend)/_components/testimonials.tsx +++ b/apps/landing/src/app/(frontend)/_components/testimonials.tsx @@ -1,87 +1,64 @@ 'use client'; import { QuoteIcon } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { formatCMSImageDataToMedia } from 'apps/landing/src/lib/format'; +import { TestimonialsSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; import Image from 'next/image'; import { useRef } from 'react'; -export function Testimonials() { - const ref = useRef(null); - const isInView = useInView(ref, { once: true, amount: 0.2 }); +export function Testimonials(props: TestimonialsSection) { + const { title, subtitle, items, stats, joinTitle, joinText } = props; - const testimonials = [ - { - quote: - 'Saya yang tadinya tidak mengerti apa-apa tentang programming, sekarang bisa membuat website sendiri dengan mudah. Terima kasih IMPHNEN!', - name: 'Budi Santoso', - role: 'Web Developer Pemula', - avatar: '/Budi Santoso.jpg', - }, - { - quote: - 'Komunitas yang sangat supportif! Setiap pertanyaan selalu dijawab dengan cepat dan jelas. Diskusi programnya mudah dipahami.', - name: 'Anita Ratna', - role: 'Mobile App Developer', - avatar: '/Anita Ratna.jpg', - }, - { - quote: - 'Server Discord IMPHNEN adalah tempat belajar terbaik untuk programmer pemula seperti saya. Materinya lengkap dan komunitasnya sangat membantu!', - name: 'Dedi Permana', - role: 'Data Scientist', - avatar: '/Dedi Permana.jpg', - }, - ]; + const ref = useRef(null); + const isInView = useInView(ref, { once: true, amount: 0.2 }); const containerVariants = { hidden: { opacity: 0 }, - visible: { - opacity: 1, - transition: { - staggerChildren: 0.1, - }, - }, + visible: { opacity: 1, transition: { staggerChildren: 0.1 } }, }; const itemVariants = { hidden: { y: 20, opacity: 0 }, - visible: { - y: 0, - opacity: 1, - transition: { duration: 0.5 }, - }, + visible: { y: 0, opacity: 1, transition: { duration: 0.5 } }, }; return (
- {/* Background Elements */}
-
-
- -

- Testimoni{' '} - - Member - -

-

- Apa kata mereka yang telah bergabung dengan komunitas IMPHNEN? -

-
-
+
+ +

+ {title.split(' ').map((word, i) => + i === title.split(' ').length - 1 ? ( + + {word} + + ) : ( + {word} + ) + )} +

+

+ {subtitle} +

+
- {testimonials.map((testimonial, index) => ( + {items?.map((t, idx) => (
-

- “{testimonial.quote}” + “{t.quote}”

-
- {testimonial.name} + {(() => { + const media = formatCMSImageDataToMedia(t.avatar); + if (!media) return null; + return ( + {media.alt} + ); + })()}
-

{testimonial.name}

-

- {testimonial.role} -

+

{t.name}

+

{t.role}

-
))} - {/* Testimonial Stats */}

- Bergabunglah dengan{' '} - - 10,000+ - {' '} - programmer Indonesia lainnya + {joinTitle}

-

- Komunitas kami terus berkembang dengan programmer dari berbagai - latar belakang dan tingkat keahlian. Bersama-sama, kita belajar, - berbagi, dan tumbuh sebagai profesional. -

+

{joinText}

-
-
- 98% + {stats?.map((s, idx) => ( +
+
+ {s.value} +
+
{s.label}
-
- Tingkat Kemalasan -
-
-
-
- 4.9/5 -
-
- Rating Drama -
-
-
-
- 85% -
-
- Mendapat Pekerjaan -
-
-
-
- 24/7 -
-
Yapping
-
+ ))}
diff --git a/apps/landing/src/app/(frontend)/layout.tsx b/apps/landing/src/app/(frontend)/layout.tsx index 4926ba2..8cbe8a6 100644 --- a/apps/landing/src/app/(frontend)/layout.tsx +++ b/apps/landing/src/app/(frontend)/layout.tsx @@ -1,6 +1,8 @@ import { type Metadata } from 'next'; import { Inter } from 'next/font/google'; import '../../styles/globals.css'; +import Footer from './_components/footer'; +import { Header } from './_components/header'; import { ThemeProvider } from './_components/theme-provider'; const inter = Inter({ subsets: ['latin'] }); @@ -24,7 +26,11 @@ export default function RootLayout({ enableSystem disableTransitionOnChange > - {children} +
+
+
{children}
+
+
diff --git a/apps/landing/src/app/(frontend)/page.tsx b/apps/landing/src/app/(frontend)/page.tsx index 905d633..e50e601 100644 --- a/apps/landing/src/app/(frontend)/page.tsx +++ b/apps/landing/src/app/(frontend)/page.tsx @@ -1,25 +1,43 @@ +import { getGlobalsCallToActionSection } from '../../services/get-globals-call-to-action-section'; +import { getGlobalsCommunitiesSection } from '../../services/get-globals-communitues-section'; +import { getGlobalsFeaturesSection } from '../../services/get-globals-features-section'; +import { getGlobalsHeroSection } from '../../services/get-globals-hero-section'; +import { getGlobalsLearningResourcesSection } from '../../services/get-globals-learning-resources-section'; +import { getGlobalsTestimonialsSection } from '../../services/get-globals-testimonials-section'; import { CallToAction } from './_components/call-to-action'; import { Community } from './_components/community'; import { Features } from './_components/features'; -import Footer from './_components/footer'; -import { Header } from './_components/header'; import { Hero } from './_components/hero'; import { LearningResources } from './_components/learning-resources'; import { Testimonials } from './_components/testimonials'; -export default function Page() { +export const revalidate = 10; // Seconds + +export default async function Page() { + const [ + heroData, + featuresData, + communitiesData, + learningResourcesData, + testimonialsData, + callToActionData, + ] = await Promise.all([ + getGlobalsHeroSection(), + getGlobalsFeaturesSection(), + getGlobalsCommunitiesSection(), + getGlobalsLearningResourcesSection(), + getGlobalsTestimonialsSection(), + getGlobalsCallToActionSection(), + ]); + return ( -
-
-
- - - - - - -
-
-
+ <> + + + + + + + ); } diff --git a/apps/landing/src/app/(payload)/admin/importMap.js b/apps/landing/src/app/(payload)/admin/importMap.js index 73849ab..bd56203 100644 --- a/apps/landing/src/app/(payload)/admin/importMap.js +++ b/apps/landing/src/app/(payload)/admin/importMap.js @@ -1 +1,5 @@ -export const importMap = {}; +import { S3ClientUploadHandler as S3ClientUploadHandler_f97aa6c64367fa259c5bc0567239ef24 } from '@payloadcms/storage-s3/client' + +export const importMap = { + "@payloadcms/storage-s3/client#S3ClientUploadHandler": S3ClientUploadHandler_f97aa6c64367fa259c5bc0567239ef24 +} diff --git a/apps/landing/src/collections/CallToActionSection.ts b/apps/landing/src/collections/CallToActionSection.ts new file mode 100644 index 0000000..4357b7c --- /dev/null +++ b/apps/landing/src/collections/CallToActionSection.ts @@ -0,0 +1,51 @@ +import { GlobalConfig } from 'payload'; + +export const CallToActionSection: GlobalConfig = { + slug: 'call-to-action-section', + label: 'Call To Action Section', + fields: [ + { + name: 'title', + type: 'text', + required: true, + defaultValue: 'Siap Menjadi', + }, + { + name: 'highlightedTitle', + type: 'text', + required: true, + defaultValue: 'Programmer Handal?', + }, + { + name: 'subtitle', + type: 'textarea', + required: true, + defaultValue: + 'Bergabunglah dengan komunitas IMPHNEN sekarang dan mulai perjalanan programming mu dengan cara yang menyenangkan!', + }, + { + name: 'primaryButtonLabel', + type: 'text', + required: true, + defaultValue: 'Gabung Discord', + }, + { + name: 'primaryButtonLink', + type: 'text', + required: true, + defaultValue: 'https://discord.gg/imphnen', + }, + { + name: 'secondaryButtonLabel', + type: 'text', + required: true, + defaultValue: 'Join Facebook Group', + }, + { + name: 'secondaryButtonLink', + type: 'text', + required: true, + defaultValue: 'https://facebook.com/groups/programmerhandal', + }, + ], +}; diff --git a/apps/landing/src/collections/CommunitiesSection.ts b/apps/landing/src/collections/CommunitiesSection.ts new file mode 100644 index 0000000..1c04430 --- /dev/null +++ b/apps/landing/src/collections/CommunitiesSection.ts @@ -0,0 +1,65 @@ +import { GlobalConfig } from 'payload'; + +export const CommunitiesSection: GlobalConfig = { + slug: 'communities-section', + label: 'Communities Section', + fields: [ + { + name: 'items', + type: 'array', + required: true, + defaultValue: [ + { + iconName: 'tabler:brand-facebook', + title: 'Facebook Group', + description: + 'Bergabunglah dengan grup Facebook kami untuk diskusi santai dan berbagi artikel menarik.', + buttonText: 'Gabung Sekarang', + buttonLink: 'https://facebook.com/groups/programmerhandal', + }, + { + iconName: 'tabler:brand-instagram', + title: 'Instagram', + description: + 'Ikuti kami di Instagram untuk tips programming, konten inspiratif, dan info event terbaru.', + buttonText: 'Follow Kami', + buttonLink: 'https://www.instagram.com/imphnen.dev', + }, + { + iconName: 'tabler:brand-discord-filled', + title: 'Discord Server', + description: + 'Diskusikan langsung dengan sesama programmer dan dapatkan bantuan langsung dari para ahli.', + buttonText: 'Join Server', + buttonLink: 'https://discord.com/invite/imphnen', + }, + ], + fields: [ + { + name: 'iconName', + type: 'text', + required: true, + }, + { name: 'title', type: 'text', required: true }, + { name: 'description', type: 'textarea', required: true }, + { name: 'buttonText', type: 'text', required: true }, + { name: 'buttonLink', type: 'text', required: true }, + ], + }, + { + name: 'stats', + type: 'array', + required: true, + defaultValue: [ + { value: '100K+', label: 'Member Aktif' }, + { value: '50+', label: 'Event Bulanan' }, + { value: '100+', label: 'Mentor Profesional' }, + { value: '5K+', label: 'Diskusi Mingguan' }, + ], + fields: [ + { name: 'value', type: 'text', required: true }, + { name: 'label', type: 'text', required: true }, + ], + }, + ], +}; diff --git a/apps/landing/src/collections/FeaturesSection.ts b/apps/landing/src/collections/FeaturesSection.ts new file mode 100644 index 0000000..4ae5dc2 --- /dev/null +++ b/apps/landing/src/collections/FeaturesSection.ts @@ -0,0 +1,65 @@ +import { GlobalConfig } from 'payload'; + +export const FeaturesSection: GlobalConfig = { + slug: 'features-section', + label: 'Features Section', + fields: [ + { + name: 'heading', + type: 'text', + defaultValue: 'Belajar programming dengan cara yang lebih baik', + }, + { + name: 'subheading', + type: 'text', + defaultValue: + 'IMPHNEN hadir dengan berbagai fitur untuk membantu kamu menjadi programmer handal tanpa harus pusing dengan coding.', + }, + { + name: 'features', + type: 'array', + defaultValue: [ + { + iconName: 'tabler:device-laptop', + title: 'Belajar Tanpa Koding', + description: + 'Pelajari konsep programming dengan cara yang mudah dipahami tanpa harus menulis kode yang rumit.', + }, + { + iconName: 'tabler:users', + title: 'Komunitas Supportif', + description: + 'Bergabunglah dengan komunitas programmer Indonesia yang siap membantu dan berbagi pengalaman.', + }, + { + iconName: 'tabler:book', + title: 'Tutorial Interaktif', + description: + 'Akses tutorial interaktif yang membuat konsep programming lebih mudah untuk dipahami.', + }, + { + iconName: 'tabler:code', + title: 'Proyek Praktis', + description: + 'Terapkan pengetahuan Anda dalam proyek nyata dengan panduan langkah demi langkah.', + }, + ], + fields: [ + { + name: 'iconName', + type: 'text', + required: true, + }, + { + name: 'title', + type: 'text', + required: true, + }, + { + name: 'description', + type: 'textarea', + }, + ], + }, + ], +}; diff --git a/apps/landing/src/collections/HeroSection.ts b/apps/landing/src/collections/HeroSection.ts new file mode 100644 index 0000000..da1df61 --- /dev/null +++ b/apps/landing/src/collections/HeroSection.ts @@ -0,0 +1,104 @@ +import type { GlobalConfig } from 'payload'; + +export const HeroSection: GlobalConfig = { + slug: 'hero-section', + label: 'Hero Section', + fields: [ + { + name: 'heroImage', + label: 'Hero Image', + type: 'upload', + relationTo: 'media', + required: true, + }, + { + name: 'badgeText', + label: 'Badge Text', + type: 'text', + required: true, + defaultValue: 'Komunitas Programmer Indonesia', + }, + { + name: 'title', + label: 'Main Title', + type: 'text', + required: true, + defaultValue: 'Programmer Handal,', + }, + { + name: 'highlight', + label: 'Highlight Text', + type: 'text', + required: true, + defaultValue: 'Tanpa Ribet', + }, + { + name: 'description', + label: 'Description', + type: 'textarea', + required: true, + defaultValue: + 'Temukan potensi programming Anda bersama komunitas yang mendukung, tutorial interaktif, dan sumber daya berkualitas tinggi.', + }, + { + type: 'group', + name: 'buttons', + label: 'Buttons', + fields: [ + { + name: 'primaryLabel', + label: 'Primary Button Label', + type: 'text', + required: true, + defaultValue: 'Mulai Belajar', + }, + { + name: 'primaryUrl', + label: 'Primary Button URL', + type: 'text', + required: true, + defaultValue: 'https://facebook.com/groups/programmerhandal', + }, + { + name: 'secondaryLabel', + label: 'Secondary Button Label', + type: 'text', + required: true, + defaultValue: 'Gabung Discord', + }, + { + name: 'secondaryUrl', + label: 'Secondary Button URL', + type: 'text', + required: true, + defaultValue: 'https://discord.com/invite/imphnen', + }, + ], + }, + { + name: 'stats', + label: 'Statistics', + type: 'array', + minRows: 1, + fields: [ + { + name: 'value', + label: 'Value', + type: 'text', + required: true, + }, + { + name: 'label', + label: 'Label', + type: 'text', + required: true, + }, + ], + defaultValue: [ + { value: '180K+', label: 'Member' }, + { value: '500+', label: 'Tutorial' }, + { value: '24/7', label: 'Yapping' }, + ], + }, + ], +}; diff --git a/apps/landing/src/collections/LearningResourcesSection.ts b/apps/landing/src/collections/LearningResourcesSection.ts new file mode 100644 index 0000000..ddc8505 --- /dev/null +++ b/apps/landing/src/collections/LearningResourcesSection.ts @@ -0,0 +1,117 @@ +// payload config +import { GlobalConfig } from 'payload'; + +export const LearningResourcesSection: GlobalConfig = { + slug: 'learning-resources-section', + label: 'Learning Resources Section', + fields: [ + { + name: 'title', + type: 'text', + required: true, + defaultValue: 'Sumber Belajar', + }, + { + name: 'description', + type: 'textarea', + required: true, + defaultValue: + 'Akses berbagai materi belajar yang akan membantu kamu menguasai konsep programming dengan cara yang menyenangkan.', + }, + { + name: 'resources', + type: 'array', + required: true, + fields: [ + { name: 'icon', type: 'text', required: true }, + { name: 'title', type: 'text', required: true }, + { name: 'description', type: 'textarea', required: true }, + { name: 'buttonText', type: 'text', required: true }, + { name: 'buttonLink', type: 'text', required: true }, + ], + defaultValue: [ + { + icon: 'tabler:video', + title: 'Video Tutorial', + description: + 'Belajar melalui tutorial video dari langkah awal hingga mahir.', + buttonText: 'Lihat Semua Video', + buttonLink: '#', + }, + { + icon: 'tabler:article', + title: 'Artikel & Tutorial', + description: + 'Pelajari konsep programming melalui artikel yang disusun secara terstruktur.', + buttonText: 'Baca Artikel', + buttonLink: '#', + }, + { + icon: 'tabler:brand-vscode', + title: 'Tantangan Koding', + description: + 'Uji kemampuan koding kamu dengan tantangan yang menyenangkan dan menantang.', + buttonText: 'Mulai Tantangan', + buttonLink: '#', + }, + { + icon: 'tabler:device-desktop-share', + title: 'Sharing Session', + description: + 'Ikuti sesi berbagi pengalaman dari programmer berpengalaman dan belajar dari pengalaman mereka.', + buttonText: 'Jadwal Session', + buttonLink: '#', + }, + ], + }, + { + name: 'featured', + type: 'group', + fields: [ + { + name: 'label', + type: 'text', + required: true, + defaultValue: 'Rekomendasi Terbaik', + }, + { + name: 'title', + type: 'text', + required: true, + defaultValue: 'Kursus Lengkap Web Development', + }, + { + name: 'description', + type: 'textarea', + required: true, + defaultValue: + 'Pelajari HTML, CSS, JavaScript, React, dan Node.js dalam satu kursus komprehensif yang dirancang untuk pemula hingga tingkat menengah.', + }, + { + name: 'primaryButtonText', + type: 'text', + required: true, + defaultValue: 'Mulai Kursus', + }, + { + name: 'primaryButtonLink', + type: 'text', + required: true, + defaultValue: '#', + }, + { + name: 'secondaryButtonText', + type: 'text', + required: true, + defaultValue: 'Lihat Silabus', + }, + { + name: 'secondaryButtonLink', + type: 'text', + required: true, + defaultValue: '#', + }, + ], + }, + ], +}; diff --git a/apps/landing/src/collections/TestimonialsSection.ts b/apps/landing/src/collections/TestimonialsSection.ts new file mode 100644 index 0000000..92926b4 --- /dev/null +++ b/apps/landing/src/collections/TestimonialsSection.ts @@ -0,0 +1,93 @@ +import { GlobalConfig } from 'payload'; + +export const TestimonialsSection: GlobalConfig = { + slug: 'testimonials-section', + label: 'Testimonials Section', + fields: [ + { + name: 'title', + label: 'Section Title', + type: 'text', + defaultValue: 'Testimoni Member', + required: true, + }, + { + name: 'subtitle', + label: 'Section Subtitle', + type: 'textarea', + defaultValue: + 'Apa kata mereka yang telah bergabung dengan komunitas IMPHNEN?', + required: true, + }, + { + name: 'items', + label: 'Testimonials Items', + type: 'array', + fields: [ + { name: 'quote', type: 'textarea', label: 'Quote', required: true }, + { name: 'name', type: 'text', label: 'Name', required: true }, + { name: 'role', type: 'text', label: 'Role', required: true }, + { + name: 'avatar', + type: 'upload', + label: 'Avatar', + relationTo: 'media', + required: true, + }, + ], + defaultValue: [ + { + quote: + 'Saya yang tadinya tidak mengerti apa-apa tentang programming, sekarang bisa membuat website sendiri dengan mudah. Terima kasih IMPHNEN!', + name: 'Budi Santoso', + role: 'Web Developer Pemula', + avatar: { id: '', relationTo: 'media' }, + }, + { + quote: + 'Komunitas yang sangat supportif! Setiap pertanyaan selalu dijawab dengan cepat dan jelas. Diskusi programnya mudah dipahami.', + name: 'Anita Ratna', + role: 'Mobile App Developer', + avatar: { id: '', relationTo: 'media' }, + }, + { + quote: + 'Server Discord IMPHNEN adalah tempat belajar terbaik untuk programmer pemula seperti saya. Materinya lengkap dan komunitasnya sangat membantu!', + name: 'Dedi Permana', + role: 'Data Scientist', + avatar: { id: '', relationTo: 'media' }, + }, + ], + }, + { + name: 'stats', + label: 'Statistics', + type: 'array', + fields: [ + { name: 'value', type: 'text', label: 'Value', required: true }, + { name: 'label', type: 'text', label: 'Label', required: true }, + ], + defaultValue: [ + { value: '98%', label: 'Tingkat Kemalasan' }, + { value: '4.9/5', label: 'Rating Drama' }, + { value: '85%', label: 'Mendapat Pekerjaan' }, + { value: '24/7', label: 'Yapping' }, + ], + }, + { + name: 'joinTitle', + label: 'Join Section Title', + type: 'text', + defaultValue: 'Bergabunglah dengan 10,000+ programmer Indonesia lainnya', + required: true, + }, + { + name: 'joinText', + label: 'Join Section Text', + type: 'textarea', + defaultValue: + 'Komunitas kami terus berkembang dengan programmer dari berbagai latar belakang dan tingkat keahlian. Bersama-sama, kita belajar, berbagi, dan tumbuh sebagai profesional.', + required: true, + }, + ], +}; diff --git a/apps/landing/src/lib/format.ts b/apps/landing/src/lib/format.ts new file mode 100644 index 0000000..5c0dd9e --- /dev/null +++ b/apps/landing/src/lib/format.ts @@ -0,0 +1,10 @@ +import { Media } from '../payload-types'; + +export function formatCMSImageDataToMedia( + image: number | Media | null | undefined +): Media | null { + if (image && typeof image === 'object' && 'url' in image) { + return image as Media; + } + return null; +} diff --git a/apps/landing/src/payload-types.ts b/apps/landing/src/payload-types.ts index d3cacc9..4e4d9f6 100644 --- a/apps/landing/src/payload-types.ts +++ b/apps/landing/src/payload-types.ts @@ -84,8 +84,22 @@ export interface Config { db: { defaultIDType: number; }; - globals: {}; - globalsSelect: {}; + globals: { + 'hero-section': HeroSection; + 'features-section': FeaturesSection; + 'communities-section': CommunitiesSection; + 'learning-resources-section': LearningResourcesSection; + 'testimonials-section': TestimonialsSection; + 'call-to-action-section': CallToActionSection; + }; + globalsSelect: { + 'hero-section': HeroSectionSelect | HeroSectionSelect; + 'features-section': FeaturesSectionSelect | FeaturesSectionSelect; + 'communities-section': CommunitiesSectionSelect | CommunitiesSectionSelect; + 'learning-resources-section': LearningResourcesSectionSelect | LearningResourcesSectionSelect; + 'testimonials-section': TestimonialsSectionSelect | TestimonialsSectionSelect; + 'call-to-action-section': CallToActionSectionSelect | CallToActionSectionSelect; + }; locale: null; user: User & { collection: 'users'; @@ -271,6 +285,298 @@ export interface PayloadMigrationsSelect { updatedAt?: T; createdAt?: T; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "hero-section". + */ +export interface HeroSection { + id: number; + heroImage: number | Media; + badgeText: string; + title: string; + highlight: string; + description: string; + buttons: { + primaryLabel: string; + primaryUrl: string; + secondaryLabel: string; + secondaryUrl: string; + }; + stats?: + | { + value: string; + label: string; + id?: string | null; + }[] + | null; + updatedAt?: string | null; + createdAt?: string | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "features-section". + */ +export interface FeaturesSection { + id: number; + heading?: string | null; + subheading?: string | null; + features?: + | { + iconName: string; + title: string; + description?: string | null; + id?: string | null; + }[] + | null; + updatedAt?: string | null; + createdAt?: string | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "communities-section". + */ +export interface CommunitiesSection { + id: number; + items: { + iconName: string; + title: string; + description: string; + buttonText: string; + buttonLink: string; + id?: string | null; + }[]; + stats: { + value: string; + label: string; + id?: string | null; + }[]; + updatedAt?: string | null; + createdAt?: string | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "learning-resources-section". + */ +export interface LearningResourcesSection { + id: number; + title: string; + description: string; + resources: { + icon: string; + title: string; + description: string; + buttonText: string; + buttonLink: string; + id?: string | null; + }[]; + featured: { + label: string; + title: string; + description: string; + primaryButtonText: string; + primaryButtonLink: string; + secondaryButtonText: string; + secondaryButtonLink: string; + }; + updatedAt?: string | null; + createdAt?: string | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "testimonials-section". + */ +export interface TestimonialsSection { + id: number; + title: string; + subtitle: string; + items?: + | { + quote: string; + name: string; + role: string; + avatar: number | Media; + id?: string | null; + }[] + | null; + stats?: + | { + value: string; + label: string; + id?: string | null; + }[] + | null; + joinTitle: string; + joinText: string; + updatedAt?: string | null; + createdAt?: string | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "call-to-action-section". + */ +export interface CallToActionSection { + id: number; + title: string; + highlightedTitle: string; + subtitle: string; + primaryButtonLabel: string; + primaryButtonLink: string; + secondaryButtonLabel: string; + secondaryButtonLink: string; + updatedAt?: string | null; + createdAt?: string | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "hero-section_select". + */ +export interface HeroSectionSelect { + heroImage?: T; + badgeText?: T; + title?: T; + highlight?: T; + description?: T; + buttons?: + | T + | { + primaryLabel?: T; + primaryUrl?: T; + secondaryLabel?: T; + secondaryUrl?: T; + }; + stats?: + | T + | { + value?: T; + label?: T; + id?: T; + }; + updatedAt?: T; + createdAt?: T; + globalType?: T; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "features-section_select". + */ +export interface FeaturesSectionSelect { + heading?: T; + subheading?: T; + features?: + | T + | { + iconName?: T; + title?: T; + description?: T; + id?: T; + }; + updatedAt?: T; + createdAt?: T; + globalType?: T; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "communities-section_select". + */ +export interface CommunitiesSectionSelect { + items?: + | T + | { + iconName?: T; + title?: T; + description?: T; + buttonText?: T; + buttonLink?: T; + id?: T; + }; + stats?: + | T + | { + value?: T; + label?: T; + id?: T; + }; + updatedAt?: T; + createdAt?: T; + globalType?: T; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "learning-resources-section_select". + */ +export interface LearningResourcesSectionSelect { + title?: T; + description?: T; + resources?: + | T + | { + icon?: T; + title?: T; + description?: T; + buttonText?: T; + buttonLink?: T; + id?: T; + }; + featured?: + | T + | { + label?: T; + title?: T; + description?: T; + primaryButtonText?: T; + primaryButtonLink?: T; + secondaryButtonText?: T; + secondaryButtonLink?: T; + }; + updatedAt?: T; + createdAt?: T; + globalType?: T; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "testimonials-section_select". + */ +export interface TestimonialsSectionSelect { + title?: T; + subtitle?: T; + items?: + | T + | { + quote?: T; + name?: T; + role?: T; + avatar?: T; + id?: T; + }; + stats?: + | T + | { + value?: T; + label?: T; + id?: T; + }; + joinTitle?: T; + joinText?: T; + updatedAt?: T; + createdAt?: T; + globalType?: T; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "call-to-action-section_select". + */ +export interface CallToActionSectionSelect { + title?: T; + highlightedTitle?: T; + subtitle?: T; + primaryButtonLabel?: T; + primaryButtonLink?: T; + secondaryButtonLabel?: T; + secondaryButtonLink?: T; + updatedAt?: T; + createdAt?: T; + globalType?: T; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "auth". diff --git a/apps/landing/src/payload.config.ts b/apps/landing/src/payload.config.ts index de076a1..7ccc7e1 100644 --- a/apps/landing/src/payload.config.ts +++ b/apps/landing/src/payload.config.ts @@ -1,11 +1,20 @@ import { postgresAdapter } from '@payloadcms/db-postgres'; import { lexicalEditor } from '@payloadcms/richtext-lexical'; +import { s3Storage } from '@payloadcms/storage-s3'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; +import https from 'https'; import path from 'path'; import { buildConfig } from 'payload'; import sharp from 'sharp'; import { fileURLToPath } from 'url'; +import { CallToActionSection } from './collections/CallToActionSection'; +import { CommunitiesSection } from './collections/CommunitiesSection'; +import { FeaturesSection } from './collections/FeaturesSection'; +import { HeroSection } from './collections/HeroSection'; +import { LearningResourcesSection } from './collections/LearningResourcesSection'; import { Media } from './collections/Media'; +import { TestimonialsSection } from './collections/TestimonialsSection'; import { Users } from './collections/Users'; const filename = fileURLToPath(import.meta.url); @@ -25,6 +34,14 @@ export default buildConfig({ }, }, collections: [Users, Media], + globals: [ + HeroSection, + FeaturesSection, + CommunitiesSection, + LearningResourcesSection, + TestimonialsSection, + CallToActionSection, + ], editor: lexicalEditor(), secret: process.env.CMS_SECRET || '', typescript: { @@ -36,5 +53,26 @@ export default buildConfig({ }, }), sharp, - plugins: [], + plugins: [ + s3Storage({ + collections: { + media: { + disableLocalStorage: true, + }, + }, + bucket: 'landing-cms', + config: { + endpoint: process.env.CMS_STORAGE_ENDPOINT, + credentials: { + accessKeyId: process.env.CMS_STORAGE_ACCESS_KEY_ID!, + secretAccessKey: process.env.CMS_STORAGE_SECRET_ACCESS_KEY!, + }, + region: process.env.CMS_STORAGE_REGION!, + forcePathStyle: true, + requestHandler: new NodeHttpHandler({ + httpsAgent: new https.Agent({ rejectUnauthorized: false }), + }), + }, + }), + ], }); diff --git a/apps/landing/src/services/get-globals-call-to-action-section.ts b/apps/landing/src/services/get-globals-call-to-action-section.ts new file mode 100644 index 0000000..c742304 --- /dev/null +++ b/apps/landing/src/services/get-globals-call-to-action-section.ts @@ -0,0 +1,7 @@ +import { payload } from '../lib/payload'; + +export async function getGlobalsCallToActionSection() { + return await payload.findGlobal({ + slug: 'call-to-action-section', + }); +} diff --git a/apps/landing/src/services/get-globals-communitues-section.ts b/apps/landing/src/services/get-globals-communitues-section.ts new file mode 100644 index 0000000..7b11ce7 --- /dev/null +++ b/apps/landing/src/services/get-globals-communitues-section.ts @@ -0,0 +1,7 @@ +import { payload } from '../lib/payload'; + +export async function getGlobalsCommunitiesSection() { + return await payload.findGlobal({ + slug: 'communities-section', + }); +} diff --git a/apps/landing/src/services/get-globals-features-section.ts b/apps/landing/src/services/get-globals-features-section.ts new file mode 100644 index 0000000..d22574d --- /dev/null +++ b/apps/landing/src/services/get-globals-features-section.ts @@ -0,0 +1,7 @@ +import { payload } from '../lib/payload'; + +export async function getGlobalsFeaturesSection() { + return await payload.findGlobal({ + slug: 'features-section', + }); +} diff --git a/apps/landing/src/services/get-globals-hero-section.ts b/apps/landing/src/services/get-globals-hero-section.ts new file mode 100644 index 0000000..cd8e3c0 --- /dev/null +++ b/apps/landing/src/services/get-globals-hero-section.ts @@ -0,0 +1,7 @@ +import { payload } from '../lib/payload'; + +export async function getGlobalsHeroSection() { + return await payload.findGlobal({ + slug: 'hero-section', + }); +} diff --git a/apps/landing/src/services/get-globals-learning-resources-section.ts b/apps/landing/src/services/get-globals-learning-resources-section.ts new file mode 100644 index 0000000..9a42e8a --- /dev/null +++ b/apps/landing/src/services/get-globals-learning-resources-section.ts @@ -0,0 +1,7 @@ +import { payload } from '../lib/payload'; + +export async function getGlobalsLearningResourcesSection() { + return await payload.findGlobal({ + slug: 'learning-resources-section', + }); +} diff --git a/apps/landing/src/services/get-globals-testimonials-section.ts b/apps/landing/src/services/get-globals-testimonials-section.ts new file mode 100644 index 0000000..2f9480d --- /dev/null +++ b/apps/landing/src/services/get-globals-testimonials-section.ts @@ -0,0 +1,7 @@ +import { payload } from '../lib/payload'; + +export async function getGlobalsTestimonialsSection() { + return await payload.findGlobal({ + slug: 'testimonials-section', + }); +} diff --git a/package-lock.json b/package-lock.json index 4a4f13e..c5d83b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,10 +11,13 @@ "dependencies": { "@ant-design/icons": "^6.0.0", "@hookform/resolvers": "^5.0.1", + "@iconify/react": "^6.0.0", "@payloadcms/db-postgres": "^3.37.0", "@payloadcms/next": "^3.37.0", "@payloadcms/richtext-lexical": "^3.37.0", + "@payloadcms/storage-s3": "^3.37.0", "@radix-ui/react-slot": "^1.2.0", + "@smithy/node-http-handler": "^4.0.4", "@tanstack/react-query": "^5.74.4", "@tanstack/react-store": "^0.7.0", "@tanstack/react-table": "^8.21.2", @@ -202,6 +205,921 @@ "url": "https://github.com/sponsors/philsturgeon" } }, + "node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/crc32c": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.806.0.tgz", + "integrity": "sha512-kQaBBBxEBU/IJ2wKG+LL2BK+uvBwpdvOA9jy1WhW+U2/DIMwMrjVs7M/ZvTlmVOJwhZaONcJbgQqsN4Yirjj4g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.806.0", + "@aws-sdk/credential-provider-node": "3.806.0", + "@aws-sdk/middleware-bucket-endpoint": "3.806.0", + "@aws-sdk/middleware-expect-continue": "3.804.0", + "@aws-sdk/middleware-flexible-checksums": "3.806.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-location-constraint": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-sdk-s3": "3.806.0", + "@aws-sdk/middleware-ssec": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.806.0", + "@aws-sdk/region-config-resolver": "3.806.0", + "@aws-sdk/signature-v4-multi-region": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.806.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.806.0", + "@aws-sdk/xml-builder": "3.804.0", + "@smithy/config-resolver": "^4.1.1", + "@smithy/core": "^3.3.1", + "@smithy/eventstream-serde-browser": "^4.0.2", + "@smithy/eventstream-serde-config-resolver": "^4.1.0", + "@smithy/eventstream-serde-node": "^4.0.2", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-blob-browser": "^4.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/hash-stream-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/md5-js": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.3", + "@smithy/middleware-retry": "^4.1.4", + "@smithy/middleware-serde": "^4.0.3", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.11", + "@smithy/util-defaults-mode-node": "^4.0.11", + "@smithy/util-endpoints": "^3.0.3", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-stream": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "@smithy/util-waiter": "^4.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.806.0.tgz", + "integrity": "sha512-X0p/9/u9e6b22rlQqKucdtjdqmjSNB4c/8zDEoD5MvgYAAbMF9HNE0ST2xaA/WsJ7uE0jFfhPY2/00pslL1DqQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.806.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.806.0", + "@aws-sdk/region-config-resolver": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.806.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.806.0", + "@smithy/config-resolver": "^4.1.1", + "@smithy/core": "^3.3.1", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.3", + "@smithy/middleware-retry": "^4.1.4", + "@smithy/middleware-serde": "^4.0.3", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.11", + "@smithy/util-defaults-mode-node": "^4.0.11", + "@smithy/util-endpoints": "^3.0.3", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.806.0.tgz", + "integrity": "sha512-HJRINPncdjPK0iL3f6cBpqCMaxVwq2oDbRCzOx04tsLZ0tNgRACBfT3d/zNVRvMt6fnOVKXoN1LAtQaw50pjEA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/core": "^3.3.1", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/signature-v4": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "@smithy/util-middleware": "^4.0.2", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.806.0.tgz", + "integrity": "sha512-nbPwmZn0kt6Q1XI2FaJWP6AhF9tro4cO5HlmZQx8NU+B0H1y9WMo659Q5zLLY46BXgoQVIJEsPSZpcZk27O4aw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.806.0.tgz", + "integrity": "sha512-e/gB2iJQQ4ZpecOVpEFhEvjGwuTqNCzhVaVsFYVc49FPfR1seuN7qBGYe1MO7mouGDQFInzJgcNup0DnYUrLiw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/property-provider": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "@smithy/util-stream": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.806.0.tgz", + "integrity": "sha512-FogfbuYSEZgFxbNy0QcsBZHHe5mSv5HV3+JyB5n0kCyjOISCVCZD7gwxKdXjt8O1hXq5k5SOdQvydGULlB6rew==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/credential-provider-env": "3.806.0", + "@aws-sdk/credential-provider-http": "3.806.0", + "@aws-sdk/credential-provider-process": "3.806.0", + "@aws-sdk/credential-provider-sso": "3.806.0", + "@aws-sdk/credential-provider-web-identity": "3.806.0", + "@aws-sdk/nested-clients": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/credential-provider-imds": "^4.0.2", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.806.0.tgz", + "integrity": "sha512-fZX8xP2Kf0k70kDTog/87fh/M+CV0E2yujSw1cUBJhDSwDX3RlUahiJk7TpB/KGw6hEFESMd6+7kq3UzYuw3rg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.806.0", + "@aws-sdk/credential-provider-http": "3.806.0", + "@aws-sdk/credential-provider-ini": "3.806.0", + "@aws-sdk/credential-provider-process": "3.806.0", + "@aws-sdk/credential-provider-sso": "3.806.0", + "@aws-sdk/credential-provider-web-identity": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/credential-provider-imds": "^4.0.2", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.806.0.tgz", + "integrity": "sha512-8Y8GYEw/1e5IZRDQL02H6nsTDcRWid/afRMeWg+93oLQmbHcTtdm48tjis+7Xwqy+XazhMDmkbUht11QPTDJcQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.806.0.tgz", + "integrity": "sha512-hT9OBwCxWMPBydNhXm2gdNNzx5AJNheS9RglwDDvXWzQ9qDuRztjuMBilMSUMb0HF9K4IqQjYzGqczMuktz4qQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.806.0", + "@aws-sdk/core": "3.806.0", + "@aws-sdk/token-providers": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.806.0.tgz", + "integrity": "sha512-XxaSY9Zd3D4ClUGENYMvi52ac5FuJPPAsvRtEfyrSdEpf6QufbMpnexWBZMYRF31h/VutgqtJwosGgNytpxMEg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/nested-clients": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/lib-storage": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.806.0.tgz", + "integrity": "sha512-8FjceMZWyqdu3jEa5iryqMH+XdR2iM6kcD/pcsv1JNQUfKicMcW6Db8dXVc29MdMw3f/3kokXqNLGvSKAl81SQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.3", + "@smithy/smithy-client": "^4.2.3", + "buffer": "5.6.0", + "events": "3.3.0", + "stream-browserify": "3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-s3": "^3.806.0" + } + }, + "node_modules/@aws-sdk/lib-storage/node_modules/buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.806.0.tgz", + "integrity": "sha512-ACjuyKJw9OZl8z8HzPEaqn1o7ElVW94mowyoZvyUIDouwAPGqPGJbJ5V35qx1oDTFSAJX+N3O3AO6RyFc8nUhw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-arn-parser": "3.804.0", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.804.0.tgz", + "integrity": "sha512-YW1hySBolALMII6C8y7Z0CRG2UX1dGJjLEBNFeefhO/xP7ZuE1dvnmfJGaEuBMnvc3wkRS63VZ3aqX6sevM1CA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.806.0.tgz", + "integrity": "sha512-YEmuU2Nr/+blhi70gS38fnCe2IoL6OVVZXMp4MbzqZRUqeBbnxZhHQrd5YOiboJz7iq+g98xwFebHY167iejcg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/is-array-buffer": "^4.0.0", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-stream": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.804.0.tgz", + "integrity": "sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.804.0.tgz", + "integrity": "sha512-AMtKnllIWKgoo7hiJfphLYotEwTERfjVMO2+cKAncz9w1g+bnYhHxiVhJJoR94y047c06X4PU5MsTxvdQ73Znw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.804.0.tgz", + "integrity": "sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.804.0.tgz", + "integrity": "sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.806.0.tgz", + "integrity": "sha512-K1ssdovHH/kPN9EUS1LznwzoL+r89Cx8qAkp0K8MqdCQuBjZ0KRnjvo9nx69Vg5d/rg01VYTxomFUPXfcPtVXw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-arn-parser": "3.804.0", + "@smithy/core": "^3.3.1", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/signature-v4": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-stream": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.804.0.tgz", + "integrity": "sha512-Tk8jK0gOIUBvEPTz/wwSlP1V70zVQ3QYqsLPAjQRMO6zfOK9ax31dln3MgKvFDJxBydS2tS3wsn53v+brxDxTA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.806.0.tgz", + "integrity": "sha512-XoIromVffgXnc+/mjlR2EVzQVIei3bPVtafIZNsHuEmUvIWJXiWsa2eJpt3BUqa0HF9YPknK7ommNEhqRb8ucg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.806.0", + "@smithy/core": "^3.3.1", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.806.0.tgz", + "integrity": "sha512-ua2gzpfQ9MF8Rny+tOAivowOWWvqEusez2rdcQK8jdBjA1ANd/0xzToSZjZh0ziN8Kl8jOhNnHbQJ0v6dT6+hg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.806.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.806.0", + "@aws-sdk/region-config-resolver": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.806.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.806.0", + "@smithy/config-resolver": "^4.1.1", + "@smithy/core": "^3.3.1", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.3", + "@smithy/middleware-retry": "^4.1.4", + "@smithy/middleware-serde": "^4.0.3", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.11", + "@smithy/util-defaults-mode-node": "^4.0.11", + "@smithy/util-endpoints": "^3.0.3", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.806.0.tgz", + "integrity": "sha512-cuv5pX55JOlzKC/iLsB5nZ9eUyVgncim3VhhWHZA/KYPh7rLMjOEfZ+xyaE9uLJXGmzOJboFH7+YdTRdIcOgrg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/s3-request-presigner": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.806.0.tgz", + "integrity": "sha512-/LjdkoMAr6T0EIIWVt444CJlaOCpYwjKxhTgZODSeRUPhKQxidBehg0TmXgQUc3oGUhGFPGCuQtFgLT0xvOSnw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/signature-v4-multi-region": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-format-url": "3.804.0", + "@smithy/middleware-endpoint": "^4.1.3", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.806.0.tgz", + "integrity": "sha512-IrbEnpKvG8d9rUWAvsF28g8qBlQ02FaOxn4cGXtTs0b0BGMK1M+cGQrYjJ7Ak08kIXDxBqsdIlZGsKYr+Ds9+w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/signature-v4": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.806.0.tgz", + "integrity": "sha512-I6SxcsvV7yinJZmPgGullFHS0tsTKa7K3jEc5dmyCz8X+kZPfsWNffZmtmnCvWXPqMXWBvK6hVaxwomx79yeHA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/nested-clients": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz", + "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.804.0.tgz", + "integrity": "sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.806.0.tgz", + "integrity": "sha512-3YRRgZ+qFuWDdm5uAbxKsr65UAil4KkrFKua9f4m7Be3v24ETiFOOqhanFUIk9/WOtvzF7oFEiDjYKDGlwV2xg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "@smithy/util-endpoints": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-format-url": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.804.0.tgz", + "integrity": "sha512-1nOwSg7B0bj5LFGor0udF/HSdvDuSCxP+NC0IuSOJ5RgJ2AphFo03pLtK2UwArHY5WWZaejAEz5VBND6xxOEhA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/querystring-builder": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz", + "integrity": "sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.804.0.tgz", + "integrity": "sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.806.0.tgz", + "integrity": "sha512-Az2e4/gmPZ4BpB7QRj7U76I+fctXhNcxlcgsaHnMhvt+R30nvzM2EhsyBUvsWl8+r9bnLeYt9BpvEZeq2ANDzA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.804.0.tgz", + "integrity": "sha512-JbGWp36IG9dgxtvC6+YXwt5WDZYfuamWFtVfK6fQpnmL96dx+GUPOXPKRWdw67WLKf2comHY28iX2d3z35I53Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -3711,6 +4629,27 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@iconify/react": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@iconify/react/-/react-6.0.0.tgz", + "integrity": "sha512-eqNscABVZS8eCpZLU/L5F5UokMS9mnCf56iS1nM9YYHdH8ZxqZL9zyjSwW60IOQFsXZkilbBiv+1paMXBhSQnw==", + "license": "MIT", + "dependencies": { + "@iconify/types": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/cyberalien" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.34.1", "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", @@ -8781,6 +9720,22 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@payloadcms/plugin-cloud-storage": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@payloadcms/plugin-cloud-storage/-/plugin-cloud-storage-3.37.0.tgz", + "integrity": "sha512-iJVjAIQoFoVKWLdG1d2/HvXHcdlQ2alFR2siXUsyTRC0JDAbJkIgIQJvCu0goMS8fb65UnikpSeI9iYKRMoqpQ==", + "license": "MIT", + "dependencies": { + "@payloadcms/ui": "3.37.0", + "find-node-modules": "^2.1.3", + "range-parser": "^1.2.1" + }, + "peerDependencies": { + "payload": "3.37.0", + "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020", + "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020" + } + }, "node_modules/@payloadcms/richtext-lexical": { "version": "3.37.0", "resolved": "https://registry.npmjs.org/@payloadcms/richtext-lexical/-/richtext-lexical-3.37.0.tgz", @@ -8857,6 +9812,24 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@payloadcms/storage-s3": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@payloadcms/storage-s3/-/storage-s3-3.37.0.tgz", + "integrity": "sha512-9lygwru7gR0mlbtWK4oMnXhENPHbUAmppW3MKqyAIUN2mpAj/Du3uc3XqyfzBOQGhPofUQ+nN44GURujeRha5g==", + "license": "MIT", + "dependencies": { + "@aws-sdk/client-s3": "^3.614.0", + "@aws-sdk/lib-storage": "^3.614.0", + "@aws-sdk/s3-request-presigner": "^3.614.0", + "@payloadcms/plugin-cloud-storage": "3.37.0" + }, + "engines": { + "node": "^18.20.2 || >=20.9.0" + }, + "peerDependencies": { + "payload": "3.37.0" + } + }, "node_modules/@payloadcms/translations": { "version": "3.37.0", "resolved": "https://registry.npmjs.org/@payloadcms/translations/-/translations-3.37.0.tgz", @@ -9842,6 +10815,723 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@smithy/abort-controller": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.2.tgz", + "integrity": "sha512-Sl/78VDtgqKxN2+1qduaVE140XF+Xg+TafkncspwM4jFP/LHr76ZHmIY/y3V1M0mMLNk+Je6IGbzxy23RSToMw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.0.0.tgz", + "integrity": "sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.0.0.tgz", + "integrity": "sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-base64": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.2.tgz", + "integrity": "sha512-7r6mZGwb5LmLJ+zPtkLoznf2EtwEuSWdtid10pjGl/7HefCE4mueOkrfki8JCUm99W6UfP47/r3tbxx9CfBN5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.3.1.tgz", + "integrity": "sha512-W7AppgQD3fP1aBmo8wWo0id5zeR2/aYRy067vZsDVaa6v/mdhkg6DxXwEVuSPjZl+ZnvWAQbUMCd5ckw38+tHQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.0.3", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-stream": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.4.tgz", + "integrity": "sha512-jN6M6zaGVyB8FmNGG+xOPQB4N89M1x97MMdMnm1ESjljLS3Qju/IegQizKujaNcy2vXAvrz0en8bobe6E55FEA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.1", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.0.2.tgz", + "integrity": "sha512-p+f2kLSK7ZrXVfskU/f5dzksKTewZk8pJLPvER3aFHPt76C2MxD9vNatSfLzzQSQB4FNO96RK4PSXfhD1TTeMQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.2.0", + "@smithy/util-hex-encoding": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.0.2.tgz", + "integrity": "sha512-CepZCDs2xgVUtH7ZZ7oDdZFH8e6Y2zOv8iiX6RhndH69nlojCALSKK+OXwZUgOtUZEUaZ5e1hULVCHYbCn7pug==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.1.0.tgz", + "integrity": "sha512-1PI+WPZ5TWXrfj3CIoKyUycYynYJgZjuQo8U+sphneOtjsgrttYybdqESFReQrdWJ+LKt6NEdbYzmmfDBmjX2A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.0.2.tgz", + "integrity": "sha512-C5bJ/C6x9ENPMx2cFOirspnF9ZsBVnBMtP6BdPl/qYSuUawdGQ34Lq0dMcf42QTjUZgWGbUIZnz6+zLxJlb9aw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.0.2.tgz", + "integrity": "sha512-St8h9JqzvnbB52FtckiHPN4U/cnXcarMniXRXTKn0r4b4XesZOGiAyUdj1aXbqqn1icSqBlzzUsCl6nPB018ng==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.2.tgz", + "integrity": "sha512-+9Dz8sakS9pe7f2cBocpJXdeVjMopUDLgZs1yWeu7h++WqSbjUYv/JAJwKwXw1HV6gq1jyWjxuyn24E2GhoEcQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.0", + "@smithy/querystring-builder": "^4.0.2", + "@smithy/types": "^4.2.0", + "@smithy/util-base64": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.0.2.tgz", + "integrity": "sha512-3g188Z3DyhtzfBRxpZjU8R9PpOQuYsbNnyStc/ZVS+9nVX1f6XeNOa9IrAh35HwwIZg+XWk8bFVtNINVscBP+g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^5.0.0", + "@smithy/chunked-blob-reader-native": "^4.0.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.2.tgz", + "integrity": "sha512-VnTpYPnRUE7yVhWozFdlxcYknv9UN7CeOqSrMH+V877v4oqtVYuoqhIhtSjmGPvYrYnAkaM61sLMKHvxL138yg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.0.2.tgz", + "integrity": "sha512-POWDuTznzbIwlEXEvvXoPMS10y0WKXK790soe57tFRfvf4zBHyzE529HpZMqmDdwG9MfFflnyzndUQ8j78ZdSg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.2.tgz", + "integrity": "sha512-GatB4+2DTpgWPday+mnUkoumP54u/MDM/5u44KF9hIu8jF0uafZtQLcdfIKkIcUNuF/fBojpLEHZS/56JqPeXQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz", + "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.0.2.tgz", + "integrity": "sha512-Hc0R8EiuVunUewCse2syVgA2AfSRco3LyAv07B/zCOMa+jpXI9ll+Q21Nc6FAlYPcpNcAXqBzMhNs1CD/pP2bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.2.tgz", + "integrity": "sha512-hAfEXm1zU+ELvucxqQ7I8SszwQ4znWMbNv6PLMndN83JJN41EPuS93AIyh2N+gJ6x8QFhzSO6b7q2e6oClDI8A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.4.tgz", + "integrity": "sha512-qWyYvszzvDjT2AxRvEpNhnMTo8QX9MCAtuSA//kYbXewb+2mEGQCk1UL4dNIrKLcF5KT11dOJtxFYT0kzajq5g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.3.1", + "@smithy/middleware-serde": "^4.0.3", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-middleware": "^4.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.5.tgz", + "integrity": "sha512-eQguCTA2TRGyg4P7gDuhRjL2HtN5OKJXysq3Ufj0EppZe4XBmSyKIvVX9ws9KkD3lkJskw1tfE96wMFsiUShaw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.1", + "@smithy/protocol-http": "^5.1.0", + "@smithy/service-error-classification": "^4.0.3", + "@smithy/smithy-client": "^4.2.4", + "@smithy/types": "^4.2.0", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.3.tgz", + "integrity": "sha512-rfgDVrgLEVMmMn0BI8O+8OVr6vXzjV7HZj57l0QxslhzbvVfikZbVfBVthjLHqib4BW44QhcIgJpvebHlRaC9A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.2.tgz", + "integrity": "sha512-eSPVcuJJGVYrFYu2hEq8g8WWdJav3sdrI4o2c6z/rjnYDd3xH9j9E7deZQCzFn4QvGPouLngH3dQ+QVTxv5bOQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.1.tgz", + "integrity": "sha512-1slS5jf5icHETwl5hxEVBj+mh6B+LbVW4yRINsGtUKH+nxM5Pw2H59+qf+JqYFCHp9jssG4vX81f5WKnjMN3Vw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.4.tgz", + "integrity": "sha512-/mdqabuAT3o/ihBGjL94PUbTSPSRJ0eeVTdgADzow0wRJ0rN4A27EOrtlK56MYiO1fDvlO3jVTCxQtQmK9dZ1g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/querystring-builder": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.2.tgz", + "integrity": "sha512-wNRoQC1uISOuNc2s4hkOYwYllmiyrvVXWMtq+TysNRVQaHm4yoafYQyjN/goYZS+QbYlPIbb/QRjaUZMuzwQ7A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.0.tgz", + "integrity": "sha512-KxAOL1nUNw2JTYrtviRRjEnykIDhxc84qMBzxvu1MUfQfHTuBlCG7PA6EdVwqpJjH7glw7FqQoFxUJSyBQgu7g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.2.tgz", + "integrity": "sha512-NTOs0FwHw1vimmQM4ebh+wFQvOwkEf/kQL6bSM1Lock+Bv4I89B3hGYoUEPkmvYPkDKyp5UdXJYu+PoTQ3T31Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "@smithy/util-uri-escape": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.2.tgz", + "integrity": "sha512-v6w8wnmZcVXjfVLjxw8qF7OwESD9wnpjp0Dqry/Pod0/5vcEA3qxCr+BhbOHlxS8O+29eLpT3aagxXGwIoEk7Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.3.tgz", + "integrity": "sha512-FTbcajmltovWMjj3tksDQdD23b2w6gH+A0DYA1Yz3iSpjDj8fmkwy62UnXcWMy4d5YoMoSyLFHMfkEVEzbiN8Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.2.tgz", + "integrity": "sha512-J9/gTWBGVuFZ01oVA6vdb4DAjf1XbDhK6sLsu3OS9qmLrS6KB5ygpeHiM3miIbj1qgSJ96GYszXFWv6ErJ8QEw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.0.tgz", + "integrity": "sha512-4t5WX60sL3zGJF/CtZsUQTs3UrZEDO2P7pEaElrekbLqkWPYkgqNW1oeiNYC6xXifBnT9dVBOnNQRvOE9riU9w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.0.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-uri-escape": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.2.4.tgz", + "integrity": "sha512-oolSEpr/ABUtVmFMdNgi6sSXsK4csV9n4XM9yXgvDJGRa32tQDUdv9s+ztFZKccay1AiTWLSGsyDj2xy1gsv7Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.3.1", + "@smithy/middleware-endpoint": "^4.1.4", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-stream": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.2.0.tgz", + "integrity": "sha512-7eMk09zQKCO+E/ivsjQv+fDlOupcFUCSC/L2YUPgwhvowVGWbPQHjEFcmjt7QQ4ra5lyowS92SV53Zc6XD4+fg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.2.tgz", + "integrity": "sha512-Bm8n3j2ScqnT+kJaClSVCMeiSenK6jVAzZCNewsYWuZtnBehEz4r2qP0riZySZVfzB+03XZHJeqfmJDkeeSLiQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz", + "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz", + "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz", + "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz", + "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz", + "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.12.tgz", + "integrity": "sha512-0vPKiC+rXWMq397tsa/RFcO/kJ1UsibgNCXScMsRwzm9WMT4QjGf43zVPWZ5hPLu3z/1XddiZFIlKcu2j/yUuQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.0.2", + "@smithy/smithy-client": "^4.2.4", + "@smithy/types": "^4.2.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.12.tgz", + "integrity": "sha512-zCx9noceM3Pw2jvcJ3w3RbvKnPe3lCo6txH9ksZj6CeRZPkvRZPLXmKVSOvDr9QQP3VRq/WnBLd+LTZAL7+0IQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.1.2", + "@smithy/credential-provider-imds": "^4.0.4", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/property-provider": "^4.0.2", + "@smithy/smithy-client": "^4.2.4", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.4.tgz", + "integrity": "sha512-VfFATC1bmZLV2858B/O1NpMcL32wYo8DPPhHxYxDCodDl3f3mSZ5oJheW1IF91A0EeAADz2WsakM/hGGPGNKLg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz", + "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.2.tgz", + "integrity": "sha512-6GDamTGLuBQVAEuQ4yDQ+ti/YINf/MEmIegrEeg7DdB/sld8BX1lqt9RRuIcABOhAGTA50bRbPzErez7SlDtDQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.3.tgz", + "integrity": "sha512-DPuYjZQDXmKr/sNvy9Spu8R/ESa2e22wXZzSAY6NkjOLj6spbIje/Aq8rT97iUMdDj0qHMRIe+bTxvlU74d9Ng==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.0.3", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.0.tgz", + "integrity": "sha512-Vj1TtwWnuWqdgQI6YTUF5hQ/0jmFiOYsc51CSMgj7QfyO+RF4EnT2HNjoviNlOOmgzgvf3f5yno+EiC4vrnaWQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/types": "^4.2.0", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz", + "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz", + "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.0.3.tgz", + "integrity": "sha512-JtaY3FxmD+te+KSI2FJuEcfNC9T/DGGVf551babM7fAaXhjJUt7oSYurH1Devxd2+BOSUACCgt3buinx4UnmEA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@standard-schema/utils": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", @@ -15561,7 +17251,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -15796,6 +17485,12 @@ "dev": true, "license": "ISC" }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "license": "MIT" + }, "node_modules/boxen": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", @@ -18269,6 +19964,15 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/detect-libc": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", @@ -20298,7 +22002,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.8.x" @@ -20341,7 +22044,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dev": true, "license": "MIT", "dependencies": { "homedir-polyfill": "^1.0.1" @@ -20677,6 +22379,28 @@ ], "license": "BSD-3-Clause" }, + "node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", @@ -20997,6 +22721,16 @@ "node": ">=8" } }, + "node_modules/find-node-modules": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", + "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", + "license": "MIT", + "dependencies": { + "findup-sync": "^4.0.0", + "merge": "^2.1.1" + } + }, "node_modules/find-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-2.0.0.tgz", @@ -21074,6 +22808,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "license": "MIT", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -21777,7 +23526,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, "license": "MIT", "dependencies": { "global-prefix": "^1.0.1", @@ -21792,7 +23540,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dev": true, "license": "MIT", "dependencies": { "expand-tilde": "^2.0.2", @@ -21809,7 +23556,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -22206,7 +23952,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, "license": "MIT", "dependencies": { "parse-passwd": "^1.0.0" @@ -22733,14 +24478,12 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, "license": "ISC" }, "node_modules/inspect-with-kind": { @@ -23472,7 +25215,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -23502,7 +25244,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, "license": "ISC" }, "node_modules/isobject": { @@ -26699,6 +28440,12 @@ "map-or-similar": "^1.5.0" } }, + "node_modules/merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "license": "MIT" + }, "node_modules/merge-descriptors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", @@ -27257,7 +29004,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -27271,7 +29017,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -29460,7 +31205,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -31476,7 +33220,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -31829,7 +33572,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -32169,7 +33911,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "dev": true, "license": "MIT", "dependencies": { "expand-tilde": "^2.0.0", @@ -32431,7 +34172,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -34140,6 +35880,16 @@ } } }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, "node_modules/stream-shift": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", @@ -34223,7 +35973,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -34536,6 +36285,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strnum": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/strtok3": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-9.1.1.tgz", @@ -36644,7 +38405,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, "license": "MIT" }, "node_modules/utils-merge": { @@ -36661,7 +38421,6 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" diff --git a/package.json b/package.json index 83c78d8..6069068 100644 --- a/package.json +++ b/package.json @@ -28,10 +28,13 @@ "dependencies": { "@ant-design/icons": "^6.0.0", "@hookform/resolvers": "^5.0.1", + "@iconify/react": "^6.0.0", "@payloadcms/db-postgres": "^3.37.0", "@payloadcms/next": "^3.37.0", "@payloadcms/richtext-lexical": "^3.37.0", + "@payloadcms/storage-s3": "^3.37.0", "@radix-ui/react-slot": "^1.2.0", + "@smithy/node-http-handler": "^4.0.4", "@tanstack/react-query": "^5.74.4", "@tanstack/react-store": "^0.7.0", "@tanstack/react-table": "^8.21.2",