From ee8fa05f3d96068e859b09f773a2b4305dbbc73a Mon Sep 17 00:00:00 2001 From: Rui Sousa <149320958+rccsousa@users.noreply.github.com> Date: Mon, 14 Oct 2024 09:53:51 +0100 Subject: [PATCH] upgrade payload to ver. 3.0 (#53) Why: - current version of the project is running on Payload 2.0 which required hosting Payload on a separate Express server; - the project wasn't building nor deploying to Netlify properly given this issue; How: - upgraded the project dependencies and files to use Payload verion 3.0 Detailed update notes: Changes: - Updated `ESLint`, `TypeScript` and `NextJS` config files to comply with Payload 3.0; - Updated existing collections to comply with Payload 3.0 configuration options. - Renamed `podcast-episodes` collection to `podcasts`. - Refactored content fetchers to use Payload Local API instead of GraphQL queries. - Refectored components that use the above mentioned fetchers to reflect changes; - Updated blogpost content to use Payload 3.0 Lexical Serializer, no longer relying on dangerouslySetInnerHTML. Cleanup: - Removed deprecated Payload 2.0 files. - Moved Payload Admin Panel to the `./app` folder, as it is now treated as a page by Next.js. Roadmap: - Reorganize project files to improve navigation by separating Payload components from frontend components. --- .eslintignore | 12 + .eslintrc.cjs | 11 + .eslintrc.js | 13 - .github/workflows/node.js.yml | 4 +- .gitignore | 7 + eject.ts | 36 - next-env.d.ts | 2 +- next.config.js | 61 +- package.json | 147 +- .../ardian-lumi-6Woj_wozqmA-unsplash (1).jpg | 0 public/media/john-doe.jpg | 0 .../nightfall-future-bass-music-228100.mp3 | 0 .../nightfall-future-bass-music-228101.mp3 | 0 public/media/subscribe-card-image.png | Bin 0 -> 210829 bytes redirects.js | 75 +- .../Footer.ts => Globals/Footer/config.ts} | 10 +- src/Globals/Footer/hooks/revalidateFooter.ts | 11 + .../Header.ts => Globals/Header/config.ts} | 10 +- src/Globals/Header/hooks/revalidateHeader.ts | 11 + src/Globals/HubHighlights/config.ts | 22 + src/access/anyone.ts | 3 + src/access/authenticated.ts | 9 + src/access/authenticatedOrPublished.ts | 13 + src/app/(pages)/[slug]/page.tsx | 58 +- src/app/(pages)/authors/[slug]/page.tsx | 22 +- src/app/(pages)/blogposts/[slug]/page.tsx | 82 +- src/app/(pages)/case-studies/[slug]/page.tsx | 36 +- src/app/{ => (pages)}/layout.tsx | 10 +- .../{ => (pages)}/next/exit-preview/route.ts | 3 +- src/app/(pages)/next/preview/route.ts | 89 + src/app/(pages)/page.tsx | 6 + .../(pages)/podcast-episodes/[slug]/page.tsx | 29 - .../podcast-episodes/[slug]/styles.module.css | 30 - src/app/(pages)/podcasts/[slug]/page.tsx | 34 + .../(pages)/podcasts/[slug]/styles.module.css | 0 .../talks-and-roundtables/[slug]/page.tsx | 16 +- .../admin/[[...segments]]/not-found.tsx | 24 + .../(payload)/admin/[[...segments]]/page.tsx | 24 + src/app/(payload)/admin/importMap.js | 71 + src/app/(payload)/api/[...slug]/route.ts | 10 + .../(payload)/api/graphql-playground/route.ts | 6 + src/app/(payload)/api/graphql/route.ts | 6 + src/app/(payload)/custom.scss | 0 src/app/(payload)/layout.tsx | 21 + src/app/_api/fetchContentFromAuthor.ts | 42 - src/app/_api/fetchDoc.ts | 84 - src/app/_api/fetchDocs.ts | 50 - src/app/_api/fetchGlobals.ts | 133 - src/app/_api/getMe.ts | 49 - src/app/_api/shared.ts | 3 - src/app/_api/token.ts | 1 - src/app/_blocks/AuthorContentGrid/index.tsx | 24 +- src/app/_blocks/BlogpostChapters/index.tsx | 75 +- src/app/_blocks/BlogpostContent/index.tsx | 24 +- .../_blocks/BlogpostContent/styles.module.css | 3 + .../_blocks/EpisodeContent/ListenOn/index.tsx | 10 +- src/app/_blocks/EpisodeContent/index.tsx | 4 +- .../_blocks/EpisodeHead/AudioPlayer/index.tsx | 114 +- src/app/_blocks/EpisodeHead/index.tsx | 28 +- src/app/_blocks/EpisodeHead/styles.module.css | 8 + .../HubContentGrid/NavBar/Buttons/index.tsx | 10 +- .../NavBar/DropdownMenu/index.tsx | 22 +- .../_blocks/HubContentGrid/NavBar/index.tsx | 18 +- src/app/_blocks/HubContentGrid/index.tsx | 60 +- src/app/_blocks/HubHead/Highlights/index.tsx | 5 +- src/app/_blocks/HubHead/index.tsx | 2 +- src/app/_blocks/RelatedContent/index.tsx | 48 +- src/app/_blocks/Subscribe/styles.module.css | 3 + src/app/_components/AdminBar/index.tsx | 68 - src/app/_components/AuthorPill/index.tsx | 26 +- .../_components/AuthorPill/styles.module.css | 1 + src/app/_components/AuthorSummary/index.tsx | 8 +- src/app/_components/CMSLink/index.tsx | 48 - src/app/_components/ContentCard/index.tsx | 21 +- .../_components/ContentCard/styles.module.css | 14 + src/app/_components/ContentRenderer/index.tsx | 8 - src/app/_components/FeaturedImage/index.tsx | 29 +- src/app/_components/Footer/index.tsx | 18 +- src/app/_components/Header/index.tsx | 16 +- src/app/_components/PostSummary/index.tsx | 23 +- .../_components/RecommendedPosts/index.tsx | 1 + src/app/_components/SocialLinks/index.tsx | 2 +- src/app/_icons/icons.tsx | 6 +- src/app/_icons/socialIcons.tsx | 47 - src/app/_interfaces/ContentTypeArrays.ts | 6 +- src/app/_providers/Auth/index.tsx | 218 - src/app/_providers/index.tsx | 11 - src/app/_utilities/calculateTotalArticles.ts | 6 +- src/app/_utilities/contentFetchers.ts | 110 + src/app/_utilities/fetcher.ts | 34 - src/app/_utilities/filterArticles.ts | 39 - src/app/_utilities/filterContent.ts | 39 + src/app/_utilities/formatDateTime.ts | 2 +- src/app/_utilities/getImage.ts | 8 +- src/app/_utilities/useEpisodeDuration.ts | 1 + src/app/next/preview/route.ts | 49 - src/app/next/revalidate/route.ts | 27 - src/app/page.tsx | 7 - src/blocks/ArchiveBlock/Component.tsx | 65 + src/blocks/ArchiveBlock/config.ts | 94 + src/blocks/Banner/Component.tsx | 26 + src/blocks/Banner/config.ts | 37 + src/blocks/CallToAction/Component.tsx | 29 + src/blocks/CallToAction/config.ts | 42 + src/blocks/Code/Component.client.tsx | 31 + src/blocks/Code/Component.tsx | 21 + src/blocks/Code/config.ts | 33 + src/blocks/Content/Component.tsx | 49 + .../index.ts => blocks/Content/config.ts} | 39 +- src/blocks/Form/Checkbox/index.tsx | 44 + src/blocks/Form/Component.tsx | 171 + src/blocks/Form/Country/index.tsx | 63 + src/blocks/Form/Country/options.ts | 982 ++ src/blocks/Form/Email/index.tsx | 34 + src/blocks/Form/Error/index.tsx | 5 + src/blocks/Form/Message/index.tsx | 12 + src/blocks/Form/Number/index.tsx | 32 + src/blocks/Form/Select/index.tsx | 60 + src/blocks/Form/State/index.tsx | 61 + src/blocks/Form/State/options.ts | 52 + src/blocks/Form/Text/index.tsx | 33 + src/blocks/Form/Textarea/index.tsx | 45 + src/blocks/Form/Width/index.tsx | 13 + src/blocks/Form/buildInitialFormState.tsx | 42 + .../Form/index.ts => blocks/Form/config.ts} | 43 +- src/blocks/Form/fields.tsx | 21 + src/blocks/MediaBlock/Component.tsx | 70 + .../index.ts => blocks/MediaBlock/config.ts} | 6 +- src/blocks/RelatedPosts/Component.tsx | 31 + src/blocks/RenderBlocks.tsx | 52 + src/{payload => }/collections/Authors.ts | 43 +- .../BlogPosts.ts => collections/Blogposts.ts} | 31 +- src/{payload => }/collections/CaseStudies.ts | 18 +- src/collections/Categories.ts | 26 + src/collections/Media.ts | 45 + src/collections/Pages/hooks/revalidatePage.ts | 30 + src/collections/Pages/index.ts | 127 + .../Podcasts.ts} | 30 +- .../Posts/hooks/populateAuthors.ts | 30 + src/collections/Posts/hooks/revalidatePost.ts | 30 + src/collections/Posts/index.ts | 218 + .../collections/TalksAndRoundtables.ts | 24 +- src/collections/Users/index.ts | 28 + src/components/AdminBar/index.scss | 7 + src/components/AdminBar/index.tsx | 85 + .../BeforeDashboard/SeedButton/index.tsx | 31 +- src/components/BeforeDashboard/index.scss | 24 + .../components/BeforeDashboard/index.tsx | 17 +- .../components/BeforeLogin/index.tsx | 4 +- src/components/Card/index.tsx | 82 + src/components/CollectionArchive/index.tsx | 34 + src/components/Link/index.tsx | 66 + src/components/LivePreviewListener/index.tsx | 11 + src/components/Logo/Logo.tsx | 12 + src/components/Media/ImageMedia/index.tsx | 78 + src/components/Media/VideoMedia/index.tsx | 44 + src/components/Media/index.tsx | 25 + src/components/Media/types.ts | 20 + src/components/PageRange/index.tsx | 54 + src/components/Pagination/index.tsx | 101 + src/components/PayloadRedirects/index.tsx | 50 + src/components/RichText/index.tsx | 43 + src/components/RichText/nodeFormat.tsx | 125 + src/components/RichText/serialize.tsx | 211 + src/components/ui/button.tsx | 49 + src/components/ui/card.tsx | 56 + src/components/ui/checkbox.tsx | 27 + src/components/ui/input.tsx | 23 + src/components/ui/label.tsx | 20 + src/components/ui/pagination.tsx | 100 + src/components/ui/select.tsx | 152 + src/components/ui/textarea.tsx | 22 + src/cssVariables.js | 20 + src/endpoints/seed/contact-form.ts | 111 + src/endpoints/seed/contact-page.ts | 48 + src/endpoints/seed/home-static.ts | 88 + src/endpoints/seed/home.ts | 668 + src/endpoints/seed/image-1.ts | 67 + src/endpoints/seed/image-2.ts | 67 + src/endpoints/seed/image-hero1.webp | 0 src/endpoints/seed/image-post1.webp | 0 src/endpoints/seed/image-post2.webp | 0 src/endpoints/seed/image-post3.webp | 0 src/endpoints/seed/index.ts | 364 + src/endpoints/seed/post-1.ts | 305 + src/endpoints/seed/post-2.ts | 227 + src/endpoints/seed/post-3.ts | 263 + src/endpoints/seedHandler.ts | 27 + src/{payload => }/fields/link.ts | 70 +- src/{payload => }/fields/linkGroup.ts | 14 +- src/fields/slug/SlugComponent.tsx | 90 + src/fields/slug/formatSlug.ts | 25 + src/fields/slug/index.scss | 12 + src/fields/slug/index.ts | 54 + src/heros/HighImpact/index.tsx | 46 + src/heros/LowImpact/index.tsx | 25 + src/heros/MediumImpact/index.tsx | 46 + src/heros/PostHero/index.tsx | 88 + src/heros/RenderHero.tsx | 25 + .../fields/hero.ts => heros/config.ts} | 47 +- src/{payload => }/hooks/formatSlug.ts | 4 +- src/hooks/populatePublishedAt.ts | 15 + src/hooks/revalidateRedirects.ts | 11 + src/payload-types.ts | 944 + src/payload.config.ts | 215 + src/payload/access/admins.ts | 10 - src/payload/access/adminsOrPublished.ts | 15 - src/payload/access/anyone.ts | 3 - src/payload/blocks/CallToAction/index.ts | 23 - src/payload/collections/Categories.ts | 19 - src/payload/collections/Media.ts | 29 - .../collections/Pages/hooks/revalidatePage.ts | 15 - src/payload/collections/Pages/index.ts | 72 - .../collections/Users/access/adminsAndUser.ts | 21 - src/payload/collections/Users/checkRole.ts | 16 - .../Users/hooks/ensureFirstUserIsAdmin.ts | 22 - .../Users/hooks/loginAfterCreate.ts | 29 - src/payload/collections/Users/index.ts | 60 - .../components/BeforeDashboard/index.scss | 24 - src/payload/dotenv.js | 3 - src/payload/emptyModuleMock.js | 4 - src/payload/fields/invertBackground.ts | 6 - src/payload/fields/richText/elements.ts | 18 - src/payload/fields/richText/index.ts | 108 - .../fields/richText/label/Button/index.tsx | 16 - .../fields/richText/label/Element/index.scss | 9 - .../fields/richText/label/Element/index.tsx | 16 - .../fields/richText/label/Icon/index.tsx | 18 - src/payload/fields/richText/label/index.ts | 14 - src/payload/fields/richText/label/plugin.ts | 21 - .../richText/largeBody/Button/index.tsx | 16 - .../richText/largeBody/Element/index.scss | 5 - .../richText/largeBody/Element/index.tsx | 16 - .../fields/richText/largeBody/Icon/index.tsx | 18 - .../fields/richText/largeBody/index.ts | 14 - .../fields/richText/largeBody/plugin.ts | 21 - src/payload/fields/richText/leaves.ts | 5 - src/payload/fields/slug.ts | 23 - src/payload/generated-schema.graphql | 14226 ---------------- src/payload/globals/Settings.ts | 28 - src/payload/globals/Socials.ts | 26 - src/payload/hooks/populatePublishedAt.ts | 15 - src/payload/hooks/revalidatePage.ts | 35 - src/payload/payload-types.ts | 404 - src/payload/payload.config.ts | 83 - src/payload/utilities/formatSlug.ts | 27 - src/payload/utilities/revalidate.ts | 27 - src/providers/HeaderTheme/index.tsx | 37 + src/providers/Theme/InitTheme/index.tsx | 50 + src/providers/Theme/ThemeSelector/index.tsx | 48 + src/providers/Theme/ThemeSelector/types.ts | 5 + src/providers/Theme/index.tsx | 57 + src/providers/Theme/shared.ts | 17 + src/providers/Theme/types.ts | 10 + src/providers/index.tsx | 14 + src/search/Component.tsx | 41 + src/search/beforeSync.ts | 44 + src/search/fieldOverrides.ts | 61 + src/server.default.ts | 36 - src/server.ts | 53 - .../_utilities => utilities}/canUseDOM.ts | 0 src/utilities/cn.ts | 6 + src/{payload => }/utilities/deepMerge.ts | 2 +- src/utilities/formatDateTime.ts | 20 + src/utilities/generateMeta.ts | 36 + src/utilities/generatePreviewPath.ts | 29 + src/utilities/getDocument.ts | 31 + src/utilities/getGlobals.ts | 26 + .../_utilities => utilities}/getMeUser.ts | 9 +- src/utilities/getRedirects.ts | 26 + src/utilities/mergeOpenGraph.ts | 23 + src/utilities/toKebabCase.ts | 5 + src/utilities/useClickableCard.ts | 107 + src/utilities/useDebounce.ts | 17 + tsconfig.json | 29 +- tsconfig.server.json | 14 - yarn.lock | 9434 +++++----- 277 files changed, 15421 insertions(+), 21770 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.cjs delete mode 100644 .eslintrc.js delete mode 100644 eject.ts rename src/payload/components/BeforeLogin/index.scss => public/media/ardian-lumi-6Woj_wozqmA-unsplash (1).jpg (100%) create mode 100644 public/media/john-doe.jpg create mode 100644 public/media/nightfall-future-bass-music-228100.mp3 create mode 100644 public/media/nightfall-future-bass-music-228101.mp3 create mode 100644 public/media/subscribe-card-image.png rename src/{payload/globals/Footer.ts => Globals/Footer/config.ts} (58%) create mode 100644 src/Globals/Footer/hooks/revalidateFooter.ts rename src/{payload/globals/Header.ts => Globals/Header/config.ts} (58%) create mode 100644 src/Globals/Header/hooks/revalidateHeader.ts create mode 100644 src/Globals/HubHighlights/config.ts create mode 100644 src/access/anyone.ts create mode 100644 src/access/authenticated.ts create mode 100644 src/access/authenticatedOrPublished.ts rename src/app/{ => (pages)}/layout.tsx (74%) rename src/app/{ => (pages)}/next/exit-preview/route.ts (73%) create mode 100644 src/app/(pages)/next/preview/route.ts create mode 100644 src/app/(pages)/page.tsx delete mode 100644 src/app/(pages)/podcast-episodes/[slug]/page.tsx delete mode 100644 src/app/(pages)/podcast-episodes/[slug]/styles.module.css create mode 100644 src/app/(pages)/podcasts/[slug]/page.tsx create mode 100644 src/app/(pages)/podcasts/[slug]/styles.module.css create mode 100644 src/app/(payload)/admin/[[...segments]]/not-found.tsx create mode 100644 src/app/(payload)/admin/[[...segments]]/page.tsx create mode 100644 src/app/(payload)/admin/importMap.js create mode 100644 src/app/(payload)/api/[...slug]/route.ts create mode 100644 src/app/(payload)/api/graphql-playground/route.ts create mode 100644 src/app/(payload)/api/graphql/route.ts create mode 100644 src/app/(payload)/custom.scss create mode 100644 src/app/(payload)/layout.tsx delete mode 100644 src/app/_api/fetchContentFromAuthor.ts delete mode 100644 src/app/_api/fetchDoc.ts delete mode 100644 src/app/_api/fetchDocs.ts delete mode 100644 src/app/_api/fetchGlobals.ts delete mode 100644 src/app/_api/getMe.ts delete mode 100644 src/app/_api/shared.ts delete mode 100644 src/app/_api/token.ts delete mode 100644 src/app/_components/AdminBar/index.tsx delete mode 100644 src/app/_components/CMSLink/index.tsx delete mode 100644 src/app/_components/ContentRenderer/index.tsx delete mode 100644 src/app/_providers/Auth/index.tsx delete mode 100644 src/app/_providers/index.tsx create mode 100644 src/app/_utilities/contentFetchers.ts delete mode 100644 src/app/_utilities/fetcher.ts delete mode 100644 src/app/_utilities/filterArticles.ts create mode 100644 src/app/_utilities/filterContent.ts delete mode 100644 src/app/next/preview/route.ts delete mode 100644 src/app/next/revalidate/route.ts delete mode 100644 src/app/page.tsx create mode 100644 src/blocks/ArchiveBlock/Component.tsx create mode 100644 src/blocks/ArchiveBlock/config.ts create mode 100644 src/blocks/Banner/Component.tsx create mode 100644 src/blocks/Banner/config.ts create mode 100644 src/blocks/CallToAction/Component.tsx create mode 100644 src/blocks/CallToAction/config.ts create mode 100644 src/blocks/Code/Component.client.tsx create mode 100644 src/blocks/Code/Component.tsx create mode 100644 src/blocks/Code/config.ts create mode 100644 src/blocks/Content/Component.tsx rename src/{payload/blocks/Content/index.ts => blocks/Content/config.ts} (55%) create mode 100644 src/blocks/Form/Checkbox/index.tsx create mode 100644 src/blocks/Form/Component.tsx create mode 100644 src/blocks/Form/Country/index.tsx create mode 100644 src/blocks/Form/Country/options.ts create mode 100644 src/blocks/Form/Email/index.tsx create mode 100644 src/blocks/Form/Error/index.tsx create mode 100644 src/blocks/Form/Message/index.tsx create mode 100644 src/blocks/Form/Number/index.tsx create mode 100644 src/blocks/Form/Select/index.tsx create mode 100644 src/blocks/Form/State/index.tsx create mode 100644 src/blocks/Form/State/options.ts create mode 100644 src/blocks/Form/Text/index.tsx create mode 100644 src/blocks/Form/Textarea/index.tsx create mode 100644 src/blocks/Form/Width/index.tsx create mode 100644 src/blocks/Form/buildInitialFormState.tsx rename src/{payload/blocks/Form/index.ts => blocks/Form/config.ts} (50%) create mode 100644 src/blocks/Form/fields.tsx create mode 100644 src/blocks/MediaBlock/Component.tsx rename src/{payload/blocks/MediaBlock/index.ts => blocks/MediaBlock/config.ts} (77%) create mode 100644 src/blocks/RelatedPosts/Component.tsx create mode 100644 src/blocks/RenderBlocks.tsx rename src/{payload => }/collections/Authors.ts (69%) rename src/{payload/collections/BlogPosts.ts => collections/Blogposts.ts} (75%) rename src/{payload => }/collections/CaseStudies.ts (77%) create mode 100644 src/collections/Categories.ts create mode 100644 src/collections/Media.ts create mode 100644 src/collections/Pages/hooks/revalidatePage.ts create mode 100644 src/collections/Pages/index.ts rename src/{payload/collections/PodcastEpisodes.ts => collections/Podcasts.ts} (79%) create mode 100644 src/collections/Posts/hooks/populateAuthors.ts create mode 100644 src/collections/Posts/hooks/revalidatePost.ts create mode 100644 src/collections/Posts/index.ts rename src/{payload => }/collections/TalksAndRoundtables.ts (73%) create mode 100644 src/collections/Users/index.ts create mode 100644 src/components/AdminBar/index.scss create mode 100644 src/components/AdminBar/index.tsx rename src/{payload => }/components/BeforeDashboard/SeedButton/index.tsx (55%) create mode 100644 src/components/BeforeDashboard/index.scss rename src/{payload => }/components/BeforeDashboard/index.tsx (90%) rename src/{payload => }/components/BeforeLogin/index.tsx (56%) create mode 100644 src/components/Card/index.tsx create mode 100644 src/components/CollectionArchive/index.tsx create mode 100644 src/components/Link/index.tsx create mode 100644 src/components/LivePreviewListener/index.tsx create mode 100644 src/components/Logo/Logo.tsx create mode 100644 src/components/Media/ImageMedia/index.tsx create mode 100644 src/components/Media/VideoMedia/index.tsx create mode 100644 src/components/Media/index.tsx create mode 100644 src/components/Media/types.ts create mode 100644 src/components/PageRange/index.tsx create mode 100644 src/components/Pagination/index.tsx create mode 100644 src/components/PayloadRedirects/index.tsx create mode 100644 src/components/RichText/index.tsx create mode 100644 src/components/RichText/nodeFormat.tsx create mode 100644 src/components/RichText/serialize.tsx create mode 100644 src/components/ui/button.tsx create mode 100644 src/components/ui/card.tsx create mode 100644 src/components/ui/checkbox.tsx create mode 100644 src/components/ui/input.tsx create mode 100644 src/components/ui/label.tsx create mode 100644 src/components/ui/pagination.tsx create mode 100644 src/components/ui/select.tsx create mode 100644 src/components/ui/textarea.tsx create mode 100644 src/cssVariables.js create mode 100644 src/endpoints/seed/contact-form.ts create mode 100644 src/endpoints/seed/contact-page.ts create mode 100644 src/endpoints/seed/home-static.ts create mode 100644 src/endpoints/seed/home.ts create mode 100644 src/endpoints/seed/image-1.ts create mode 100644 src/endpoints/seed/image-2.ts create mode 100644 src/endpoints/seed/image-hero1.webp create mode 100644 src/endpoints/seed/image-post1.webp create mode 100644 src/endpoints/seed/image-post2.webp create mode 100644 src/endpoints/seed/image-post3.webp create mode 100644 src/endpoints/seed/index.ts create mode 100644 src/endpoints/seed/post-1.ts create mode 100644 src/endpoints/seed/post-2.ts create mode 100644 src/endpoints/seed/post-3.ts create mode 100644 src/endpoints/seedHandler.ts rename src/{payload => }/fields/link.ts (77%) rename src/{payload => }/fields/linkGroup.ts (56%) create mode 100644 src/fields/slug/SlugComponent.tsx create mode 100644 src/fields/slug/formatSlug.ts create mode 100644 src/fields/slug/index.scss create mode 100644 src/fields/slug/index.ts create mode 100644 src/heros/HighImpact/index.tsx create mode 100644 src/heros/LowImpact/index.tsx create mode 100644 src/heros/MediumImpact/index.tsx create mode 100644 src/heros/PostHero/index.tsx create mode 100644 src/heros/RenderHero.tsx rename src/{payload/fields/hero.ts => heros/config.ts} (59%) rename src/{payload => }/hooks/formatSlug.ts (84%) create mode 100644 src/hooks/populatePublishedAt.ts create mode 100644 src/hooks/revalidateRedirects.ts create mode 100644 src/payload-types.ts create mode 100644 src/payload.config.ts delete mode 100644 src/payload/access/admins.ts delete mode 100644 src/payload/access/adminsOrPublished.ts delete mode 100644 src/payload/access/anyone.ts delete mode 100644 src/payload/blocks/CallToAction/index.ts delete mode 100644 src/payload/collections/Categories.ts delete mode 100644 src/payload/collections/Media.ts delete mode 100644 src/payload/collections/Pages/hooks/revalidatePage.ts delete mode 100644 src/payload/collections/Pages/index.ts delete mode 100644 src/payload/collections/Users/access/adminsAndUser.ts delete mode 100644 src/payload/collections/Users/checkRole.ts delete mode 100644 src/payload/collections/Users/hooks/ensureFirstUserIsAdmin.ts delete mode 100644 src/payload/collections/Users/hooks/loginAfterCreate.ts delete mode 100644 src/payload/collections/Users/index.ts delete mode 100644 src/payload/components/BeforeDashboard/index.scss delete mode 100644 src/payload/dotenv.js delete mode 100644 src/payload/emptyModuleMock.js delete mode 100644 src/payload/fields/invertBackground.ts delete mode 100644 src/payload/fields/richText/elements.ts delete mode 100644 src/payload/fields/richText/index.ts delete mode 100644 src/payload/fields/richText/label/Button/index.tsx delete mode 100644 src/payload/fields/richText/label/Element/index.scss delete mode 100644 src/payload/fields/richText/label/Element/index.tsx delete mode 100644 src/payload/fields/richText/label/Icon/index.tsx delete mode 100644 src/payload/fields/richText/label/index.ts delete mode 100644 src/payload/fields/richText/label/plugin.ts delete mode 100644 src/payload/fields/richText/largeBody/Button/index.tsx delete mode 100644 src/payload/fields/richText/largeBody/Element/index.scss delete mode 100644 src/payload/fields/richText/largeBody/Element/index.tsx delete mode 100644 src/payload/fields/richText/largeBody/Icon/index.tsx delete mode 100644 src/payload/fields/richText/largeBody/index.ts delete mode 100644 src/payload/fields/richText/largeBody/plugin.ts delete mode 100644 src/payload/fields/richText/leaves.ts delete mode 100644 src/payload/fields/slug.ts delete mode 100644 src/payload/generated-schema.graphql delete mode 100644 src/payload/globals/Settings.ts delete mode 100644 src/payload/globals/Socials.ts delete mode 100644 src/payload/hooks/populatePublishedAt.ts delete mode 100644 src/payload/hooks/revalidatePage.ts delete mode 100644 src/payload/payload-types.ts delete mode 100644 src/payload/payload.config.ts delete mode 100644 src/payload/utilities/formatSlug.ts delete mode 100644 src/payload/utilities/revalidate.ts create mode 100644 src/providers/HeaderTheme/index.tsx create mode 100644 src/providers/Theme/InitTheme/index.tsx create mode 100644 src/providers/Theme/ThemeSelector/index.tsx create mode 100644 src/providers/Theme/ThemeSelector/types.ts create mode 100644 src/providers/Theme/index.tsx create mode 100644 src/providers/Theme/shared.ts create mode 100644 src/providers/Theme/types.ts create mode 100644 src/providers/index.tsx create mode 100644 src/search/Component.tsx create mode 100644 src/search/beforeSync.ts create mode 100644 src/search/fieldOverrides.ts delete mode 100644 src/server.default.ts delete mode 100644 src/server.ts rename src/{app/_utilities => utilities}/canUseDOM.ts (100%) create mode 100644 src/utilities/cn.ts rename src/{payload => }/utilities/deepMerge.ts (94%) create mode 100644 src/utilities/formatDateTime.ts create mode 100644 src/utilities/generateMeta.ts create mode 100644 src/utilities/generatePreviewPath.ts create mode 100644 src/utilities/getDocument.ts create mode 100644 src/utilities/getGlobals.ts rename src/{app/_utilities => utilities}/getMeUser.ts (81%) create mode 100644 src/utilities/getRedirects.ts create mode 100644 src/utilities/mergeOpenGraph.ts create mode 100644 src/utilities/toKebabCase.ts create mode 100644 src/utilities/useClickableCard.ts create mode 100644 src/utilities/useDebounce.ts delete mode 100644 tsconfig.server.json diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..fa111f7 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,12 @@ +.tmp +**/.git +**/.hg +**/.pnp.* +**/.svn +**/.yarn/** +**/build +**/dist/** +**/node_modules +**/temp +playwright.config.ts +jest.config.js diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..b859f66 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,11 @@ +module.exports = { + extends: 'next', + root: true, + parserOptions: { + project: ['./tsconfig.json'], + tsconfigRootDir: __dirname, + }, + rules: { + 'react/jsx-key': 'off', + } +} diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 3991ea5..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - root: true, - extends: ['plugin:@next/next/recommended', '@payloadcms'], - ignorePatterns: ['**/payload-types.ts'], - // plugins: ['prettier'], - rules: { - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/array-type': 'off', - 'import/extensions': 'off', - 'function-paren-newline': 'off', - 'prettier/prettier': 'off', - }, -} diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index bf245a4..a629486 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -1,6 +1,6 @@ name: Lint -on: +on: push: branches: ["main"] pull_request: @@ -19,7 +19,7 @@ jobs: uses: actions/setup-node@v4 with: node-version: 22 - + - name: Install Node.js dependencies run: npm install --force diff --git a/.gitignore b/.gitignore index 27be4a3..ff392f9 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,10 @@ node_modules # TEMP /src/app/(pages)/test-page/ + +.netlify +tsconfig.tsbuildinfo +*.mp3 +*.png +*.jpg +*.webp diff --git a/eject.ts b/eject.ts deleted file mode 100644 index 2ed2a53..0000000 --- a/eject.ts +++ /dev/null @@ -1,36 +0,0 @@ -import fs from 'fs' -import path from 'path' - -// Run this script to eject the front-end from this template -// This will remove all template-specific files and directories -// See `yarn eject` in `package.json` for the exact command -// See `./README.md#eject` for more information - -const files = ['./next.config.js', './next-env.d.ts', './redirects.js'] -const directories = ['./src/app'] - -const eject = async (): Promise<void> => { - files.forEach(file => { - fs.unlinkSync(path.join(__dirname, file)) - }) - - directories.forEach(directory => { - fs.rm(path.join(__dirname, directory), { recursive: true }, err => { - if (err) throw err - }) - }) - - // create a new `./src/server.ts` file - // use contents from `./src/server.default.ts` - const serverFile = path.join(__dirname, './src/server.ts') - const serverDefaultFile = path.join(__dirname, './src/server.default.ts') - fs.copyFileSync(serverDefaultFile, serverFile) - - // remove `'plugin:@next/next/recommended', ` from `./.eslintrc.js` - const eslintConfigFile = path.join(__dirname, './.eslintrc.js') - const eslintConfig = fs.readFileSync(eslintConfigFile, 'utf8') - const updatedEslintConfig = eslintConfig.replace(`'plugin:@next/next/recommended', `, '') - fs.writeFileSync(eslintConfigFile, updatedEslintConfig, 'utf8') -} - -eject() diff --git a/next-env.d.ts b/next-env.d.ts index 4f11a03..40c3d68 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -2,4 +2,4 @@ /// <reference types="next/image-types/global" /> // NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. diff --git a/next.config.js b/next.config.js index 5dbb1d0..e8e6935 100644 --- a/next.config.js +++ b/next.config.js @@ -1,50 +1,25 @@ -/** @type {import('next').NextConfig} */ -const ContentSecurityPolicy = require('./csp') -const redirects = require('./redirects') +import { withPayload } from '@payloadcms/next/withPayload' -const nextConfig = { - reactStrictMode: true, - swcMinify: true, - images: { - domains: ['localhost', process.env.NEXT_PUBLIC_SERVER_URL] - .filter(Boolean) - .map(url => url.replace(/https?:\/\//, '')), - }, - redirects, - async headers() { - const headers = [] +import redirects from './redirects.js' - // Prevent search engines from indexing the site if it is not live - // This is useful for staging environments before they are ready to go live - // To allow robots to crawl the site, use the `NEXT_PUBLIC_IS_LIVE` env variable - // You may want to also use this variable to conditionally render any tracking scripts - if (!process.env.NEXT_PUBLIC_IS_LIVE) { - headers.push({ - headers: [ - { - key: 'X-Robots-Tag', - value: 'noindex', - }, - ], - source: '/:path*', - }) - } +const NEXT_PUBLIC_SERVER_URL = process.env.NEXT_PUBLIC_SERVER_URL || 'http://localhost:3000' - // Set the `Content-Security-Policy` header as a security measure to prevent XSS attacks - // It works by explicitly whitelisting trusted sources of content for your website - // This will block all inline scripts and styles except for those that are allowed - headers.push({ - source: '/(.*)', - headers: [ - { - key: 'Content-Security-Policy', - value: ContentSecurityPolicy, - }, - ], - }) +/** @type {import('next').NextConfig} */ +const nextConfig = { + images: { + remotePatterns: [ + ...[NEXT_PUBLIC_SERVER_URL /* 'https://example.com' */].map((item) => { + const url = new URL(item) - return headers + return { + hostname: url.hostname, + protocol: url.protocol.replace(':', ''), + } + }), + ], }, + reactStrictMode: true, + redirects, } -module.exports = nextConfig +export default withPayload(nextConfig) diff --git a/package.json b/package.json index 0d27372..70d7925 100644 --- a/package.json +++ b/package.json @@ -1,74 +1,105 @@ { - "name": "content-sub", - "description": "Website template for Payload", + "name": "payload3beta", "version": "1.0.0", - "main": "dist/server.js", + "description": "Website template for Payload", "license": "MIT", + "type": "module", "scripts": { - "dev": "cross-env PAYLOAD_CONFIG_PATH=src/payload/payload.config.ts nodemon", - "seed": "rm -rf media && cross-env PAYLOAD_SEED=true PAYLOAD_DROP_DATABASE=true PAYLOAD_CONFIG_PATH=src/payload/payload.config.ts ts-node src/server.ts", - "build:payload": "cross-env PAYLOAD_CONFIG_PATH=src/payload/payload.config.ts payload build", - "build:server": "tsc --project tsconfig.server.json", - "build:next": "cross-env PAYLOAD_CONFIG_PATH=dist/payload/payload.config.js NEXT_BUILD=true node dist/server.js", - "build": "cross-env NODE_ENV=production yarn build:payload && yarn build:server && yarn copyfiles && yarn build:next", - "serve": "cross-env PAYLOAD_CONFIG_PATH=dist/payload/payload.config.js NODE_ENV=production node dist/server.js", - "eject": "yarn remove next react react-dom @next/eslint-plugin-next && ts-node eject.ts", - "copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,js}\" dist/", - "generate:types": "cross-env PAYLOAD_CONFIG_PATH=src/payload/payload.config.ts payload generate:types", - "generate:graphQLSchema": "cross-env PAYLOAD_CONFIG_PATH=src/payload/payload.config.ts payload generate:graphQLSchema", - "lint": "eslint src", - "lint:fix": "eslint --fix --ext .ts,.tsx src", - "payload": "cross-env PAYLOAD_CONFIG_PATH=src/payload/payload.config.ts payload" + "build": "cross-env NODE_OPTIONS=--no-deprecation next build", + "dev": "cross-env NODE_OPTIONS=--no-deprecation next dev", + "dev:prod": "cross-env NODE_OPTIONS=--no-deprecation rm -rf .next && pnpm build && pnpm start", + "generate:importmap": "cross-env NODE_OPTIONS=--no-deprecation payload generate:importmap", + "generate:types": "cross-env NODE_OPTIONS=--no-deprecation payload generate:types", + "ii": "cross-env NODE_OPTIONS=--no-deprecation pnpm --ignore-workspace install", + "lint": "cross-env NODE_OPTIONS=--no-deprecation next lint", + "lint:fix": "cross-env NODE_OPTIONS=--no-deprecation next lint --fix", + "payload": "cross-env NODE_OPTIONS=--no-deprecation payload", + "reinstall": "cross-env NODE_OPTIONS=--no-deprecation rm -rf node_modules && rm pnpm-lock.yaml && pnpm --ignore-workspace install", + "start": "cross-env NODE_OPTIONS=--no-deprecation next start" }, "dependencies": { - "@payloadcms/bundler-webpack": "^1.0.0", - "@payloadcms/db-mongodb": "^1.0.0", - "@payloadcms/plugin-cloud": "^3.0.0", - "@payloadcms/plugin-nested-docs": "^1.0.8", - "@payloadcms/plugin-redirects": "^1.0.0", - "@payloadcms/plugin-seo": "^1.0.10", - "@payloadcms/richtext-lexical": "^0.11.3", - "@payloadcms/richtext-slate": "^1.0.0", + "@aws-sdk/client-sso-oidc": "^3.667.0", + "@faceless-ui/modal": "3.0.0-beta.2", + "@faceless-ui/scroll-info": "2.0.0-beta.0", + "@lexical/headless": "0.18.0", + "@lexical/link": "0.18.0", + "@lexical/list": "0.18.0", + "@lexical/mark": "0.18.0", + "@lexical/markdown": "0.18.0", + "@lexical/react": "0.18.0", + "@lexical/rich-text": "0.18.0", + "@lexical/selection": "0.18.0", + "@lexical/table": "0.18.0", + "@lexical/utils": "0.18.0", + "@payloadcms/db-mongodb": "beta", + "@payloadcms/live-preview-react": "beta", + "@payloadcms/next": "beta", + "@payloadcms/plugin-cloud": "beta", + "@payloadcms/plugin-form-builder": "beta", + "@payloadcms/plugin-nested-docs": "beta", + "@payloadcms/plugin-redirects": "beta", + "@payloadcms/plugin-search": "beta", + "@payloadcms/plugin-seo": "beta", + "@payloadcms/richtext-lexical": "beta", + "@payloadcms/ui": "beta", + "@radix-ui/react-checkbox": "^1.0.4", + "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-select": "^2.0.0", + "@radix-ui/react-slot": "^1.0.2", + "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", - "copyfiles": "^2.4.1", "cross-env": "^7.0.3", - "dotenv": "^8.2.0", - "escape-html": "^1.0.3", - "express": "^4.19.2", - "isomorphic-dompurify": "^2.15.0", - "next": "13.5.2", - "payload": "^2.0.0", + "geist": "^1.3.0", + "graphql": "^16.8.2", + "install": "^0.13.0", + "isomorphic-dompurify": "^2.16.0", + "jsonwebtoken": "9.0.2", + "lexical": "^0.18.0", + "lucide-react": "^0.378.0", + "monaco-editor": "^0.25.0", + "next": "15.0.0-canary.173", + "npm": "^10.9.0", + "payload": "beta", "payload-admin-bar": "^1.0.6", - "qs": "6.11.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "prism-react-renderer": "^2.3.1", + "react": "^19.0.0-rc-09111202-20241011", + "react-dom": "^19.0.0-rc-09111202-20241011", "react-hook-form": "7.45.4", - "react-router-dom": "5.3.4", - "react-share": "^5.1.0" + "react-share": "^5.1.0", + "sharp": "0.32.6", + "tailwind-merge": "^2.3.0", + "tailwindcss-animate": "^1.0.7", + "yjs": "^13.5.22" }, "devDependencies": { "@next/eslint-plugin-next": "^13.1.6", - "@payloadcms/eslint-config": "^0.0.1", - "@swc/core": "1.6.1", + "@payloadcms/eslint-config": "^1.1.1", + "@tailwindcss/typography": "^0.5.13", "@types/escape-html": "^1.0.2", - "@types/express": "^4.17.9", - "@types/node": "18.11.3", - "@types/qs": "^6.9.8", - "@types/react": "18.0.21", - "@typescript-eslint/eslint-plugin": "^5.51.0", - "@typescript-eslint/parser": "^5.51.0", - "eslint": "^8.19.0", - "eslint-config-prettier": "^8.5.0", - "eslint-import-resolver-alias": "^1.1.2", - "eslint-plugin-filenames": "^1.3.2", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-simple-import-sort": "^10.0.0", - "nodemon": "^2.0.6", - "prettier": "^2.7.1", - "slate": "0.91.4", - "ts-node": "10.9.1", - "typescript": "^4.8.4" + "@types/jsonwebtoken": "^9.0.6", + "@types/node": "22.5.4", + "@types/react": "npm:types-react@19.0.0-rc.1", + "@types/react-dom": "npm:types-react-dom@19.0.0-rc.1", + "autoprefixer": "^10.4.19", + "copyfiles": "^2.4.1", + "eslint": "^8", + "eslint-config-next": "15.0.0-canary.173", + "postcss": "^8.4.38", + "prettier": "^3.0.3", + "tailwindcss": "^3.4.3", + "typescript": "5.6.2" + }, + "engines": { + "node": "^18.20.2 || >=20.9.0" + }, + "pnpm": { + "overrides": { + "@types/react": "npm:types-react@19.0.0-rc.1", + "@types/react-dom": "npm:types-react-dom@19.0.0-rc.1" + } + }, + "overrides": { + "@types/react": "npm:types-react@19.0.0-rc.1", + "@types/react-dom": "npm:types-react-dom@19.0.0-rc.1" } } diff --git a/src/payload/components/BeforeLogin/index.scss b/public/media/ardian-lumi-6Woj_wozqmA-unsplash (1).jpg similarity index 100% rename from src/payload/components/BeforeLogin/index.scss rename to public/media/ardian-lumi-6Woj_wozqmA-unsplash (1).jpg diff --git a/public/media/john-doe.jpg b/public/media/john-doe.jpg new file mode 100644 index 0000000..e69de29 diff --git a/public/media/nightfall-future-bass-music-228100.mp3 b/public/media/nightfall-future-bass-music-228100.mp3 new file mode 100644 index 0000000..e69de29 diff --git a/public/media/nightfall-future-bass-music-228101.mp3 b/public/media/nightfall-future-bass-music-228101.mp3 new file mode 100644 index 0000000..e69de29 diff --git a/public/media/subscribe-card-image.png b/public/media/subscribe-card-image.png new file mode 100644 index 0000000000000000000000000000000000000000..5af35bc353ffe31490d95118656d1fed1c349a3d GIT binary patch literal 210829 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�UXlGDSPdaY$U(42Lj{5wWNt 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 FV1feoc=iAQ literal 0 HcmV?d00001 diff --git a/redirects.js b/redirects.js index dbb6e5e..21b76ec 100644 --- a/redirects.js +++ b/redirects.js @@ -1,11 +1,6 @@ -// Note: This will not work in dev mode and will throw an error upon startup -// This is because the Payload APIs are not yet running when the Next.js server starts -// This is not a problem in production as Payload is booted up before building Next.js -// For this reason the errors can be silently ignored in dev mode - -module.exports = async () => { +const redirects = async () => { const internetExplorerRedirect = { - source: '/:path((?!ie-incompatible.html$).*)', // all pages except the incompatibility page + destination: '/ie-incompatible.html', has: [ { type: 'header', @@ -14,68 +9,12 @@ module.exports = async () => { }, ], permanent: false, - destination: '/ie-incompatible.html', + source: '/:path((?!ie-incompatible.html$).*)', // all pages except the incompatibility page } - try { - const redirectsRes = await fetch( - `${process.env.NEXT_PUBLIC_SERVER_URL}/api/redirects?limit=1000&depth=1`, - ) - - const redirectsData = await redirectsRes.json() - const { docs } = redirectsData - - let dynamicRedirects = [] - - if (docs) { - docs.forEach(doc => { - const { from, to: { type, url, reference } = {} } = doc - - let source = from - .replace(process.env.NEXT_PUBLIC_SERVER_URL, '') - .split('?')[0] - .toLowerCase() - - if (source.endsWith('/')) source = source.slice(0, -1) // a trailing slash will break this redirect + const redirects = [internetExplorerRedirect] - let destination = '/' - - if (type === 'custom' && url) { - destination = url.replace(process.env.NEXT_PUBLIC_SERVER_URL, '') - } - - if ( - type === 'reference' && - typeof reference.value === 'object' && - reference?.value?._status === 'published' - ) { - destination = `${process.env.NEXT_PUBLIC_SERVER_URL}/${ - reference.relationTo !== 'pages' ? `${reference.relationTo}/` : '' - }${reference.value.slug}` - } - - const redirect = { - source, - destination, - permanent: true, - } - - if (source.startsWith('/') && destination && source !== destination) { - return dynamicRedirects.push(redirect) - } - - return - }) - } - - const redirects = [internetExplorerRedirect, ...dynamicRedirects] - - return redirects - } catch (error) { - if (process.env.NODE_ENV === 'production') { - console.error(`Error configuring redirects: ${error}`) // eslint-disable-line no-console - } - - return [] - } + return redirects } + +export default redirects diff --git a/src/payload/globals/Footer.ts b/src/Globals/Footer/config.ts similarity index 58% rename from src/payload/globals/Footer.ts rename to src/Globals/Footer/config.ts index 44102c6..692bc3b 100644 --- a/src/payload/globals/Footer.ts +++ b/src/Globals/Footer/config.ts @@ -1,6 +1,7 @@ -import type { GlobalConfig } from 'payload/types' +import type { GlobalConfig } from 'payload' -import link from '../fields/link' +import { link } from '@/fields/link' +import { revalidateFooter } from './hooks/revalidateFooter' export const Footer: GlobalConfig = { slug: 'footer', @@ -11,12 +12,15 @@ export const Footer: GlobalConfig = { { name: 'navItems', type: 'array', - maxRows: 6, fields: [ link({ appearances: false, }), ], + maxRows: 6, }, ], + hooks: { + afterChange: [revalidateFooter], + }, } diff --git a/src/Globals/Footer/hooks/revalidateFooter.ts b/src/Globals/Footer/hooks/revalidateFooter.ts new file mode 100644 index 0000000..f6267c0 --- /dev/null +++ b/src/Globals/Footer/hooks/revalidateFooter.ts @@ -0,0 +1,11 @@ +import type { GlobalAfterChangeHook } from 'payload' + +import { revalidateTag } from 'next/cache' + +export const revalidateFooter: GlobalAfterChangeHook = ({ doc, req: { payload } }) => { + payload.logger.info(`Revalidating footer`) + + revalidateTag('global_footer') + + return doc +} diff --git a/src/payload/globals/Header.ts b/src/Globals/Header/config.ts similarity index 58% rename from src/payload/globals/Header.ts rename to src/Globals/Header/config.ts index 570678c..30f833c 100644 --- a/src/payload/globals/Header.ts +++ b/src/Globals/Header/config.ts @@ -1,6 +1,7 @@ -import type { GlobalConfig } from 'payload/types' +import type { GlobalConfig } from 'payload' -import link from '../fields/link' +import { link } from '@/fields/link' +import { revalidateHeader } from './hooks/revalidateHeader' export const Header: GlobalConfig = { slug: 'header', @@ -11,12 +12,15 @@ export const Header: GlobalConfig = { { name: 'navItems', type: 'array', - maxRows: 6, fields: [ link({ appearances: false, }), ], + maxRows: 6, }, ], + hooks: { + afterChange: [revalidateHeader], + }, } diff --git a/src/Globals/Header/hooks/revalidateHeader.ts b/src/Globals/Header/hooks/revalidateHeader.ts new file mode 100644 index 0000000..7315cc2 --- /dev/null +++ b/src/Globals/Header/hooks/revalidateHeader.ts @@ -0,0 +1,11 @@ +import type { GlobalAfterChangeHook } from 'payload' + +import { revalidateTag } from 'next/cache' + +export const revalidateHeader: GlobalAfterChangeHook = ({ doc, req: { payload } }) => { + payload.logger.info(`Revalidating header`) + + revalidateTag('global_header') + + return doc +} diff --git a/src/Globals/HubHighlights/config.ts b/src/Globals/HubHighlights/config.ts new file mode 100644 index 0000000..e9e6ece --- /dev/null +++ b/src/Globals/HubHighlights/config.ts @@ -0,0 +1,22 @@ +import type { GlobalConfig } from "payload"; + +export const HomePageSettings: GlobalConfig = { + slug: "homepage-settings", + access: { + read: () => true, + }, + fields: [ + { + name: "mainHighlight", + label: "Main Highlight", + type: "relationship", + relationTo: "blogposts", + }, + { + name: "secondaryHighlight", + label: "Secondary Highlight", + type: "relationship", + relationTo: "blogposts", + }, + ], + } diff --git a/src/access/anyone.ts b/src/access/anyone.ts new file mode 100644 index 0000000..bf37c3a --- /dev/null +++ b/src/access/anyone.ts @@ -0,0 +1,3 @@ +import type { Access } from 'payload' + +export const anyone: Access = () => true diff --git a/src/access/authenticated.ts b/src/access/authenticated.ts new file mode 100644 index 0000000..e2dc34d --- /dev/null +++ b/src/access/authenticated.ts @@ -0,0 +1,9 @@ +import type { AccessArgs } from 'payload' + +import type { User } from '@/payload-types' + +type isAuthenticated = (args: AccessArgs<User>) => boolean + +export const authenticated: isAuthenticated = ({ req: { user } }) => { + return Boolean(user) +} diff --git a/src/access/authenticatedOrPublished.ts b/src/access/authenticatedOrPublished.ts new file mode 100644 index 0000000..e49198f --- /dev/null +++ b/src/access/authenticatedOrPublished.ts @@ -0,0 +1,13 @@ +import type { Access } from 'payload' + +export const authenticatedOrPublished: Access = ({ req: { user } }) => { + if (user) { + return true + } + + return { + _status: { + equals: 'published', + }, + } +} diff --git a/src/app/(pages)/[slug]/page.tsx b/src/app/(pages)/[slug]/page.tsx index e58597a..def2905 100644 --- a/src/app/(pages)/[slug]/page.tsx +++ b/src/app/(pages)/[slug]/page.tsx @@ -1,37 +1,35 @@ -import HubContentGrid from '../../_blocks/HubContentGrid' -import { Subscribe } from '../../_blocks/Subscribe' -import SearchBar from '../../_components/SearchBar' -import { ALL_CONTENT } from '../../_graphql/allContent' -import { fetcher } from '../../_utilities/fetcher' -import styles from './styles.module.css' - -import { fetchSettings } from '@/app/_api/fetchGlobals' -import HubHead from '@/app/_blocks/HubHead' - -// Payload Cloud caches all files through Cloudflare, so we don't need Next.js to cache them as well -// This means that we can turn off Next.js data caching and instead rely solely on the Cloudflare CDN -// To do this, we include the `no-cache` header on the fetch requests used to get the data for this page -// But we also need to force Next.js to dynamically render this page on each request for preview mode to work -// See https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamic -// If you are not using Payload Cloud then this line can be removed, see `../../../README.md#cache` - -export default async function Page({ params: { slug = 'home' } }) { - const articles = await fetcher({ query: ALL_CONTENT }) - const highlights = await fetchSettings() - - console.log(articles) - console.log(highlights); +import { fetchAllContentByType, fetchGlobals } from "@/app/_utilities/contentFetchers"; +import HubContentGrid from "@/app/_blocks/HubContentGrid"; +import HubHead from "@/app/_blocks/HubHead"; +import SearchBar from "@/app/_components/SearchBar"; + +export default async function Page() { + + const content = { + Blogposts: await fetchAllContentByType("blogposts"), + Podcasts: await fetchAllContentByType("podcasts"), + CaseStudies: await fetchAllContentByType("case-studies"), + TalksAndRoundtables: await fetchAllContentByType("talks-and-roundtables"), + }; + + + const highlights = await fetchGlobals("homepage-settings", 3); return ( - <> + + <div> + <HubHead highlights={highlights} /> - {/* Search Bar */} + {/* Search Bar*/} <SearchBar /> - {/* Content Grid */} - <HubContentGrid articles={articles} /> - <Subscribe /> - </> - ) + + {/* Content Grid*/} + <HubContentGrid content={content} /> + + </div> + + + ); } diff --git a/src/app/(pages)/authors/[slug]/page.tsx b/src/app/(pages)/authors/[slug]/page.tsx index fe14d25..896d079 100644 --- a/src/app/(pages)/authors/[slug]/page.tsx +++ b/src/app/(pages)/authors/[slug]/page.tsx @@ -1,33 +1,29 @@ -import { notFound } from 'next/navigation' - -import { fetchContentFromAuthor } from '../../../_api/fetchContentFromAuthor' -import { fetchDoc } from '../../../_api/fetchDoc' +import { fetchContentFromAuthor } from '@/app/_utilities/contentFetchers' import AuthorContentGrid from '../../../_blocks/AuthorContentGrid' import { Subscribe } from '../../../_blocks/Subscribe' import AuthorSummary from '../../../_components/AuthorSummary' import BackButton from '../../../_components/BackButton' import styles from './styles.module.css' -export const dynamic = 'force-dynamic' +import { fetchContentBySlug } from "@/app/_utilities/contentFetchers"; +import { Author } from "@/payload-types"; -export default async function ContributorPage({ params: { slug } }) { - // TODO: update fetchDoc to include error handling instead of making it on-page - const author = await fetchDoc({ collection: 'authors', slug }) - const contentFromAuthor = await fetchContentFromAuthor({ authorID: author.id }) +export const dynamic = 'force-dynamic' - if (!author) { - notFound() - } +export default async function ContributorPage({ params: paramsPromise }) { + const { slug } = await paramsPromise + const author = await fetchContentBySlug({ slug: slug, type: 'authors' }) + const contentFromAuthor = await fetchContentFromAuthor(author) return ( <div> <div className={styles.container}> <BackButton className={styles.backButton} /> <AuthorSummary author={author} /> - <div></div> </div> <AuthorContentGrid content={contentFromAuthor} /> <Subscribe /> + </div> ) } diff --git a/src/app/(pages)/blogposts/[slug]/page.tsx b/src/app/(pages)/blogposts/[slug]/page.tsx index 07efcae..ffaac58 100644 --- a/src/app/(pages)/blogposts/[slug]/page.tsx +++ b/src/app/(pages)/blogposts/[slug]/page.tsx @@ -1,58 +1,56 @@ -import { notFound } from 'next/navigation' - -import { Blogpost } from '../../../../payload/payload-types' -import { fetchDoc } from '../../../_api/fetchDoc' -import BlogpostChapters from '../../../_blocks/BlogpostChapters' -import BlogpostContent from '../../../_blocks/BlogpostContent' -import { RelatedContent } from '../../../_blocks/RelatedContent' -import { Subscribe } from '../../../_blocks/Subscribe' -import BackButton from '../../../_components/BackButton' -import Categories from '../../../_components/Categories' -import PostSummary from '../../../_components/PostSummary' -import RecommendedPosts from '../../../_components/RecommendedPosts' -import Share from '../../../_components/Share' -import { getChapters } from '../../../_utilities/sanitizeAndAddChapters' -import styles from './styles.module.css' - - -export default async function BlogpostPage({ params: { slug } }) { - const blogpost: Blogpost | null = await fetchDoc({ - collection: 'blogposts', - slug, - }) - - // TODO: implement a fetcher for related content to populate related cards - if (!blogpost) { - notFound() - } - - // instead of destructuring post multiple times, destructure just once here? - const { content_html, categories, relatedPosts } = blogpost - const chapters = getChapters(content_html) + +import BlogpostChapters from "../../../_blocks/BlogpostChapters"; +import BlogpostContent from "../../../_blocks/BlogpostContent"; +import { RelatedContent } from "../../../_blocks/RelatedContent"; +import { Subscribe } from "../../../_blocks/Subscribe"; +import BackButton from "../../../_components/BackButton"; +import Categories from "../../../_components/Categories"; +import PostSummary from "../../../_components/PostSummary"; +import RecommendedPosts from "../../../_components/RecommendedPosts"; +import Share from "../../../_components/Share"; +import styles from "./styles.module.css"; + + +import { fetchContentBySlug } from "@/app/_utilities/contentFetchers"; +import { Blogpost } from "@/payload-types"; + +export default async function BlogpostPage({ params: paramsPromise }) { + const { slug } = await paramsPromise; + // @ts-ignore + const blogpost : Blogpost = await fetchContentBySlug({ + slug: slug, + type: "blogposts", + depth: 3, + }); return ( <div> <div className={styles.headContainer}> - {/* Head Block*/} - <BackButton className={styles.backButton} color={'var(--soft-white-100)'} /> + <BackButton className={styles.backButton} color={"var(--soft-white-100)"} /> <PostSummary post={blogpost} /> </div> + <div className={styles.contentContainer}> - {/* Left column: Navigation */} - <BlogpostChapters chapters={chapters} /> + {/* Left column: Navigation*/} + <BlogpostChapters /> - {/* Middle column: Content block */} - <BlogpostContent post={blogpost} /> + {/* Middle column: Content block*/} + <BlogpostContent blogpost={blogpost} /> - {/* Right column: Social sharing & recommended */} <div className={styles.sharingAndCategories}> <Share /> - <Categories categories={categories} /> - <RecommendedPosts posts={relatedPosts} /> + <Categories categories={blogpost.categories} /> + + {// @ts-ignore + blogpost.relatedPosts?.length > 0 && <RecommendedPosts posts={blogpost.relatedPosts} /> + } </div> </div> - <RelatedContent relatedContent={relatedPosts} /> + {// @ts-ignore + blogpost.relatedPosts?.length > 0 && <RelatedContent content={blogpost} /> + } <Subscribe /> + </div> - ) + ); } diff --git a/src/app/(pages)/case-studies/[slug]/page.tsx b/src/app/(pages)/case-studies/[slug]/page.tsx index 0e9c692..2e5139d 100644 --- a/src/app/(pages)/case-studies/[slug]/page.tsx +++ b/src/app/(pages)/case-studies/[slug]/page.tsx @@ -1,27 +1,27 @@ -import React from 'react' -import { notFound } from 'next/navigation' - -import { fetchDoc } from '../../../_api/fetchDoc' +// import React from 'react' +// import { notFound } from 'next/navigation' +// +// import { fetchDoc } from '../../../_api/fetchDoc' export const dynamic = 'force-dynamic' -export default async function CaseStudiesPage({ params: { slug } }) { - let content = null - - try { - content = await fetchDoc({ - collection: 'case-studies', - slug, - }) - } catch (err) {} - - if (!content) { - notFound() - } +export default async function CaseStudiesPage() { + // let content = null + // + // try { + // content = await fetchDoc({ + // collection: 'case-studies', + // slug, + // }) + // } catch (err) {} + // + // if (!content) { + // notFound() + // } return ( <div> - <pre>{JSON.stringify(content, null, 2)}</pre> + {/*<pre>{JSON.stringify(content, null, 2)}</pre>*/} </div> ) } diff --git a/src/app/layout.tsx b/src/app/(pages)/layout.tsx similarity index 74% rename from src/app/layout.tsx rename to src/app/(pages)/layout.tsx index 06acc5e..c1b9ad6 100644 --- a/src/app/layout.tsx +++ b/src/app/(pages)/layout.tsx @@ -1,11 +1,11 @@ import React from 'react' import { Metadata } from 'next' -import { Footer } from './_components/Footer' -import { Header } from './_components/Header' -import { mergeOpenGraph } from './_utilities/mergeOpenGraph' +import { Footer } from '../_components/Footer' +import { Header } from '../_components/Header' +import { mergeOpenGraph } from '../_utilities/mergeOpenGraph' -import './_css/globals.css' +import '../_css/globals.css' export default async function RootLayout({ children }: { children: React.ReactNode }) { return ( @@ -15,10 +15,8 @@ export default async function RootLayout({ children }: { children: React.ReactNo <link rel="icon" href="/favicon.svg" type="image/svg+xml" /> </head> <body> - {/* @ts-expect-error */} <Header /> {children} - {/* @ts-expect-error */} <Footer /> </body> </html> diff --git a/src/app/next/exit-preview/route.ts b/src/app/(pages)/next/exit-preview/route.ts similarity index 73% rename from src/app/next/exit-preview/route.ts rename to src/app/(pages)/next/exit-preview/route.ts index 0c15cae..a8e3e69 100644 --- a/src/app/next/exit-preview/route.ts +++ b/src/app/(pages)/next/exit-preview/route.ts @@ -1,6 +1,7 @@ import { draftMode } from 'next/headers' export async function GET(): Promise<Response> { - draftMode().disable() + const draft = await draftMode() + draft.disable() return new Response('Draft mode is disabled') } diff --git a/src/app/(pages)/next/preview/route.ts b/src/app/(pages)/next/preview/route.ts new file mode 100644 index 0000000..4a36569 --- /dev/null +++ b/src/app/(pages)/next/preview/route.ts @@ -0,0 +1,89 @@ +import jwt from 'jsonwebtoken' +import { draftMode } from 'next/headers' +import { redirect } from 'next/navigation' +import { getPayloadHMR } from '@payloadcms/next/utilities' +import configPromise from '@payload-config' +import { CollectionSlug } from 'payload' + +const payloadToken = 'payload-token' + +export async function GET( + req: Request & { + cookies: { + get: (name: string) => { + value: string + } + } + }, +): Promise<Response> { + const payload = await getPayloadHMR({ config: configPromise }) + const token = req.cookies.get(payloadToken)?.value + const { searchParams } = new URL(req.url) + const path = searchParams.get('path') + const collection = searchParams.get('collection') as CollectionSlug + const slug = searchParams.get('slug') + + const previewSecret = searchParams.get('previewSecret') + + if (previewSecret) { + return new Response('You are not allowed to preview this page', { status: 403 }) + } else { + if (!path) { + return new Response('No path provided', { status: 404 }) + } + + if (!collection) { + return new Response('No path provided', { status: 404 }) + } + + if (!slug) { + return new Response('No path provided', { status: 404 }) + } + + if (!token) { + new Response('You are not allowed to preview this page', { status: 403 }) + } + + if (!path.startsWith('/')) { + new Response('This endpoint can only be used for internal previews', { status: 500 }) + } + + let user + + try { + user = jwt.verify(token, payload.secret) + } catch (error) { + payload.logger.error('Error verifying token for live preview:', error) + } + + const draft = await draftMode() + + // You can add additional checks here to see if the user is allowed to preview this page + if (!user) { + draft.disable() + return new Response('You are not allowed to preview this page', { status: 403 }) + } + + // Verify the given slug exists + try { + const docs = await payload.find({ + collection: collection, + where: { + slug: { + equals: slug, + }, + }, + }) + + if (!docs.docs.length) { + return new Response('Document not found', { status: 404 }) + } + } catch (error) { + payload.logger.error('Error verifying token for live preview:', error) + } + + draft.enable() + + redirect(path) + } +} diff --git a/src/app/(pages)/page.tsx b/src/app/(pages)/page.tsx new file mode 100644 index 0000000..1bbcfd3 --- /dev/null +++ b/src/app/(pages)/page.tsx @@ -0,0 +1,6 @@ +import PageTemplate from './[slug]/page' + + +export default PageTemplate + +// export { generateMetadata } diff --git a/src/app/(pages)/podcast-episodes/[slug]/page.tsx b/src/app/(pages)/podcast-episodes/[slug]/page.tsx deleted file mode 100644 index 2d2f74c..0000000 --- a/src/app/(pages)/podcast-episodes/[slug]/page.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { notFound } from 'next/navigation' - -import { fetchDoc } from '../../../_api/fetchDoc' -import EpisodeContent from '../../../_blocks/EpisodeContent' -import EpisodeHead from '../../../_blocks/EpisodeHead' -import { RelatedContent } from '../../../_blocks/RelatedContent' -import { Subscribe } from '../../../_blocks/Subscribe' - -export default async function PodcastEpisodesPage({ params: { slug } }) { - const episode = await fetchDoc({ - collection: 'podcast-episodes', - slug, - }) - - if (!episode) { - notFound() - } - - const { relatedEpisodes } = episode - - return ( - <div> - <EpisodeHead episode={episode} /> - <EpisodeContent episode={episode} /> - <RelatedContent relatedContent={relatedEpisodes} /> - <Subscribe /> - </div> - ) -} diff --git a/src/app/(pages)/podcast-episodes/[slug]/styles.module.css b/src/app/(pages)/podcast-episodes/[slug]/styles.module.css deleted file mode 100644 index 3ec6e05..0000000 --- a/src/app/(pages)/podcast-episodes/[slug]/styles.module.css +++ /dev/null @@ -1,30 +0,0 @@ -.contentContainer { - display: grid; - grid-template-rows: 2fr; - font-family: var(--colfax); - padding-bottom: 40px; -} - -.sharingAndCategories { - grid-row-start: 1; -} - -@media (min-width: 1080px) { - - - .contentContainer { - width: calc(100% - 40px); - margin: 20px auto; - display: grid; - grid-template-columns: 0.3fr 0.6fr 0.3fr; - } - - .sharingAndCategories { - justify-content: left; - padding-left: 40px; - grid-column: 3 / 3; - } - -} - - diff --git a/src/app/(pages)/podcasts/[slug]/page.tsx b/src/app/(pages)/podcasts/[slug]/page.tsx new file mode 100644 index 0000000..5150ff8 --- /dev/null +++ b/src/app/(pages)/podcasts/[slug]/page.tsx @@ -0,0 +1,34 @@ +// import { notFound } from 'next/navigation' +// +// import { fetchDoc } from '../../../_api/fetchDoc' +import EpisodeContent from '../../../_blocks/EpisodeContent' +import EpisodeHead from '../../../_blocks/EpisodeHead' +import { RelatedContent } from '../../../_blocks/RelatedContent' +import { Subscribe } from '../../../_blocks/Subscribe' + +import { fetchContentBySlug } from "@/app/_utilities/contentFetchers"; + +export const dynamic = 'force-dynamic' + +export default async function PodcastEpisodesPage({params: paramsPromise}) { + const { slug } = await paramsPromise + + const episode = await fetchContentBySlug({ + slug: slug, + type: 'podcasts', + depth: 3, + }) + + + + return ( + <div> + + + <EpisodeHead episode={episode} /> + <EpisodeContent episode={episode} /> + <RelatedContent content={episode} /> + <Subscribe /> + </div> + ) +} diff --git a/src/app/(pages)/podcasts/[slug]/styles.module.css b/src/app/(pages)/podcasts/[slug]/styles.module.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/(pages)/talks-and-roundtables/[slug]/page.tsx b/src/app/(pages)/talks-and-roundtables/[slug]/page.tsx index 85a2755..9610fb0 100644 --- a/src/app/(pages)/talks-and-roundtables/[slug]/page.tsx +++ b/src/app/(pages)/talks-and-roundtables/[slug]/page.tsx @@ -1,11 +1,11 @@ -import { notFound } from 'next/navigation' - -import { fetchDoc } from '../../../_api/fetchDoc' +// import { notFound } from 'next/navigation' +// +// import { fetchDoc } from '../../../_api/fetchDoc' export const dynamic = 'force-dynamic' -export default async function TalksAndRoundTablesPage({ params: { slug } }) { - let content = null +export default async function TalksAndRoundTablesPage() { + /* let content = null try { content = await fetchDoc({ @@ -17,11 +17,11 @@ export default async function TalksAndRoundTablesPage({ params: { slug } }) { if (!content) { notFound() } - +*/ return ( <div> - Hello, world! - <pre>{JSON.stringify(content, null, 2)}</pre> + {/*Hello, world! + <pre>{JSON.stringify(content, null, 2)}</pre>*/} </div> ) } diff --git a/src/app/(payload)/admin/[[...segments]]/not-found.tsx b/src/app/(payload)/admin/[[...segments]]/not-found.tsx new file mode 100644 index 0000000..6410836 --- /dev/null +++ b/src/app/(payload)/admin/[[...segments]]/not-found.tsx @@ -0,0 +1,24 @@ +/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */ +/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */ +import type { Metadata } from 'next' + +import config from '@payload-config' +import { NotFoundPage, generatePageMetadata } from '@payloadcms/next/views' +import { importMap } from '../importMap' + +type Args = { + params: Promise<{ + segments: string[] + }> + searchParams: Promise<{ + [key: string]: string | string[] + }> +} + +export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> => + generatePageMetadata({ config, params, searchParams }) + +const NotFound = ({ params, searchParams }: Args) => + NotFoundPage({ config, params, searchParams, importMap }) + +export default NotFound diff --git a/src/app/(payload)/admin/[[...segments]]/page.tsx b/src/app/(payload)/admin/[[...segments]]/page.tsx new file mode 100644 index 0000000..0de685c --- /dev/null +++ b/src/app/(payload)/admin/[[...segments]]/page.tsx @@ -0,0 +1,24 @@ +/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */ +/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */ +import type { Metadata } from 'next' + +import config from '@payload-config' +import { RootPage, generatePageMetadata } from '@payloadcms/next/views' +import { importMap } from '../importMap' + +type Args = { + params: Promise<{ + segments: string[] + }> + searchParams: Promise<{ + [key: string]: string | string[] + }> +} + +export const generateMetadata = ({ params, searchParams }: Args): Promise<Metadata> => + generatePageMetadata({ config, params, searchParams }) + +const Page = ({ params, searchParams }: Args) => + RootPage({ config, params, searchParams, importMap }) + +export default Page diff --git a/src/app/(payload)/admin/importMap.js b/src/app/(payload)/admin/importMap.js new file mode 100644 index 0000000..6e49013 --- /dev/null +++ b/src/app/(payload)/admin/importMap.js @@ -0,0 +1,71 @@ +import { RichTextCell as RichTextCell_0 } from '@payloadcms/richtext-lexical/client' +import { RichTextField as RichTextField_1 } from '@payloadcms/richtext-lexical/client' +import { getGenerateComponentMap as getGenerateComponentMap_2 } from '@payloadcms/richtext-lexical/generateComponentMap' +import { InlineToolbarFeatureClient as InlineToolbarFeatureClient_3 } from '@payloadcms/richtext-lexical/client' +import { FixedToolbarFeatureClient as FixedToolbarFeatureClient_4 } from '@payloadcms/richtext-lexical/client' +import { HeadingFeatureClient as HeadingFeatureClient_5 } from '@payloadcms/richtext-lexical/client' +import { UnderlineFeatureClient as UnderlineFeatureClient_6 } from '@payloadcms/richtext-lexical/client' +import { BoldFeatureClient as BoldFeatureClient_7 } from '@payloadcms/richtext-lexical/client' +import { ItalicFeatureClient as ItalicFeatureClient_8 } from '@payloadcms/richtext-lexical/client' +import { LinkFeatureClient as LinkFeatureClient_9 } from '@payloadcms/richtext-lexical/client' +import { OverviewComponent as OverviewComponent_10 } from '@payloadcms/plugin-seo/client' +import { MetaTitleComponent as MetaTitleComponent_11 } from '@payloadcms/plugin-seo/client' +import { MetaImageComponent as MetaImageComponent_12 } from '@payloadcms/plugin-seo/client' +import { MetaDescriptionComponent as MetaDescriptionComponent_13 } from '@payloadcms/plugin-seo/client' +import { PreviewComponent as PreviewComponent_14 } from '@payloadcms/plugin-seo/client' +import { SlugComponent as SlugComponent_15 } from '@/fields/slug/SlugComponent' +import { HorizontalRuleFeatureClient as HorizontalRuleFeatureClient_16 } from '@payloadcms/richtext-lexical/client' +import { BlocksFeatureClient as BlocksFeatureClient_17 } from '@payloadcms/richtext-lexical/client' +import { UploadFeatureClient as UploadFeatureClient_18 } from '@payloadcms/richtext-lexical/client' +import { BlockquoteFeatureClient as BlockquoteFeatureClient_19 } from '@payloadcms/richtext-lexical/client' +import { RelationshipFeatureClient as RelationshipFeatureClient_20 } from '@payloadcms/richtext-lexical/client' +import { ChecklistFeatureClient as ChecklistFeatureClient_21 } from '@payloadcms/richtext-lexical/client' +import { OrderedListFeatureClient as OrderedListFeatureClient_22 } from '@payloadcms/richtext-lexical/client' +import { UnorderedListFeatureClient as UnorderedListFeatureClient_23 } from '@payloadcms/richtext-lexical/client' +import { IndentFeatureClient as IndentFeatureClient_24 } from '@payloadcms/richtext-lexical/client' +import { AlignFeatureClient as AlignFeatureClient_25 } from '@payloadcms/richtext-lexical/client' +import { ParagraphFeatureClient as ParagraphFeatureClient_26 } from '@payloadcms/richtext-lexical/client' +import { InlineCodeFeatureClient as InlineCodeFeatureClient_27 } from '@payloadcms/richtext-lexical/client' +import { SuperscriptFeatureClient as SuperscriptFeatureClient_28 } from '@payloadcms/richtext-lexical/client' +import { SubscriptFeatureClient as SubscriptFeatureClient_29 } from '@payloadcms/richtext-lexical/client' +import { StrikethroughFeatureClient as StrikethroughFeatureClient_30 } from '@payloadcms/richtext-lexical/client' +import { LinkToDoc as LinkToDoc_31 } from '@payloadcms/plugin-search/client' +import { default as default_32 } from '@/components/BeforeDashboard' +import { default as default_33 } from '@/components/BeforeLogin' + +export const importMap = { + "@payloadcms/richtext-lexical/client#RichTextCell": RichTextCell_0, + "@payloadcms/richtext-lexical/client#RichTextField": RichTextField_1, + "@payloadcms/richtext-lexical/generateComponentMap#getGenerateComponentMap": getGenerateComponentMap_2, + "@payloadcms/richtext-lexical/client#InlineToolbarFeatureClient": InlineToolbarFeatureClient_3, + "@payloadcms/richtext-lexical/client#FixedToolbarFeatureClient": FixedToolbarFeatureClient_4, + "@payloadcms/richtext-lexical/client#HeadingFeatureClient": HeadingFeatureClient_5, + "@payloadcms/richtext-lexical/client#UnderlineFeatureClient": UnderlineFeatureClient_6, + "@payloadcms/richtext-lexical/client#BoldFeatureClient": BoldFeatureClient_7, + "@payloadcms/richtext-lexical/client#ItalicFeatureClient": ItalicFeatureClient_8, + "@payloadcms/richtext-lexical/client#LinkFeatureClient": LinkFeatureClient_9, + "@payloadcms/plugin-seo/client#OverviewComponent": OverviewComponent_10, + "@payloadcms/plugin-seo/client#MetaTitleComponent": MetaTitleComponent_11, + "@payloadcms/plugin-seo/client#MetaImageComponent": MetaImageComponent_12, + "@payloadcms/plugin-seo/client#MetaDescriptionComponent": MetaDescriptionComponent_13, + "@payloadcms/plugin-seo/client#PreviewComponent": PreviewComponent_14, + "@/fields/slug/SlugComponent#SlugComponent": SlugComponent_15, + "@payloadcms/richtext-lexical/client#HorizontalRuleFeatureClient": HorizontalRuleFeatureClient_16, + "@payloadcms/richtext-lexical/client#BlocksFeatureClient": BlocksFeatureClient_17, + "@payloadcms/richtext-lexical/client#UploadFeatureClient": UploadFeatureClient_18, + "@payloadcms/richtext-lexical/client#BlockquoteFeatureClient": BlockquoteFeatureClient_19, + "@payloadcms/richtext-lexical/client#RelationshipFeatureClient": RelationshipFeatureClient_20, + "@payloadcms/richtext-lexical/client#ChecklistFeatureClient": ChecklistFeatureClient_21, + "@payloadcms/richtext-lexical/client#OrderedListFeatureClient": OrderedListFeatureClient_22, + "@payloadcms/richtext-lexical/client#UnorderedListFeatureClient": UnorderedListFeatureClient_23, + "@payloadcms/richtext-lexical/client#IndentFeatureClient": IndentFeatureClient_24, + "@payloadcms/richtext-lexical/client#AlignFeatureClient": AlignFeatureClient_25, + "@payloadcms/richtext-lexical/client#ParagraphFeatureClient": ParagraphFeatureClient_26, + "@payloadcms/richtext-lexical/client#InlineCodeFeatureClient": InlineCodeFeatureClient_27, + "@payloadcms/richtext-lexical/client#SuperscriptFeatureClient": SuperscriptFeatureClient_28, + "@payloadcms/richtext-lexical/client#SubscriptFeatureClient": SubscriptFeatureClient_29, + "@payloadcms/richtext-lexical/client#StrikethroughFeatureClient": StrikethroughFeatureClient_30, + "@payloadcms/plugin-search/client#LinkToDoc": LinkToDoc_31, + "@/components/BeforeDashboard#default": default_32, + "@/components/BeforeLogin#default": default_33 +} diff --git a/src/app/(payload)/api/[...slug]/route.ts b/src/app/(payload)/api/[...slug]/route.ts new file mode 100644 index 0000000..183cf45 --- /dev/null +++ b/src/app/(payload)/api/[...slug]/route.ts @@ -0,0 +1,10 @@ +/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */ +/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */ +import config from '@payload-config' +import { REST_DELETE, REST_GET, REST_OPTIONS, REST_PATCH, REST_POST } from '@payloadcms/next/routes' + +export const GET = REST_GET(config) +export const POST = REST_POST(config) +export const DELETE = REST_DELETE(config) +export const PATCH = REST_PATCH(config) +export const OPTIONS = REST_OPTIONS(config) diff --git a/src/app/(payload)/api/graphql-playground/route.ts b/src/app/(payload)/api/graphql-playground/route.ts new file mode 100644 index 0000000..3a5eb92 --- /dev/null +++ b/src/app/(payload)/api/graphql-playground/route.ts @@ -0,0 +1,6 @@ +/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */ +/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */ +import config from '@payload-config' +import { GRAPHQL_PLAYGROUND_GET } from '@payloadcms/next/routes' + +export const GET = GRAPHQL_PLAYGROUND_GET(config) diff --git a/src/app/(payload)/api/graphql/route.ts b/src/app/(payload)/api/graphql/route.ts new file mode 100644 index 0000000..9c2ffc3 --- /dev/null +++ b/src/app/(payload)/api/graphql/route.ts @@ -0,0 +1,6 @@ +/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */ +/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */ +import config from '@payload-config' +import { GRAPHQL_POST } from '@payloadcms/next/routes' + +export const POST = GRAPHQL_POST(config) diff --git a/src/app/(payload)/custom.scss b/src/app/(payload)/custom.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/(payload)/layout.tsx b/src/app/(payload)/layout.tsx new file mode 100644 index 0000000..767040c --- /dev/null +++ b/src/app/(payload)/layout.tsx @@ -0,0 +1,21 @@ +/* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */ +/* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */ +import configPromise from '@payload-config' +import '@payloadcms/next/css' +import { RootLayout } from '@payloadcms/next/layouts' +import React from 'react' + +import './custom.scss' +import { importMap } from './admin/importMap' + +type Args = { + children: React.ReactNode +} + +const Layout = ({ children }: Args) => ( + <RootLayout importMap={importMap} config={configPromise}> + {children} + </RootLayout> +) + +export default Layout diff --git a/src/app/_api/fetchContentFromAuthor.ts b/src/app/_api/fetchContentFromAuthor.ts deleted file mode 100644 index 356c196..0000000 --- a/src/app/_api/fetchContentFromAuthor.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { CONTENT_FROM_AUTHOR } from '../_graphql/contentFromAuthor' -import { GRAPHQL_API_URL } from './shared' - -import type { - Blogpost, - CaseStudy, - PodcastEpisode, - TalksAndRoundtable, -} from '@/payload/payload-types' - -export async function fetchContentFromAuthor({ authorID }: { authorID: string }): Promise<{ - Blogposts: Blogpost[] - PodcastEpisodes: PodcastEpisode[] - CaseStudies: CaseStudy[] - TalksAndRoundtables: TalksAndRoundtable[] -}> { - try { - return await fetch(`${GRAPHQL_API_URL}/api/graphql`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - query: CONTENT_FROM_AUTHOR, - variables: { authorID: authorID }, - }), - }) - ?.then(res => res.json()) - ?.then(res => { - if (res.errors) throw new Error(res?.errors?.[0]?.message ?? 'Error fetching content.') - - const Blogposts = res?.data?.Blogposts?.docs || [] - const PodcastEpisodes = res?.data?.PodcastEpisodes?.docs || [] - const CaseStudies = res?.data?.CaseStudies?.docs || [] - const TalksAndRoundtables = res?.data?.TalksAndRoundtables?.docs || [] - - return { Blogposts, PodcastEpisodes, CaseStudies, TalksAndRoundtables } - }) - } catch (err: unknown) { - return { Blogposts: [], PodcastEpisodes: [], CaseStudies: [], TalksAndRoundtables: [] } - } -} diff --git a/src/app/_api/fetchDoc.ts b/src/app/_api/fetchDoc.ts deleted file mode 100644 index 0783470..0000000 --- a/src/app/_api/fetchDoc.ts +++ /dev/null @@ -1,84 +0,0 @@ -import type { RequestCookie } from 'next/dist/compiled/@edge-runtime/cookies' - -import type { Config } from '../../payload/payload-types' -import { AUTHOR } from '../_graphql/authors' -import { BLOGPOST } from '../_graphql/blogposts' -import { CASE_STUDY } from '../_graphql/caseStudies' -import { PAGE } from '../_graphql/pages' -import { PODCAST_EPISODE } from '../_graphql/podcastEpisodes' -import { TALK } from '../_graphql/talksAndRoundtables' -import { GRAPHQL_API_URL } from './shared' -import { payloadToken } from './token' - -const queryMap = { - pages: { - query: PAGE, - key: 'Pages', - }, - 'podcast-episodes': { - query: PODCAST_EPISODE, - key: 'PodcastEpisodes', - }, - authors: { - query: AUTHOR, - key: 'Authors', - }, - blogposts: { - query: BLOGPOST, - key: 'Blogposts', - }, - 'case-studies': { - query: CASE_STUDY, - key: 'CaseStudies', - }, - 'talks-and-roundtables': { - query: TALK, - key: 'TalksAndRoundtables', - }, -} - -export const fetchDoc = async (args: { - collection: keyof Config['collections'] - slug?: string - id?: string - draft?: boolean -}) => { - const { collection, slug, draft } = args || {} - - if (!queryMap[collection]) throw new Error(`Collection ${collection} not found`) - - let token: RequestCookie | undefined - - if (draft) { - const { cookies } = await import('next/headers') - token = cookies().get(payloadToken) - } - - try { - const doc = await fetch(`${GRAPHQL_API_URL}/api/graphql`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - ...(token?.value && draft ? { Authorization: `JWT ${token.value}` } : {}), - }, - cache: 'no-store', - next: { tags: [`${collection}_${slug}`] }, - body: JSON.stringify({ - query: queryMap[collection].query, - variables: { - slug, - draft, - }, - }), - }) - ?.then(res => res.json()) - ?.then(res => { - if (res.errors) throw new Error(res?.errors?.[0]?.message ?? 'Error fetching doc') - return res?.data?.[queryMap[collection].key]?.docs?.[0] - }) - - return doc - } catch (err: unknown) { - throw new Error('Error fetching doc:', err) - } -} diff --git a/src/app/_api/fetchDocs.ts b/src/app/_api/fetchDocs.ts deleted file mode 100644 index 0ce9e41..0000000 --- a/src/app/_api/fetchDocs.ts +++ /dev/null @@ -1,50 +0,0 @@ -import type { RequestCookie } from 'next/dist/compiled/@edge-runtime/cookies' - -import type { Config } from '../../payload/payload-types' -import { PAGES } from '../_graphql/pages' -import { GRAPHQL_API_URL } from './shared' -import { payloadToken } from './token' - -const queryMap = { - pages: { - query: PAGES, - key: 'Pages', - }, -} - -export const fetchDocs = async <T>( - collection: keyof Config['collections'], - draft?: boolean, - variables?: Record<string, unknown>, -): Promise<T[]> => { - if (!queryMap[collection]) throw new Error(`Collection ${collection} not found`) - - let token: RequestCookie | undefined - - if (draft) { - const { cookies } = await import('next/headers') - token = cookies().get(payloadToken) - } - - const docs: T[] = await fetch(`${GRAPHQL_API_URL}/api/graphql`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - ...(token?.value && draft ? { Authorization: `JWT ${token.value}` } : {}), - }, - cache: 'no-store', - next: { tags: [collection] }, - body: JSON.stringify({ - query: queryMap[collection].query, - variables, - }), - }) - ?.then(res => res.json()) - ?.then(res => { - if (res.errors) throw new Error(res?.errors?.[0]?.message ?? 'Error fetching docs') - - return res?.data?.[queryMap[collection].key]?.docs - }) - - return docs -} diff --git a/src/app/_api/fetchGlobals.ts b/src/app/_api/fetchGlobals.ts deleted file mode 100644 index 7c8c5fe..0000000 --- a/src/app/_api/fetchGlobals.ts +++ /dev/null @@ -1,133 +0,0 @@ -import type { Footer, Header, Settings, Social } from '../../payload/payload-types' -import { FOOTER_QUERY, HEADER_QUERY, SETTINGS_QUERY, SOCIALS_QUERY } from '../_graphql/globals' -import { GRAPHQL_API_URL } from './shared' - -export async function fetchSettings(): Promise<Settings> { - if (!GRAPHQL_API_URL) throw new Error('NEXT_PUBLIC_SERVER_URL not found') - - try { - return await fetch(`${GRAPHQL_API_URL}/api/graphql`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - cache: 'no-store', - body: JSON.stringify({ - query: SETTINGS_QUERY, - }), - }) - ?.then(res => { - if (!res.ok) throw new Error('Error fetching doc') - return res.json() - }) - ?.then(res => { - if (res?.errors) throw new Error(res?.errors[0]?.message || 'Error fetching settings') - return res.data?.Settings - }) - } catch (err: unknown) { - throw new Error('Error fetching settings') - } -} - -export async function fetchHeader(): Promise<Header> { - if (!GRAPHQL_API_URL) throw new Error('NEXT_PUBLIC_SERVER_URL not found') - - try { - return await fetch(`${GRAPHQL_API_URL}/api/graphql`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - cache: 'no-store', - body: JSON.stringify({ - query: HEADER_QUERY, - }), - }) - ?.then(res => { - if (!res.ok) throw new Error('Error fetching doc') - return res.json() - }) - ?.then(res => { - if (res?.errors) throw new Error(res?.errors[0]?.message || 'Error fetching header') - return res.data?.Header - }) - } catch (err: unknown) { - throw new Error('Error fetching header') - } -} - -export async function fetchFooter(): Promise<Footer> { - if (!GRAPHQL_API_URL) throw new Error('NEXT_PUBLIC_SERVER_URL not found') - - try { - return await fetch(`${GRAPHQL_API_URL}/api/graphql`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - query: FOOTER_QUERY, - }), - }) - .then(res => { - if (!res.ok) throw new Error('Error fetching doc') - return res.json() - }) - ?.then(res => { - if (res?.errors) throw new Error(res?.errors[0]?.message || 'Error fetching footer') - return res.data?.Footer - }) - } catch (err: unknown) { - throw new Error('Error fetching footer') - } -} - -export async function fetchSocials(): Promise<Social> { - if (!GRAPHQL_API_URL) throw new Error('NEXT_PUBLIC_SERVER_URL not found') - - try { - return await fetch(`${GRAPHQL_API_URL}/api/graphql`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - cache: 'no-store', - body: JSON.stringify({ - query: SOCIALS_QUERY, - }), - }) - ?.then(res => res.json()) - ?.then(res => { - if (res?.errors) throw new Error(res?.errors[0]?.message || 'Error fetching socials') - return res.data?.Social - }) - } catch (err: unknown) { - throw new Error('Error fetching socials') - } -} - -export const fetchGlobals = async (): Promise<{ - settings: Settings - header: Header - footer: Footer - socials: Social -}> => { - // initiate requests in parallel, then wait for them to resolve - // this will eagerly start to the fetch requests at the same time - // see https://nextjs.org/docs/app/building-your-application/data-fetching/fetching - const settingsData = fetchSettings() - const headerData = fetchHeader() - const footerData = fetchFooter() - const socialsData = fetchSocials() - - const [settings, header, footer, socials]: [Settings, Header, Footer, Social] = await Promise.all( - [await settingsData, await headerData, await footerData, await socialsData], - ) - - return { - settings, - header, - footer, - socials, - } -} diff --git a/src/app/_api/getMe.ts b/src/app/_api/getMe.ts deleted file mode 100644 index 2751f7a..0000000 --- a/src/app/_api/getMe.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { cookies } from 'next/headers' -import { redirect } from 'next/navigation' - -import type { User } from '../../payload/payload-types' -import { ME_QUERY } from '../_graphql/me' -import { GRAPHQL_API_URL } from './shared' - -export const getMe = async (args?: { - nullUserRedirect?: string - userRedirect?: string -}): Promise<{ - user: User - token: string -}> => { - const { nullUserRedirect, userRedirect } = args || {} - const cookieStore = cookies() - const token = cookieStore.get('payload-token')?.value - - const meUserReq = await fetch(`${GRAPHQL_API_URL}/api/graphql`, { - method: 'POST', - headers: { - Authorization: `JWT ${token}`, - 'Content-Type': 'application/json', - }, - cache: 'no-store', - body: JSON.stringify({ - query: ME_QUERY, - }), - }) - - const { - user, - }: { - user: User - } = await meUserReq.json() - - if (userRedirect && meUserReq.ok && user) { - redirect(userRedirect) - } - - if (nullUserRedirect && (!meUserReq.ok || !user)) { - redirect(nullUserRedirect) - } - - return { - user, - token, - } -} diff --git a/src/app/_api/shared.ts b/src/app/_api/shared.ts deleted file mode 100644 index 46dd8c2..0000000 --- a/src/app/_api/shared.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const GRAPHQL_API_URL = process.env.NEXT_BUILD - ? `http://127.0.0.1:${process.env.PORT || 3000}` - : process.env.NEXT_PUBLIC_SERVER_URL diff --git a/src/app/_api/token.ts b/src/app/_api/token.ts deleted file mode 100644 index 68021ce..0000000 --- a/src/app/_api/token.ts +++ /dev/null @@ -1 +0,0 @@ -export const payloadToken = 'payload-token' diff --git a/src/app/_blocks/AuthorContentGrid/index.tsx b/src/app/_blocks/AuthorContentGrid/index.tsx index bcda30c..e050fef 100644 --- a/src/app/_blocks/AuthorContentGrid/index.tsx +++ b/src/app/_blocks/AuthorContentGrid/index.tsx @@ -1,23 +1,15 @@ import { Blogpost, CaseStudy, - PodcastEpisode, + Podcast, TalksAndRoundtable, -} from '../../../payload/payload-types' -import ContentCard from '../../_components/ContentCard' -import { calculateTotalArticles } from '../../_utilities/calculateTotalArticles' -import styles from './styles.module.css' +} from "@/payload-types"; +import ContentCard from "../../_components/ContentCard"; +import { calculateTotalArticles } from "../../_utilities/calculateTotalArticles"; +import styles from "./styles.module.css"; + +export default function AuthorContentGrid({content}) { -export default function AuthorContentGrid({ - content, -}: { - content: { - Blogposts: Blogpost[] - PodcastEpisodes: PodcastEpisode[] - CaseStudies: CaseStudy[] - TalksAndRoundtables: TalksAndRoundtable[] - } -}) { return ( <div className={styles.gridContainer}> <div className={styles.articleCounter}> @@ -33,5 +25,5 @@ export default function AuthorContentGrid({ )} </div> </div> - ) + ); } diff --git a/src/app/_blocks/BlogpostChapters/index.tsx b/src/app/_blocks/BlogpostChapters/index.tsx index 152c2f6..077621a 100644 --- a/src/app/_blocks/BlogpostChapters/index.tsx +++ b/src/app/_blocks/BlogpostChapters/index.tsx @@ -1,55 +1,52 @@ -'use client' +"use client"; -import { useEffect, useState } from 'react' +import { useEffect, useState } from "react"; -import styles from './styles.module.css' - -export default function BlogpostChapters({ chapters }) { - const [visibleChapter, setVisibleChapter] = useState(null) +import styles from "./styles.module.css"; +export default function BlogpostChapters() { + const [visibleChapter, setVisibleChapter] = useState(""); + const [chapters, setChapters] = useState<string[]>([]); + // TODO: Fix chapter navigator useEffect(() => { - const observer = new IntersectionObserver( - entries => { - entries.forEach(entry => { - if (entry.isIntersecting) { - setVisibleChapter(entry.target.id) // Update state with the visible chapter's ID - } - }) - }, - { threshold: 0.1 }, // Trigger when 10% of the element is visible - ) - - const chapters = document.querySelectorAll('[id^="chapter"]') - chapters.forEach(chapter => observer.observe(chapter)) - - // unmount - return () => { - chapters.forEach(chapter => observer.unobserve(chapter)) - } - }, []) + const extractHeadings = () => { + // Query all headings in the DOM (e.g., h1, h2, h3...) + const chapterList: string[] = []; + const headings = Array.from(document.querySelectorAll("h1, h2, h3")); + headings.map(i => chapterList.push(i.innerHTML.trim())); + + setChapters(chapterList); + }; + + extractHeadings(); + + + }, []); + return ( <div className={styles.container}> + {/*{<pre>{JSON.stringify(chapters, null, 2)}</pre>}*/} <div className={styles.navbar}> <p className={`outline ${styles.title}`}>CHAPTER</p> <ul> {chapters.map((chapter, i) => ( - <a href={`#${chapter.id}`}> - <li - style={{ - borderColor: - visibleChapter === chapter.id - ? 'var(--sub-purple-400)' - : 'var(--soft-white-100)', - }} - key={i} - > - {chapter.title} - </li> - </a> + // <a key={i} href={`#${chapter.id}`}> + <li + style={{ + borderColor: + visibleChapter === chapter + ? "var(--sub-purple-400)" + : "var(--soft-white-100)", + }} + key={i} + > + {chapter} + </li> + // </a> ))} </ul> </div> </div> - ) + ); } diff --git a/src/app/_blocks/BlogpostContent/index.tsx b/src/app/_blocks/BlogpostContent/index.tsx index 740b2c8..8e3c59c 100644 --- a/src/app/_blocks/BlogpostContent/index.tsx +++ b/src/app/_blocks/BlogpostContent/index.tsx @@ -1,19 +1,19 @@ -'use client' +"use client"; -import { Blogpost } from '../../../payload/payload-types' -import FeaturedImage from '../../_components/FeaturedImage' -import { sanitizeAndAddChapters } from '../../_utilities/sanitizeAndAddChapters' -import styles from './styles.module.css' - -export default function BlogpostContent({ post }: { post: Blogpost }) { - const { summary, content_html, featuredImage } = post - const sanitizedContent = sanitizeAndAddChapters(content_html) +import { Blogpost } from "@/payload-types"; +import FeaturedImage from "../../_components/FeaturedImage"; +import styles from "./styles.module.css"; +import RichText from "@/components/RichText"; +export default function BlogpostContent({ blogpost }) { + const { summary, featuredImage } = blogpost; return ( <div className={styles.container}> - <FeaturedImage className={styles.featuredImage} src={featuredImage} /> + <div className={styles.featuredImage}> + {featuredImage && <FeaturedImage src={featuredImage} />} + </div> <div className={styles.summary}>{summary}</div> - <div className={styles.content} dangerouslySetInnerHTML={{ __html: sanitizedContent }} /> + <RichText content={blogpost.content} /> </div> - ) + ); } diff --git a/src/app/_blocks/BlogpostContent/styles.module.css b/src/app/_blocks/BlogpostContent/styles.module.css index 04e129f..685cd8e 100644 --- a/src/app/_blocks/BlogpostContent/styles.module.css +++ b/src/app/_blocks/BlogpostContent/styles.module.css @@ -4,6 +4,9 @@ } .featuredImage { + position: relative; + width: 80%px; + height: 340px; margin: auto; border-radius: 45px; } diff --git a/src/app/_blocks/EpisodeContent/ListenOn/index.tsx b/src/app/_blocks/EpisodeContent/ListenOn/index.tsx index 3a2f64a..7dc8d8e 100644 --- a/src/app/_blocks/EpisodeContent/ListenOn/index.tsx +++ b/src/app/_blocks/EpisodeContent/ListenOn/index.tsx @@ -7,13 +7,13 @@ export default function ListenOn({ className, spotify, apple }) { <p>Listen on:</p> <span> - {' '} - <a href={spotify} target="_blank" rel="noopener noreferrer"> + + { spotify && <a href={spotify} target="_blank" rel="noopener noreferrer"> <SpotifyIcon /> - </a> - <a href={apple} target="_blank" rel="noopener noreferrer"> + </a>} + { apple && <a href={apple} target="_blank" rel="noopener noreferrer"> <ApplePodcastIcon /> - </a> + </a>} </span> </div> ) diff --git a/src/app/_blocks/EpisodeContent/index.tsx b/src/app/_blocks/EpisodeContent/index.tsx index 6cc17b2..ba51592 100644 --- a/src/app/_blocks/EpisodeContent/index.tsx +++ b/src/app/_blocks/EpisodeContent/index.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { PodcastEpisode } from '../../../payload/payload-types' +import { Podcast } from '@/payload-types' import styles from './styles.module.css' import Contributors from '@/app/_blocks/EpisodeContent/Contributors' @@ -10,7 +10,7 @@ import AuthorPill from '@/app/_components/AuthorPill' import Categories from '@/app/_components/Categories' import Share from '@/app/_components/Share' -export default function EpisodeContent({ episode }: { episode: PodcastEpisode }) { +export default function EpisodeContent({ episode }) { const { authors, spotify, apple, summary, notes, categories } = episode return ( diff --git a/src/app/_blocks/EpisodeHead/AudioPlayer/index.tsx b/src/app/_blocks/EpisodeHead/AudioPlayer/index.tsx index bcada45..d7004c9 100644 --- a/src/app/_blocks/EpisodeHead/AudioPlayer/index.tsx +++ b/src/app/_blocks/EpisodeHead/AudioPlayer/index.tsx @@ -1,6 +1,6 @@ -'use client' +"use client"; -import { useEffect, useRef, useState } from 'react' +import { CSSProperties, useEffect, useRef, useState } from "react"; import { AudioPauseButton, @@ -9,89 +9,94 @@ import { MoveFifteenIcon, MuteIcon, RaiseVolumeIcon, -} from './ButtonIcons' -import styles from './styles.module.css' -import formatDuration from './Utilities/formatDuration' +} from "./ButtonIcons"; +import styles from "./styles.module.css"; +import formatDuration from "./Utilities/formatDuration"; +import { CssVariable } from "next/dist/compiled/@next/font"; -export default function AudioPlayer({ src }: { src: string }) { - const [isPlaying, setIsPlaying] = useState(false) - const [currentTime, setCurrentTime] = useState(0) - const [duration, setDuration] = useState(0) - const [isMuted, setIsMuted] = useState(false) +interface CSSDynamicVars { + [key: string]: string; +} + +export default function AudioPlayer({ src }) { + const [isPlaying, setIsPlaying] = useState(false); + const [currentTime, setCurrentTime] = useState(0); + const [duration, setDuration] = useState(0); + const [isMuted, setIsMuted] = useState(false); - const audioRef = useRef<HTMLAudioElement | null>(null) + const audioRef = useRef<HTMLAudioElement | null>(null); useEffect(() => { - const audio = new Audio(src) - audioRef.current = audio + const audio = new Audio(src); + audioRef.current = audio; - const handleLoadedMetadata = () => setDuration(audio.duration) - const handleTimeUpdate = () => setCurrentTime(audio.currentTime) + const handleLoadedMetadata = () => setDuration(audio.duration); + const handleTimeUpdate = () => setCurrentTime(audio.currentTime); - audio.addEventListener('loadedmetadata', handleLoadedMetadata) - audio.addEventListener('timeupdate', handleTimeUpdate) + audio.addEventListener("loadedmetadata", handleLoadedMetadata); + audio.addEventListener("timeupdate", handleTimeUpdate); return () => { - audio.removeEventListener('loadedmetadata', handleLoadedMetadata) - audio.removeEventListener('timeupdate', handleTimeUpdate) - audio.pause() - audioRef.current = null - } - }, [src]) + audio.removeEventListener("loadedmetadata", handleLoadedMetadata); + audio.removeEventListener("timeupdate", handleTimeUpdate); + audio.pause(); + audioRef.current = null; + }; + }, [src]); const togglePlayPause = () => { if (audioRef.current) { - isPlaying ? audioRef.current.pause() : audioRef.current.play() - setIsPlaying(!isPlaying) + isPlaying ? audioRef.current.pause() : audioRef.current.play(); + setIsPlaying(!isPlaying); } - } + }; const handleSeek = (e: React.ChangeEvent<HTMLInputElement>) => { - const time = Number(e.target.value) + const time = Number(e.target.value); if (audioRef.current) { - audioRef.current.currentTime = time - setCurrentTime(time) + audioRef.current.currentTime = time; + setCurrentTime(time); } - } + }; const skip = (seconds: number) => { if (audioRef.current) { - audioRef.current.currentTime += seconds + audioRef.current.currentTime += seconds; } - } + }; const toggleMute = () => { if (audioRef.current) { - audioRef.current.muted = !isMuted - setIsMuted(!isMuted) + audioRef.current.muted = !isMuted; + setIsMuted(!isMuted); } - } + }; // Utility to generate the dynamic gradient for the progress bar - const progressBarStyle = { - '--dynamic-gradient': `linear-gradient(to right, var(--dark-rock-800) ${ + const progressBarStyle: CSSDynamicVars = { + "--dynamic-gradient": `linear-gradient(to right, var(--dark-rock-800) ${ (currentTime / duration) * 100 }%, var(--soft-white-100) 0%)`, - } + }; // Reusable Button components to reduce duplication const PlayPauseButton = ({ className, width }: { className?: string; width?: string }) => ( <button className={className} onClick={togglePlayPause}> {isPlaying ? <AudioPauseButton width={width} /> : <AudioPlayButton width={width} />} </button> - ) + ); const MuteUnmuteButton = ({ width }: { width: string }) => ( <button onClick={toggleMute}> {isMuted ? <MuteIcon width={width} /> : <RaiseVolumeIcon width={width} />} </button> - ) + ); const SkipButton = ({ - seconds, - Icon, - width, - }: { + seconds, + Icon, + width, + }: { seconds: number Icon: React.FC<any> width: string @@ -99,15 +104,15 @@ export default function AudioPlayer({ src }: { src: string }) { <button onClick={() => skip(seconds)}> <Icon width={width} /> </button> - ) + ); return ( <div> {/* Desktop Player */} <div className={styles.desktopAudioPlayer}> - <PlayPauseButton width={'120px'} /> - <MuteUnmuteButton width={'120px'} /> - <SkipButton seconds={-15} Icon={BackFifteenIcon} width={'50px'} /> + <PlayPauseButton width={"120px"} /> + <MuteUnmuteButton width={"120px"} /> + <SkipButton seconds={-15} Icon={BackFifteenIcon} width={"50px"} /> <div className={styles.duration}> <span> {formatDuration(currentTime)} / {formatDuration(duration)} @@ -115,6 +120,7 @@ export default function AudioPlayer({ src }: { src: string }) { </div> <input className={styles.progressBar} + // @ts-ignore style={progressBarStyle} type="range" min={0} @@ -122,12 +128,12 @@ export default function AudioPlayer({ src }: { src: string }) { value={currentTime} onChange={handleSeek} /> - <SkipButton seconds={15} Icon={MoveFifteenIcon} width={'50px'} /> + <SkipButton seconds={15} Icon={MoveFifteenIcon} width={"50px"} /> </div> {/* Mobile Player */} <div className={styles.mobileAudioPlayer}> - <PlayPauseButton className={styles.playPauseButton} width={'50px'} /> + <PlayPauseButton className={styles.playPauseButton} width={"50px"} /> <div className={styles.duration}> <span> {formatDuration(currentTime)} / {formatDuration(duration)} @@ -143,11 +149,11 @@ export default function AudioPlayer({ src }: { src: string }) { onChange={handleSeek} /> <div className={styles.mobileButtonContainer}> - <MuteUnmuteButton width={'28px'} /> - <SkipButton seconds={-15} Icon={BackFifteenIcon} width={'20px'} /> - <SkipButton seconds={15} Icon={MoveFifteenIcon} width={'20px'} /> + <MuteUnmuteButton width={"28px"} /> + <SkipButton seconds={-15} Icon={BackFifteenIcon} width={"20px"} /> + <SkipButton seconds={15} Icon={MoveFifteenIcon} width={"20px"} /> </div> </div> </div> - ) + ); } diff --git a/src/app/_blocks/EpisodeHead/index.tsx b/src/app/_blocks/EpisodeHead/index.tsx index 5ce0415..f870422 100644 --- a/src/app/_blocks/EpisodeHead/index.tsx +++ b/src/app/_blocks/EpisodeHead/index.tsx @@ -1,18 +1,22 @@ 'use client' -import { PodcastEpisode } from '../../../payload/payload-types' -import ArchiveButton from '../../_components/ArchiveButton' import BackButton from '../../_components/BackButton' -import FeaturedImage from '../../_components/FeaturedImage' -import { HeadphonesIcon } from '../../_icons/icons' import { formatDateTime } from '../../_utilities/formatDateTime' import { getAudio } from '../../_utilities/getAudio' import { useEpisodeDuration } from '../../_utilities/useEpisodeDuration' import AudioPlayer from './AudioPlayer' import styles from './styles.module.css' -export default function EpisodeHead({ episode }: { episode: PodcastEpisode }) { +import ArchiveButton from '@/app/_components/ArchiveButton' +import FeaturedImage from '@/app/_components/FeaturedImage' +import { HeadphonesIcon } from '@/app/_icons/icons' + +export default function EpisodeHead({ episode }) { const { title, episodeFile, publishedAt, featuredImage } = episode + + // TODO: convert into conditional logic based on ContentType + + // Initial undefined state const { audioFileSource, audioFileType } = getAudio(episodeFile) return ( @@ -20,7 +24,7 @@ export default function EpisodeHead({ episode }: { episode: PodcastEpisode }) { <BackButton className={styles.backButton} color={'var(--soft-white-100)'} /> <div className={styles.metadataContainer}> - {/* Metadata */} + {/* First Column */} <div className={styles.metadata}> <ArchiveButton collection={'podcast-episodes'} color={'var(--soft-white-100)'} /> <h5>{title}</h5> @@ -29,19 +33,19 @@ export default function EpisodeHead({ episode }: { episode: PodcastEpisode }) { {formatDateTime(publishedAt)} <span> <HeadphonesIcon width={'14'} height={'14'} color={'var(--soft-white-100)'} /> - {useEpisodeDuration(audioFileSource)} + {/*{useEpisodeDuration(audioFileSource)}*/} </span> </p> </div> - - {/* Audio player */} + {/* TODO Add conditionals later on: render only if it's a podcast episode */} <div className={styles.audioPlayer}> - <AudioPlayer className={styles.audioPlayer} src={audioFileSource} type={audioFileType} /> + {/*// @ts-ignore*/} + <AudioPlayer src={audioFileSource} type={audioFileType} /> </div> - {/* Featured Image */} + {/* TODO: Second Column displays EpisodeFeaturedImage if ContentType is podcast */} <div className={styles.featuredImageContainer}> - <FeaturedImage className={styles.featuredImage} src={featuredImage} /> + {featuredImage && <FeaturedImage className={styles.featuredImage} src={featuredImage} />} </div> </div> </div> diff --git a/src/app/_blocks/EpisodeHead/styles.module.css b/src/app/_blocks/EpisodeHead/styles.module.css index 0fae92b..a651b8c 100644 --- a/src/app/_blocks/EpisodeHead/styles.module.css +++ b/src/app/_blocks/EpisodeHead/styles.module.css @@ -49,11 +49,15 @@ .featuredImageContainer { display: flex; + position: relative; justify-content: center; align-items: center; grid-row: 2 / 2; grid-column: 1 / 1; padding: 10px; + margin: auto; + width: 120px; + height: 120px; } .featuredImage { @@ -92,6 +96,10 @@ } .featuredImageContainer { + position: relative; + margin: auto; + width: 324px; + height: 324px; grid-column: 2 / 2; grid-row: 1 / 3; } diff --git a/src/app/_blocks/HubContentGrid/NavBar/Buttons/index.tsx b/src/app/_blocks/HubContentGrid/NavBar/Buttons/index.tsx index d7019b4..07d3a44 100644 --- a/src/app/_blocks/HubContentGrid/NavBar/Buttons/index.tsx +++ b/src/app/_blocks/HubContentGrid/NavBar/Buttons/index.tsx @@ -20,7 +20,7 @@ export function AllContent({ fill = 'var(--dark-rock-800)', textColor = 'var(--s d="M158.75 60.5H156.855C150.225 60.5 143.866 57.8661 139.178 53.1777L94.3223 8.32233C89.6339 3.63392 83.2751 1 76.6447 1H26C12.1929 1 1 12.1929 1 26V60.5" stroke="#403F4C" /> - <AllIcon width="20" height="20" color={textColor} /> + <AllIcon x="35px" y="15px" width="20" height="20" color={textColor} /> <text x="60px" y="27px" className={styles.buttonText} fill={textColor}> All </text> @@ -45,7 +45,7 @@ export function Blogposts({ fill = 'var(--sub-blue-600)', textColor = 'var(--sof d="M34 60.5V60.5C47.8071 60.5 59 49.3071 59 35.5V26C59 12.1929 70.1929 1 84 1L184.145 1C190.775 1 197.134 3.63392 201.822 8.32233L246.678 53.1777C251.366 57.8661 257.725 60.5 264.355 60.5H264.5" stroke="#0083FF" /> - <BlogpostIcon width="20px" height="20px" color={textColor} /> + <BlogpostIcon x="85px" y="15px" width="20px" height="20px" color={textColor} /> <text x="110px" y="27px" className={styles.buttonText} fill={textColor}> Blogposts </text> @@ -70,7 +70,7 @@ export function Podcasts({ fill = 'var(--sub-purple-600)', textColor = 'var(--so d="M32.5 60.5V60.5C46.3071 60.5 57.5 49.3071 57.5 35.5V26C57.5 12.1929 68.6929 1 82.5 1L185.145 1C191.775 1 198.134 3.63392 202.822 8.32233L247.929 53.4289C252.456 57.9565 258.597 60.5 265 60.5V60.5" stroke="#4801EC" /> - <PodcastIcon width="20px" height="20px" color={textColor} /> + <PodcastIcon x="90px" y="15px" width="20px" height="20px" color={textColor} /> <text x="115px" y="27px" className={styles.buttonText} fill={textColor}> Podcasts </text> @@ -98,7 +98,7 @@ export function CaseStudies({ d="M34 60.5V60.5C47.8071 60.5 59 49.3071 59 35.5V26C59 12.1929 70.1929 1 84 1L213.645 1C220.275 1 226.634 3.63392 231.322 8.32233L276.429 53.4289C280.956 57.9565 287.097 60.5 293.5 60.5V60.5" stroke="#F36312" /> - <CaseStudiesIcon width="20px" height="20px" color={textColor} /> + <CaseStudiesIcon x="90px" y="15px" width="20px" height="20px" color={textColor} /> <text x="115px" y="27px" className={styles.buttonText} fill={textColor}> Case Studies </text> @@ -123,7 +123,7 @@ export function Talks({ fill = 'var(--sub-purple-300)', textColor = 'var(--soft- d="M0 60.5V60.5C13.8071 60.5 25 49.3071 25 35.5V26C25 12.1929 36.1929 1 50 1L234.645 1C241.275 1 247.634 3.63392 252.322 8.32233L297.178 53.1777C301.866 57.8661 308.225 60.5 314.855 60.5H315" stroke="#9563FF" /> - <TalksIcon width="20px" height="20px" color={textColor} /> + <TalksIcon x="55px" y="15px" width="20px" height="20px" color={textColor} /> <text x="80px" y="27px" className={styles.buttonText} fill={textColor}> Talks & Roundtables </text> diff --git a/src/app/_blocks/HubContentGrid/NavBar/DropdownMenu/index.tsx b/src/app/_blocks/HubContentGrid/NavBar/DropdownMenu/index.tsx index f4d1f6d..331d191 100644 --- a/src/app/_blocks/HubContentGrid/NavBar/DropdownMenu/index.tsx +++ b/src/app/_blocks/HubContentGrid/NavBar/DropdownMenu/index.tsx @@ -13,17 +13,17 @@ import { ContentTypeArrays } from '../../../../_interfaces/ContentTypeArrays' import styles from './styles.module.css' const iconMap = { - All: <p>hello</p>, - Blogposts: <BlogpostIcon width={'16'} color={'var(--soft-white-100)'} />, - PodcastEpisodes: <PodcastIcon width={'16'} color={'var(--soft-white-100)'} />, - CaseStudies: <CaseStudiesIcon width={'16'} color={'var(--soft-white-100)'} />, - TalksAndRoundtables: <TalksIcon width={'16'} color={'var(--soft-white-100)'} />, + All: <AllIcon width={'16'} color={'currentColor'} />, + Blogposts: <BlogpostIcon width={'16'} color={'currentColor'} />, + PodcastEpisodes: <PodcastIcon width={'16'} color={'currentColor'} />, + CaseStudies: <CaseStudiesIcon width={'16'} color={'currentColor'} />, + TalksAndRoundtables: <TalksIcon width={'16'} color={'currentColor'} />, } const labelMap = { All: 'All', Blogposts: 'Blogposts', - PodcastEpisodes: 'Podcasts', + Podcasts: 'Podcasts', CaseStudies: 'Case Studies', TalksAndRoundtables: 'Talks & Roundtables', } @@ -33,7 +33,7 @@ export default function DropdownMenu({ onActiveButtonChange, }: { activeButton: string - onActiveButtonChange: (arg: string) => void + onActiveButtonChange: (buttonName: string) => void }) { const [isDropdownActive, setIsDropdownActive] = useState<boolean>(false) const [buttonLabel, setButtonLabel] = useState('All') @@ -73,15 +73,17 @@ export default function DropdownMenu({ <li onClick={() => handleButtonClick('Blogposts')}> {iconMap['Blogposts']} Blogposts </li> - <li onClick={() => handleButtonClick('PodcastEpisodes')}> + <li onClick={() => handleButtonClick('Podcasts')}> {iconMap['PodcastEpisodes']} Podcasts </li> - <li onClick={() => handleButtonClick('CaseStudies')}> + + {/* TODO : Renable once pages are styled */} + {/* <li onClick={() => handleButtonClick('CaseStudies')}> {iconMap['CaseStudies']} Case Studies </li> <li onClick={() => handleButtonClick('TalksAndRoundtables')}> {iconMap['TalksAndRoundtables']} Talks & Roundtables - </li> + </li>*/} </ul> </div> </div> diff --git a/src/app/_blocks/HubContentGrid/NavBar/index.tsx b/src/app/_blocks/HubContentGrid/NavBar/index.tsx index 8be5ca5..3e6d35e 100644 --- a/src/app/_blocks/HubContentGrid/NavBar/index.tsx +++ b/src/app/_blocks/HubContentGrid/NavBar/index.tsx @@ -1,6 +1,6 @@ 'use client' -import { ContentTypeArrays } from '../../../_interfaces/ContentTypeArrays' +import { ContentTypeArrays } from "@/app/_interfaces/ContentTypeArrays" import { AllContent, Blogposts, CaseStudies, Podcasts, Talks } from './Buttons' import DropdownMenu from './DropdownMenu' import styles from './styles.module.css' @@ -48,25 +48,29 @@ export default function ContentNavBar({ </button> <button className={`${styles.button} ${styles.podcastsButton} ${ - activeButton === 'PodcastEpisodes' ? styles.activeButton : '' + activeButton === 'Podcasts' ? styles.activeButton : '' } `} - onClick={() => handleButtonClick('PodcastEpisodes')} + onClick={() => handleButtonClick('Podcasts')} > <Podcasts fill={ - activeButton === 'PodcastEpisodes' ? 'var(--soft-white-100)' : 'var(--sub-purple-600' + activeButton === 'Podcasts' ? 'var(--soft-white-100)' : 'var(--sub-purple-600' } textColor={ - activeButton === 'PodcastEpisodes' ? 'var(--dark-rock-800)' : 'var(--soft-white-100)' + activeButton === 'Podcasts' ? 'var(--dark-rock-800)' : 'var(--soft-white-100)' } /> </button> - <button + + {/* TODO: Re-enable once content exists */} + + {/*<button className={`${styles.button} ${styles.caseStudiesButton} ${ activeButton === 'CaseStudies' ? styles.activeButton : '' } `} onClick={() => handleButtonClick('CaseStudies')} // Use the correct name > + <CaseStudies fill={activeButton === 'CaseStudies' ? 'var(--soft-white-100)' : 'var(--sub-orange-800'} textColor={ @@ -92,7 +96,7 @@ export default function ContentNavBar({ : 'var(--soft-white-100)' } /> - </button> + </button>*/} </div> ) } diff --git a/src/app/_blocks/HubContentGrid/index.tsx b/src/app/_blocks/HubContentGrid/index.tsx index 976e78f..c4c2440 100644 --- a/src/app/_blocks/HubContentGrid/index.tsx +++ b/src/app/_blocks/HubContentGrid/index.tsx @@ -1,53 +1,51 @@ -'use client' +"use client"; -import { useState } from 'react' +import { useState } from "react"; -import ContentCard from '../../_components/ContentCard' -import { ContentTypeArrays } from '../../_interfaces/ContentTypeArrays' -import { filterArticles } from '../../_utilities/filterArticles' -import ContentNavBar from './NavBar' -import styles from './styles.module.css' +import ContentCard from "../../_components/ContentCard"; +import { ContentTypeArrays } from "../../_interfaces/ContentTypeArrays"; +import { filterContent } from "../../_utilities/filterContent"; +import ContentNavBar from "./NavBar"; +import styles from "./styles.module.css"; const colorMap = { - All: 'var(--dark-rock-800)', - Blogposts: 'var(--sub-blue-600)', - PodcastEpisodes: 'var(--sub-purple-600)', - CaseStudies: 'var(--sub-orange-800)', - TalksAndRoundtables: 'var(--sub-purple-300)', -} + All: "var(--dark-rock-800)", + Blogposts: "var(--sub-blue-600)", + Podcasts: "var(--sub-purple-600)", + CaseStudies: "var(--sub-orange-800)", + TalksAndRoundtables: "var(--sub-purple-300)", +}; interface HubContentGridProps { - articles: ContentTypeArrays + articles: ContentTypeArrays; } -export default function HubContentGrid({ articles }: HubContentGridProps) { +export default function HubContentGrid({ content }) { // todo: fix rendering when there is no content - const [activeButton, setActiveButton] = useState<keyof ContentTypeArrays | 'All'>('All') + const [activeButton, setActiveButton] = useState<keyof ContentTypeArrays | "All">("All"); const handleActiveButtonChange = (buttonName: keyof ContentTypeArrays) => { - setActiveButton(buttonName) - } + setActiveButton(buttonName); + }; - const filteredArticles = filterArticles({ - articles: articles, - filter: activeButton, - }) const dynamicColor = { - '--dynamic-color': colorMap[activeButton], - } + "--dynamic-color": colorMap[activeButton], + }; + + const filteredContent = filterContent({ articles: content, filter: activeButton }); return ( - <> + <div> <ContentNavBar activeButton={activeButton} onActiveButtonChange={handleActiveButtonChange} /> - {/* TODO: fix dynamic color */} + {/* TODO: fix dynamic color*/} <div className={styles.contentGridContainer}> <div className={styles.contentGrid}> - {filteredArticles.map((article, i) => ( - <div className={styles.contentCard} key={i}> + {filteredContent.map((article, i) => ( + <div className={styles.contentCard}> <ContentCard - key={article.content.id} + contentType={article.contentType} content={article.content} /> @@ -55,6 +53,6 @@ export default function HubContentGrid({ articles }: HubContentGridProps) { ))} </div> </div> - </> - ) + </div> + ); } diff --git a/src/app/_blocks/HubHead/Highlights/index.tsx b/src/app/_blocks/HubHead/Highlights/index.tsx index 83866ae..1f7c730 100644 --- a/src/app/_blocks/HubHead/Highlights/index.tsx +++ b/src/app/_blocks/HubHead/Highlights/index.tsx @@ -12,14 +12,13 @@ const placeholder = { authors: "Placeholder", }; -export function Highlights({ content, main }) { +export async function Highlights({ content, main }) { if (!content) { content = placeholder; } const { title, publishedAt, categories, authors } = content; - console.log(content === placeholder); return ( <> @@ -32,7 +31,7 @@ export function Highlights({ content, main }) { <> <div className={styles.metadataContainer}> {/* TODO: is this a good approach for multi category items? */} - {categories.length > 5 ? ( + {categories.length > 2 ? ( <CategoryPill title={categories[0].title} /> ) : ( categories.map((category, i) => <CategoryPill key={i} title={category.title} />) diff --git a/src/app/_blocks/HubHead/index.tsx b/src/app/_blocks/HubHead/index.tsx index 2fba9a3..2f0cda6 100644 --- a/src/app/_blocks/HubHead/index.tsx +++ b/src/app/_blocks/HubHead/index.tsx @@ -1,7 +1,7 @@ import { Highlights } from './Highlights' import styles from './styles.module.css' -export default function HubHead({ highlights }) { +export default async function HubHead({ highlights }) { const { mainHighlight, secondaryHighlight } = highlights return ( diff --git a/src/app/_blocks/RelatedContent/index.tsx b/src/app/_blocks/RelatedContent/index.tsx index ab13c19..3faa2eb 100644 --- a/src/app/_blocks/RelatedContent/index.tsx +++ b/src/app/_blocks/RelatedContent/index.tsx @@ -1,27 +1,35 @@ -import Link from 'next/link' +import Link from "next/link"; -import styles from './styles.module.css' +import styles from "./styles.module.css"; -import ContentCard from '@/app/_components/ContentCard' -export function RelatedContent({ relatedContent }) { +import ContentCard from "@/app/_components/ContentCard"; + +export function RelatedContent({ content }) { return ( <div className={styles.container}> - <h5>You may also like</h5> - <div - style={{ - display: 'grid', - gridTemplateColumns: 'repeat(auto-fit, minmax(200px, 1fr))', - gap: '16px', - }} - > - {relatedContent.map((contentPiece, i) => ( - <div key={i} className={styles.contentCard}> - <ContentCard contentType={'Blogposts'} content={contentPiece} /> - <br /> - <Link href={`${contentPiece.slug}`}>{contentPiece.title}</Link> + + {content.related && ( + <> + <h5>You may also like</h5> + <div + style={{ + display: "grid", + gridTemplateColumns: "repeat(auto-fit, minmax(200px, 1fr))", + gap: "16px", + }} + > + {content.related.map((contentPiece, i) => ( + <div key={i} className={styles.contentCard}> + <ContentCard contentType={"Blogposts"} content={contentPiece} /> + <br /> + <Link href={`${contentPiece.slug}`}>{contentPiece.title}</Link> + </div> + ))} </div> - ))} - </div> + </> + ) + } + </div> - ) + ); } diff --git a/src/app/_blocks/Subscribe/styles.module.css b/src/app/_blocks/Subscribe/styles.module.css index 2821e65..4a3a456 100644 --- a/src/app/_blocks/Subscribe/styles.module.css +++ b/src/app/_blocks/Subscribe/styles.module.css @@ -33,6 +33,7 @@ .image { vertical-align: middle; width: 100%; + height: 100%; } .subscribeButton { @@ -73,5 +74,7 @@ .imageContainer { grid-column: 2; grid-row: 1; + width: 100%; + height: 100%; } } diff --git a/src/app/_components/AdminBar/index.tsx b/src/app/_components/AdminBar/index.tsx deleted file mode 100644 index f877da0..0000000 --- a/src/app/_components/AdminBar/index.tsx +++ /dev/null @@ -1,68 +0,0 @@ -'use client' - -import React, { useEffect } from 'react' -import { useSelectedLayoutSegments } from 'next/navigation' -import { PayloadAdminBar, PayloadAdminBarProps } from 'payload-admin-bar' - -import { useAuth } from '../../_providers/Auth' - -const collectionLabels = { - pages: { - singular: 'Page', - plural: 'Pages', - }, - posts: { - singular: 'Post', - plural: 'Posts', - }, - projects: { - singular: 'Project', - plural: 'Projects', - }, -} - -const Title: React.FC = () => <span>Dashboard</span> - -export const AdminBar: React.FC<{ - adminBarProps?: PayloadAdminBarProps -}> = props => { - const { adminBarProps } = props || {} - const segments = useSelectedLayoutSegments() - const collection = collectionLabels?.[segments?.[1]] ? segments?.[1] : 'pages' - const [show, setShow] = React.useState(false) - - const { user } = useAuth() - - useEffect(() => { - if (user) { - setShow(true) - } - }, [user]) - - const isAdmin = user?.roles?.includes('admin') - - if (!isAdmin) return null - - return ( - <div> - <PayloadAdminBar - {...adminBarProps} - collection={collection} - collectionLabels={{ - singular: collectionLabels[collection]?.singular || 'Page', - plural: collectionLabels[collection]?.plural || 'Pages', - }} - key={user?.id} // use key to get the admin bar to re-run its `me` request - cmsURL={process.env.NEXT_PUBLIC_SERVER_URL} - logo={<Title />} - style={{ - position: 'relative', - zIndex: 'unset', - padding: 0, - backgroundColor: 'transparent', - color: 'black', - }} - /> - </div> - ) -} diff --git a/src/app/_components/AuthorPill/index.tsx b/src/app/_components/AuthorPill/index.tsx index 37459b3..5ef3887 100644 --- a/src/app/_components/AuthorPill/index.tsx +++ b/src/app/_components/AuthorPill/index.tsx @@ -3,12 +3,16 @@ import styles from "./styles.module.css"; import FeaturedImage from "@/app/_components/FeaturedImage"; import { LinkedInIcon, TwitterIcon } from "@/app/_icons/socialIcons"; import { getImage } from "@/app/_utilities/getImage"; -import { Socials } from "@/payload/globals/Socials"; -import { Author } from "@/payload/payload-types"; +import { Author } from "@/payload-types"; +import { fetchMediaByID } from "@/app/_utilities/contentFetchers"; + +export default async function AuthorPill({ large = false, author }) { -export default function AuthorPill({ large = false, author }: { large: boolean; author: Author }) { const { name, featuredImage, linkedIn, x } = author; + const test = await fetchMediaByID("66ed88055946c64a204c9357"); + + /* unsure if this will be useful, as all names have same length in figma const dynamicVars = { @@ -20,14 +24,24 @@ const dynamicVars = { return ( <> <div className={styles.authorPill}> - <FeaturedImage className={styles.authorImage} src={featuredImage} /> + <div className={styles.authorImage}> + {featuredImage && <FeaturedImage src={featuredImage} />} + </div> {name} </div> {large && ( <div className={styles.socials}> - {linkedIn && <a href={linkedIn}><LinkedInIcon /></a>} - {x && <a href={x}><TwitterIcon /></a>} + {linkedIn && ( + <a href={linkedIn}> + <LinkedInIcon /> + </a> + )} + {x && ( + <a href={x}> + <TwitterIcon /> + </a> + )} </div> )} </> diff --git a/src/app/_components/AuthorPill/styles.module.css b/src/app/_components/AuthorPill/styles.module.css index d9b824b..cfb44ed 100644 --- a/src/app/_components/AuthorPill/styles.module.css +++ b/src/app/_components/AuthorPill/styles.module.css @@ -14,6 +14,7 @@ } .authorImage { + position: relative; width: 34px; height: 34px; border-radius: 50%; diff --git a/src/app/_components/AuthorSummary/index.tsx b/src/app/_components/AuthorSummary/index.tsx index 7b11c61..25d0764 100644 --- a/src/app/_components/AuthorSummary/index.tsx +++ b/src/app/_components/AuthorSummary/index.tsx @@ -1,20 +1,20 @@ import React from 'react' -import { Author } from '../../../payload/payload-types' import FeaturedImage from '../FeaturedImage' import SocialLinks from '../SocialLinks' import styles from './styles.module.css' +import { Author } from "@/payload-types"; -export default function AuthorSummary({ author }: { author: Author }) { +export default function AuthorSummary({ author }) { const { name, role, bio, linkedIn, gitHub, medium, x, featuredImage } = author // TODO: Convert this to an array with names in collection config - const socials: string[] = [linkedIn, gitHub, medium, x].filter(Boolean) + const socials = [linkedIn, gitHub, medium, x].filter(Boolean) return ( <div className={styles.gridContainer}> <div className={styles.authorInfoCard}> - <FeaturedImage className={styles.featuredImage} src={featuredImage} /> + {featuredImage && <FeaturedImage className={styles.featuredImage} src={featuredImage} />} <div className={styles.authorInfo}> <h5>{name}</h5> <p>{role}</p> diff --git a/src/app/_components/CMSLink/index.tsx b/src/app/_components/CMSLink/index.tsx deleted file mode 100644 index 8ea2700..0000000 --- a/src/app/_components/CMSLink/index.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react' -import Link from 'next/link' - -import { Page } from '../../../payload/payload-types' - -type CMSLinkType = { - type?: 'custom' | 'reference' - url?: string - newTab?: boolean - reference?: { - value: string | Page - relationTo: 'pages' - } - label?: string - - children?: React.ReactNode - className?: string -} - -export const CMSLink: React.FC<CMSLinkType> = ({ - type, - url, - newTab, - reference, - label, - children, - className, -}) => { - const href = - type === 'reference' && typeof reference?.value === 'object' && reference.value.slug - ? `${reference?.relationTo !== 'pages' ? `/${reference?.relationTo}` : ''}/${ - reference.value.slug - }` - : url - - if (!href) return null - - const newTabProps = newTab ? { target: '_blank', rel: 'noopener noreferrer' } : {} - - if (href || url) { - return ( - <Link {...newTabProps} href={href || url} className={className}> - {label && label} - {children && children} - </Link> - ) - } -} diff --git a/src/app/_components/ContentCard/index.tsx b/src/app/_components/ContentCard/index.tsx index b3bfaec..88638ed 100644 --- a/src/app/_components/ContentCard/index.tsx +++ b/src/app/_components/ContentCard/index.tsx @@ -4,9 +4,9 @@ import { Blogpost, CaseStudy, Category, - PodcastEpisode, + Podcast, TalksAndRoundtable, -} from '../../../payload/payload-types' +} from '@/payload-types' import { HeadphonesIcon, SpectaclesIcon } from '../../_icons/icons' import { estimateReadTime } from '../../_utilities/estimateReadTime' import { formatDateTime } from '../../_utilities/formatDateTime' @@ -19,7 +19,7 @@ import styles from './styles.module.css' interface ContentSummaryProps { contentType: string - content: Blogpost | PodcastEpisode | CaseStudy | TalksAndRoundtable // TODO: Extend to CaseStudy and TalksAndRoundTables once consistency is assured + content: Blogpost | Podcast | CaseStudy | TalksAndRoundtable // TODO: Extend to CaseStudy and TalksAndRoundTables once consistency is assured } const archiveMap = { @@ -33,15 +33,20 @@ export default function ContentCard({ contentType, content }: ContentSummaryProp const { slug, title, summary, featuredImage, categories, publishedAt, authors } = content // todo: convert to a collection item property - const readTime = estimateReadTime(summary) + const readTime = estimateReadTime('herpaderpa') return ( <div className={styles.contentCard}> + {/*<pre>{JSON.stringify(content,null, 2)}</pre>*/} + <Link href={`/${toKebabCase(contentType)}/${slug}`}> <div className={styles.contentMetaContainer}> - <FeaturedImage src={featuredImage} /> - <ArchiveButton collection={archiveMap[contentType]} /> - <h6>{title}</h6> + <div className={styles.imageContainer}> + {/* @ts-ignore */} + {featuredImage && <FeaturedImage src={featuredImage} />} + </div> + {/*<ArchiveButton collection={archiveMap[contentType]} />*/} + <h6>{title} </h6> <p>{summary}</p> {Array.isArray(categories) && categories.length > 0 @@ -62,7 +67,7 @@ export default function ContentCard({ contentType, content }: ContentSummaryProp )} </div> - <Authors authors={authors} /> + {/*<Authors authors={authors} />*/} </div> </Link> </div> diff --git a/src/app/_components/ContentCard/styles.module.css b/src/app/_components/ContentCard/styles.module.css index a5ddb61..a5732b7 100644 --- a/src/app/_components/ContentCard/styles.module.css +++ b/src/app/_components/ContentCard/styles.module.css @@ -21,3 +21,17 @@ gap: 5px; align-items: center; } + +.imageContainer { + position: relative; + width: 280px; + height: 280px; + margin: auto; +} + +@media (min-width: 1024px) { + .imageContainer { + width: 340px; + height: 340px; + } +} diff --git a/src/app/_components/ContentRenderer/index.tsx b/src/app/_components/ContentRenderer/index.tsx deleted file mode 100644 index 6b98044..0000000 --- a/src/app/_components/ContentRenderer/index.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import DOMpurify from 'isomorphic-dompurify' - -export default function ContentRenderer({ content_html }: { content_html: string }) { - // Sanitize HTML content to prevent XSS vulnerabilities. - const sanitizedContent = DOMpurify.sanitize(content_html) - - return <div dangerouslySetInnerHTML={{ __html: sanitizedContent }} /> -} diff --git a/src/app/_components/FeaturedImage/index.tsx b/src/app/_components/FeaturedImage/index.tsx index e5a8254..6a81aec 100644 --- a/src/app/_components/FeaturedImage/index.tsx +++ b/src/app/_components/FeaturedImage/index.tsx @@ -1,16 +1,25 @@ -import Image from 'next/image' +import Image from "next/image"; -import { getImage } from '../../_utilities/getImage' -import styles from './styles.module.css' +import { getImage } from "../../_utilities/getImage"; +import styles from "./styles.module.css"; -import { Media } from '@/payload/payload-types' +import { Media } from "@/payload-types"; +import { fetchMediaByID } from "@/app/_utilities/contentFetchers"; export default function FeaturedImage({ src, className }: { className?: string; src: Media }) { + + + const imageSource = getImage(src); + + return ( - <Image width={'10'} height={'10'} - className={className ? className : styles.featuredImage} - src={getImage(src)} - alt={src.alt} - /> - ) + + <Image fill={true} + className={className ? className : styles.featuredImage} + src={imageSource} alt={"alt info"} + + /> + + + ); } diff --git a/src/app/_components/Footer/index.tsx b/src/app/_components/Footer/index.tsx index b6e1374..575eee1 100644 --- a/src/app/_components/Footer/index.tsx +++ b/src/app/_components/Footer/index.tsx @@ -1,21 +1,11 @@ import Link from 'next/link' - -import { Footer } from '../../../payload/payload-types' -import { fetchFooter } from '../../_api/fetchGlobals' import styles from './styles.module.css' +import { fetchGlobals } from "@/app/_utilities/contentFetchers"; export async function Footer() { - let footer: Footer | null = null - - try { - footer = await fetchFooter() - } catch (error) { - // When deploying this template on Payload Cloud, this page needs to build before the APIs are live - // So swallow the error here and simply render the footer without nav items if one occurs - // in production you may want to redirect to a 404 page or at least log the error somewhere - // console.error(error) - } + const footer = await fetchGlobals('footer') + // @ts-ignore const navItems = footer?.navItems || [] return ( @@ -35,7 +25,7 @@ export async function Footer() { </div> <div> {/* TODO: Update fetchGlobals to include socials and then update here. */} - <p className={styles.title}>We're Social</p> + <p className={styles.title}>We're Social</p> {['Md', 'Md', 'Md', 'Md', 'Md', 'Md', 'Md', 'Md'].map((item, i) => { return <span style={{ marginRight: '20px' }}>{item}</span> })} diff --git a/src/app/_components/Header/index.tsx b/src/app/_components/Header/index.tsx index ca40c41..7718cd6 100644 --- a/src/app/_components/Header/index.tsx +++ b/src/app/_components/Header/index.tsx @@ -1,24 +1,14 @@ import Link from 'next/link' - -import { Header } from '../../../payload/payload-types' -import { fetchHeader } from '../../_api/fetchGlobals' import DropDownIcon from './DropDownIcon' import styles from './styles.module.css' - import Logo from '@/app/_components/Header/Logo' +import { fetchGlobals } from "@/app/_utilities/contentFetchers"; export async function Header() { - let header: Header | null = null - try { - header = await fetchHeader() - } catch (error) { - // When deploying this template on Payload Cloud, this page needs to build before the APIs are live - // So swallow the error here and simply render the header without nav items if one occurs - // in production you may want to redirect to a 404 page or at least log the error somewhere - // console.error(error) - } + const header = await fetchGlobals('header') + // @ts-ignore const navItems = header?.navItems || [] return ( diff --git a/src/app/_components/PostSummary/index.tsx b/src/app/_components/PostSummary/index.tsx index af41689..1758acc 100644 --- a/src/app/_components/PostSummary/index.tsx +++ b/src/app/_components/PostSummary/index.tsx @@ -1,21 +1,22 @@ -import { Blogpost } from '../../../payload/payload-types' -import { estimateReadTime } from '../../_utilities/estimateReadTime' -import { formatDateTime } from '../../_utilities/formatDateTime' -import ArchiveButton from '../ArchiveButton' -import AuthorPill from '../AuthorPill' -import styles from './styles.module.css' -export default function PostSummary({ post }: { post: Blogpost }) { - const { title, publishedAt, content, authors } = post +import { Blogpost } from "@/payload-types"; +import { estimateReadTime } from "../../_utilities/estimateReadTime"; +import { formatDateTime } from "../../_utilities/formatDateTime"; +import ArchiveButton from "../ArchiveButton"; +import AuthorPill from "../AuthorPill"; +import styles from "./styles.module.css"; + +export default function PostSummary({ post }) { + const { title, publishedAt, content, authors } = post; return ( <div className={styles.gridContainer}> {/* Post info */} <div className={styles.leftColumn}> - <ArchiveButton collection="blogposts" color={'var(--soft-white-100)'} /> + <ArchiveButton collection="blogposts" color={"var(--soft-white-100)"} /> <h5>{title}</h5> <div className={styles.postMeta}> <span>{formatDateTime(publishedAt)}</span> - <span>{estimateReadTime('Placeholder')}</span> + <span>{estimateReadTime("Placeholder")}</span> </div> </div> @@ -26,5 +27,5 @@ export default function PostSummary({ post }: { post: Blogpost }) { Social Links </div> </div> - ) + ); } diff --git a/src/app/_components/RecommendedPosts/index.tsx b/src/app/_components/RecommendedPosts/index.tsx index dc61e72..208978b 100644 --- a/src/app/_components/RecommendedPosts/index.tsx +++ b/src/app/_components/RecommendedPosts/index.tsx @@ -5,6 +5,7 @@ import MiniContentCard from '@/app/_components/MiniContentCard' export default function RecommendedPosts({ posts }) { return ( <div className={styles.container}> + <p>hello</p> <p className={styles.title}>Recommended</p> {posts.map((post, i) => ( diff --git a/src/app/_components/SocialLinks/index.tsx b/src/app/_components/SocialLinks/index.tsx index 31ba300..b6d1e47 100644 --- a/src/app/_components/SocialLinks/index.tsx +++ b/src/app/_components/SocialLinks/index.tsx @@ -2,7 +2,7 @@ import Link from 'next/link' import { LinkedInIcon } from '../../_icons/socialIcons' -export default function SocialLinks({ socials }: { socials: string[] }) { +export default function SocialLinks({ socials }) { return ( <div style={{ marginTop: '10px' }}> {socials.map((link, i) => ( diff --git a/src/app/_icons/icons.tsx b/src/app/_icons/icons.tsx index 634f5bb..7eb975e 100644 --- a/src/app/_icons/icons.tsx +++ b/src/app/_icons/icons.tsx @@ -1,6 +1,6 @@ interface IconProperties { x?: string - y?: number + y?: string width?: string height?: string color?: string @@ -489,9 +489,9 @@ export function LinkIcon({ ); } -export default function CodeIcon({ x, y, width = "24", height = "24", color = "var(--dark-rock-800)" }) { +export default function CodeIcon({ x, y, width = "24", height = "24", color = "var(--dark-rock-800)" }: IconProperties) { return ( - <svg width={width} height={height} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> + <svg x={x} y={y} width={width} height={height} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M7.1999 16.7999L2.3999 12L7.1999 7.19995M16.7999 7.19995L21.5999 12L16.7999 16.7999" stroke={color} strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" /> </svg> diff --git a/src/app/_icons/socialIcons.tsx b/src/app/_icons/socialIcons.tsx index 6cfeeac..2120ace 100644 --- a/src/app/_icons/socialIcons.tsx +++ b/src/app/_icons/socialIcons.tsx @@ -71,50 +71,3 @@ export function ApplePodcastIcon() { } - -export function SpotifyIcon() { - return ( - <svg width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg"> - <g clip-path="url(#clip0_1649_16955)"> - <path - d="M15.5 0C6.93964 0 0 6.93976 0 15.5C0 24.0608 6.93976 31 15.5 31C24.061 31 31 24.0608 31 15.5C31 6.94037 24.061 0.000847656 15.4998 0.000847656L15.5 0ZM22.6081 22.3556C22.3304 22.8109 21.7344 22.9553 21.2791 22.6758C17.6398 20.4529 13.0586 19.9493 7.6633 21.1821C7.41345 21.239 7.15124 21.1943 6.93433 21.0579C6.71742 20.9215 6.56357 20.7045 6.50661 20.4547C6.47825 20.331 6.47455 20.203 6.49572 20.0779C6.5169 19.9528 6.56253 19.8331 6.63002 19.7256C6.6975 19.6182 6.78551 19.5251 6.889 19.4517C6.9925 19.3783 7.10945 19.326 7.23317 19.2979C13.1377 17.9489 18.2022 18.5296 22.2879 21.0266C22.7432 21.3061 22.8876 21.9003 22.6081 22.3556ZM24.5053 18.1351C24.1553 18.7037 23.4113 18.8832 22.8431 18.5334C18.6768 15.9725 12.3258 15.2308 7.39786 16.7267C6.75873 16.9197 6.08375 16.5596 5.88976 15.9215C5.69722 15.2824 6.05759 14.6086 6.69564 14.4144C12.3247 12.7062 19.3227 13.5337 24.1073 16.4738C24.6755 16.8238 24.8551 17.5677 24.5053 18.1351ZM24.6681 13.7403C19.6725 10.773 11.4305 10.5 6.661 11.9478C5.89509 12.1801 5.08509 11.7477 4.85307 10.9818C4.62094 10.2155 5.05288 9.40608 5.8194 9.17321C11.2944 7.51108 20.3963 7.83234 26.1477 11.2467C26.8381 11.6555 27.0638 12.5453 26.6548 13.2332C26.2477 13.9223 25.3555 14.1493 24.6689 13.7403H24.6681Z" - fill="#1ED760" - /> - </g> - <defs> - <clipPath id="clip0_1649_16955"> - <rect width="31" height="31" fill="white" /> - </clipPath> - </defs> - </svg> - ) -} - -export function ApplePodcastIcon() { - return ( - <svg width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg"> - <g clip-path="url(#clip0_1649_16957)"> - <path - d="M6.89751 1.21408e-05C5.99124 -0.00168978 5.09355 0.175558 4.25594 0.521587C3.41833 0.867616 2.65728 1.37562 2.01645 2.01645C1.37562 2.65728 0.867616 3.41833 0.521587 4.25594C0.175558 5.09355 -0.00168978 5.99124 1.21408e-05 6.89751V24.1025C-0.00168978 25.0088 0.175558 25.9065 0.521587 26.7441C0.867616 27.5817 1.37562 28.3427 2.01645 28.9836C2.65728 29.6244 3.41833 30.1324 4.25594 30.4784C5.09355 30.8245 5.99124 31.0017 6.89751 31H24.1025C25.0088 31.0017 25.9065 30.8245 26.7441 30.4784C27.5817 30.1324 28.3427 29.6244 28.9836 28.9836C29.6244 28.3427 30.1324 27.5817 30.4784 26.7441C30.8245 25.9065 31.0017 25.0088 31 24.1025V6.89751C31.0017 5.99124 30.8245 5.09355 30.4784 4.25594C30.1324 3.41833 29.6244 2.65728 28.9836 2.01645C28.3427 1.37562 27.5817 0.867616 26.7441 0.521587C25.9065 0.175558 25.0088 -0.00168978 24.1025 1.21408e-05H6.89751ZM15.3256 3.31701C18.343 3.31701 21.071 4.4821 23.148 6.65855C24.729 8.30155 25.6176 10.0414 26.0723 12.3316C26.2273 13.0936 26.2273 15.1732 26.0813 16.0309C25.5988 18.7572 24.104 21.2006 21.8963 22.8716C21.111 23.4657 19.189 24.5003 18.879 24.5003C18.7653 24.5003 18.755 24.3828 18.8067 23.9062C18.8997 23.1415 18.9927 22.9826 19.4267 22.8005C20.119 22.5112 21.297 21.6716 22.0203 20.947C23.2816 19.6868 24.1779 18.1084 24.614 16.3796C24.8827 15.3153 24.8517 12.949 24.552 11.8536C23.6117 8.3713 20.77 5.66397 17.2877 4.94064C16.275 4.73397 14.4357 4.73397 13.4127 4.94064C9.88901 5.66397 6.97501 8.50564 6.08635 12.081C5.84868 13.0523 5.84868 15.4186 6.08635 16.39C6.67535 18.7563 8.20468 20.9263 10.2093 22.218C10.602 22.4763 11.0773 22.745 11.2737 22.8276C11.7077 23.0136 11.8007 23.1686 11.8833 23.9333C11.935 24.3983 11.9221 24.5326 11.811 24.5326C11.7387 24.5326 11.2117 24.3053 10.6537 24.0366L10.602 23.9979C7.40901 22.4272 5.36301 19.769 4.61901 16.2324C4.43301 15.3205 4.40201 13.1427 4.58026 12.3057C5.04526 10.0582 5.93393 8.30155 7.4116 6.74639C9.54026 4.50276 12.2786 3.31572 15.3269 3.31572L15.3256 3.31701ZM15.4987 6.9466C16.027 6.95176 16.5359 6.99826 16.9273 7.08351C20.5233 7.88435 23.0756 11.4855 22.5796 15.0583C22.3833 16.4972 21.8873 17.6803 21.009 18.7783C20.575 19.3337 19.521 20.2637 19.335 20.2637C19.3053 20.2637 19.273 19.9123 19.273 19.4848V18.7033L19.8103 18.0627C21.8356 15.6369 21.691 12.2476 19.4796 10.0233C18.622 9.15793 17.63 8.64901 16.3486 8.41393C15.522 8.26151 15.3463 8.26151 14.4783 8.40359C13.1608 8.6193 12.1404 9.12951 11.2336 10.0259C9.01197 12.2269 8.8673 15.6343 10.8926 18.0627L11.4261 18.7033V19.4887C11.4261 19.9227 11.3912 20.274 11.3486 20.274C11.3098 20.274 11.0076 20.0673 10.6873 19.809L10.6433 19.7948C9.56868 18.9371 8.61801 17.4156 8.22535 15.9237C7.98768 15.0221 7.98768 13.3093 8.23568 12.4103C8.88668 9.9846 10.6743 8.10264 13.1543 7.21914C13.6839 7.03185 14.6191 6.93497 15.4987 6.9466ZM15.3308 10.8087C15.7312 10.8087 16.1316 10.8862 16.421 11.0386C17.0634 11.3851 17.5453 11.9685 17.7643 12.6648C18.3636 14.7031 16.204 16.4881 14.251 15.5762H14.2316C13.3119 15.1487 12.8159 14.3414 12.8056 13.29C12.8056 12.3432 13.3326 11.5191 14.2419 11.036C14.5313 10.8849 14.9304 10.8087 15.3308 10.8087ZM15.3166 16.9157C16.5928 16.9105 17.5202 17.3665 17.8612 18.1686C18.1169 18.7679 18.0213 20.6641 17.5796 23.7253C17.2799 25.8643 17.1146 26.4043 16.7013 26.7685C16.1329 27.2723 15.3269 27.4118 14.5623 27.1405H14.5584C13.6336 26.8086 13.4346 26.3591 13.0549 23.7253C12.6144 20.6641 12.5176 18.7679 12.7733 18.1686C13.1117 17.3729 14.0314 16.9208 15.3179 16.9157H15.3166Z" - fill="url(#paint0_linear_1649_16957)" - /> - </g> - <defs> - <linearGradient - id="paint0_linear_1649_16957" - x1="15.5" - y1="31" - x2="15.5" - y2="0" - gradientUnits="userSpaceOnUse" - > - <stop stop-color="#8936C2" /> - <stop offset="1" stop-color="#EE5AFA" /> - </linearGradient> - <clipPath id="clip0_1649_16957"> - <rect width="31" height="31" fill="white" /> - </clipPath> - </defs> - </svg> - ) -} diff --git a/src/app/_interfaces/ContentTypeArrays.ts b/src/app/_interfaces/ContentTypeArrays.ts index 28cae6c..38ae30f 100644 --- a/src/app/_interfaces/ContentTypeArrays.ts +++ b/src/app/_interfaces/ContentTypeArrays.ts @@ -1,13 +1,13 @@ import type { Blogpost, CaseStudy, - PodcastEpisode, + Podcast, TalksAndRoundtable, -} from '@/payload/payload-types' +} from '@/payload-types' export interface ContentTypeArrays { Blogposts: Blogpost[] - PodcastEpisodes: PodcastEpisode[] + Podcasts: Podcast[] CaseStudies: CaseStudy[] TalksAndRoundtables: TalksAndRoundtable[] } diff --git a/src/app/_providers/Auth/index.tsx b/src/app/_providers/Auth/index.tsx deleted file mode 100644 index 03a47cc..0000000 --- a/src/app/_providers/Auth/index.tsx +++ /dev/null @@ -1,218 +0,0 @@ -'use client' - -import React, { createContext, useCallback, useContext, useEffect, useState } from 'react' - -import { User } from '../../../payload/payload-types' - -// eslint-disable-next-line no-unused-vars -type ResetPassword = (args: { - password: string - passwordConfirm: string - token: string -}) => Promise<void> - -type ForgotPassword = (args: { email: string }) => Promise<void> // eslint-disable-line no-unused-vars - -type Create = (args: { email: string; password: string; passwordConfirm: string }) => Promise<void> // eslint-disable-line no-unused-vars - -type Login = (args: { email: string; password: string }) => Promise<User> // eslint-disable-line no-unused-vars - -type Logout = () => Promise<void> - -type AuthContext = { - user?: User | null - setUser: (user: User | null) => void // eslint-disable-line no-unused-vars - logout: Logout - login: Login - create: Create - resetPassword: ResetPassword - forgotPassword: ForgotPassword - status: undefined | 'loggedOut' | 'loggedIn' -} - -const Context = createContext({} as AuthContext) - -export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { - const [user, setUser] = useState<User | null>() - - // used to track the single event of logging in or logging out - // useful for `useEffect` hooks that should only run once - const [status, setStatus] = useState<undefined | 'loggedOut' | 'loggedIn'>() - const create = useCallback<Create>(async args => { - try { - const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/create`, { - method: 'POST', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - email: args.email, - password: args.password, - passwordConfirm: args.passwordConfirm, - }), - }) - - if (res.ok) { - const { data, errors } = await res.json() - if (errors) throw new Error(errors[0].message) - setUser(data?.loginUser?.user) - setStatus('loggedIn') - } else { - throw new Error('Invalid login') - } - } catch (e) { - throw new Error('An error occurred while attempting to login.') - } - }, []) - - const login = useCallback<Login>(async args => { - try { - const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/login`, { - method: 'POST', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - email: args.email, - password: args.password, - }), - }) - - if (res.ok) { - const { user, errors } = await res.json() - if (errors) throw new Error(errors[0].message) - setUser(user) - setStatus('loggedIn') - return user - } - - throw new Error('Invalid login') - } catch (e) { - throw new Error('An error occurred while attempting to login.') - } - }, []) - - const logout = useCallback<Logout>(async () => { - try { - const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/logout`, { - method: 'POST', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - }, - }) - - if (res.ok) { - setUser(null) - setStatus('loggedOut') - } else { - throw new Error('An error occurred while attempting to logout.') - } - } catch (e) { - throw new Error('An error occurred while attempting to logout.') - } - }, []) - - useEffect(() => { - const fetchMe = async () => { - try { - const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/me`, { - method: 'GET', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - }, - }) - - if (res.ok) { - const { user: meUser } = await res.json() - setUser(meUser || null) - setStatus(meUser ? 'loggedIn' : undefined) - } else { - throw new Error('An error occurred while fetching your account.') - } - } catch (e) { - setUser(null) - throw new Error('An error occurred while fetching your account.') - } - } - - fetchMe() - }, []) - - const forgotPassword = useCallback<ForgotPassword>(async args => { - try { - const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/forgot-password`, { - method: 'POST', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - email: args.email, - }), - }) - - if (res.ok) { - const { data, errors } = await res.json() - if (errors) throw new Error(errors[0].message) - setUser(data?.loginUser?.user) - } else { - throw new Error('Invalid login') - } - } catch (e) { - throw new Error('An error occurred while attempting to login.') - } - }, []) - - const resetPassword = useCallback<ResetPassword>(async args => { - try { - const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/reset-password`, { - method: 'POST', - credentials: 'include', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - password: args.password, - passwordConfirm: args.passwordConfirm, - token: args.token, - }), - }) - - if (res.ok) { - const { data, errors } = await res.json() - if (errors) throw new Error(errors[0].message) - setUser(data?.loginUser?.user) - setStatus(data?.loginUser?.user ? 'loggedIn' : undefined) - } else { - throw new Error('Invalid login') - } - } catch (e) { - throw new Error('An error occurred while attempting to login.') - } - }, []) - - return ( - <Context.Provider - value={{ - user, - setUser, - login, - logout, - create, - resetPassword, - forgotPassword, - status, - }} - > - {children} - </Context.Provider> - ) -} - -type UseAuth<T = User> = () => AuthContext // eslint-disable-line no-unused-vars - -export const useAuth: UseAuth = () => useContext(Context) diff --git a/src/app/_providers/index.tsx b/src/app/_providers/index.tsx deleted file mode 100644 index 91a9586..0000000 --- a/src/app/_providers/index.tsx +++ /dev/null @@ -1,11 +0,0 @@ -'use client' - -import React from 'react' - -import { AuthProvider } from '../_providers/Auth' - -export const Providers: React.FC<{ - children: React.ReactNode -}> = ({ children }) => { - return <AuthProvider>{children}</AuthProvider> -} diff --git a/src/app/_utilities/calculateTotalArticles.ts b/src/app/_utilities/calculateTotalArticles.ts index d396694..e5c1e72 100644 --- a/src/app/_utilities/calculateTotalArticles.ts +++ b/src/app/_utilities/calculateTotalArticles.ts @@ -1,13 +1,13 @@ import type { Blogpost, CaseStudy, - PodcastEpisode, + Podcast, TalksAndRoundtable, -} from '../../payload/payload-types' +} from '@/payload-types' export function calculateTotalArticles(content: { Blogposts: Blogpost[] - PodcastEpisodes: PodcastEpisode[] + PodcastEpisodes: Podcast[] CaseStudies: CaseStudy[] TalksAndRoundtables: TalksAndRoundtable[] }): number { diff --git a/src/app/_utilities/contentFetchers.ts b/src/app/_utilities/contentFetchers.ts new file mode 100644 index 0000000..8ef199a --- /dev/null +++ b/src/app/_utilities/contentFetchers.ts @@ -0,0 +1,110 @@ +import { getPayloadHMR } from "@payloadcms/next/utilities"; +import configPromise from "@payload-config"; +import type { Author, Blogpost, CaseStudy, Config, Media, Podcast, TalksAndRoundtable } from "@/payload-types"; +import { notFound } from "next/navigation"; +import { CollectionSlug, getPayload } from "payload"; + +interface FetcherArgs { + collection?: CollectionSlug, + limit?: number, + depth?: number, + draft?: boolean, + overrideAccess?: boolean, + query?: any +} + +async function fetcher({ collection, limit = 10, depth = 1, draft = false, overrideAccess = false, query }: FetcherArgs) { + const payload = await getPayloadHMR({ config: configPromise }); + + return await payload.find({ + // @ts-ignore + collection, + limit, + depth, + draft, + overrideAccess, + where: query, + }); +} + +export async function fetchContentBySlug({ slug, type, depth }: { slug: string, type: CollectionSlug, depth?: number }) { + + if (!slug || !type) { + throw new Error("Must input slug and/or type."); + } + + const query = { slug: { equals: slug } }; + + return await fetcher({ + collection: type, + depth: depth, + query: query, + }).then(res => { + if (res.docs.length < 1) { + notFound(); + } + return res.docs[0]; + }); +} + + +export async function fetchContentFromAuthor(author) { + + const query = { authors: { in: author.id } }; + + const blogposts = await fetcher({ + collection: "blogposts", + query: query, + }).then(res => res.docs); + + const podcasts = await fetcher({ + collection: "podcasts", + query: query, + }).then(res => res.docs); + + const cases = await fetcher({ + collection: "case-studies", + query: query, + }).then(res => res.docs); + + const talks = await fetcher({ + collection: "talks-and-roundtables", + query: query, + }).then(res => res.docs); + + return { + Blogposts: blogposts, + Podcasts: podcasts, + CaseStudies: cases, + TalksAndRoundTables: talks, + }; +} + +export async function fetchAllContentByType(type: CollectionSlug) { + return await fetcher({ + collection: type, + limit: 100, + depth: 3, + }).then(res => res.docs); +} + +export async function fetchGlobals(slug: keyof Config["globals"], depth: number = 0) { + const payload = await getPayloadHMR({ config: configPromise }); + return await payload.findGlobal({ + slug: slug, + depth: depth, + }); +} + +export async function fetchMediaByID(id) { + const query = { where: { id: { equals: id } } }; + return await fetcher({ + collection: "media", + query: query, + }).then(res => { + return res.docs[0]; + }) + .then((res: Media) => { + return { filename: res.filename, mimeType: res.mimeType }; + }); +} diff --git a/src/app/_utilities/fetcher.ts b/src/app/_utilities/fetcher.ts deleted file mode 100644 index 6f8ecd2..0000000 --- a/src/app/_utilities/fetcher.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { GRAPHQL_API_URL } from '../_api/shared' - -import type { ContentTypeArrays } from '@/app/_interfaces/ContentTypeArrays' - -export async function fetcher(args: { - query: string - variables?: Record<string, unknown> -}): Promise<ContentTypeArrays> { - const { query, variables } = args - - try { - return await fetch(`${GRAPHQL_API_URL}/api/graphql`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - cache: 'no-store', - body: JSON.stringify({ - query: query, - ...(variables && { variables: variables }), - }), - }) - ?.then(res => res.json()) - ?.then(res => { - const Blogposts = res?.data?.Blogposts?.docs || [] - const PodcastEpisodes = res?.data?.PodcastEpisodes?.docs || [] - const CaseStudies = res?.data?.CaseStudies?.docs || [] - const TalksAndRoundtables = res?.data?.TalksAndRoundtables?.docs || [] - return { Blogposts, PodcastEpisodes, CaseStudies, TalksAndRoundtables } - }) - } catch (err: unknown) { - return { Blogposts: [], CaseStudies: [], PodcastEpisodes: [], TalksAndRoundtables: [] } - } -} diff --git a/src/app/_utilities/filterArticles.ts b/src/app/_utilities/filterArticles.ts deleted file mode 100644 index 02939de..0000000 --- a/src/app/_utilities/filterArticles.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type { - Blogpost, - CaseStudy, - PodcastEpisode, - TalksAndRoundtable, -} from '@/payload/payload-types' - -interface ArticleFilterProps { - articles: { - Blogposts: Blogpost[] - PodcastEpisodes: PodcastEpisode[] - CaseStudies: CaseStudy[] - TalksAndRoundtables: TalksAndRoundtable[] - } - filter: 'All' | 'Blogposts' | 'PodcastEpisodes' | 'TalksAndRoundtables' | 'CaseStudies' -} - -export function filterArticles({ articles, filter = 'All' }: ArticleFilterProps): Array<{ - contentType: 'Blogposts' | 'PodcastEpisodes' | 'CaseStudies' | 'TalksAndRoundtables' - content: Blogpost | PodcastEpisode | CaseStudy | TalksAndRoundtable -}> { - if (filter === 'All') { - const keys = Object.keys(articles) as Array<keyof ArticleFilterProps['articles']> - - return keys.flatMap( - articleType => - articles[articleType].map(article => ({ - contentType: articleType, - content: article, - })), - undefined, - ) - } - - return articles[filter]?.map(article => ({ - contentType: filter, - content: article, - })) -} diff --git a/src/app/_utilities/filterContent.ts b/src/app/_utilities/filterContent.ts new file mode 100644 index 0000000..4a52c10 --- /dev/null +++ b/src/app/_utilities/filterContent.ts @@ -0,0 +1,39 @@ +import type { + Blogpost, + CaseStudy, + Podcast, + TalksAndRoundtable, +} from '@/payload-types' + +interface ArticleFilterProps { + articles: { + Blogposts: Blogpost[] + Podcasts: Podcast[] + CaseStudies: CaseStudy[] + TalksAndRoundtables: TalksAndRoundtable[] + } + filter: 'All' | 'Blogposts' | 'Podcasts' | 'TalksAndRoundtables' | 'CaseStudies' +} + +export function filterContent({ articles, filter = 'All' }: ArticleFilterProps): Array<{ + contentType: 'Blogposts' | 'Podcasts' | 'CaseStudies' | 'TalksAndRoundtables' + content: Blogpost | Podcast | CaseStudy | TalksAndRoundtable +}> { + if (filter === 'All') { + + + return Object.keys(articles).flatMap( + articleType => + articles[articleType].map(article => ({ + contentType: articleType, + content: article, + })), + undefined, + ) + } + + return articles[filter]?.map(article => ({ + contentType: filter, + content: article, + })) +} diff --git a/src/app/_utilities/formatDateTime.ts b/src/app/_utilities/formatDateTime.ts index fb6ef60..c307cc7 100644 --- a/src/app/_utilities/formatDateTime.ts +++ b/src/app/_utilities/formatDateTime.ts @@ -1,4 +1,4 @@ -export const formatDateTime = (timestamp: string): string => { +export const formatDateTime = (timestamp): string => { const now = new Date() let date = now if (timestamp) date = new Date(timestamp) diff --git a/src/app/_utilities/getImage.ts b/src/app/_utilities/getImage.ts index 7dcd7a4..0da7e7f 100644 --- a/src/app/_utilities/getImage.ts +++ b/src/app/_utilities/getImage.ts @@ -1,8 +1,10 @@ -import type { Media } from '../../payload/payload-types' +import type { Media } from '@/payload-types' -export function getImage(imageFileSource: Media): string { +export function getImage(imageFileSource: string | Media): string { + + // @ts-ignore if ('filename' in imageFileSource) { return `${process.env.NEXT_PUBLIC_SERVER_URL}/media/${imageFileSource.filename}` } - return undefined + return 'not found' } diff --git a/src/app/_utilities/useEpisodeDuration.ts b/src/app/_utilities/useEpisodeDuration.ts index 8849521..2c4c4e2 100644 --- a/src/app/_utilities/useEpisodeDuration.ts +++ b/src/app/_utilities/useEpisodeDuration.ts @@ -4,6 +4,7 @@ import { formatEpisodeDuration } from './formatEpisodeDuration' export function useEpisodeDuration(src: string): string { const [duration, setDuration] = useState<number>(0) + useEffect(() => { const audio = new Audio(src) diff --git a/src/app/next/preview/route.ts b/src/app/next/preview/route.ts deleted file mode 100644 index fdc9c69..0000000 --- a/src/app/next/preview/route.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { draftMode } from 'next/headers' -import { redirect } from 'next/navigation' - -import { payloadToken } from '../../_api/token' - -export async function GET( - req: Request & { - cookies: { - get: (name: string) => { - value: string - } - } - }, -): Promise<Response> { - const token = req.cookies.get(payloadToken)?.value - const { searchParams } = new URL(req.url) - const url = searchParams.get('url') - const secret = searchParams.get('secret') - - if (!url) { - return new Response('No URL provided', { status: 404 }) - } - - if (!token) { - new Response('You are not allowed to preview this page', { status: 403 }) - } - - // validate the Payload token - const userReq = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/me`, { - headers: { - Authorization: `JWT ${token}`, - }, - }) - - const userRes = await userReq.json() - - if (!userReq.ok || !userRes?.user) { - draftMode().disable() - return new Response('You are not allowed to preview this page', { status: 403 }) - } - - if (secret !== process.env.NEXT_PRIVATE_DRAFT_SECRET) { - return new Response('Invalid token', { status: 401 }) - } - - draftMode().enable() - - redirect(url) -} diff --git a/src/app/next/revalidate/route.ts b/src/app/next/revalidate/route.ts deleted file mode 100644 index bde6445..0000000 --- a/src/app/next/revalidate/route.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { revalidateTag } from 'next/cache' -import type { NextRequest } from 'next/server' -import { NextResponse } from 'next/server' - -export async function GET(request: NextRequest): Promise<Response> { - const collection = request.nextUrl.searchParams.get('collection') - const slug = request.nextUrl.searchParams.get('slug') - const secret = request.nextUrl.searchParams.get('secret') - - if ( - !secret || - secret !== process.env.NEXT_PRIVATE_REVALIDATION_KEY || - typeof collection !== 'string' || - typeof slug !== 'string' - ) { - // Do not indicate that the revalidation key is incorrect in the response - // This will protect this API route from being exploited - return new Response('Invalid request', { status: 400 }) - } - - if (typeof collection === 'string' && typeof slug === 'string') { - revalidateTag(`${collection}_${slug}`) - return NextResponse.json({ revalidated: true, now: Date.now() }) - } - - return NextResponse.json({ revalidated: false, now: Date.now() }) -} diff --git a/src/app/page.tsx b/src/app/page.tsx deleted file mode 100644 index eccccf2..0000000 --- a/src/app/page.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import PageTemplate from './(pages)/[slug]/page' - -export const dynamic = 'force-dynamic' - -export default PageTemplate - -// export { generateMetadata } diff --git a/src/blocks/ArchiveBlock/Component.tsx b/src/blocks/ArchiveBlock/Component.tsx new file mode 100644 index 0000000..fdfbd1b --- /dev/null +++ b/src/blocks/ArchiveBlock/Component.tsx @@ -0,0 +1,65 @@ +import type { Post, ArchiveBlock as ArchiveBlockProps } from '@/payload-types' + +import configPromise from '@payload-config' +import { getPayloadHMR } from '@payloadcms/next/utilities' +import React from 'react' +import RichText from '@/components/RichText' + +import { CollectionArchive } from '@/components/CollectionArchive' + +export const ArchiveBlock: React.FC< + ArchiveBlockProps & { + id?: string + } +> = async (props) => { + const { id, categories, introContent, limit: limitFromProps, populateBy, selectedDocs } = props + + const limit = limitFromProps || 3 + + let posts: Post[] = [] + + if (populateBy === 'collection') { + const payload = await getPayloadHMR({ config: configPromise }) + + const flattenedCategories = categories?.map((category) => { + if (typeof category === 'object') return category.id + else return category + }) + + const fetchedPosts = await payload.find({ + collection: 'posts', + depth: 1, + limit, + ...(flattenedCategories && flattenedCategories.length > 0 + ? { + where: { + categories: { + in: flattenedCategories, + }, + }, + } + : {}), + }) + + posts = fetchedPosts.docs + } else { + if (selectedDocs?.length) { + const filteredSelectedPosts = selectedDocs.map((post) => { + if (typeof post.value === 'object') return post.value + }) as Post[] + + posts = filteredSelectedPosts + } + } + + return ( + <div className="my-16" id={`block-${id}`}> + {introContent && ( + <div className="container mb-16"> + <RichText className="ml-0 max-w-[48rem]" content={introContent} enableGutter={false} /> + </div> + )} + <CollectionArchive posts={posts} /> + </div> + ) +} diff --git a/src/blocks/ArchiveBlock/config.ts b/src/blocks/ArchiveBlock/config.ts new file mode 100644 index 0000000..f87a376 --- /dev/null +++ b/src/blocks/ArchiveBlock/config.ts @@ -0,0 +1,94 @@ +import type { Block } from 'payload' + +import { + FixedToolbarFeature, + HeadingFeature, + InlineToolbarFeature, + lexicalEditor, +} from '@payloadcms/richtext-lexical' + +export const Archive: Block = { + slug: 'archive', + interfaceName: 'ArchiveBlock', + fields: [ + { + name: 'introContent', + type: 'richText', + editor: lexicalEditor({ + features: ({ rootFeatures }) => { + return [ + ...rootFeatures, + HeadingFeature({ enabledHeadingSizes: ['h1', 'h2', 'h3', 'h4'] }), + FixedToolbarFeature(), + InlineToolbarFeature(), + ] + }, + }), + label: 'Intro Content', + }, + { + name: 'populateBy', + type: 'select', + defaultValue: 'collection', + options: [ + { + label: 'Collection', + value: 'collection', + }, + { + label: 'Individual Selection', + value: 'selection', + }, + ], + }, + { + name: 'relationTo', + type: 'select', + admin: { + condition: (_, siblingData) => siblingData.populateBy === 'collection', + }, + defaultValue: 'posts', + label: 'Collections To Show', + options: [ + { + label: 'Posts', + value: 'posts', + }, + ], + }, + { + name: 'categories', + type: 'relationship', + admin: { + condition: (_, siblingData) => siblingData.populateBy === 'collection', + }, + hasMany: true, + label: 'Categories To Show', + relationTo: 'categories', + }, + { + name: 'limit', + type: 'number', + admin: { + condition: (_, siblingData) => siblingData.populateBy === 'collection', + step: 1, + }, + defaultValue: 10, + label: 'Limit', + }, + { + name: 'selectedDocs', + type: 'relationship', + admin: { + condition: (_, siblingData) => siblingData.populateBy === 'selection', + }, + hasMany: true, + label: 'Selection', + relationTo: ['posts'], + }, + ], + labels: { + plural: 'Archives', + singular: 'Archive', + }, +} diff --git a/src/blocks/Banner/Component.tsx b/src/blocks/Banner/Component.tsx new file mode 100644 index 0000000..143596c --- /dev/null +++ b/src/blocks/Banner/Component.tsx @@ -0,0 +1,26 @@ +import type { BannerBlock as BannerBlockProps } from 'src/payload-types' + +import { cn } from 'src/utilities/cn' +import React from 'react' +import RichText from '@/components/RichText' + +type Props = { + className?: string +} & BannerBlockProps + +export const BannerBlock: React.FC<Props> = ({ className, content, style }) => { + return ( + <div className={cn('mx-auto my-8 w-full', className)}> + <div + className={cn('border py-3 px-6 flex items-center rounded', { + 'border-border bg-card': style === 'info', + 'border-error bg-error/30': style === 'error', + 'border-success bg-success/30': style === 'success', + 'border-warning bg-warning/30': style === 'warning', + })} + > + <RichText content={content} enableGutter={false} enableProse={false} /> + </div> + </div> + ) +} diff --git a/src/blocks/Banner/config.ts b/src/blocks/Banner/config.ts new file mode 100644 index 0000000..53e46b5 --- /dev/null +++ b/src/blocks/Banner/config.ts @@ -0,0 +1,37 @@ +import type { Block } from 'payload' + +import { + FixedToolbarFeature, + InlineToolbarFeature, + lexicalEditor, +} from '@payloadcms/richtext-lexical' + +export const Banner: Block = { + slug: 'banner', + fields: [ + { + name: 'style', + type: 'select', + defaultValue: 'info', + options: [ + { label: 'Info', value: 'info' }, + { label: 'Warning', value: 'warning' }, + { label: 'Error', value: 'error' }, + { label: 'Success', value: 'success' }, + ], + required: true, + }, + { + name: 'content', + type: 'richText', + editor: lexicalEditor({ + features: ({ rootFeatures }) => { + return [...rootFeatures, FixedToolbarFeature(), InlineToolbarFeature()] + }, + }), + label: false, + required: true, + }, + ], + interfaceName: 'BannerBlock', +} diff --git a/src/blocks/CallToAction/Component.tsx b/src/blocks/CallToAction/Component.tsx new file mode 100644 index 0000000..776ba84 --- /dev/null +++ b/src/blocks/CallToAction/Component.tsx @@ -0,0 +1,29 @@ +import React from 'react' + +import type { Page } from '@/payload-types' + +import RichText from '@/components/RichText' +import { CMSLink } from '@/components/Link' + +type Props = Extract<Page['layout'][0], { blockType: 'cta' }> + +export const CallToActionBlock: React.FC< + Props & { + id?: string + } +> = ({ links, richText }) => { + return ( + <div className="container"> + <div className="bg-card rounded border-border border p-4 flex flex-col gap-8 md:flex-row md:justify-between md:items-center"> + <div className="max-w-[48rem] flex items-center"> + {richText && <RichText className="mb-0" content={richText} enableGutter={false} />} + </div> + <div className="flex flex-col gap-8"> + {(links || []).map(({ link }, i) => { + return <CMSLink key={i} size="lg" {...link} /> + })} + </div> + </div> + </div> + ) +} diff --git a/src/blocks/CallToAction/config.ts b/src/blocks/CallToAction/config.ts new file mode 100644 index 0000000..f4ffa77 --- /dev/null +++ b/src/blocks/CallToAction/config.ts @@ -0,0 +1,42 @@ +import type { Block } from 'payload' + +import { + FixedToolbarFeature, + HeadingFeature, + InlineToolbarFeature, + lexicalEditor, +} from '@payloadcms/richtext-lexical' + +import { linkGroup } from '../../fields/linkGroup' + +export const CallToAction: Block = { + slug: 'cta', + interfaceName: 'CallToActionBlock', + fields: [ + { + name: 'richText', + type: 'richText', + editor: lexicalEditor({ + features: ({ rootFeatures }) => { + return [ + ...rootFeatures, + HeadingFeature({ enabledHeadingSizes: ['h1', 'h2', 'h3', 'h4'] }), + FixedToolbarFeature(), + InlineToolbarFeature(), + ] + }, + }), + label: false, + }, + linkGroup({ + appearances: ['default', 'outline'], + overrides: { + maxRows: 2, + }, + }), + ], + labels: { + plural: 'Calls to Action', + singular: 'Call to Action', + }, +} diff --git a/src/blocks/Code/Component.client.tsx b/src/blocks/Code/Component.client.tsx new file mode 100644 index 0000000..4e9854f --- /dev/null +++ b/src/blocks/Code/Component.client.tsx @@ -0,0 +1,31 @@ +'use client' +import { Highlight, themes } from 'prism-react-renderer' +import React from 'react' + +type Props = { + code: string + language?: string +} + +export const Code: React.FC<Props> = ({ code, language = '' }) => { + if (!code) return null + + return ( + <Highlight code={code} language={language} theme={themes.vsDark}> + {({ getLineProps, getTokenProps, tokens }) => ( + <pre className="bg-black p-4 border text-xs border-border rounded overflow-x-auto"> + {tokens.map((line, i) => ( + <div key={i} {...getLineProps({ className: 'table-row', line })}> + <span className="table-cell select-none text-right text-white/25">{i + 1}</span> + <span className="table-cell pl-4"> + {line.map((token, key) => ( + <span key={key} {...getTokenProps({ token })} /> + ))} + </span> + </div> + ))} + </pre> + )} + </Highlight> + ) +} diff --git a/src/blocks/Code/Component.tsx b/src/blocks/Code/Component.tsx new file mode 100644 index 0000000..7f776d7 --- /dev/null +++ b/src/blocks/Code/Component.tsx @@ -0,0 +1,21 @@ +import React from 'react' + +import { Code } from './Component.client' + +export type CodeBlockProps = { + code: string + language?: string + blockType: 'code' +} + +type Props = CodeBlockProps & { + className?: string +} + +export const CodeBlock: React.FC<Props> = ({ className, code, language }) => { + return ( + <div className={[className, 'not-prose'].filter(Boolean).join(' ')}> + <Code code={code} language={language} /> + </div> + ) +} diff --git a/src/blocks/Code/config.ts b/src/blocks/Code/config.ts new file mode 100644 index 0000000..7b26f80 --- /dev/null +++ b/src/blocks/Code/config.ts @@ -0,0 +1,33 @@ +import type { Block } from 'payload' + +export const Code: Block = { + slug: 'code', + interfaceName: 'CodeBlock', + fields: [ + { + name: 'language', + type: 'select', + defaultValue: 'typescript', + options: [ + { + label: 'Typescript', + value: 'typescript', + }, + { + label: 'Javascript', + value: 'javascript', + }, + { + label: 'CSS', + value: 'css', + }, + ], + }, + { + name: 'code', + type: 'code', + label: false, + required: true, + }, + ], +} diff --git a/src/blocks/Content/Component.tsx b/src/blocks/Content/Component.tsx new file mode 100644 index 0000000..a09232b --- /dev/null +++ b/src/blocks/Content/Component.tsx @@ -0,0 +1,49 @@ +import { cn } from 'src/utilities/cn' +import React from 'react' +import RichText from '@/components/RichText' + +import type { Page } from '@/payload-types' + +import { CMSLink } from '../../components/Link' + +type Props = Extract<Page['layout'][0], { blockType: 'content' }> + +export const ContentBlock: React.FC< + { + id?: string + } & Props +> = (props) => { + const { columns } = props + + const colsSpanClasses = { + full: '12', + half: '6', + oneThird: '4', + twoThirds: '8', + } + + return ( + <div className="container my-16"> + <div className="grid grid-cols-4 lg:grid-cols-12 gap-y-8 gap-x-16"> + {columns && + columns.length > 0 && + columns.map((col, index) => { + const { enableLink, link, richText, size } = col + + return ( + <div + className={cn(`col-span-4 lg:col-span-${colsSpanClasses[size!]}`, { + 'md:col-span-2': size !== 'full', + })} + key={index} + > + {richText && <RichText content={richText} enableGutter={false} />} + + {enableLink && <CMSLink {...link} />} + </div> + ) + })} + </div> + </div> + ) +} diff --git a/src/payload/blocks/Content/index.ts b/src/blocks/Content/config.ts similarity index 55% rename from src/payload/blocks/Content/index.ts rename to src/blocks/Content/config.ts index 8568aa4..01c22ed 100644 --- a/src/payload/blocks/Content/index.ts +++ b/src/blocks/Content/config.ts @@ -1,8 +1,13 @@ -import type { Block, Field } from 'payload/types' +import type { Block, Field } from 'payload' -import { invertBackground } from '../../fields/invertBackground' -import link from '../../fields/link' -import richText from '../../fields/richText' +import { + FixedToolbarFeature, + HeadingFeature, + InlineToolbarFeature, + lexicalEditor, +} from '@payloadcms/richtext-lexical' + +import { link } from '@/fields/link' const columnFields: Field[] = [ { @@ -11,24 +16,38 @@ const columnFields: Field[] = [ defaultValue: 'oneThird', options: [ { - value: 'oneThird', label: 'One Third', + value: 'oneThird', }, { - value: 'half', label: 'Half', + value: 'half', }, { - value: 'twoThirds', label: 'Two Thirds', + value: 'twoThirds', }, { - value: 'full', label: 'Full', + value: 'full', }, ], }, - richText(), + { + name: 'richText', + type: 'richText', + editor: lexicalEditor({ + features: ({ rootFeatures }) => { + return [ + ...rootFeatures, + HeadingFeature({ enabledHeadingSizes: ['h2', 'h3', 'h4'] }), + FixedToolbarFeature(), + InlineToolbarFeature(), + ] + }, + }), + label: false, + }, { name: 'enableLink', type: 'checkbox', @@ -44,8 +63,8 @@ const columnFields: Field[] = [ export const Content: Block = { slug: 'content', + interfaceName: 'ContentBlock', fields: [ - invertBackground, { name: 'columns', type: 'array', diff --git a/src/blocks/Form/Checkbox/index.tsx b/src/blocks/Form/Checkbox/index.tsx new file mode 100644 index 0000000..1eff694 --- /dev/null +++ b/src/blocks/Form/Checkbox/index.tsx @@ -0,0 +1,44 @@ +import type { CheckboxField } from '@payloadcms/plugin-form-builder/types' +import type { FieldErrorsImpl, FieldValues, UseFormRegister } from 'react-hook-form' + +import { useFormContext } from 'react-hook-form' + +import { Checkbox as CheckboxUi } from '@/components/ui/checkbox' +import { Label } from '@/components/ui/label' +import React from 'react' + +import { Error } from '../Error' +import { Width } from '../Width' + +export const Checkbox: React.FC< + CheckboxField & { + errors: Partial< + FieldErrorsImpl<{ + [x: string]: any + }> + > + getValues: any + register: UseFormRegister<FieldValues> + setValue: any + } +> = ({ name, defaultValue, errors, label, register, required: requiredFromProps, width }) => { + const props = register(name, { required: requiredFromProps }) + const { setValue } = useFormContext() + + return ( + <Width width={width}> + <div className="flex items-center gap-2"> + <CheckboxUi + defaultChecked={defaultValue} + id={name} + {...props} + onCheckedChange={(checked) => { + setValue(props.name, checked) + }} + /> + <Label htmlFor={name}>{label}</Label> + </div> + {requiredFromProps && errors[name] && <Error />} + </Width> + ) +} diff --git a/src/blocks/Form/Component.tsx b/src/blocks/Form/Component.tsx new file mode 100644 index 0000000..eb26b68 --- /dev/null +++ b/src/blocks/Form/Component.tsx @@ -0,0 +1,171 @@ +'use client' +import type { Form as FormType } from '@payloadcms/plugin-form-builder/types' + +import { useRouter } from 'next/navigation' +import React, { useCallback, useState } from 'react' +import { useForm, FormProvider } from 'react-hook-form' +import RichText from '@/components/RichText' +import { Button } from '@/components/ui/button' + +import { buildInitialFormState } from './buildInitialFormState' +import { fields } from './fields' + +export type Value = unknown + +export interface Property { + [key: string]: Value +} + +export interface Data { + [key: string]: Property | Property[] +} + +export type FormBlockType = { + blockName?: string + blockType?: 'formBlock' + enableIntro: boolean + form: FormType + introContent?: { + [k: string]: unknown + }[] +} + +export const FormBlock: React.FC< + { + id?: string + } & FormBlockType +> = (props) => { + const { + enableIntro, + form: formFromProps, + form: { id: formID, confirmationMessage, confirmationType, redirect, submitButtonLabel } = {}, + introContent, + } = props + + const formMethods = useForm({ + defaultValues: buildInitialFormState(formFromProps.fields), + }) + const { + control, + formState: { errors }, + handleSubmit, + register, + } = formMethods + + const [isLoading, setIsLoading] = useState(false) + const [hasSubmitted, setHasSubmitted] = useState<boolean>() + const [error, setError] = useState<{ message: string; status?: string } | undefined>() + const router = useRouter() + + const onSubmit = useCallback( + (data: Data) => { + let loadingTimerID: ReturnType<typeof setTimeout> + const submitForm = async () => { + setError(undefined) + + const dataToSend = Object.entries(data).map(([name, value]) => ({ + field: name, + value, + })) + + // delay loading indicator by 1s + loadingTimerID = setTimeout(() => { + setIsLoading(true) + }, 1000) + + try { + const req = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/form-submissions`, { + body: JSON.stringify({ + form: formID, + submissionData: dataToSend, + }), + headers: { + 'Content-Type': 'application/json', + }, + method: 'POST', + }) + + const res = await req.json() + + clearTimeout(loadingTimerID) + + if (req.status >= 400) { + setIsLoading(false) + + setError({ + message: res.errors?.[0]?.message || 'Internal Server Error', + status: res.status, + }) + + return + } + + setIsLoading(false) + setHasSubmitted(true) + + if (confirmationType === 'redirect' && redirect) { + const { url } = redirect + + const redirectUrl = url + + if (redirectUrl) router.push(redirectUrl) + } + } catch (err) { + console.warn(err) + setIsLoading(false) + setError({ + message: 'Something went wrong.', + }) + } + } + + void submitForm() + }, + [router, formID, redirect, confirmationType], + ) + + return ( + <div className="container lg:max-w-[48rem] pb-20"> + <FormProvider {...formMethods}> + {enableIntro && introContent && !hasSubmitted && ( + <RichText className="mb-8" content={introContent} enableGutter={false} /> + )} + {!isLoading && hasSubmitted && confirmationType === 'message' && ( + <RichText content={confirmationMessage} /> + )} + {isLoading && !hasSubmitted && <p>Loading, please wait...</p>} + {error && <div>{`${error.status || '500'}: ${error.message || ''}`}</div>} + {!hasSubmitted && ( + <form id={formID} onSubmit={handleSubmit(onSubmit)}> + <div className="mb-4 last:mb-0"> + {formFromProps && + formFromProps.fields && + formFromProps.fields?.map((field, index) => { + const Field: React.FC<any> = fields?.[field.blockType] + if (Field) { + return ( + <div className="mb-6 last:mb-0" key={index}> + <Field + form={formFromProps} + {...field} + {...formMethods} + control={control} + errors={errors} + register={register} + /> + </div> + ) + } + return null + })} + </div> + + <Button form={formID} type="submit" variant="default"> + {submitButtonLabel} + </Button> + </form> + )} + </FormProvider> + </div> + ) +} diff --git a/src/blocks/Form/Country/index.tsx b/src/blocks/Form/Country/index.tsx new file mode 100644 index 0000000..e6cfa08 --- /dev/null +++ b/src/blocks/Form/Country/index.tsx @@ -0,0 +1,63 @@ +import type { CountryField } from '@payloadcms/plugin-form-builder/types' +import type { Control, FieldErrorsImpl, FieldValues } from 'react-hook-form' + +import { Label } from '@/components/ui/label' +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@/components/ui/select' +import React from 'react' +import { Controller } from 'react-hook-form' + +import { Error } from '../Error' +import { Width } from '../Width' +import { countryOptions } from './options' + +export const Country: React.FC< + CountryField & { + control: Control<FieldValues, any> + errors: Partial< + FieldErrorsImpl<{ + [x: string]: any + }> + > + } +> = ({ name, control, errors, label, required, width }) => { + return ( + <Width width={width}> + <Label className="" htmlFor={name}> + {label} + </Label> + <Controller + control={control} + defaultValue="" + name={name} + render={({ field: { onChange, value } }) => { + const controlledValue = countryOptions.find((t) => t.value === value) + + return ( + <Select onValueChange={(val) => onChange(val)} value={controlledValue?.value}> + <SelectTrigger className="w-full" id={name}> + <SelectValue placeholder={label} /> + </SelectTrigger> + <SelectContent> + {countryOptions.map(({ label, value }) => { + return ( + <SelectItem key={value} value={value}> + {label} + </SelectItem> + ) + })} + </SelectContent> + </Select> + ) + }} + rules={{ required }} + /> + {required && errors[name] && <Error />} + </Width> + ) +} diff --git a/src/blocks/Form/Country/options.ts b/src/blocks/Form/Country/options.ts new file mode 100644 index 0000000..f952c1d --- /dev/null +++ b/src/blocks/Form/Country/options.ts @@ -0,0 +1,982 @@ +export const countryOptions = [ + { + label: 'Afghanistan', + value: 'AF', + }, + { + label: 'Åland Islands', + value: 'AX', + }, + { + label: 'Albania', + value: 'AL', + }, + { + label: 'Algeria', + value: 'DZ', + }, + { + label: 'American Samoa', + value: 'AS', + }, + { + label: 'Andorra', + value: 'AD', + }, + { + label: 'Angola', + value: 'AO', + }, + { + label: 'Anguilla', + value: 'AI', + }, + { + label: 'Antarctica', + value: 'AQ', + }, + { + label: 'Antigua and Barbuda', + value: 'AG', + }, + { + label: 'Argentina', + value: 'AR', + }, + { + label: 'Armenia', + value: 'AM', + }, + { + label: 'Aruba', + value: 'AW', + }, + { + label: 'Australia', + value: 'AU', + }, + { + label: 'Austria', + value: 'AT', + }, + { + label: 'Azerbaijan', + value: 'AZ', + }, + { + label: 'Bahamas', + value: 'BS', + }, + { + label: 'Bahrain', + value: 'BH', + }, + { + label: 'Bangladesh', + value: 'BD', + }, + { + label: 'Barbados', + value: 'BB', + }, + { + label: 'Belarus', + value: 'BY', + }, + { + label: 'Belgium', + value: 'BE', + }, + { + label: 'Belize', + value: 'BZ', + }, + { + label: 'Benin', + value: 'BJ', + }, + { + label: 'Bermuda', + value: 'BM', + }, + { + label: 'Bhutan', + value: 'BT', + }, + { + label: 'Bolivia', + value: 'BO', + }, + { + label: 'Bosnia and Herzegovina', + value: 'BA', + }, + { + label: 'Botswana', + value: 'BW', + }, + { + label: 'Bouvet Island', + value: 'BV', + }, + { + label: 'Brazil', + value: 'BR', + }, + { + label: 'British Indian Ocean Territory', + value: 'IO', + }, + { + label: 'Brunei Darussalam', + value: 'BN', + }, + { + label: 'Bulgaria', + value: 'BG', + }, + { + label: 'Burkina Faso', + value: 'BF', + }, + { + label: 'Burundi', + value: 'BI', + }, + { + label: 'Cambodia', + value: 'KH', + }, + { + label: 'Cameroon', + value: 'CM', + }, + { + label: 'Canada', + value: 'CA', + }, + { + label: 'Cape Verde', + value: 'CV', + }, + { + label: 'Cayman Islands', + value: 'KY', + }, + { + label: 'Central African Republic', + value: 'CF', + }, + { + label: 'Chad', + value: 'TD', + }, + { + label: 'Chile', + value: 'CL', + }, + { + label: 'China', + value: 'CN', + }, + { + label: 'Christmas Island', + value: 'CX', + }, + { + label: 'Cocos (Keeling) Islands', + value: 'CC', + }, + { + label: 'Colombia', + value: 'CO', + }, + { + label: 'Comoros', + value: 'KM', + }, + { + label: 'Congo', + value: 'CG', + }, + { + label: 'Congo, The Democratic Republic of the', + value: 'CD', + }, + { + label: 'Cook Islands', + value: 'CK', + }, + { + label: 'Costa Rica', + value: 'CR', + }, + { + label: "Cote D'Ivoire", + value: 'CI', + }, + { + label: 'Croatia', + value: 'HR', + }, + { + label: 'Cuba', + value: 'CU', + }, + { + label: 'Cyprus', + value: 'CY', + }, + { + label: 'Czech Republic', + value: 'CZ', + }, + { + label: 'Denmark', + value: 'DK', + }, + { + label: 'Djibouti', + value: 'DJ', + }, + { + label: 'Dominica', + value: 'DM', + }, + { + label: 'Dominican Republic', + value: 'DO', + }, + { + label: 'Ecuador', + value: 'EC', + }, + { + label: 'Egypt', + value: 'EG', + }, + { + label: 'El Salvador', + value: 'SV', + }, + { + label: 'Equatorial Guinea', + value: 'GQ', + }, + { + label: 'Eritrea', + value: 'ER', + }, + { + label: 'Estonia', + value: 'EE', + }, + { + label: 'Ethiopia', + value: 'ET', + }, + { + label: 'Falkland Islands (Malvinas)', + value: 'FK', + }, + { + label: 'Faroe Islands', + value: 'FO', + }, + { + label: 'Fiji', + value: 'FJ', + }, + { + label: 'Finland', + value: 'FI', + }, + { + label: 'France', + value: 'FR', + }, + { + label: 'French Guiana', + value: 'GF', + }, + { + label: 'French Polynesia', + value: 'PF', + }, + { + label: 'French Southern Territories', + value: 'TF', + }, + { + label: 'Gabon', + value: 'GA', + }, + { + label: 'Gambia', + value: 'GM', + }, + { + label: 'Georgia', + value: 'GE', + }, + { + label: 'Germany', + value: 'DE', + }, + { + label: 'Ghana', + value: 'GH', + }, + { + label: 'Gibraltar', + value: 'GI', + }, + { + label: 'Greece', + value: 'GR', + }, + { + label: 'Greenland', + value: 'GL', + }, + { + label: 'Grenada', + value: 'GD', + }, + { + label: 'Guadeloupe', + value: 'GP', + }, + { + label: 'Guam', + value: 'GU', + }, + { + label: 'Guatemala', + value: 'GT', + }, + { + label: 'Guernsey', + value: 'GG', + }, + { + label: 'Guinea', + value: 'GN', + }, + { + label: 'Guinea-Bissau', + value: 'GW', + }, + { + label: 'Guyana', + value: 'GY', + }, + { + label: 'Haiti', + value: 'HT', + }, + { + label: 'Heard Island and Mcdonald Islands', + value: 'HM', + }, + { + label: 'Holy See (Vatican City State)', + value: 'VA', + }, + { + label: 'Honduras', + value: 'HN', + }, + { + label: 'Hong Kong', + value: 'HK', + }, + { + label: 'Hungary', + value: 'HU', + }, + { + label: 'Iceland', + value: 'IS', + }, + { + label: 'India', + value: 'IN', + }, + { + label: 'Indonesia', + value: 'ID', + }, + { + label: 'Iran, Islamic Republic Of', + value: 'IR', + }, + { + label: 'Iraq', + value: 'IQ', + }, + { + label: 'Ireland', + value: 'IE', + }, + { + label: 'Isle of Man', + value: 'IM', + }, + { + label: 'Israel', + value: 'IL', + }, + { + label: 'Italy', + value: 'IT', + }, + { + label: 'Jamaica', + value: 'JM', + }, + { + label: 'Japan', + value: 'JP', + }, + { + label: 'Jersey', + value: 'JE', + }, + { + label: 'Jordan', + value: 'JO', + }, + { + label: 'Kazakhstan', + value: 'KZ', + }, + { + label: 'Kenya', + value: 'KE', + }, + { + label: 'Kiribati', + value: 'KI', + }, + { + label: "Democratic People's Republic of Korea", + value: 'KP', + }, + { + label: 'Korea, Republic of', + value: 'KR', + }, + { + label: 'Kosovo', + value: 'XK', + }, + { + label: 'Kuwait', + value: 'KW', + }, + { + label: 'Kyrgyzstan', + value: 'KG', + }, + { + label: "Lao People's Democratic Republic", + value: 'LA', + }, + { + label: 'Latvia', + value: 'LV', + }, + { + label: 'Lebanon', + value: 'LB', + }, + { + label: 'Lesotho', + value: 'LS', + }, + { + label: 'Liberia', + value: 'LR', + }, + { + label: 'Libyan Arab Jamahiriya', + value: 'LY', + }, + { + label: 'Liechtenstein', + value: 'LI', + }, + { + label: 'Lithuania', + value: 'LT', + }, + { + label: 'Luxembourg', + value: 'LU', + }, + { + label: 'Macao', + value: 'MO', + }, + { + label: 'Macedonia, The Former Yugoslav Republic of', + value: 'MK', + }, + { + label: 'Madagascar', + value: 'MG', + }, + { + label: 'Malawi', + value: 'MW', + }, + { + label: 'Malaysia', + value: 'MY', + }, + { + label: 'Maldives', + value: 'MV', + }, + { + label: 'Mali', + value: 'ML', + }, + { + label: 'Malta', + value: 'MT', + }, + { + label: 'Marshall Islands', + value: 'MH', + }, + { + label: 'Martinique', + value: 'MQ', + }, + { + label: 'Mauritania', + value: 'MR', + }, + { + label: 'Mauritius', + value: 'MU', + }, + { + label: 'Mayotte', + value: 'YT', + }, + { + label: 'Mexico', + value: 'MX', + }, + { + label: 'Micronesia, Federated States of', + value: 'FM', + }, + { + label: 'Moldova, Republic of', + value: 'MD', + }, + { + label: 'Monaco', + value: 'MC', + }, + { + label: 'Mongolia', + value: 'MN', + }, + { + label: 'Montenegro', + value: 'ME', + }, + { + label: 'Montserrat', + value: 'MS', + }, + { + label: 'Morocco', + value: 'MA', + }, + { + label: 'Mozambique', + value: 'MZ', + }, + { + label: 'Myanmar', + value: 'MM', + }, + { + label: 'Namibia', + value: 'NA', + }, + { + label: 'Nauru', + value: 'NR', + }, + { + label: 'Nepal', + value: 'NP', + }, + { + label: 'Netherlands', + value: 'NL', + }, + { + label: 'Netherlands Antilles', + value: 'AN', + }, + { + label: 'New Caledonia', + value: 'NC', + }, + { + label: 'New Zealand', + value: 'NZ', + }, + { + label: 'Nicaragua', + value: 'NI', + }, + { + label: 'Niger', + value: 'NE', + }, + { + label: 'Nigeria', + value: 'NG', + }, + { + label: 'Niue', + value: 'NU', + }, + { + label: 'Norfolk Island', + value: 'NF', + }, + { + label: 'Northern Mariana Islands', + value: 'MP', + }, + { + label: 'Norway', + value: 'NO', + }, + { + label: 'Oman', + value: 'OM', + }, + { + label: 'Pakistan', + value: 'PK', + }, + { + label: 'Palau', + value: 'PW', + }, + { + label: 'Palestinian Territory, Occupied', + value: 'PS', + }, + { + label: 'Panama', + value: 'PA', + }, + { + label: 'Papua New Guinea', + value: 'PG', + }, + { + label: 'Paraguay', + value: 'PY', + }, + { + label: 'Peru', + value: 'PE', + }, + { + label: 'Philippines', + value: 'PH', + }, + { + label: 'Pitcairn', + value: 'PN', + }, + { + label: 'Poland', + value: 'PL', + }, + { + label: 'Portugal', + value: 'PT', + }, + { + label: 'Puerto Rico', + value: 'PR', + }, + { + label: 'Qatar', + value: 'QA', + }, + { + label: 'Reunion', + value: 'RE', + }, + { + label: 'Romania', + value: 'RO', + }, + { + label: 'Russian Federation', + value: 'RU', + }, + { + label: 'Rwanda', + value: 'RW', + }, + { + label: 'Saint Helena', + value: 'SH', + }, + { + label: 'Saint Kitts and Nevis', + value: 'KN', + }, + { + label: 'Saint Lucia', + value: 'LC', + }, + { + label: 'Saint Pierre and Miquelon', + value: 'PM', + }, + { + label: 'Saint Vincent and the Grenadines', + value: 'VC', + }, + { + label: 'Samoa', + value: 'WS', + }, + { + label: 'San Marino', + value: 'SM', + }, + { + label: 'Sao Tome and Principe', + value: 'ST', + }, + { + label: 'Saudi Arabia', + value: 'SA', + }, + { + label: 'Senegal', + value: 'SN', + }, + { + label: 'Serbia', + value: 'RS', + }, + { + label: 'Seychelles', + value: 'SC', + }, + { + label: 'Sierra Leone', + value: 'SL', + }, + { + label: 'Singapore', + value: 'SG', + }, + { + label: 'Slovakia', + value: 'SK', + }, + { + label: 'Slovenia', + value: 'SI', + }, + { + label: 'Solomon Islands', + value: 'SB', + }, + { + label: 'Somalia', + value: 'SO', + }, + { + label: 'South Africa', + value: 'ZA', + }, + { + label: 'South Georgia and the South Sandwich Islands', + value: 'GS', + }, + { + label: 'Spain', + value: 'ES', + }, + { + label: 'Sri Lanka', + value: 'LK', + }, + { + label: 'Sudan', + value: 'SD', + }, + { + label: 'Suriname', + value: 'SR', + }, + { + label: 'Svalbard and Jan Mayen', + value: 'SJ', + }, + { + label: 'Swaziland', + value: 'SZ', + }, + { + label: 'Sweden', + value: 'SE', + }, + { + label: 'Switzerland', + value: 'CH', + }, + { + label: 'Syrian Arab Republic', + value: 'SY', + }, + { + label: 'Taiwan', + value: 'TW', + }, + { + label: 'Tajikistan', + value: 'TJ', + }, + { + label: 'Tanzania, United Republic of', + value: 'TZ', + }, + { + label: 'Thailand', + value: 'TH', + }, + { + label: 'Timor-Leste', + value: 'TL', + }, + { + label: 'Togo', + value: 'TG', + }, + { + label: 'Tokelau', + value: 'TK', + }, + { + label: 'Tonga', + value: 'TO', + }, + { + label: 'Trinidad and Tobago', + value: 'TT', + }, + { + label: 'Tunisia', + value: 'TN', + }, + { + label: 'Turkey', + value: 'TR', + }, + { + label: 'Turkmenistan', + value: 'TM', + }, + { + label: 'Turks and Caicos Islands', + value: 'TC', + }, + { + label: 'Tuvalu', + value: 'TV', + }, + { + label: 'Uganda', + value: 'UG', + }, + { + label: 'Ukraine', + value: 'UA', + }, + { + label: 'United Arab Emirates', + value: 'AE', + }, + { + label: 'United Kingdom', + value: 'GB', + }, + { + label: 'United States', + value: 'US', + }, + { + label: 'United States Minor Outlying Islands', + value: 'UM', + }, + { + label: 'Uruguay', + value: 'UY', + }, + { + label: 'Uzbekistan', + value: 'UZ', + }, + { + label: 'Vanuatu', + value: 'VU', + }, + { + label: 'Venezuela', + value: 'VE', + }, + { + label: 'Viet Nam', + value: 'VN', + }, + { + label: 'Virgin Islands, British', + value: 'VG', + }, + { + label: 'Virgin Islands, U.S.', + value: 'VI', + }, + { + label: 'Wallis and Futuna', + value: 'WF', + }, + { + label: 'Western Sahara', + value: 'EH', + }, + { + label: 'Yemen', + value: 'YE', + }, + { + label: 'Zambia', + value: 'ZM', + }, + { + label: 'Zimbabwe', + value: 'ZW', + }, +] diff --git a/src/blocks/Form/Email/index.tsx b/src/blocks/Form/Email/index.tsx new file mode 100644 index 0000000..c015b93 --- /dev/null +++ b/src/blocks/Form/Email/index.tsx @@ -0,0 +1,34 @@ +import type { EmailField } from '@payloadcms/plugin-form-builder/types' +import type { FieldErrorsImpl, FieldValues, UseFormRegister } from 'react-hook-form' + +import { Input } from '@/components/ui/input' +import { Label } from '@/components/ui/label' +import React from 'react' + +import { Error } from '../Error' +import { Width } from '../Width' + +export const Email: React.FC< + EmailField & { + errors: Partial< + FieldErrorsImpl<{ + [x: string]: any + }> + > + register: UseFormRegister<FieldValues> + } +> = ({ name, defaultValue, errors, label, register, required: requiredFromProps, width }) => { + return ( + <Width width={width}> + <Label htmlFor={name}>{label}</Label> + <Input + defaultValue={defaultValue} + id={name} + type="text" + {...register(name, { pattern: /^\S[^\s@]*@\S+$/, required: requiredFromProps })} + /> + + {requiredFromProps && errors[name] && <Error />} + </Width> + ) +} diff --git a/src/blocks/Form/Error/index.tsx b/src/blocks/Form/Error/index.tsx new file mode 100644 index 0000000..94aa851 --- /dev/null +++ b/src/blocks/Form/Error/index.tsx @@ -0,0 +1,5 @@ +import * as React from 'react' + +export const Error: React.FC = () => { + return <div className="mt-2 text-red-500 text-sm">This field is required</div> +} diff --git a/src/blocks/Form/Message/index.tsx b/src/blocks/Form/Message/index.tsx new file mode 100644 index 0000000..f1d7851 --- /dev/null +++ b/src/blocks/Form/Message/index.tsx @@ -0,0 +1,12 @@ +import RichText from '@/components/RichText' +import React from 'react' + +import { Width } from '../Width' + +export const Message: React.FC = ({ message }: { message: Record<string, any> }) => { + return ( + <Width className="my-12" width="100"> + {message && <RichText content={message} />} + </Width> + ) +} diff --git a/src/blocks/Form/Number/index.tsx b/src/blocks/Form/Number/index.tsx new file mode 100644 index 0000000..5dedc8a --- /dev/null +++ b/src/blocks/Form/Number/index.tsx @@ -0,0 +1,32 @@ +import type { TextField } from '@payloadcms/plugin-form-builder/types' +import type { FieldErrorsImpl, FieldValues, UseFormRegister } from 'react-hook-form' + +import { Input } from '@/components/ui/input' +import { Label } from '@/components/ui/label' +import React from 'react' + +import { Error } from '../Error' +import { Width } from '../Width' +export const Number: React.FC< + TextField & { + errors: Partial< + FieldErrorsImpl<{ + [x: string]: any + }> + > + register: UseFormRegister<FieldValues> + } +> = ({ name, defaultValue, errors, label, register, required: requiredFromProps, width }) => { + return ( + <Width width={width}> + <Label htmlFor={name}>{label}</Label> + <Input + defaultValue={defaultValue} + id={name} + type="number" + {...register(name, { required: requiredFromProps })} + /> + {requiredFromProps && errors[name] && <Error />} + </Width> + ) +} diff --git a/src/blocks/Form/Select/index.tsx b/src/blocks/Form/Select/index.tsx new file mode 100644 index 0000000..c0d1f77 --- /dev/null +++ b/src/blocks/Form/Select/index.tsx @@ -0,0 +1,60 @@ +import type { SelectField } from '@payloadcms/plugin-form-builder/types' +import type { Control, FieldErrorsImpl, FieldValues } from 'react-hook-form' + +import { Label } from '@/components/ui/label' +import { + Select as SelectComponent, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@/components/ui/select' +import React from 'react' +import { Controller } from 'react-hook-form' + +import { Error } from '../Error' +import { Width } from '../Width' + +export const Select: React.FC< + SelectField & { + control: Control<FieldValues, any> + errors: Partial< + FieldErrorsImpl<{ + [x: string]: any + }> + > + } +> = ({ name, control, errors, label, options, required, width }) => { + return ( + <Width width={width}> + <Label htmlFor={name}>{label}</Label> + <Controller + control={control} + defaultValue="" + name={name} + render={({ field: { onChange, value } }) => { + const controlledValue = options.find((t) => t.value === value) + + return ( + <SelectComponent onValueChange={(val) => onChange(val)} value={controlledValue?.value}> + <SelectTrigger className="w-full" id={name}> + <SelectValue placeholder={label} /> + </SelectTrigger> + <SelectContent> + {options.map(({ label, value }) => { + return ( + <SelectItem key={value} value={value}> + {label} + </SelectItem> + ) + })} + </SelectContent> + </SelectComponent> + ) + }} + rules={{ required }} + /> + {required && errors[name] && <Error />} + </Width> + ) +} diff --git a/src/blocks/Form/State/index.tsx b/src/blocks/Form/State/index.tsx new file mode 100644 index 0000000..db8aa8a --- /dev/null +++ b/src/blocks/Form/State/index.tsx @@ -0,0 +1,61 @@ +import type { StateField } from '@payloadcms/plugin-form-builder/types' +import type { Control, FieldErrorsImpl, FieldValues } from 'react-hook-form' + +import { Label } from '@/components/ui/label' +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@/components/ui/select' +import React from 'react' +import { Controller } from 'react-hook-form' + +import { Error } from '../Error' +import { Width } from '../Width' +import { stateOptions } from './options' + +export const State: React.FC< + StateField & { + control: Control<FieldValues, any> + errors: Partial< + FieldErrorsImpl<{ + [x: string]: any + }> + > + } +> = ({ name, control, errors, label, required, width }) => { + return ( + <Width width={width}> + <Label htmlFor={name}>{label}</Label> + <Controller + control={control} + defaultValue="" + name={name} + render={({ field: { onChange, value } }) => { + const controlledValue = stateOptions.find((t) => t.value === value) + + return ( + <Select onValueChange={(val) => onChange(val)} value={controlledValue?.value}> + <SelectTrigger className="w-full" id={name}> + <SelectValue placeholder={label} /> + </SelectTrigger> + <SelectContent> + {stateOptions.map(({ label, value }) => { + return ( + <SelectItem key={value} value={value}> + {label} + </SelectItem> + ) + })} + </SelectContent> + </Select> + ) + }} + rules={{ required }} + /> + {required && errors[name] && <Error />} + </Width> + ) +} diff --git a/src/blocks/Form/State/options.ts b/src/blocks/Form/State/options.ts new file mode 100644 index 0000000..8dff991 --- /dev/null +++ b/src/blocks/Form/State/options.ts @@ -0,0 +1,52 @@ +export const stateOptions = [ + { label: 'Alabama', value: 'AL' }, + { label: 'Alaska', value: 'AK' }, + { label: 'Arizona', value: 'AZ' }, + { label: 'Arkansas', value: 'AR' }, + { label: 'California', value: 'CA' }, + { label: 'Colorado', value: 'CO' }, + { label: 'Connecticut', value: 'CT' }, + { label: 'Delaware', value: 'DE' }, + { label: 'Florida', value: 'FL' }, + { label: 'Georgia', value: 'GA' }, + { label: 'Hawaii', value: 'HI' }, + { label: 'Idaho', value: 'ID' }, + { label: 'Illinois', value: 'IL' }, + { label: 'Indiana', value: 'IN' }, + { label: 'Iowa', value: 'IA' }, + { label: 'Kansas', value: 'KS' }, + { label: 'Kentucky', value: 'KY' }, + { label: 'Louisiana', value: 'LA' }, + { label: 'Maine', value: 'ME' }, + { label: 'Maryland', value: 'MD' }, + { label: 'Massachusetts', value: 'MA' }, + { label: 'Michigan', value: 'MI' }, + { label: 'Minnesota', value: 'MN' }, + { label: 'Mississippi', value: 'MS' }, + { label: 'Missouri', value: 'MO' }, + { label: 'Montana', value: 'MT' }, + { label: 'Nebraska', value: 'NE' }, + { label: 'Nevada', value: 'NV' }, + { label: 'New Hampshire', value: 'NH' }, + { label: 'New Jersey', value: 'NJ' }, + { label: 'New Mexico', value: 'NM' }, + { label: 'New York', value: 'NY' }, + { label: 'North Carolina', value: 'NC' }, + { label: 'North Dakota', value: 'ND' }, + { label: 'Ohio', value: 'OH' }, + { label: 'Oklahoma', value: 'OK' }, + { label: 'Oregon', value: 'OR' }, + { label: 'Pennsylvania', value: 'PA' }, + { label: 'Rhode Island', value: 'RI' }, + { label: 'South Carolina', value: 'SC' }, + { label: 'South Dakota', value: 'SD' }, + { label: 'Tennessee', value: 'TN' }, + { label: 'Texas', value: 'TX' }, + { label: 'Utah', value: 'UT' }, + { label: 'Vermont', value: 'VT' }, + { label: 'Virginia', value: 'VA' }, + { label: 'Washington', value: 'WA' }, + { label: 'West Virginia', value: 'WV' }, + { label: 'Wisconsin', value: 'WI' }, + { label: 'Wyoming', value: 'WY' }, +] diff --git a/src/blocks/Form/Text/index.tsx b/src/blocks/Form/Text/index.tsx new file mode 100644 index 0000000..33778bd --- /dev/null +++ b/src/blocks/Form/Text/index.tsx @@ -0,0 +1,33 @@ +import type { TextField } from '@payloadcms/plugin-form-builder/types' +import type { FieldErrorsImpl, FieldValues, UseFormRegister } from 'react-hook-form' + +import { Input } from '@/components/ui/input' +import { Label } from '@/components/ui/label' +import React from 'react' + +import { Error } from '../Error' +import { Width } from '../Width' + +export const Text: React.FC< + TextField & { + errors: Partial< + FieldErrorsImpl<{ + [x: string]: any + }> + > + register: UseFormRegister<FieldValues> + } +> = ({ name, defaultValue, errors, label, register, required: requiredFromProps, width }) => { + return ( + <Width width={width}> + <Label htmlFor={name}>{label}</Label> + <Input + defaultValue={defaultValue} + id={name} + type="text" + {...register(name, { required: requiredFromProps })} + /> + {requiredFromProps && errors[name] && <Error />} + </Width> + ) +} diff --git a/src/blocks/Form/Textarea/index.tsx b/src/blocks/Form/Textarea/index.tsx new file mode 100644 index 0000000..ef52d88 --- /dev/null +++ b/src/blocks/Form/Textarea/index.tsx @@ -0,0 +1,45 @@ +import type { TextField } from '@payloadcms/plugin-form-builder/types' +import type { FieldErrorsImpl, FieldValues, UseFormRegister } from 'react-hook-form' + +import { Label } from '@/components/ui/label' +import { Textarea as TextAreaComponent } from '@/components/ui/textarea' +import React from 'react' + +import { Error } from '../Error' +import { Width } from '../Width' + +export const Textarea: React.FC< + TextField & { + errors: Partial< + FieldErrorsImpl<{ + [x: string]: any + }> + > + register: UseFormRegister<FieldValues> + rows?: number + } +> = ({ + name, + defaultValue, + errors, + label, + register, + required: requiredFromProps, + rows = 3, + width, +}) => { + return ( + <Width width={width}> + <Label htmlFor={name}>{label}</Label> + + <TextAreaComponent + defaultValue={defaultValue} + id={name} + rows={rows} + {...register(name, { required: requiredFromProps })} + /> + + {requiredFromProps && errors[name] && <Error />} + </Width> + ) +} diff --git a/src/blocks/Form/Width/index.tsx b/src/blocks/Form/Width/index.tsx new file mode 100644 index 0000000..bcc51a3 --- /dev/null +++ b/src/blocks/Form/Width/index.tsx @@ -0,0 +1,13 @@ +import * as React from 'react' + +export const Width: React.FC<{ + children: React.ReactNode + className?: string + width?: number | string +}> = ({ children, className, width }) => { + return ( + <div className={className} style={{ maxWidth: width ? `${width}%` : undefined }}> + {children} + </div> + ) +} diff --git a/src/blocks/Form/buildInitialFormState.tsx b/src/blocks/Form/buildInitialFormState.tsx new file mode 100644 index 0000000..fe5d3c0 --- /dev/null +++ b/src/blocks/Form/buildInitialFormState.tsx @@ -0,0 +1,42 @@ +import type { FormFieldBlock } from '@payloadcms/plugin-form-builder/types' + +export const buildInitialFormState = (fields: FormFieldBlock[]) => { + return fields?.reduce((initialSchema, field) => { + if (field.blockType === 'checkbox') { + return { + ...initialSchema, + [field.name]: field.defaultValue, + } + } + if (field.blockType === 'country') { + return { + ...initialSchema, + [field.name]: '', + } + } + if (field.blockType === 'email') { + return { + ...initialSchema, + [field.name]: '', + } + } + if (field.blockType === 'text') { + return { + ...initialSchema, + [field.name]: '', + } + } + if (field.blockType === 'select') { + return { + ...initialSchema, + [field.name]: '', + } + } + if (field.blockType === 'state') { + return { + ...initialSchema, + [field.name]: '', + } + } + }, {}) +} diff --git a/src/payload/blocks/Form/index.ts b/src/blocks/Form/config.ts similarity index 50% rename from src/payload/blocks/Form/index.ts rename to src/blocks/Form/config.ts index 6f13c97..5334289 100644 --- a/src/payload/blocks/Form/index.ts +++ b/src/blocks/Form/config.ts @@ -1,16 +1,15 @@ -import type { Block } from 'payload/types' +import type { Block } from 'payload' -import richText from '../../fields/richText' +import { + FixedToolbarFeature, + HeadingFeature, + InlineToolbarFeature, + lexicalEditor, +} from '@payloadcms/richtext-lexical' export const FormBlock: Block = { slug: 'formBlock', - labels: { - singular: 'Form Block', - plural: 'Form Blocks', - }, - graphQL: { - singularName: 'FormBlock', - }, + interfaceName: 'FormBlock', fields: [ { name: 'form', @@ -20,15 +19,33 @@ export const FormBlock: Block = { }, { name: 'enableIntro', - label: 'Enable Intro Content', type: 'checkbox', + label: 'Enable Intro Content', }, - richText({ + { name: 'introContent', - label: 'Intro Content', + type: 'richText', admin: { condition: (_, { enableIntro }) => Boolean(enableIntro), }, - }), + editor: lexicalEditor({ + features: ({ rootFeatures }) => { + return [ + ...rootFeatures, + HeadingFeature({ enabledHeadingSizes: ['h1', 'h2', 'h3', 'h4'] }), + FixedToolbarFeature(), + InlineToolbarFeature(), + ] + }, + }), + label: 'Intro Content', + }, ], + graphQL: { + singularName: 'FormBlock', + }, + labels: { + plural: 'Form Blocks', + singular: 'Form Block', + }, } diff --git a/src/blocks/Form/fields.tsx b/src/blocks/Form/fields.tsx new file mode 100644 index 0000000..fa660f7 --- /dev/null +++ b/src/blocks/Form/fields.tsx @@ -0,0 +1,21 @@ +import { Checkbox } from './Checkbox' +import { Country } from './Country' +import { Email } from './Email' +import { Message } from './Message' +import { Number } from './Number' +import { Select } from './Select' +import { State } from './State' +import { Text } from './Text' +import { Textarea } from './Textarea' + +export const fields = { + checkbox: Checkbox, + country: Country, + email: Email, + message: Message, + number: Number, + select: Select, + state: State, + text: Text, + textarea: Textarea, +} diff --git a/src/blocks/MediaBlock/Component.tsx b/src/blocks/MediaBlock/Component.tsx new file mode 100644 index 0000000..f459c0c --- /dev/null +++ b/src/blocks/MediaBlock/Component.tsx @@ -0,0 +1,70 @@ +import type { StaticImageData } from 'next/image' + +import { cn } from 'src/utilities/cn' +import React from 'react' +import RichText from '@/components/RichText' + +import type { Page } from '@/payload-types' + +import { Media } from '../../components/Media' + +type Props = Extract<Page['layout'][0], { blockType: 'mediaBlock' }> & { + breakout?: boolean + captionClassName?: string + className?: string + enableGutter?: boolean + id?: string + imgClassName?: string + staticImage?: StaticImageData + disableInnerContainer?: boolean +} + +export const MediaBlock: React.FC<Props> = (props) => { + const { + captionClassName, + className, + enableGutter = true, + imgClassName, + media, + position = 'default', + staticImage, + disableInnerContainer, + } = props + + let caption + if (media && typeof media === 'object') caption = media.caption + + return ( + <div + className={cn( + '', + { + container: position === 'default' && enableGutter, + }, + className, + )} + > + {position === 'fullscreen' && ( + <div className="relative"> + <Media resource={media} src={staticImage} /> + </div> + )} + {position === 'default' && ( + <Media imgClassName={cn('rounded', imgClassName)} resource={media} src={staticImage} /> + )} + {caption && ( + <div + className={cn( + 'mt-6', + { + container: position === 'fullscreen' && !disableInnerContainer, + }, + captionClassName, + )} + > + <RichText content={caption} enableGutter={false} /> + </div> + )} + </div> + ) +} diff --git a/src/payload/blocks/MediaBlock/index.ts b/src/blocks/MediaBlock/config.ts similarity index 77% rename from src/payload/blocks/MediaBlock/index.ts rename to src/blocks/MediaBlock/config.ts index 2443bbe..ba84efe 100644 --- a/src/payload/blocks/MediaBlock/index.ts +++ b/src/blocks/MediaBlock/config.ts @@ -1,11 +1,9 @@ -import type { Block } from 'payload/types' - -import { invertBackground } from '../../fields/invertBackground' +import type { Block } from 'payload' export const MediaBlock: Block = { slug: 'mediaBlock', + interfaceName: 'MediaBlock', fields: [ - invertBackground, { name: 'position', type: 'select', diff --git a/src/blocks/RelatedPosts/Component.tsx b/src/blocks/RelatedPosts/Component.tsx new file mode 100644 index 0000000..3bebc75 --- /dev/null +++ b/src/blocks/RelatedPosts/Component.tsx @@ -0,0 +1,31 @@ +import clsx from 'clsx' +import React from 'react' +import RichText from '@/components/RichText' + +import type { Post } from '@/payload-types' + +import { Card } from '../../components/Card' + +export type RelatedPostsProps = { + className?: string + docs?: Post[] + introContent?: any +} + +export const RelatedPosts: React.FC<RelatedPostsProps> = (props) => { + const { className, docs, introContent } = props + + return ( + <div className={clsx('container', className)}> + {introContent && <RichText content={introContent} enableGutter={false} />} + + <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 md:gap-8 items-stretch"> + {docs?.map((doc, index) => { + if (typeof doc === 'string') return null + + return <Card key={index} doc={doc} relationTo="posts" showCategories /> + })} + </div> + </div> + ) +} diff --git a/src/blocks/RenderBlocks.tsx b/src/blocks/RenderBlocks.tsx new file mode 100644 index 0000000..e87fd8a --- /dev/null +++ b/src/blocks/RenderBlocks.tsx @@ -0,0 +1,52 @@ +import { cn } from 'src/utilities/cn' +import React, { Fragment } from 'react' + +import type { Page } from '@/payload-types' + +import { ArchiveBlock } from '@/blocks/ArchiveBlock/Component' +import { CallToActionBlock } from '@/blocks/CallToAction/Component' +import { ContentBlock } from '@/blocks/Content/Component' +import { FormBlock } from '@/blocks/Form/Component' +import { MediaBlock } from '@/blocks/MediaBlock/Component' + +const blockComponents = { + archive: ArchiveBlock, + content: ContentBlock, + cta: CallToActionBlock, + formBlock: FormBlock, + mediaBlock: MediaBlock, +} + +export const RenderBlocks: React.FC<{ + blocks: Page['layout'][0][] +}> = (props) => { + const { blocks } = props + + const hasBlocks = blocks && Array.isArray(blocks) && blocks.length > 0 + + if (hasBlocks) { + return ( + <Fragment> + {blocks.map((block, index) => { + const { blockType } = block + + if (blockType && blockType in blockComponents) { + const Block = blockComponents[blockType] + + if (Block) { + return ( + <div className="my-16" key={index}> + {/* @ts-expect-error */} + <Block {...block} /> + </div> + ) + } + } + return null + })} + </Fragment> + ) + } + + return null +} diff --git a/src/payload/collections/Authors.ts b/src/collections/Authors.ts similarity index 69% rename from src/payload/collections/Authors.ts rename to src/collections/Authors.ts index 5f97fa0..abcdc29 100644 --- a/src/payload/collections/Authors.ts +++ b/src/collections/Authors.ts @@ -1,9 +1,10 @@ -import type { CollectionConfig } from 'payload/types' +import type { CollectionConfig } from 'payload' -import { admins } from '../access/admins' -import { anyone } from '../access/anyone' -import { slugField } from '../fields/slug' -import { populatePublishedAt } from '../hooks/populatePublishedAt' +import { anyone } from '@/access/anyone' +import { slugField } from '@/fields/slug' + +import { populatePublishedAt } from '@/hooks/populatePublishedAt' +import { authenticated } from "@/access/authenticated"; export const Authors: CollectionConfig = { slug: 'authors', @@ -18,8 +19,8 @@ export const Authors: CollectionConfig = { access: { read: anyone, update: anyone, - create: admins, - delete: admins, + create: authenticated, + delete: authenticated, }, fields: [ { @@ -27,7 +28,6 @@ export const Authors: CollectionConfig = { label: 'Picture', type: 'upload', relationTo: 'media', - required: true, admin: { position: 'sidebar', }, @@ -39,37 +39,14 @@ export const Authors: CollectionConfig = { }, { name: 'role', - type: 'select', + type: 'text', required: true, - admin: { - isClearable: true, - }, - options: [ - { - label: 'Developer', - value: 'developer', - }, - { - label: 'Product Manager', - value: 'product-manager', - }, - { - label: 'Designer', - value: 'designer', - }, - ], }, { name: 'bio', type: 'textarea', maxLength: 250, required: true, - admin: { - description: ({ path, value }) => - `${ - typeof value === 'string' ? 250 - value.length : '250' - } characters left (field: ${path})`, - }, }, { type: 'row', @@ -132,6 +109,6 @@ export const Authors: CollectionConfig = { ], }, }, - slugField(), + ...slugField(), ], } diff --git a/src/payload/collections/BlogPosts.ts b/src/collections/Blogposts.ts similarity index 75% rename from src/payload/collections/BlogPosts.ts rename to src/collections/Blogposts.ts index 9fc1c22..b7b4cc3 100644 --- a/src/payload/collections/BlogPosts.ts +++ b/src/collections/Blogposts.ts @@ -1,11 +1,11 @@ import { HTMLConverterFeature, lexicalEditor, lexicalHTML } from '@payloadcms/richtext-lexical' -import type { CollectionConfig } from 'payload/types' +import type { CollectionConfig } from 'payload' -import { admins } from '../access/admins' -import { adminsOrPublished } from '../access/adminsOrPublished' -import { slugField } from '../fields/slug' +import { slugField } from '@/fields/slug' +import { authenticated } from "@/access/authenticated"; +import { authenticatedOrPublished } from "@/access/authenticatedOrPublished"; -export const BlogPosts: CollectionConfig = { +export const Blogposts: CollectionConfig = { slug: 'blogposts', admin: { useAsTitle: 'title', @@ -13,10 +13,10 @@ export const BlogPosts: CollectionConfig = { }, versions: { drafts: true }, access: { - read: adminsOrPublished, - update: adminsOrPublished, - create: admins, - delete: admins, + read: authenticatedOrPublished, + update: authenticatedOrPublished, + create: authenticated, + delete: authenticated, }, fields: [ { @@ -29,12 +29,6 @@ export const BlogPosts: CollectionConfig = { type: 'textarea', required: true, maxLength: 250, - admin: { - description: ({ path, value }) => - `${ - typeof value === 'string' ? 250 - value.length : '250' - } characters left (field: ${path})`, - }, }, { name: 'content', @@ -51,7 +45,6 @@ export const BlogPosts: CollectionConfig = { label: 'Featured Image', type: 'upload', relationTo: 'media', - required: true, admin: { position: 'sidebar', }, @@ -77,7 +70,8 @@ export const BlogPosts: CollectionConfig = { }, }, { - name: 'relatedPosts', + name: 'related', + label: 'Related Posts', type: 'relationship', relationTo: 'blogposts', hasMany: true, @@ -102,6 +96,7 @@ export const BlogPosts: CollectionConfig = { ], }, }, - slugField(), + ...slugField(), + ], } diff --git a/src/payload/collections/CaseStudies.ts b/src/collections/CaseStudies.ts similarity index 77% rename from src/payload/collections/CaseStudies.ts rename to src/collections/CaseStudies.ts index 698c6be..842cbb7 100644 --- a/src/payload/collections/CaseStudies.ts +++ b/src/collections/CaseStudies.ts @@ -1,8 +1,8 @@ -import type { CollectionConfig } from 'payload/types' +import type { CollectionConfig } from 'payload' -import { admins } from '../access/admins' -import { adminsOrPublished } from '../access/adminsOrPublished' -import { slugField } from '../fields/slug' +import { slugField } from '@/fields/slug' +import { authenticatedOrPublished } from "@/access/authenticatedOrPublished"; +import { authenticated } from "@/access/authenticated"; export const CaseStudies: CollectionConfig = { slug: 'case-studies', @@ -12,10 +12,10 @@ export const CaseStudies: CollectionConfig = { }, versions: { drafts: true }, access: { - read: adminsOrPublished, - update: adminsOrPublished, - create: admins, - delete: admins, + read: authenticatedOrPublished, + update: authenticatedOrPublished, + create: authenticated, + delete: authenticated, }, fields: [ { @@ -74,6 +74,6 @@ export const CaseStudies: CollectionConfig = { position: 'sidebar', }, }, - slugField(), + ...slugField(), ], } diff --git a/src/collections/Categories.ts b/src/collections/Categories.ts new file mode 100644 index 0000000..9ba5864 --- /dev/null +++ b/src/collections/Categories.ts @@ -0,0 +1,26 @@ +import type { CollectionConfig } from 'payload' + +import { anyone } from '../access/anyone' +import { authenticated } from '../access/authenticated' + +const Categories: CollectionConfig = { + slug: 'categories', + access: { + create: authenticated, + delete: authenticated, + read: anyone, + update: authenticated, + }, + admin: { + useAsTitle: 'title', + }, + fields: [ + { + name: 'title', + type: 'text', + required: true, + }, + ], +} + +export default Categories diff --git a/src/collections/Media.ts b/src/collections/Media.ts new file mode 100644 index 0000000..d78b8a6 --- /dev/null +++ b/src/collections/Media.ts @@ -0,0 +1,45 @@ +import type { CollectionConfig } from 'payload' + +import { + FixedToolbarFeature, + InlineToolbarFeature, + lexicalEditor, +} from '@payloadcms/richtext-lexical' +import path from 'path' +import { fileURLToPath } from 'url' + +import { anyone } from '../access/anyone' +import { authenticated } from '../access/authenticated' + +const filename = fileURLToPath(import.meta.url) +const dirname = path.dirname(filename) + +export const Media: CollectionConfig = { + slug: 'media', + access: { + create: authenticated, + delete: authenticated, + read: anyone, + update: authenticated, + }, + fields: [ + { + name: 'alt', + type: 'text', + required: true, + }, + { + name: 'caption', + type: 'richText', + editor: lexicalEditor({ + features: ({ rootFeatures }) => { + return [...rootFeatures, FixedToolbarFeature(), InlineToolbarFeature()] + }, + }), + }, + ], + upload: { + // Upload to the public/media directory in Next.js making them publicly accessible even outside of Payload + staticDir: path.resolve(dirname, '../../public/media'), + }, +} diff --git a/src/collections/Pages/hooks/revalidatePage.ts b/src/collections/Pages/hooks/revalidatePage.ts new file mode 100644 index 0000000..d01296a --- /dev/null +++ b/src/collections/Pages/hooks/revalidatePage.ts @@ -0,0 +1,30 @@ +import type { CollectionAfterChangeHook } from 'payload' + +import { revalidatePath } from 'next/cache' + +import type { Page } from '../../../payload-types' + +export const revalidatePage: CollectionAfterChangeHook<Page> = ({ + doc, + previousDoc, + req: { payload }, +}) => { + if (doc._status === 'published') { + const path = doc.slug === 'home' ? '/' : `/${doc.slug}` + + payload.logger.info(`Revalidating page at path: ${path}`) + + revalidatePath(path) + } + + // If the page was previously published, we need to revalidate the old path + if (previousDoc?._status === 'published' && doc._status !== 'published') { + const oldPath = previousDoc.slug === 'home' ? '/' : `/${previousDoc.slug}` + + payload.logger.info(`Revalidating old page at path: ${oldPath}`) + + revalidatePath(oldPath) + } + + return doc +} diff --git a/src/collections/Pages/index.ts b/src/collections/Pages/index.ts new file mode 100644 index 0000000..15791fb --- /dev/null +++ b/src/collections/Pages/index.ts @@ -0,0 +1,127 @@ +import type { CollectionConfig } from 'payload' + +import { authenticated } from '../../access/authenticated' +import { authenticatedOrPublished } from '../../access/authenticatedOrPublished' +import { Archive } from '../../blocks/ArchiveBlock/config' +import { CallToAction } from '../../blocks/CallToAction/config' +import { Content } from '../../blocks/Content/config' +import { FormBlock } from '../../blocks/Form/config' +import { MediaBlock } from '../../blocks/MediaBlock/config' +import { hero } from '@/heros/config' +import { slugField } from '@/fields/slug' +import { populatePublishedAt } from '../../hooks/populatePublishedAt' +import { generatePreviewPath } from '../../utilities/generatePreviewPath' +import { revalidatePage } from './hooks/revalidatePage' + +import { + MetaDescriptionField, + MetaImageField, + MetaTitleField, + OverviewField, + PreviewField, +} from '@payloadcms/plugin-seo/fields' +export const Pages: CollectionConfig = { + slug: 'pages', + access: { + create: authenticated, + delete: authenticated, + read: authenticatedOrPublished, + update: authenticated, + }, + admin: { + defaultColumns: ['title', 'slug', 'updatedAt'], + livePreview: { + url: ({ data }) => { + const path = generatePreviewPath({ + slug: typeof data?.slug === 'string' ? data.slug : '', + collection: 'pages', + }) + + return `${process.env.NEXT_PUBLIC_SERVER_URL}${path}` + }, + }, + preview: (data) => { + const path = generatePreviewPath({ + slug: typeof data?.slug === 'string' ? data.slug : '', + collection: 'pages', + }) + + return `${process.env.NEXT_PUBLIC_SERVER_URL}${path}` + }, + useAsTitle: 'title', + }, + fields: [ + { + name: 'title', + type: 'text', + required: true, + }, + { + type: 'tabs', + tabs: [ + { + fields: [hero], + label: 'Hero', + }, + { + fields: [ + { + name: 'layout', + type: 'blocks', + blocks: [CallToAction, Content, MediaBlock, Archive, FormBlock], + required: true, + }, + ], + label: 'Content', + }, + { + name: 'meta', + label: 'SEO', + fields: [ + OverviewField({ + titlePath: 'meta.title', + descriptionPath: 'meta.description', + imagePath: 'meta.image', + }), + MetaTitleField({ + hasGenerateFn: true, + }), + MetaImageField({ + relationTo: 'media', + }), + + MetaDescriptionField({}), + PreviewField({ + // if the `generateUrl` function is configured + hasGenerateFn: true, + + // field paths to match the target field for data + titlePath: 'meta.title', + descriptionPath: 'meta.description', + }), + ], + }, + ], + }, + { + name: 'publishedAt', + type: 'date', + admin: { + position: 'sidebar', + }, + }, + ...slugField(), + ], + hooks: { + afterChange: [revalidatePage], + beforeChange: [populatePublishedAt], + }, + versions: { + drafts: { + autosave: { + interval: 100, // We set this interval for optimal live preview + }, + }, + maxPerDoc: 50, + }, +} diff --git a/src/payload/collections/PodcastEpisodes.ts b/src/collections/Podcasts.ts similarity index 79% rename from src/payload/collections/PodcastEpisodes.ts rename to src/collections/Podcasts.ts index 6d018d6..fd818d2 100644 --- a/src/payload/collections/PodcastEpisodes.ts +++ b/src/collections/Podcasts.ts @@ -1,14 +1,14 @@ -import type { CollectionConfig } from 'payload/types' +import type { CollectionConfig } from 'payload' -import { admins } from '../access/admins' -import { adminsOrPublished } from '../access/adminsOrPublished' -import { slugField } from '../fields/slug' -import { populatePublishedAt } from '../hooks/populatePublishedAt' +import { slugField } from '@/fields/slug' +import { populatePublishedAt } from '@/hooks/populatePublishedAt' +import { authenticatedOrPublished } from "@/access/authenticatedOrPublished"; +import { authenticated } from "@/access/authenticated"; // TODO: Add preview; -export const PodcastEpisodes: CollectionConfig = { - slug: 'podcast-episodes', +export const Podcasts: CollectionConfig = { + slug: 'podcasts', admin: { useAsTitle: 'title', defaultColumns: ['title', 'slug', 'updatedAt'], @@ -18,10 +18,10 @@ export const PodcastEpisodes: CollectionConfig = { }, versions: { drafts: true }, access: { - read: adminsOrPublished, - update: adminsOrPublished, - create: admins, - delete: admins, + read: authenticatedOrPublished, + update: authenticatedOrPublished, + create: authenticated, + delete: authenticated, }, fields: [ { @@ -46,7 +46,6 @@ export const PodcastEpisodes: CollectionConfig = { label: 'Featured Image', type: 'upload', relationTo: 'media', - required: true, admin: { position: 'sidebar', }, @@ -100,9 +99,10 @@ export const PodcastEpisodes: CollectionConfig = { }, }, { - name: 'relatedEpisodes', + name: 'related', + label: 'Related Episodes', type: 'relationship', - relationTo: 'podcast-episodes', + relationTo: 'podcasts', hasMany: true, filterOptions: ({ id }) => { return { @@ -132,6 +132,6 @@ export const PodcastEpisodes: CollectionConfig = { ], }, }, - slugField(), + ...slugField(), ], } diff --git a/src/collections/Posts/hooks/populateAuthors.ts b/src/collections/Posts/hooks/populateAuthors.ts new file mode 100644 index 0000000..8b812b4 --- /dev/null +++ b/src/collections/Posts/hooks/populateAuthors.ts @@ -0,0 +1,30 @@ +import type { CollectionAfterReadHook } from 'payload' +import { User } from 'src/payload-types' + +// The `user` collection has access control locked so that users are not publicly accessible +// This means that we need to populate the authors manually here to protect user privacy +// GraphQL will not return mutated user data that differs from the underlying schema +// So we use an alternative `populatedAuthors` field to populate the user data, hidden from the admin UI +export const populateAuthors: CollectionAfterReadHook = async ({ doc, req, req: { payload } }) => { + if (doc?.authors) { + const authorDocs: User[] = [] + + for (const author of doc.authors) { + const authorDoc = await payload.findByID({ + id: typeof author === 'object' ? author?.id : author, + collection: 'users', + depth: 0, + req, + }) + + authorDocs.push(authorDoc) + } + + doc.populatedAuthors = authorDocs.map((authorDoc) => ({ + id: authorDoc.id, + name: authorDoc.name, + })) + } + + return doc +} diff --git a/src/collections/Posts/hooks/revalidatePost.ts b/src/collections/Posts/hooks/revalidatePost.ts new file mode 100644 index 0000000..ac55bcf --- /dev/null +++ b/src/collections/Posts/hooks/revalidatePost.ts @@ -0,0 +1,30 @@ +import type { CollectionAfterChangeHook } from 'payload' + +import { revalidatePath } from 'next/cache' + +import type { Post } from '../../../payload-types' + +export const revalidatePost: CollectionAfterChangeHook<Post> = ({ + doc, + previousDoc, + req: { payload }, +}) => { + if (doc._status === 'published') { + const path = `/posts/${doc.slug}` + + payload.logger.info(`Revalidating post at path: ${path}`) + + revalidatePath(path) + } + + // If the post was previously published, we need to revalidate the old path + if (previousDoc._status === 'published' && doc._status !== 'published') { + const oldPath = `/posts/${previousDoc.slug}` + + payload.logger.info(`Revalidating old post at path: ${oldPath}`) + + revalidatePath(oldPath) + } + + return doc +} diff --git a/src/collections/Posts/index.ts b/src/collections/Posts/index.ts new file mode 100644 index 0000000..1f6e1af --- /dev/null +++ b/src/collections/Posts/index.ts @@ -0,0 +1,218 @@ +import type { CollectionConfig } from 'payload' + +import { + BlocksFeature, + FixedToolbarFeature, + HeadingFeature, + HorizontalRuleFeature, + InlineToolbarFeature, + lexicalEditor, +} from '@payloadcms/richtext-lexical' + +import { authenticated } from '../../access/authenticated' +import { authenticatedOrPublished } from '../../access/authenticatedOrPublished' +import { Banner } from '../../blocks/Banner/config' +import { Code } from '../../blocks/Code/config' +import { MediaBlock } from '../../blocks/MediaBlock/config' +import { generatePreviewPath } from '../../utilities/generatePreviewPath' +import { populateAuthors } from './hooks/populateAuthors' +import { revalidatePost } from './hooks/revalidatePost' + +import { + MetaDescriptionField, + MetaImageField, + MetaTitleField, + OverviewField, + PreviewField, +} from '@payloadcms/plugin-seo/fields' +import { slugField } from '@/fields/slug' + +export const Posts: CollectionConfig = { + slug: 'posts', + access: { + create: authenticated, + delete: authenticated, + read: authenticatedOrPublished, + update: authenticated, + }, + admin: { + defaultColumns: ['title', 'slug', 'updatedAt'], + livePreview: { + url: ({ data }) => { + const path = generatePreviewPath({ + slug: typeof data?.slug === 'string' ? data.slug : '', + collection: 'posts', + }) + + return `${process.env.NEXT_PUBLIC_SERVER_URL}${path}` + }, + }, + preview: (data) => { + const path = generatePreviewPath({ + slug: typeof data?.slug === 'string' ? data.slug : '', + collection: 'posts', + }) + + return `${process.env.NEXT_PUBLIC_SERVER_URL}${path}` + }, + useAsTitle: 'title', + }, + fields: [ + { + name: 'title', + type: 'text', + required: true, + }, + { + type: 'tabs', + tabs: [ + { + fields: [ + { + name: 'content', + type: 'richText', + editor: lexicalEditor({ + features: ({ rootFeatures }) => { + return [ + ...rootFeatures, + HeadingFeature({ enabledHeadingSizes: ['h1', 'h2', 'h3', 'h4'] }), + BlocksFeature({ blocks: [Banner, Code, MediaBlock] }), + FixedToolbarFeature(), + InlineToolbarFeature(), + HorizontalRuleFeature(), + ] + }, + }), + label: false, + required: true, + }, + ], + label: 'Content', + }, + { + fields: [ + { + name: 'relatedPosts', + type: 'relationship', + admin: { + position: 'sidebar', + }, + filterOptions: ({ id }) => { + return { + id: { + not_in: [id], + }, + } + }, + hasMany: true, + relationTo: 'posts', + }, + { + name: 'categories', + type: 'relationship', + admin: { + position: 'sidebar', + }, + hasMany: true, + relationTo: 'categories', + }, + ], + label: 'Meta', + }, + { + name: 'meta', + label: 'SEO', + fields: [ + OverviewField({ + titlePath: 'meta.title', + descriptionPath: 'meta.description', + imagePath: 'meta.image', + }), + MetaTitleField({ + hasGenerateFn: true, + }), + MetaImageField({ + relationTo: 'media', + }), + + MetaDescriptionField({}), + PreviewField({ + // if the `generateUrl` function is configured + hasGenerateFn: true, + + // field paths to match the target field for data + titlePath: 'meta.title', + descriptionPath: 'meta.description', + }), + ], + }, + ], + }, + { + name: 'publishedAt', + type: 'date', + admin: { + date: { + pickerAppearance: 'dayAndTime', + }, + position: 'sidebar', + }, + hooks: { + beforeChange: [ + ({ siblingData, value }) => { + if (siblingData._status === 'published' && !value) { + return new Date() + } + return value + }, + ], + }, + }, + { + name: 'authors', + type: 'relationship', + admin: { + position: 'sidebar', + }, + hasMany: true, + relationTo: 'users', + }, + // This field is only used to populate the user data via the `populateAuthors` hook + // This is because the `user` collection has access control locked to protect user privacy + // GraphQL will also not return mutated user data that differs from the underlying schema + { + name: 'populatedAuthors', + type: 'array', + access: { + update: () => false, + }, + admin: { + disabled: true, + readOnly: true, + }, + fields: [ + { + name: 'id', + type: 'text', + }, + { + name: 'name', + type: 'text', + }, + ], + }, + ...slugField(), + ], + hooks: { + afterChange: [revalidatePost], + afterRead: [populateAuthors], + }, + versions: { + drafts: { + autosave: { + interval: 100, // We set this interval for optimal live preview + }, + }, + maxPerDoc: 50, + }, +} diff --git a/src/payload/collections/TalksAndRoundtables.ts b/src/collections/TalksAndRoundtables.ts similarity index 73% rename from src/payload/collections/TalksAndRoundtables.ts rename to src/collections/TalksAndRoundtables.ts index d963dca..e77fc7c 100644 --- a/src/payload/collections/TalksAndRoundtables.ts +++ b/src/collections/TalksAndRoundtables.ts @@ -1,8 +1,8 @@ -import type { CollectionConfig } from 'payload/types' +import type { CollectionConfig } from 'payload' -import { admins } from '../access/admins' -import { adminsOrPublished } from '../access/adminsOrPublished' -import { slugField } from '../fields/slug' +import { slugField } from '@/fields/slug' +import { authenticatedOrPublished } from "@/access/authenticatedOrPublished"; +import { authenticated } from "@/access/authenticated"; export const TalksAndRoundtables: CollectionConfig = { slug: 'talks-and-roundtables', @@ -12,10 +12,10 @@ export const TalksAndRoundtables: CollectionConfig = { }, versions: { drafts: true }, access: { - read: adminsOrPublished, - update: adminsOrPublished, - create: admins, - delete: admins, + read: authenticatedOrPublished, + update: authenticatedOrPublished, + create: authenticated, + delete: authenticated, }, fields: [ { @@ -28,12 +28,6 @@ export const TalksAndRoundtables: CollectionConfig = { type: 'textarea', required: true, maxLength: 250, - admin: { - description: ({ path, value }) => - `${ - typeof value === 'string' ? 250 - value.length : '250' - } characters left (field: ${path})`, - }, }, { name: 'categories', @@ -87,6 +81,6 @@ export const TalksAndRoundtables: CollectionConfig = { position: 'sidebar', }, }, - slugField(), + ...slugField(), ], } diff --git a/src/collections/Users/index.ts b/src/collections/Users/index.ts new file mode 100644 index 0000000..98287c9 --- /dev/null +++ b/src/collections/Users/index.ts @@ -0,0 +1,28 @@ +import type { CollectionConfig } from 'payload' + +import { authenticated } from '../../access/authenticated' + +const Users: CollectionConfig = { + slug: 'users', + access: { + admin: authenticated, + create: authenticated, + delete: authenticated, + read: authenticated, + update: authenticated, + }, + admin: { + defaultColumns: ['name', 'email'], + useAsTitle: 'name', + }, + auth: true, + fields: [ + { + name: 'name', + type: 'text', + }, + ], + timestamps: true, +} + +export default Users diff --git a/src/components/AdminBar/index.scss b/src/components/AdminBar/index.scss new file mode 100644 index 0000000..54060c5 --- /dev/null +++ b/src/components/AdminBar/index.scss @@ -0,0 +1,7 @@ +@import '~@payloadcms/ui/scss'; + +.admin-bar { + @include small-break { + display: none; + } +} diff --git a/src/components/AdminBar/index.tsx b/src/components/AdminBar/index.tsx new file mode 100644 index 0000000..923e495 --- /dev/null +++ b/src/components/AdminBar/index.tsx @@ -0,0 +1,85 @@ +'use client' + +import type { PayloadAdminBarProps } from 'payload-admin-bar' + +import { cn } from '@/utilities/cn' +import { useSelectedLayoutSegments } from 'next/navigation' +import { PayloadAdminBar } from 'payload-admin-bar' +import React, { useState } from 'react' +import { useRouter } from 'next/navigation' + +import './index.scss' + +const baseClass = 'admin-bar' + +const collectionLabels = { + pages: { + plural: 'Pages', + singular: 'Page', + }, + posts: { + plural: 'Posts', + singular: 'Post', + }, + projects: { + plural: 'Projects', + singular: 'Project', + }, +} + +const Title: React.FC = () => <span>Dashboard</span> + +export const AdminBar: React.FC<{ + adminBarProps?: PayloadAdminBarProps +}> = (props) => { + const { adminBarProps } = props || {} + const segments = useSelectedLayoutSegments() + const [show, setShow] = useState(false) + const collection = collectionLabels?.[segments?.[1]] ? segments?.[1] : 'pages' + const router = useRouter() + + const onAuthChange = React.useCallback((user) => { + setShow(user?.id) + }, []) + + return ( + <div + className={cn(baseClass, 'py-2 bg-black text-white', { + block: show, + hidden: !show, + })} + > + <div className="container"> + <PayloadAdminBar + {...adminBarProps} + className="py-2 text-white" + classNames={{ + controls: 'font-medium text-white', + logo: 'text-white', + user: 'text-white', + }} + cmsURL={process.env.NEXT_PUBLIC_SERVER_URL} + collection={collection} + collectionLabels={{ + plural: collectionLabels[collection]?.plural || 'Pages', + singular: collectionLabels[collection]?.singular || 'Page', + }} + logo={<Title />} + onAuthChange={onAuthChange} + onPreviewExit={() => { + fetch('/next/exit-preview').then(() => { + router.push('/') + router.refresh() + }) + }} + style={{ + backgroundColor: 'transparent', + padding: 0, + position: 'relative', + zIndex: 'unset', + }} + /> + </div> + </div> + ) +} diff --git a/src/payload/components/BeforeDashboard/SeedButton/index.tsx b/src/components/BeforeDashboard/SeedButton/index.tsx similarity index 55% rename from src/payload/components/BeforeDashboard/SeedButton/index.tsx rename to src/components/BeforeDashboard/SeedButton/index.tsx index 17c5f0f..bc81350 100644 --- a/src/payload/components/BeforeDashboard/SeedButton/index.tsx +++ b/src/components/BeforeDashboard/SeedButton/index.tsx @@ -1,4 +1,16 @@ +'use client' + import React, { Fragment, useCallback, useState } from 'react' +import { toast } from '@payloadcms/ui' + +const SuccessMessage: React.FC = () => ( + <div> + Database seeded! You can now{' '} + <a target="_blank" href="/"> + visit your website + </a> + </div> +) export const SeedButton: React.FC = () => { const [loading, setLoading] = useState(false) @@ -6,20 +18,19 @@ export const SeedButton: React.FC = () => { const [error, setError] = useState(null) const handleClick = useCallback( - async e => { + async (e) => { e.preventDefault() if (loading || seeded) return setLoading(true) - setTimeout(async () => { - try { - await fetch('/api/seed') - setSeeded(true) - } catch (err) { - setError(err) - } - }, 1000) + try { + await fetch('/api/seed') + setSeeded(true) + toast.success(<SuccessMessage />, { duration: 5000 }) + } catch (err) { + setError(err) + } }, [loading, seeded], ) @@ -31,7 +42,7 @@ export const SeedButton: React.FC = () => { return ( <Fragment> - <a href="/api/seed" target="_blank" rel="noopener noreferrer" onClick={handleClick}> + <a href="/api/seed" onClick={handleClick} rel="noopener noreferrer" target="_blank"> Seed your database </a> {message} diff --git a/src/components/BeforeDashboard/index.scss b/src/components/BeforeDashboard/index.scss new file mode 100644 index 0000000..7169b4f --- /dev/null +++ b/src/components/BeforeDashboard/index.scss @@ -0,0 +1,24 @@ +@import '~@payloadcms/ui/scss'; + +.dashboard .before-dashboard { + margin-bottom: base(1.5); + + &__banner { + & h4 { + margin: 0; + } + } + + &__instructions { + list-style: decimal; + margin-bottom: base(0.5); + + & li { + width: 100%; + } + } + + & a:hover { + opacity: 0.85; + } +} diff --git a/src/payload/components/BeforeDashboard/index.tsx b/src/components/BeforeDashboard/index.tsx similarity index 90% rename from src/payload/components/BeforeDashboard/index.tsx rename to src/components/BeforeDashboard/index.tsx index c7900af..3f358aa 100644 --- a/src/payload/components/BeforeDashboard/index.tsx +++ b/src/components/BeforeDashboard/index.tsx @@ -1,8 +1,7 @@ +import { Banner } from '@payloadcms/ui/elements/Banner' import React from 'react' -import { Banner } from 'payload/components' import { SeedButton } from './SeedButton' - import './index.scss' const baseClass = 'before-dashboard' @@ -18,7 +17,9 @@ const BeforeDashboard: React.FC = () => { <li> <SeedButton /> {' with a few pages, posts, and projects to jump-start your new site, then '} - <a href="/">visit your website</a> + <a href="/" target="_blank"> + visit your website + </a> {' to see the results.'} </li> <li> @@ -30,24 +31,24 @@ const BeforeDashboard: React.FC = () => { {'Modify your '} <a href="https://payloadcms.com/docs/configuration/collections" - target="_blank" rel="noopener noreferrer" + target="_blank" > collections </a> {' and add more '} <a href="https://payloadcms.com/docs/fields/overview" - target="_blank" rel="noopener noreferrer" + target="_blank" > fields </a> {' as needed. If you are new to Payload, we also recommend you check out the '} <a href="https://payloadcms.com/docs/getting-started/what-is-payload" - target="_blank" rel="noopener noreferrer" + target="_blank" > Getting Started </a> @@ -59,9 +60,9 @@ const BeforeDashboard: React.FC = () => { </ul> {'Pro Tip: This block is a '} <a - href={'https://payloadcms.com/docs/admin/components#base-component-overrides'} - target="_blank" + href="https://payloadcms.com/docs/admin/components#base-component-overrides" rel="noopener noreferrer" + target="_blank" > custom component </a> diff --git a/src/payload/components/BeforeLogin/index.tsx b/src/components/BeforeLogin/index.tsx similarity index 56% rename from src/payload/components/BeforeLogin/index.tsx rename to src/components/BeforeLogin/index.tsx index 21b4060..8768831 100644 --- a/src/payload/components/BeforeLogin/index.tsx +++ b/src/components/BeforeLogin/index.tsx @@ -5,9 +5,7 @@ const BeforeLogin: React.FC = () => { <div> <p> <b>Welcome to your dashboard!</b> - {' This is where site admins will log in to manage your website. Users will need to '} - <a href={`${process.env.PAYLOAD_PUBLIC_SERVER_URL}/login`}>log in to the site instead</a> - {' to access their user account, comment history, and more.'} + {' This is where site admins will log in to manage your website.'} </p> </div> ) diff --git a/src/components/Card/index.tsx b/src/components/Card/index.tsx new file mode 100644 index 0000000..6277de2 --- /dev/null +++ b/src/components/Card/index.tsx @@ -0,0 +1,82 @@ +'use client' +import { cn } from '@/utilities/cn' +import useClickableCard from '@/utilities/useClickableCard' +import Link from 'next/link' +import React, { Fragment } from 'react' + +import type { Post } from '@/payload-types' + +import { Media } from '@/components/Media' + +export const Card: React.FC<{ + alignItems?: 'center' + className?: string + doc?: Post + relationTo?: 'posts' + showCategories?: boolean + title?: string +}> = (props) => { + const { card, link } = useClickableCard({}) + const { className, doc, relationTo, showCategories, title: titleFromProps } = props + + const { slug, categories, meta, title } = doc || {} + const { description, image: metaImage } = meta || {} + + const hasCategories = categories && Array.isArray(categories) && categories.length > 0 + const titleToUse = titleFromProps || title + const sanitizedDescription = description?.replace(/\s/g, ' ') // replace non-breaking space with white space + const href = `/${relationTo}/${slug}` + + return ( + <article + className={cn( + 'border border-border rounded-lg overflow-hidden bg-card hover:cursor-pointer', + className, + )} + ref={card.ref} + > + <div className="relative w-full "> + {!metaImage && <div className="">No image</div>} + {metaImage && typeof metaImage !== 'string' && <Media resource={metaImage} size="360px" />} + </div> + <div className="p-4"> + {showCategories && hasCategories && ( + <div className="uppercase text-sm mb-4"> + {showCategories && hasCategories && ( + <div> + {categories?.map((category, index) => { + if (typeof category === 'object') { + const { title: titleFromCategory } = category + + const categoryTitle = titleFromCategory || 'Untitled category' + + const isLast = index === categories.length - 1 + + return ( + <Fragment key={index}> + {categoryTitle} + {!isLast && <Fragment>, </Fragment>} + </Fragment> + ) + } + + return null + })} + </div> + )} + </div> + )} + {titleToUse && ( + <div className="prose"> + <h3> + <Link className="not-prose" href={href} ref={link.ref}> + {titleToUse} + </Link> + </h3> + </div> + )} + {description && <div className="mt-2">{description && <p>{sanitizedDescription}</p>}</div>} + </div> + </article> + ) +} diff --git a/src/components/CollectionArchive/index.tsx b/src/components/CollectionArchive/index.tsx new file mode 100644 index 0000000..b31185f --- /dev/null +++ b/src/components/CollectionArchive/index.tsx @@ -0,0 +1,34 @@ +import { cn } from 'src/utilities/cn' +import React from 'react' + +import type { Post } from '@/payload-types' + +import { Card } from '@/components/Card' + +export type Props = { + posts: Post[] +} + +export const CollectionArchive: React.FC<Props> = (props) => { + const { posts } = props + + return ( + <div className={cn('container')}> + <div> + <div className="grid grid-cols-4 sm:grid-cols-8 lg:grid-cols-12 gap-y-4 gap-x-4 lg:gap-y-8 lg:gap-x-8 xl:gap-x-8"> + {posts?.map((result, index) => { + if (typeof result === 'object' && result !== null) { + return ( + <div className="col-span-4" key={index}> + <Card className="h-full" doc={result} relationTo="posts" showCategories /> + </div> + ) + } + + return null + })} + </div> + </div> + </div> + ) +} diff --git a/src/components/Link/index.tsx b/src/components/Link/index.tsx new file mode 100644 index 0000000..af7fd04 --- /dev/null +++ b/src/components/Link/index.tsx @@ -0,0 +1,66 @@ +import { Button, type ButtonProps } from '@/components/ui/button' +import { cn } from 'src/utilities/cn' +import Link from 'next/link' +import React from 'react' + +import type { Page, Post } from '@/payload-types' + +type CMSLinkType = { + appearance?: 'inline' | ButtonProps['variant'] + children?: React.ReactNode + className?: string + label?: string | null + newTab?: boolean | null + reference?: { + relationTo: 'pages' | 'posts' + value: Page | Post | string | number + } | null + size?: ButtonProps['size'] | null + type?: 'custom' | 'reference' | null + url?: string | null +} + +export const CMSLink: React.FC<CMSLinkType> = (props) => { + const { + type, + appearance = 'inline', + children, + className, + label, + newTab, + reference, + size: sizeFromProps, + url, + } = props + + const href = + type === 'reference' && typeof reference?.value === 'object' && reference.value.slug + ? `${reference?.relationTo !== 'pages' ? `/${reference?.relationTo}` : ''}/${ + reference.value.slug + }` + : url + + if (!href) return null + + const size = appearance === 'link' ? 'clear' : sizeFromProps + const newTabProps = newTab ? { rel: 'noopener noreferrer', target: '_blank' } : {} + + /* Ensure we don't break any styles set by richText */ + if (appearance === 'inline') { + return ( + <Link className={cn(className)} href={href || url || ''} {...newTabProps}> + {label && label} + {children && children} + </Link> + ) + } + + return ( + <Button asChild className={className} size={size} variant={appearance}> + <Link className={cn(className)} href={href || url || ''} {...newTabProps}> + {label && label} + {children && children} + </Link> + </Button> + ) +} diff --git a/src/components/LivePreviewListener/index.tsx b/src/components/LivePreviewListener/index.tsx new file mode 100644 index 0000000..2d59078 --- /dev/null +++ b/src/components/LivePreviewListener/index.tsx @@ -0,0 +1,11 @@ +'use client' +import { RefreshRouteOnSave as PayloadLivePreview } from '@payloadcms/live-preview-react' +import { useRouter } from 'next/navigation' +import React from 'react' + +export const LivePreviewListener: React.FC = () => { + const router = useRouter() + return ( + <PayloadLivePreview refresh={router.refresh} serverURL={process.env.NEXT_PUBLIC_SERVER_URL!} /> + ) +} diff --git a/src/components/Logo/Logo.tsx b/src/components/Logo/Logo.tsx new file mode 100644 index 0000000..b62b95a --- /dev/null +++ b/src/components/Logo/Logo.tsx @@ -0,0 +1,12 @@ +import React from 'react' + +export const Logo = () => { + return ( + /* eslint-disable @next/next/no-img-element */ + <img + alt="Payload Logo" + className="max-w-[9.375rem] invert dark:invert-0" + src="https://raw.githubusercontent.com/payloadcms/payload/main/packages/payload/src/admin/assets/images/payload-logo-light.svg" + /> + ) +} diff --git a/src/components/Media/ImageMedia/index.tsx b/src/components/Media/ImageMedia/index.tsx new file mode 100644 index 0000000..308cd4b --- /dev/null +++ b/src/components/Media/ImageMedia/index.tsx @@ -0,0 +1,78 @@ +'use client' + +import type { StaticImageData } from 'next/image' + +import { cn } from 'src/utilities/cn' +import NextImage from 'next/image' +import React from 'react' + +import type { Props as MediaProps } from '../types' + +import cssVariables from '@/cssVariables' + +const { breakpoints } = cssVariables + +export const ImageMedia: React.FC<MediaProps> = (props) => { + const { + alt: altFromProps, + fill, + imgClassName, + onClick, + onLoad: onLoadFromProps, + priority, + resource, + size: sizeFromProps, + src: srcFromProps, + } = props + + const [isLoading, setIsLoading] = React.useState(true) + + let width: number | undefined + let height: number | undefined + let alt = altFromProps + let src: StaticImageData | string = srcFromProps || '' + + if (!src && resource && typeof resource === 'object') { + const { + alt: altFromResource, + filename: fullFilename, + height: fullHeight, + url, + width: fullWidth, + } = resource + + width = fullWidth! + height = fullHeight! + alt = altFromResource + + src = `${process.env.NEXT_PUBLIC_SERVER_URL}${url}` + } + + // NOTE: this is used by the browser to determine which image to download at different screen sizes + const sizes = sizeFromProps + ? sizeFromProps + : Object.entries(breakpoints) + .map(([, value]) => `(max-width: ${value}px) ${value}px`) + .join(', ') + + return ( + <NextImage + alt={alt || ''} + className={cn(imgClassName)} + fill={fill} + height={!fill ? height : undefined} + onClick={onClick} + onLoad={() => { + setIsLoading(false) + if (typeof onLoadFromProps === 'function') { + onLoadFromProps() + } + }} + priority={priority} + quality={90} + sizes={sizes} + src={src} + width={!fill ? width : undefined} + /> + ) +} diff --git a/src/components/Media/VideoMedia/index.tsx b/src/components/Media/VideoMedia/index.tsx new file mode 100644 index 0000000..7857de1 --- /dev/null +++ b/src/components/Media/VideoMedia/index.tsx @@ -0,0 +1,44 @@ +'use client' + +import { cn } from 'src/utilities/cn' +import React, { useEffect, useRef } from 'react' + +import type { Props as MediaProps } from '../types' + +export const VideoMedia: React.FC<MediaProps> = (props) => { + const { onClick, resource, videoClassName } = props + + const videoRef = useRef<HTMLVideoElement>(null) + // const [showFallback] = useState<boolean>() + + useEffect(() => { + const { current: video } = videoRef + if (video) { + video.addEventListener('suspend', () => { + // setShowFallback(true); + // console.warn('Video was suspended, rendering fallback image.') + }) + } + }, []) + + if (resource && typeof resource === 'object') { + const { filename } = resource + + return ( + <video + autoPlay + className={cn(videoClassName)} + controls={false} + loop + muted + onClick={onClick} + playsInline + ref={videoRef} + > + <source src={`${process.env.NEXT_PUBLIC_SERVER_URL}/media/${filename}`} /> + </video> + ) + } + + return null +} diff --git a/src/components/Media/index.tsx b/src/components/Media/index.tsx new file mode 100644 index 0000000..2714c8a --- /dev/null +++ b/src/components/Media/index.tsx @@ -0,0 +1,25 @@ +import React, { Fragment } from 'react' + +import type { Props } from './types' + +import { ImageMedia } from './ImageMedia' +import { VideoMedia } from './VideoMedia' + +export const Media: React.FC<Props> = (props) => { + const { className, htmlElement = 'div', resource } = props + + const isVideo = typeof resource === 'object' && resource?.mimeType?.includes('video') + const Tag = (htmlElement as any) || Fragment + + return ( + <Tag + {...(htmlElement !== null + ? { + className, + } + : {})} + > + {isVideo ? <VideoMedia {...props} /> : <ImageMedia {...props} />} + </Tag> + ) +} diff --git a/src/components/Media/types.ts b/src/components/Media/types.ts new file mode 100644 index 0000000..23224c2 --- /dev/null +++ b/src/components/Media/types.ts @@ -0,0 +1,20 @@ +import type { StaticImageData } from 'next/image' +import type { ElementType, Ref } from 'react' + +import type { Media as MediaType } from '@/payload-types' + +export interface Props { + alt?: string + className?: string + fill?: boolean // for NextImage only + htmlElement?: ElementType | null + imgClassName?: string + onClick?: () => void + onLoad?: () => void + priority?: boolean // for NextImage only + ref?: Ref<HTMLImageElement | HTMLVideoElement | null> + resource?: MediaType | string | number // for Payload media + size?: string // for NextImage only + src?: StaticImageData // for static media + videoClassName?: string +} diff --git a/src/components/PageRange/index.tsx b/src/components/PageRange/index.tsx new file mode 100644 index 0000000..0fc9f8a --- /dev/null +++ b/src/components/PageRange/index.tsx @@ -0,0 +1,54 @@ +import React from 'react' + +const defaultLabels = { + plural: 'Docs', + singular: 'Doc', +} + +const defaultCollectionLabels = { + posts: { + plural: 'Posts', + singular: 'Post', + }, +} + +export const PageRange: React.FC<{ + className?: string + collection?: string + collectionLabels?: { + plural?: string + singular?: string + } + currentPage?: number + limit?: number + totalDocs?: number +}> = (props) => { + const { + className, + collection, + collectionLabels: collectionLabelsFromProps, + currentPage, + limit, + totalDocs, + } = props + + let indexStart = (currentPage ? currentPage - 1 : 1) * (limit || 1) + 1 + if (totalDocs && indexStart > totalDocs) indexStart = 0 + + let indexEnd = (currentPage || 1) * (limit || 1) + if (totalDocs && indexEnd > totalDocs) indexEnd = totalDocs + + const { plural, singular } = + collectionLabelsFromProps || defaultCollectionLabels[collection || ''] || defaultLabels || {} + + return ( + <div className={[className, 'font-semibold'].filter(Boolean).join(' ')}> + {(typeof totalDocs === 'undefined' || totalDocs === 0) && 'Search produced no results.'} + {typeof totalDocs !== 'undefined' && + totalDocs > 0 && + `Showing ${indexStart}${indexStart > 0 ? ` - ${indexEnd}` : ''} of ${totalDocs} ${ + totalDocs > 1 ? plural : singular + }`} + </div> + ) +} diff --git a/src/components/Pagination/index.tsx b/src/components/Pagination/index.tsx new file mode 100644 index 0000000..d6d6fda --- /dev/null +++ b/src/components/Pagination/index.tsx @@ -0,0 +1,101 @@ +'use client' +import { + Pagination as PaginationComponent, + PaginationContent, + PaginationEllipsis, + PaginationItem, + PaginationLink, + PaginationNext, + PaginationPrevious, +} from '@/components/ui/pagination' +import { cn } from '@/utilities/cn' +import { useRouter } from 'next/navigation' +import React from 'react' + +export const Pagination: React.FC<{ + className?: string + page: number + totalPages: number +}> = (props) => { + const router = useRouter() + + const { className, page, totalPages } = props + const hasNextPage = page < totalPages + const hasPrevPage = page > 1 + + const hasExtraPrevPages = page - 1 > 1 + const hasExtraNextPages = page + 1 < totalPages + + return ( + <div className={cn('my-12', className)}> + <PaginationComponent> + <PaginationContent> + <PaginationItem> + <PaginationPrevious + disabled={!hasPrevPage} + onClick={() => { + router.push(`/posts/page/${page - 1}`) + }} + /> + </PaginationItem> + + {hasExtraPrevPages && ( + <PaginationItem> + <PaginationEllipsis /> + </PaginationItem> + )} + + {hasPrevPage && ( + <PaginationItem> + <PaginationLink + onClick={() => { + router.push(`/posts/page/${page - 1}`) + }} + > + {page - 1} + </PaginationLink> + </PaginationItem> + )} + + <PaginationItem> + <PaginationLink + isActive + onClick={() => { + router.push(`/posts/page/${page}`) + }} + > + {page} + </PaginationLink> + </PaginationItem> + + {hasNextPage && ( + <PaginationItem> + <PaginationLink + onClick={() => { + router.push(`/posts/page/${page + 1}`) + }} + > + {page + 1} + </PaginationLink> + </PaginationItem> + )} + + {hasExtraNextPages && ( + <PaginationItem> + <PaginationEllipsis /> + </PaginationItem> + )} + + <PaginationItem> + <PaginationNext + disabled={!hasNextPage} + onClick={() => { + router.push(`/posts/page/${page + 1}`) + }} + /> + </PaginationItem> + </PaginationContent> + </PaginationComponent> + </div> + ) +} diff --git a/src/components/PayloadRedirects/index.tsx b/src/components/PayloadRedirects/index.tsx new file mode 100644 index 0000000..2e94fdd --- /dev/null +++ b/src/components/PayloadRedirects/index.tsx @@ -0,0 +1,50 @@ +import type React from 'react' +import type { Page, Post } from '@/payload-types' + +import { getCachedDocument } from '@/utilities/getDocument' +import { getCachedRedirects } from '@/utilities/getRedirects' +import { notFound, redirect } from 'next/navigation' + +interface Props { + disableNotFound?: boolean + url: string +} + +/* This component helps us with SSR based dynamic redirects */ +export const PayloadRedirects: React.FC<Props> = async ({ disableNotFound, url }) => { + const slug = url.startsWith('/') ? url : `${url}` + + const redirects = await getCachedRedirects()() + + const redirectItem = redirects.find((redirect) => redirect.from === slug) + + if (redirectItem) { + if (redirectItem.to?.url) { + redirect(redirectItem.to.url) + } + + let redirectUrl: string + + if (typeof redirectItem.to?.reference?.value === 'string') { + const collection = redirectItem.to?.reference?.relationTo + const id = redirectItem.to?.reference?.value + + const document = (await getCachedDocument(collection, id)()) as Page | Post + redirectUrl = `${redirectItem.to?.reference?.relationTo !== 'pages' ? `/${redirectItem.to?.reference?.relationTo}` : ''}/${ + document?.slug + }` + } else { + redirectUrl = `${redirectItem.to?.reference?.relationTo !== 'pages' ? `/${redirectItem.to?.reference?.relationTo}` : ''}/${ + typeof redirectItem.to?.reference?.value === 'object' + ? redirectItem.to?.reference?.value?.slug + : '' + }` + } + + if (redirectUrl) redirect(redirectUrl) + } + + if (disableNotFound) return null + + notFound() +} diff --git a/src/components/RichText/index.tsx b/src/components/RichText/index.tsx new file mode 100644 index 0000000..39b5528 --- /dev/null +++ b/src/components/RichText/index.tsx @@ -0,0 +1,43 @@ +import { cn } from '@/utilities/cn' +import React from 'react' + +import { serializeLexical } from './serialize' + +type Props = { + className?: string + content: Record<string, any> + enableGutter?: boolean + enableProse?: boolean +} + +const RichText: React.FC<Props> = ({ + className, + content, + enableGutter = true, + enableProse = true, +}) => { + if (!content) { + return null + } + + return ( + <div + className={cn( + { + 'container ': enableGutter, + 'max-w-none': !enableGutter, + 'mx-auto prose dark:prose-invert ': enableProse, + }, + className, + )} + > + {content && + !Array.isArray(content) && + typeof content === 'object' && + 'root' in content && + serializeLexical({ nodes: content?.root?.children })} + </div> + ) +} + +export default RichText diff --git a/src/components/RichText/nodeFormat.tsx b/src/components/RichText/nodeFormat.tsx new file mode 100644 index 0000000..5d5ff59 --- /dev/null +++ b/src/components/RichText/nodeFormat.tsx @@ -0,0 +1,125 @@ +// @ts-nocheck +//This copy-and-pasted from lexical here: https://github.com/facebook/lexical/blob/c2ceee223f46543d12c574e62155e619f9a18a5d/packages/lexical/src/LexicalConstants.ts + +import type { ElementFormatType, TextFormatType } from 'lexical' +import type { TextDetailType, TextModeType } from 'lexical/nodes/LexicalTextNode' + +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +// DOM +export const DOM_ELEMENT_TYPE = 1 +export const DOM_TEXT_TYPE = 3 + +// Reconciling +export const NO_DIRTY_NODES = 0 +export const HAS_DIRTY_NODES = 1 +export const FULL_RECONCILE = 2 + +// Text node modes +export const IS_NORMAL = 0 +export const IS_TOKEN = 1 +export const IS_SEGMENTED = 2 +// IS_INERT = 3 + +// Text node formatting +export const IS_BOLD = 1 +export const IS_ITALIC = 1 << 1 +export const IS_STRIKETHROUGH = 1 << 2 +export const IS_UNDERLINE = 1 << 3 +export const IS_CODE = 1 << 4 +export const IS_SUBSCRIPT = 1 << 5 +export const IS_SUPERSCRIPT = 1 << 6 +export const IS_HIGHLIGHT = 1 << 7 + +export const IS_ALL_FORMATTING = + IS_BOLD | + IS_ITALIC | + IS_STRIKETHROUGH | + IS_UNDERLINE | + IS_CODE | + IS_SUBSCRIPT | + IS_SUPERSCRIPT | + IS_HIGHLIGHT + +// Text node details +export const IS_DIRECTIONLESS = 1 +export const IS_UNMERGEABLE = 1 << 1 + +// Element node formatting +export const IS_ALIGN_LEFT = 1 +export const IS_ALIGN_CENTER = 2 +export const IS_ALIGN_RIGHT = 3 +export const IS_ALIGN_JUSTIFY = 4 +export const IS_ALIGN_START = 5 +export const IS_ALIGN_END = 6 + +// Reconciliation +export const NON_BREAKING_SPACE = '\u00A0' +const ZERO_WIDTH_SPACE = '\u200b' + +export const DOUBLE_LINE_BREAK = '\n\n' + +// For FF, we need to use a non-breaking space, or it gets composition +// in a stuck state. + +const RTL = '\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC' +const LTR = + 'A-Za-z\u00C0-\u00D6\u00D8-\u00F6' + + '\u00F8-\u02B8\u0300-\u0590\u0800-\u1FFF\u200E\u2C00-\uFB1C' + + '\uFE00-\uFE6F\uFEFD-\uFFFF' + +export const RTL_REGEX = new RegExp('^[^' + LTR + ']*[' + RTL + ']') + +export const LTR_REGEX = new RegExp('^[^' + RTL + ']*[' + LTR + ']') + +export const TEXT_TYPE_TO_FORMAT: Record<TextFormatType | string, number> = { + bold: IS_BOLD, + code: IS_CODE, + highlight: IS_HIGHLIGHT, + italic: IS_ITALIC, + strikethrough: IS_STRIKETHROUGH, + subscript: IS_SUBSCRIPT, + superscript: IS_SUPERSCRIPT, + underline: IS_UNDERLINE, +} + +export const DETAIL_TYPE_TO_DETAIL: Record<TextDetailType | string, number> = { + directionless: IS_DIRECTIONLESS, + unmergeable: IS_UNMERGEABLE, +} + +export const ELEMENT_TYPE_TO_FORMAT: Record<Exclude<ElementFormatType, ''>, number> = { + center: IS_ALIGN_CENTER, + end: IS_ALIGN_END, + justify: IS_ALIGN_JUSTIFY, + left: IS_ALIGN_LEFT, + right: IS_ALIGN_RIGHT, + start: IS_ALIGN_START, +} + +export const ELEMENT_FORMAT_TO_TYPE: Record<number, ElementFormatType> = { + [IS_ALIGN_CENTER]: 'center', + [IS_ALIGN_END]: 'end', + [IS_ALIGN_JUSTIFY]: 'justify', + [IS_ALIGN_LEFT]: 'left', + [IS_ALIGN_RIGHT]: 'right', + [IS_ALIGN_START]: 'start', +} + +export const TEXT_MODE_TO_TYPE: Record<TextModeType, 0 | 1 | 2> = { + normal: IS_NORMAL, + segmented: IS_SEGMENTED, + token: IS_TOKEN, +} + +export const TEXT_TYPE_TO_MODE: Record<number, TextModeType> = { + [IS_NORMAL]: 'normal', + [IS_SEGMENTED]: 'segmented', + [IS_TOKEN]: 'token', +} diff --git a/src/components/RichText/serialize.tsx b/src/components/RichText/serialize.tsx new file mode 100644 index 0000000..69bf3bd --- /dev/null +++ b/src/components/RichText/serialize.tsx @@ -0,0 +1,211 @@ +import { BannerBlock } from '@/blocks/Banner/Component' +import { CallToActionBlock } from '@/blocks/CallToAction/Component' +import { CodeBlock, CodeBlockProps } from '@/blocks/Code/Component' +import { MediaBlock } from '@/blocks/MediaBlock/Component' +import React, { Fragment, JSX } from 'react' +import { CMSLink } from '@/components/Link' +import { DefaultNodeTypes, SerializedBlockNode } from '@payloadcms/richtext-lexical' +import type { BannerBlock as BannerBlockProps } from '@/payload-types' + +import { + IS_BOLD, + IS_CODE, + IS_ITALIC, + IS_STRIKETHROUGH, + IS_SUBSCRIPT, + IS_SUPERSCRIPT, + IS_UNDERLINE, +} from './nodeFormat' +import type { Page } from '@/payload-types' + +export type NodeTypes = + | DefaultNodeTypes + | SerializedBlockNode< + | Extract<Page['layout'][0], { blockType: 'cta' }> + | Extract<Page['layout'][0], { blockType: 'mediaBlock' }> + | BannerBlockProps + | CodeBlockProps + > + +type Props = { + nodes: NodeTypes[] +} + +export function serializeLexical({ nodes }: Props): JSX.Element { + return ( + <Fragment> + {nodes?.map((node, index): JSX.Element | null => { + if (node == null) { + return null + } + + if (node.type === 'text') { + let text = <React.Fragment key={index}>{node.text}</React.Fragment> + if (node.format & IS_BOLD) { + text = <strong key={index}>{text}</strong> + } + if (node.format & IS_ITALIC) { + text = <em key={index}>{text}</em> + } + if (node.format & IS_STRIKETHROUGH) { + text = ( + <span key={index} style={{ textDecoration: 'line-through' }}> + {text} + </span> + ) + } + if (node.format & IS_UNDERLINE) { + text = ( + <span key={index} style={{ textDecoration: 'underline' }}> + {text} + </span> + ) + } + if (node.format & IS_CODE) { + text = <code key={index}>{node.text}</code> + } + if (node.format & IS_SUBSCRIPT) { + text = <sub key={index}>{text}</sub> + } + if (node.format & IS_SUPERSCRIPT) { + text = <sup key={index}>{text}</sup> + } + + return text + } + + // NOTE: Hacky fix for + // https://github.com/facebook/lexical/blob/d10c4e6e55261b2fdd7d1845aed46151d0f06a8c/packages/lexical-list/src/LexicalListItemNode.ts#L133 + // which does not return checked: false (only true - i.e. there is no prop for false) + const serializedChildrenFn = (node: NodeTypes): JSX.Element | null => { + if (node.children == null) { + return null + } else { + if (node?.type === 'list' && node?.listType === 'check') { + for (const item of node.children) { + if ('checked' in item) { + if (!item?.checked) { + item.checked = false + } + } + } + } + return serializeLexical({ nodes: node.children as NodeTypes[] }) + } + } + + const serializedChildren = 'children' in node ? serializedChildrenFn(node) : '' + + if (node.type === 'block') { + const block = node.fields + + const blockType = block?.blockType + + if (!block || !blockType) { + return null + } + + switch (blockType) { + case 'cta': + return <CallToActionBlock key={index} {...block} /> + case 'mediaBlock': + return ( + <MediaBlock + className="col-start-1 col-span-3" + imgClassName="m-0" + key={index} + {...block} + captionClassName="mx-auto max-w-[48rem]" + enableGutter={false} + disableInnerContainer={true} + /> + ) + case 'banner': + return <BannerBlock className="col-start-2 mb-4" key={index} {...block} /> + case 'code': + return <CodeBlock className="col-start-2" key={index} {...block} /> + default: + return null + } + } else { + switch (node.type) { + case 'linebreak': { + return <br className="col-start-2" key={index} /> + } + case 'paragraph': { + return ( + <p className="col-start-2" key={index}> + {serializedChildren} + </p> + ) + } + case 'heading': { + const Tag = node?.tag + return ( + <Tag className="col-start-2" key={index}> + {serializedChildren} + </Tag> + ) + } + case 'list': { + const Tag = node?.tag + return ( + <Tag className="list col-start-2" key={index}> + {serializedChildren} + </Tag> + ) + } + case 'listitem': { + if (node?.checked != null) { + return ( + <li + aria-checked={node.checked ? 'true' : 'false'} + className={` ${node.checked ? '' : ''}`} + key={index} + // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role + role="checkbox" + tabIndex={-1} + value={node?.value} + > + {serializedChildren} + </li> + ) + } else { + return ( + <li key={index} value={node?.value}> + {serializedChildren} + </li> + ) + } + } + case 'quote': { + return ( + <blockquote className="col-start-2" key={index}> + {serializedChildren} + </blockquote> + ) + } + case 'link': { + const fields = node.fields + + return ( + <CMSLink + key={index} + newTab={Boolean(fields?.newTab)} + reference={fields.doc as any} + type={fields.linkType === 'internal' ? 'reference' : 'custom'} + url={fields.url} + > + {serializedChildren} + </CMSLink> + ) + } + + default: + return null + } + } + })} + </Fragment> + ) +} diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx new file mode 100644 index 0000000..5b7a652 --- /dev/null +++ b/src/components/ui/button.tsx @@ -0,0 +1,49 @@ +import { cn } from 'src/utilities/cn' +import { Slot } from '@radix-ui/react-slot' +import { type VariantProps, cva } from 'class-variance-authority' +import * as React from 'react' + +const buttonVariants = cva( + 'inline-flex items-center justify-center whitespace-nowrap rounded text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50', + { + defaultVariants: { + size: 'default', + variant: 'default', + }, + variants: { + size: { + clear: '', + default: 'h-10 px-4 py-2', + icon: 'h-10 w-10', + lg: 'h-11 rounded px-8', + sm: 'h-9 rounded px-3', + }, + variant: { + default: 'bg-primary text-primary-foreground hover:bg-primary/90', + destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90', + ghost: 'hover:bg-card hover:text-accent-foreground', + link: 'text-primary items-start justify-start underline-offset-4 hover:underline', + outline: 'border border-border bg-background hover:bg-card hover:text-accent-foreground', + secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80', + }, + }, + }, +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes<HTMLButtonElement>, + VariantProps<typeof buttonVariants> { + asChild?: boolean +} + +const Button = React.forwardRef<HTMLButtonElement, ButtonProps>( + ({ asChild = false, className, size, variant, ...props }, ref) => { + const Comp = asChild ? Slot : 'button' + return ( + <Comp className={cn(buttonVariants({ className, size, variant }))} ref={ref} {...props} /> + ) + }, +) +Button.displayName = 'Button' + +export { Button, buttonVariants } diff --git a/src/components/ui/card.tsx b/src/components/ui/card.tsx new file mode 100644 index 0000000..5d7b80e --- /dev/null +++ b/src/components/ui/card.tsx @@ -0,0 +1,56 @@ +/* eslint-disable jsx-a11y/heading-has-content */ +import { cn } from 'src/utilities/cn' +import * as React from 'react' + +const Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>( + ({ className, ...props }, ref) => ( + <div + className={cn('rounded-lg border bg-card text-card-foreground shadow-sm', className)} + ref={ref} + {...props} + /> + ), +) +Card.displayName = 'Card' + +const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>( + ({ className, ...props }, ref) => ( + <div className={cn('flex flex-col space-y-1.5 p-6', className)} ref={ref} {...props} /> + ), +) +CardHeader.displayName = 'CardHeader' + +const CardTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>( + ({ className, ...props }, ref) => ( + <h3 + className={cn('text-2xl font-semibold leading-none tracking-tight', className)} + ref={ref} + {...props} + /> + ), +) +CardTitle.displayName = 'CardTitle' + +const CardDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes<HTMLParagraphElement> +>(({ className, ...props }, ref) => ( + <p className={cn('text-sm text-muted-foreground', className)} ref={ref} {...props} /> +)) +CardDescription.displayName = 'CardDescription' + +const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>( + ({ className, ...props }, ref) => ( + <div className={cn('p-6 pt-0', className)} ref={ref} {...props} /> + ), +) +CardContent.displayName = 'CardContent' + +const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>( + ({ className, ...props }, ref) => ( + <div className={cn('flex items-center p-6 pt-0', className)} ref={ref} {...props} /> + ), +) +CardFooter.displayName = 'CardFooter' + +export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } diff --git a/src/components/ui/checkbox.tsx b/src/components/ui/checkbox.tsx new file mode 100644 index 0000000..fe23eed --- /dev/null +++ b/src/components/ui/checkbox.tsx @@ -0,0 +1,27 @@ +'use client' + +import { cn } from 'src/utilities/cn' +import * as CheckboxPrimitive from '@radix-ui/react-checkbox' +import { Check } from 'lucide-react' +import * as React from 'react' + +const Checkbox = React.forwardRef< + React.ElementRef<typeof CheckboxPrimitive.Root>, + React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> +>(({ className, ...props }, ref) => ( + <CheckboxPrimitive.Root + className={cn( + 'peer h-4 w-4 shrink-0 rounded border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground', + className, + )} + ref={ref} + {...props} + > + <CheckboxPrimitive.Indicator className={cn('flex items-center justify-center text-current')}> + <Check className="h-4 w-4" /> + </CheckboxPrimitive.Indicator> + </CheckboxPrimitive.Root> +)) +Checkbox.displayName = CheckboxPrimitive.Root.displayName + +export { Checkbox } diff --git a/src/components/ui/input.tsx b/src/components/ui/input.tsx new file mode 100644 index 0000000..eb103a8 --- /dev/null +++ b/src/components/ui/input.tsx @@ -0,0 +1,23 @@ +import { cn } from 'src/utilities/cn' +import * as React from 'react' + +export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {} + +const Input = React.forwardRef<HTMLInputElement, InputProps>( + ({ type, className, ...props }, ref) => { + return ( + <input + className={cn( + 'flex h-10 w-full rounded border border-border bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', + className, + )} + ref={ref} + type={type} + {...props} + /> + ) + }, +) +Input.displayName = 'Input' + +export { Input } diff --git a/src/components/ui/label.tsx b/src/components/ui/label.tsx new file mode 100644 index 0000000..da8a964 --- /dev/null +++ b/src/components/ui/label.tsx @@ -0,0 +1,20 @@ +'use client' + +import { cn } from 'src/utilities/cn' +import * as LabelPrimitive from '@radix-ui/react-label' +import { type VariantProps, cva } from 'class-variance-authority' +import * as React from 'react' + +const labelVariants = cva( + 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70', +) + +const Label = React.forwardRef< + React.ElementRef<typeof LabelPrimitive.Root>, + React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants> +>(({ className, ...props }, ref) => ( + <LabelPrimitive.Root className={cn(labelVariants(), className)} ref={ref} {...props} /> +)) +Label.displayName = LabelPrimitive.Root.displayName + +export { Label } diff --git a/src/components/ui/pagination.tsx b/src/components/ui/pagination.tsx new file mode 100644 index 0000000..e011229 --- /dev/null +++ b/src/components/ui/pagination.tsx @@ -0,0 +1,100 @@ +/* eslint-disable react/button-has-type */ +import type { ButtonProps } from '@/components/ui/button' + +import { buttonVariants } from '@/components/ui/button' +import { cn } from 'src/utilities/cn' +import { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react' +import * as React from 'react' + +const Pagination = ({ className, ...props }: React.ComponentProps<'nav'>) => ( + <nav + aria-label="pagination" + className={cn('mx-auto flex w-full justify-center', className)} + role="navigation" + {...props} + /> +) +Pagination.displayName = 'Pagination' + +const PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>( + ({ className, ...props }, ref) => ( + <ul className={cn('flex flex-row items-center gap-1', className)} ref={ref} {...props} /> + ), +) +PaginationContent.displayName = 'PaginationContent' + +const PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>( + ({ className, ...props }, ref) => <li className={cn('', className)} ref={ref} {...props} />, +) +PaginationItem.displayName = 'PaginationItem' + +type PaginationLinkProps = { + isActive?: boolean +} & Pick<ButtonProps, 'size'> & + React.ComponentProps<'button'> + +const PaginationLink = ({ className, isActive, size = 'icon', ...props }: PaginationLinkProps) => ( + <button + aria-current={isActive ? 'page' : undefined} + className={cn( + buttonVariants({ + size, + variant: isActive ? 'outline' : 'ghost', + }), + className, + )} + {...props} + /> +) +PaginationLink.displayName = 'PaginationLink' + +const PaginationPrevious = ({ + className, + ...props +}: React.ComponentProps<typeof PaginationLink>) => ( + <PaginationLink + aria-label="Go to previous page" + className={cn('gap-1 pl-2.5', className)} + size="default" + {...props} + > + <ChevronLeft className="h-4 w-4" /> + <span>Previous</span> + </PaginationLink> +) +PaginationPrevious.displayName = 'PaginationPrevious' + +const PaginationNext = ({ className, ...props }: React.ComponentProps<typeof PaginationLink>) => ( + <PaginationLink + aria-label="Go to next page" + className={cn('gap-1 pr-2.5', className)} + size="default" + {...props} + > + <span>Next</span> + <ChevronRight className="h-4 w-4" /> + </PaginationLink> +) +PaginationNext.displayName = 'PaginationNext' + +const PaginationEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => ( + <span + aria-hidden + className={cn('flex h-9 w-9 items-center justify-center', className)} + {...props} + > + <MoreHorizontal className="h-4 w-4" /> + <span className="sr-only">More pages</span> + </span> +) +PaginationEllipsis.displayName = 'PaginationEllipsis' + +export { + Pagination, + PaginationContent, + PaginationEllipsis, + PaginationItem, + PaginationLink, + PaginationNext, + PaginationPrevious, +} diff --git a/src/components/ui/select.tsx b/src/components/ui/select.tsx new file mode 100644 index 0000000..d9da662 --- /dev/null +++ b/src/components/ui/select.tsx @@ -0,0 +1,152 @@ +'use client' + +import { cn } from 'src/utilities/cn' +import * as SelectPrimitive from '@radix-ui/react-select' +import { Check, ChevronDown, ChevronUp } from 'lucide-react' +import * as React from 'react' + +const Select = SelectPrimitive.Root + +const SelectGroup = SelectPrimitive.Group + +const SelectValue = SelectPrimitive.Value + +const SelectTrigger = React.forwardRef< + React.ElementRef<typeof SelectPrimitive.Trigger>, + React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> +>(({ children, className, ...props }, ref) => ( + <SelectPrimitive.Trigger + className={cn( + 'flex h-10 w-full items-center justify-between rounded border border-input bg-background px-3 py-2 text-inherit ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1', + className, + )} + ref={ref} + {...props} + > + {children} + <SelectPrimitive.Icon asChild> + <ChevronDown className="h-4 w-4 opacity-50" /> + </SelectPrimitive.Icon> + </SelectPrimitive.Trigger> +)) +SelectTrigger.displayName = SelectPrimitive.Trigger.displayName + +const SelectScrollUpButton = React.forwardRef< + React.ElementRef<typeof SelectPrimitive.ScrollUpButton>, + React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton> +>(({ className, ...props }, ref) => ( + <SelectPrimitive.ScrollUpButton + className={cn('flex cursor-default items-center justify-center py-1', className)} + ref={ref} + {...props} + > + <ChevronUp className="h-4 w-4" /> + </SelectPrimitive.ScrollUpButton> +)) +SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName + +const SelectScrollDownButton = React.forwardRef< + React.ElementRef<typeof SelectPrimitive.ScrollDownButton>, + React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton> +>(({ className, ...props }, ref) => ( + <SelectPrimitive.ScrollDownButton + className={cn('flex cursor-default items-center justify-center py-1', className)} + ref={ref} + {...props} + > + <ChevronDown className="h-4 w-4" /> + </SelectPrimitive.ScrollDownButton> +)) +SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName + +const SelectContent = React.forwardRef< + React.ElementRef<typeof SelectPrimitive.Content>, + React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> +>(({ children, className, position = 'popper', ...props }, ref) => ( + <SelectPrimitive.Portal> + <SelectPrimitive.Content + className={cn( + 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded border bg-card text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', + position === 'popper' && + 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1', + className, + )} + position={position} + ref={ref} + {...props} + > + <SelectScrollUpButton /> + <SelectPrimitive.Viewport + className={cn( + 'p-1', + position === 'popper' && + 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]', + )} + > + {children} + </SelectPrimitive.Viewport> + <SelectScrollDownButton /> + </SelectPrimitive.Content> + </SelectPrimitive.Portal> +)) +SelectContent.displayName = SelectPrimitive.Content.displayName + +const SelectLabel = React.forwardRef< + React.ElementRef<typeof SelectPrimitive.Label>, + React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label> +>(({ className, ...props }, ref) => ( + <SelectPrimitive.Label + className={cn('py-1.5 pl-8 pr-2 text-sm font-semibold', className)} + ref={ref} + {...props} + /> +)) +SelectLabel.displayName = SelectPrimitive.Label.displayName + +const SelectItem = React.forwardRef< + React.ElementRef<typeof SelectPrimitive.Item>, + React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> +>(({ children, className, ...props }, ref) => ( + <SelectPrimitive.Item + className={cn( + 'relative flex w-full cursor-default select-none items-center rounded py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', + className, + )} + ref={ref} + {...props} + > + <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center"> + <SelectPrimitive.ItemIndicator> + <Check className="h-4 w-4" /> + </SelectPrimitive.ItemIndicator> + </span> + + <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText> + </SelectPrimitive.Item> +)) +SelectItem.displayName = SelectPrimitive.Item.displayName + +const SelectSeparator = React.forwardRef< + React.ElementRef<typeof SelectPrimitive.Separator>, + React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator> +>(({ className, ...props }, ref) => ( + <SelectPrimitive.Separator + className={cn('-mx-1 my-1 h-px bg-muted', className)} + ref={ref} + {...props} + /> +)) +SelectSeparator.displayName = SelectPrimitive.Separator.displayName + +export { + Select, + SelectContent, + SelectGroup, + SelectItem, + SelectLabel, + SelectScrollDownButton, + SelectScrollUpButton, + SelectSeparator, + SelectTrigger, + SelectValue, +} diff --git a/src/components/ui/textarea.tsx b/src/components/ui/textarea.tsx new file mode 100644 index 0000000..3dd3492 --- /dev/null +++ b/src/components/ui/textarea.tsx @@ -0,0 +1,22 @@ +import { cn } from 'src/utilities/cn' +import * as React from 'react' + +export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {} + +const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>( + ({ className, ...props }, ref) => { + return ( + <textarea + className={cn( + 'flex min-h-[80px] w-full rounded border border-border bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', + className, + )} + ref={ref} + {...props} + /> + ) + }, +) +Textarea.displayName = 'Textarea' + +export { Textarea } diff --git a/src/cssVariables.js b/src/cssVariables.js new file mode 100644 index 0000000..1a30e8e --- /dev/null +++ b/src/cssVariables.js @@ -0,0 +1,20 @@ +// Keep these in sync with the CSS variables in the `_css` directory +// CSS Variables used by Payload + +const cssVariables = { + breakpoints: { + l: 1440, + m: 1024, + s: 768, + }, + colors: { + base0: 'rgb(255, 255, 255)', + base100: 'rgb(235, 235, 235)', + base500: 'rgb(128, 128, 128)', + base850: 'rgb(34, 34, 34)', + base1000: 'rgb(0, 0, 0)', + error500: 'rgb(255, 111, 118)', + }, +} + +export default cssVariables diff --git a/src/endpoints/seed/contact-form.ts b/src/endpoints/seed/contact-form.ts new file mode 100644 index 0000000..5fa84be --- /dev/null +++ b/src/endpoints/seed/contact-form.ts @@ -0,0 +1,111 @@ +import type { Form } from '@/payload-types' + +export const contactForm: Partial<Form> = { + confirmationMessage: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'The contact form has been submitted successfully.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h2', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + confirmationType: 'message', + createdAt: '2023-01-12T21:47:41.374Z', + emails: [ + { + emailFrom: '"Payload" \u003Cdemo@payloadcms.com\u003E', + emailTo: '{{email}}', + message: { + root: { + type: 'root', + children: [ + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Your contact form submission was successfully received.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + subject: "You've received a new message.", + }, + ], + fields: [ + { + name: 'full-name', + blockName: 'full-name', + blockType: 'text', + label: 'Full Name', + required: true, + width: 100, + }, + { + name: 'email', + blockName: 'email', + blockType: 'email', + label: 'Email', + required: true, + width: 100, + }, + { + name: 'phone', + blockName: 'phone', + blockType: 'number', + label: 'Phone', + required: false, + width: 100, + }, + { + name: 'message', + blockName: 'message', + blockType: 'textarea', + label: 'Message', + required: true, + width: 100, + }, + ], + redirect: undefined, + submitButtonLabel: 'Submit', + title: 'Contact Form', + updatedAt: '2023-01-12T21:47:41.374Z', +} diff --git a/src/endpoints/seed/contact-page.ts b/src/endpoints/seed/contact-page.ts new file mode 100644 index 0000000..f17fa37 --- /dev/null +++ b/src/endpoints/seed/contact-page.ts @@ -0,0 +1,48 @@ +import type { Page } from '@/payload-types' + +export const contact: Partial<Page> = { + slug: 'contact', + _status: 'published', + hero: { + type: 'none', + }, + layout: [ + { + blockType: 'formBlock', + enableIntro: true, + // @ts-ignore + form: '{{CONTACT_FORM_ID}}', + introContent: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Example contact form:', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h3', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + }, + ], + title: 'Contact', +} diff --git a/src/endpoints/seed/home-static.ts b/src/endpoints/seed/home-static.ts new file mode 100644 index 0000000..91a652d --- /dev/null +++ b/src/endpoints/seed/home-static.ts @@ -0,0 +1,88 @@ +import type { Page } from '@/payload-types' + +// Used for pre-seeded content so that the homepage is not empty +// @ts-expect-error +export const homeStatic: Page = { + slug: 'home', + _status: 'published', + hero: { + type: 'lowImpact', + richText: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Payload Website Template', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h1', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'link', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Visit the admin dashboard', + version: 1, + }, + ], + direction: 'ltr', + fields: { + linkType: 'custom', + newTab: false, + url: '/admin', + }, + format: '', + indent: 0, + version: 2, + }, + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: ' to make your account and seed content for your website.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + }, + meta: { + description: 'An open-source website built with Payload and Next.js.', + title: 'Payload Website Template', + }, + title: 'Home', +} diff --git a/src/endpoints/seed/home.ts b/src/endpoints/seed/home.ts new file mode 100644 index 0000000..bdca800 --- /dev/null +++ b/src/endpoints/seed/home.ts @@ -0,0 +1,668 @@ +import type { RequiredDataFromCollectionSlug } from 'payload' + +export const home: RequiredDataFromCollectionSlug<'pages'> = { + slug: 'home', + _status: 'published', + hero: { + type: 'highImpact', + links: [ + { + link: { + type: 'custom', + appearance: 'default', + label: 'All posts', + url: '/posts', + }, + }, + { + link: { + type: 'custom', + appearance: 'outline', + label: 'Contact', + url: '/contact', + }, + }, + ], + // @ts-ignore + media: '{{IMAGE_1}}', + richText: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Payload Website Template', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h1', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'link', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Visit the admin dashboard', + version: 1, + }, + ], + direction: 'ltr', + fields: { + linkType: 'custom', + newTab: false, + url: '/admin', + }, + format: '', + indent: 0, + version: 3, + }, + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: " to begin managing this site's content. The code for this template is completely open-source and can be found ", + version: 1, + }, + { + type: 'link', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'here', + version: 1, + }, + ], + direction: 'ltr', + fields: { + linkType: 'custom', + newTab: true, + url: 'https://github.com/payloadcms/payload/tree/beta/templates/website', + }, + format: '', + indent: 0, + version: 3, + }, + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: '. ', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + }, + layout: [ + { + blockName: 'Content Block', + blockType: 'content', + columns: [ + { + richText: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Core features', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h2', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + size: 'full', + }, + { + enableLink: false, + richText: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Admin Dashboard', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h3', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: "Manage this site's pages and posts from the ", + version: 1, + }, + { + type: 'link', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'admin dashboard', + version: 1, + }, + ], + direction: 'ltr', + fields: { + linkType: 'custom', + newTab: false, + url: '/admin', + }, + format: '', + indent: 0, + version: 2, + }, + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: '.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + size: 'oneThird', + }, + { + enableLink: false, + richText: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Preview', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h3', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Using versions, drafts, and preview, editors can review and share their changes before publishing them.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + size: 'oneThird', + }, + { + enableLink: false, + richText: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Page Builder', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h3', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Custom page builder allows you to create unique page, post, and project layouts for any type of content.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + size: 'oneThird', + }, + { + enableLink: false, + richText: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'SEO', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h3', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Editors have complete control over SEO data and site content directly from the ', + version: 1, + }, + { + type: 'link', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'admin dashboard', + version: 1, + }, + ], + direction: 'ltr', + fields: { + linkType: 'custom', + newTab: false, + url: '/admin', + }, + format: '', + indent: 0, + version: 2, + }, + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: '.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + size: 'oneThird', + }, + { + enableLink: false, + richText: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Dark Mode', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h3', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Users will experience this site in their preferred color scheme and each block can be inverted.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + size: 'oneThird', + }, + ], + }, + { + blockName: 'Media Block', + blockType: 'mediaBlock', + // @ts-ignore + media: '{{IMAGE_2}}', + position: 'default', + }, + { + blockName: 'Archive Block', + blockType: 'archive', + categories: [], + introContent: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Recent posts', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h3', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'The posts below are displayed in an "Archive" layout building block which is an extremely powerful way to display documents on a page. It can be auto-populated by collection or by category, or posts can be individually selected. Pagination controls will automatically appear if the number of results exceeds the number of items per page.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + populateBy: 'collection', + relationTo: 'posts', + }, + { + blockName: 'CTA', + blockType: 'cta', + links: [ + { + link: { + type: 'custom', + appearance: 'default', + label: 'All posts', + url: '/posts', + }, + }, + ], + richText: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'This is a call to action', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h3', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'This is a custom layout building block ', + version: 1, + }, + { + type: 'link', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'configured in the admin dashboard', + version: 1, + }, + ], + direction: 'ltr', + fields: { + linkType: 'custom', + newTab: false, + url: '/admin', + }, + format: '', + indent: 0, + version: 2, + }, + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: '.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + }, + ], + meta: { + description: 'An open-source website built with Payload and Next.js.', + // @ts-ignore + image: '{{IMAGE_1}}', + title: 'Payload Website Template', + }, + title: 'Home', +} diff --git a/src/endpoints/seed/image-1.ts b/src/endpoints/seed/image-1.ts new file mode 100644 index 0000000..8c71808 --- /dev/null +++ b/src/endpoints/seed/image-1.ts @@ -0,0 +1,67 @@ +import type { Media } from '@/payload-types' + +export const image1: Omit<Media, 'createdAt' | 'id' | 'updatedAt'> = { + alt: 'Curving abstract shapes with an orange and blue gradient', + caption: { + root: { + type: 'root', + children: [ + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Photo by ', + version: 1, + }, + { + type: 'link', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Andrew Kliatskyi', + version: 1, + }, + ], + direction: 'ltr', + fields: { + linkType: 'custom', + newTab: true, + url: 'https://unsplash.com/@kirp', + }, + format: '', + indent: 0, + version: 2, + }, + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: ' on Unsplash.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, +} diff --git a/src/endpoints/seed/image-2.ts b/src/endpoints/seed/image-2.ts new file mode 100644 index 0000000..34993b5 --- /dev/null +++ b/src/endpoints/seed/image-2.ts @@ -0,0 +1,67 @@ +import type { Media } from '@/payload-types' + +export const image2: Omit<Media, 'createdAt' | 'id' | 'updatedAt'> = { + alt: 'Curving abstract shapes with an orange and blue gradient', + caption: { + root: { + type: 'root', + children: [ + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Photo by ', + version: 1, + }, + { + type: 'link', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Andrew Kliatskyi', + version: 1, + }, + ], + direction: 'ltr', + fields: { + linkType: 'custom', + newTab: true, + url: 'https://unsplash.com/@kirp', + }, + format: '', + indent: 0, + version: 2, + }, + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: ' on Unsplash.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, +} diff --git a/src/endpoints/seed/image-hero1.webp b/src/endpoints/seed/image-hero1.webp new file mode 100644 index 0000000..e69de29 diff --git a/src/endpoints/seed/image-post1.webp b/src/endpoints/seed/image-post1.webp new file mode 100644 index 0000000..e69de29 diff --git a/src/endpoints/seed/image-post2.webp b/src/endpoints/seed/image-post2.webp new file mode 100644 index 0000000..e69de29 diff --git a/src/endpoints/seed/image-post3.webp b/src/endpoints/seed/image-post3.webp new file mode 100644 index 0000000..e69de29 diff --git a/src/endpoints/seed/index.ts b/src/endpoints/seed/index.ts new file mode 100644 index 0000000..fb23573 --- /dev/null +++ b/src/endpoints/seed/index.ts @@ -0,0 +1,364 @@ +import type { CollectionSlug, GlobalSlug, Payload, PayloadRequest } from 'payload' + +import fs from 'fs' +import path from 'path' +import { fileURLToPath } from 'url' + +import { contactForm as contactFormData } from './contact-form' +import { contact as contactPageData } from './contact-page' +import { home } from './home' +import { image1 } from './image-1' +import { image2 } from './image-2' +import { post1 } from './post-1' +import { post2 } from './post-2' +import { post3 } from './post-3' + +const filename = fileURLToPath(import.meta.url) +const dirname = path.dirname(filename) + +const collections: CollectionSlug[] = [ + 'categories', + 'media', + 'pages', + 'posts', + 'forms', + 'form-submissions', + 'search', +] +const globals: GlobalSlug[] = ['header', 'footer'] + +// Next.js revalidation errors are normal when seeding the database without a server running +// i.e. running `yarn seed` locally instead of using the admin UI within an active app +// The app is not running to revalidate the pages and so the API routes are not available +// These error messages can be ignored: `Error hitting revalidate route for...` +export const seed = async ({ + payload, + req, +}: { + payload: Payload + req: PayloadRequest +}): Promise<void> => { + payload.logger.info('Seeding database...') + + // we need to clear the media directory before seeding + // as well as the collections and globals + // this is because while `yarn seed` drops the database + // the custom `/api/seed` endpoint does not + + payload.logger.info(`— Clearing media...`) + + const mediaDir = path.resolve(dirname, '../../public/media') + if (fs.existsSync(mediaDir)) { + fs.rmdirSync(mediaDir, { recursive: true }) + } + + payload.logger.info(`— Clearing collections and globals...`) + + // clear the database + for (const global of globals) { + await payload.updateGlobal({ + slug: global, + + data: { + // @ts-ignore + navItems: [], + }, + req, + }) + } + + for (const collection of collections) { + await payload.delete({ + collection: collection, + where: { + id: { + exists: true, + }, + }, + req, + }) + } + + const pages = await payload.delete({ + collection: 'pages', + where: {}, + req, + }) + + console.log({ pages }) + + payload.logger.info(`— Seeding demo author and user...`) + + await payload.delete({ + collection: 'users', + where: { + email: { + equals: 'demo-author@payloadcms.com', + }, + }, + req, + }) + + const demoAuthor = await payload.create({ + collection: 'users', + data: { + name: 'Demo Author', + email: 'demo-author@payloadcms.com', + password: 'password', + }, + req, + }) + + let demoAuthorID: number | string = demoAuthor.id + + payload.logger.info(`— Seeding media...`) + const image1Doc = await payload.create({ + collection: 'media', + data: image1, + filePath: path.resolve(dirname, 'image-post1.webp'), + req, + }) + const image2Doc = await payload.create({ + collection: 'media', + data: image2, + filePath: path.resolve(dirname, 'image-post2.webp'), + req, + }) + const image3Doc = await payload.create({ + collection: 'media', + data: image2, + filePath: path.resolve(dirname, 'image-post3.webp'), + req, + }) + const imageHomeDoc = await payload.create({ + collection: 'media', + data: image2, + filePath: path.resolve(dirname, 'image-hero1.webp'), + req, + }) + + payload.logger.info(`— Seeding categories...`) + const technologyCategory = await payload.create({ + collection: 'categories', + data: { + title: 'Technology', + }, + req, + }) + + const newsCategory = await payload.create({ + collection: 'categories', + data: { + title: 'News', + }, + req, + }) + + const financeCategory = await payload.create({ + collection: 'categories', + data: { + title: 'Finance', + }, + req, + }) + + await payload.create({ + collection: 'categories', + data: { + title: 'Design', + }, + req, + }) + + await payload.create({ + collection: 'categories', + data: { + title: 'Software', + }, + req, + }) + + await payload.create({ + collection: 'categories', + data: { + title: 'Engineering', + }, + req, + }) + + let image1ID: number | string = image1Doc.id + let image2ID: number | string = image2Doc.id + let image3ID: number | string = image3Doc.id + let imageHomeID: number | string = imageHomeDoc.id + + if (payload.db.defaultIDType === 'text') { + image1ID = `"${image1Doc.id}"` + image2ID = `"${image2Doc.id}"` + image3ID = `"${image3Doc.id}"` + imageHomeID = `"${imageHomeDoc.id}"` + demoAuthorID = `"${demoAuthorID}"` + } + + payload.logger.info(`— Seeding posts...`) + + // Do not create posts with `Promise.all` because we want the posts to be created in order + // This way we can sort them by `createdAt` or `publishedAt` and they will be in the expected order + const post1Doc = await payload.create({ + collection: 'posts', + data: JSON.parse( + JSON.stringify({ ...post1, categories: [technologyCategory.id] }) + .replace(/"\{\{IMAGE_1\}\}"/g, String(image1ID)) + .replace(/"\{\{IMAGE_2\}\}"/g, String(image2ID)) + .replace(/"\{\{AUTHOR\}\}"/g, String(demoAuthorID)), + ), + req, + }) + + const post2Doc = await payload.create({ + collection: 'posts', + data: JSON.parse( + JSON.stringify({ ...post2, categories: [newsCategory.id] }) + .replace(/"\{\{IMAGE_1\}\}"/g, String(image2ID)) + .replace(/"\{\{IMAGE_2\}\}"/g, String(image3ID)) + .replace(/"\{\{AUTHOR\}\}"/g, String(demoAuthorID)), + ), + req, + }) + + const post3Doc = await payload.create({ + collection: 'posts', + data: JSON.parse( + JSON.stringify({ ...post3, categories: [financeCategory.id] }) + .replace(/"\{\{IMAGE_1\}\}"/g, String(image3ID)) + .replace(/"\{\{IMAGE_2\}\}"/g, String(image1ID)) + .replace(/"\{\{AUTHOR\}\}"/g, String(demoAuthorID)), + ), + req, + }) + + // update each post with related posts + await payload.update({ + id: post1Doc.id, + collection: 'posts', + data: { + relatedPosts: [post2Doc.id, post3Doc.id], + }, + req, + }) + await payload.update({ + id: post2Doc.id, + collection: 'posts', + data: { + relatedPosts: [post1Doc.id, post3Doc.id], + }, + req, + }) + await payload.update({ + id: post3Doc.id, + collection: 'posts', + data: { + relatedPosts: [post1Doc.id, post2Doc.id], + }, + req, + }) + + payload.logger.info(`— Seeding home page...`) + + await payload.create({ + collection: 'pages', + data: JSON.parse( + JSON.stringify(home) + .replace(/"\{\{IMAGE_1\}\}"/g, String(imageHomeID)) + .replace(/"\{\{IMAGE_2\}\}"/g, String(image2ID)), + ), + req, + }) + + payload.logger.info(`— Seeding contact form...`) + + const contactForm = await payload.create({ + collection: 'forms', + data: JSON.parse(JSON.stringify(contactFormData)), + req, + }) + + let contactFormID: number | string = contactForm.id + + if (payload.db.defaultIDType === 'text') { + contactFormID = `"${contactFormID}"` + } + + payload.logger.info(`— Seeding contact page...`) + + const contactPage = await payload.create({ + collection: 'pages', + data: JSON.parse( + JSON.stringify(contactPageData).replace(/"\{\{CONTACT_FORM_ID\}\}"/g, String(contactFormID)), + ), + req, + }) + + payload.logger.info(`— Seeding header...`) + + await payload.updateGlobal({ + slug: 'header', + data: { + navItems: [ + { + link: { + type: 'custom', + label: 'Posts', + url: '/posts', + }, + }, + { + link: { + type: 'reference', + label: 'Contact', + reference: { + relationTo: 'pages', + value: contactPage.id, + }, + }, + }, + ], + }, + req, + }) + + payload.logger.info(`— Seeding footer...`) + + await payload.updateGlobal({ + slug: 'footer', + data: { + navItems: [ + { + link: { + type: 'custom', + label: 'Admin', + url: '/admin', + }, + }, + { + link: { + type: 'custom', + label: 'Source Code', + newTab: true, + url: 'https://github.com/payloadcms/payload/tree/beta/templates/website', + }, + }, + { + link: { + type: 'custom', + label: 'Payload', + newTab: true, + url: 'https://payloadcms.com/', + }, + }, + ], + }, + req, + }) + + payload.logger.info('Seeded database successfully!') +} diff --git a/src/endpoints/seed/post-1.ts b/src/endpoints/seed/post-1.ts new file mode 100644 index 0000000..f8235e2 --- /dev/null +++ b/src/endpoints/seed/post-1.ts @@ -0,0 +1,305 @@ +import type { Post } from '@/payload-types' + +export const post1: Partial<Post> = { + slug: 'digital-horizons', + _status: 'published', + // @ts-ignore + authors: ['{{AUTHOR}}'], + content: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Dive into the marvels of modern innovation, where the only constant is change. A journey where pixels and data converge to craft the future.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h2', + version: 1, + }, + { + type: 'block', + fields: { + blockName: 'Disclaimer', + blockType: 'banner', + content: { + root: { + type: 'root', + children: [ + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 1, + mode: 'normal', + style: '', + text: 'Disclaimer:', + version: 1, + }, + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: ' This content is fabricated and for demonstration purposes only. To edit this post, ', + version: 1, + }, + { + type: 'link', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'navigate to the admin dashboard', + version: 1, + }, + ], + direction: 'ltr', + fields: { + linkType: 'custom', + newTab: true, + url: '/admin', + }, + format: '', + indent: 0, + version: 3, + }, + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: '.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + style: 'info', + }, + format: '', + version: 2, + }, + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'The Rise of AI and Machine Learning', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h2', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'We find ourselves in a transformative era where artificial intelligence (AI) stands at the forefront of technological evolution. The ripple effects of its advancements are reshaping industries at an unprecedented pace. No longer are businesses bound by the limitations of tedious, manual processes. Instead, sophisticated machines, fueled by vast amounts of historical data, are now capable of making decisions previously left to human intuition. These intelligent systems are not only optimizing operations but also pioneering innovative approaches, heralding a new age of business transformation worldwide. ', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'To demonstrate basic AI functionality, here is a javascript snippet that makes a POST request to a generic AI API in order to generate text based on a prompt. ', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h4', + version: 1, + }, + { + type: 'block', + fields: { + blockName: 'Generate Text', + blockType: 'code', + code: "async function generateText(prompt) {\n const apiKey = 'your-api-key';\n const apiUrl = 'https://api.example.com/generate-text';\n\n const response = await fetch(apiUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`\n },\n body: JSON.stringify({\n model: 'text-generation-model',\n prompt: prompt,\n max_tokens: 50\n })\n });\n\n const data = await response.json();\n console.log(data.choices[0].text.trim());\n}\n\n// Example usage\ngenerateText(\"Once upon a time in a faraway land,\");\n", + language: 'javascript', + }, + format: '', + version: 2, + }, + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'IoT: Connecting the World Around Us', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h2', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: "In today's rapidly evolving technological landscape, the Internet of Things (IoT) stands out as a revolutionary force. From transforming our residences with smart home systems to redefining transportation through connected cars, IoT's influence is palpable in nearly every facet of our daily lives.", + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: "This technology hinges on the seamless integration of devices and systems, allowing them to communicate and collaborate effortlessly. With each connected device, we move a step closer to a world where convenience and efficiency are embedded in the very fabric of our existence. As a result, we're transitioning into an era where our surroundings intuitively respond to our needs, heralding a smarter and more interconnected global community.", + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + { + type: 'block', + fields: { + blockName: '', + blockType: 'mediaBlock', + media: '{{IMAGE_2}}', + position: 'default', + }, + format: '', + version: 2, + }, + { + type: 'block', + fields: { + blockName: 'Dynamic Components', + blockType: 'banner', + content: { + root: { + type: 'root', + children: [ + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: "This content above is completely dynamic using custom layout building blocks configured in the CMS. This can be anything you'd like from rich text and images, to highly designed, complex components.", + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + style: 'info', + }, + format: '', + version: 2, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + + meta: { + description: + 'Dive into the marvels of modern innovation, where the only constant is change. A journey where pixels and data converge to craft the future.', + // @ts-ignore + image: '{{IMAGE_1}}', + title: 'Digital Horizons: A Glimpse into Tomorrow', + }, + relatedPosts: [], // this is populated by the seed script + title: 'Digital Horizons: A Glimpse into Tomorrow', +} diff --git a/src/endpoints/seed/post-2.ts b/src/endpoints/seed/post-2.ts new file mode 100644 index 0000000..5d2ba32 --- /dev/null +++ b/src/endpoints/seed/post-2.ts @@ -0,0 +1,227 @@ +import type { Post } from '@/payload-types' + +export const post2: Partial<Post> = { + slug: 'global-gaze', + _status: 'published', + // @ts-ignore + authors: ['{{AUTHOR}}'], + content: { + root: { + type: 'root', + children: [ + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Explore the untold and overlooked. A magnified view into the corners of the world, where every story deserves its spotlight.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h2', + version: 1, + }, + { + type: 'block', + fields: { + blockName: 'Disclaimer', + blockType: 'banner', + content: { + root: { + type: 'root', + children: [ + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 1, + mode: 'normal', + style: '', + text: 'Disclaimer:', + version: 1, + }, + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: ' This content is fabricated and for demonstration purposes only. To edit this post, ', + version: 1, + }, + { + type: 'link', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'navigate to the admin dashboard.', + version: 1, + }, + ], + direction: 'ltr', + fields: { + linkType: 'custom', + newTab: true, + url: '/admin', + }, + format: '', + indent: 0, + version: 3, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 1, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + style: 'info', + }, + format: '', + version: 2, + }, + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'The Power of Resilience: Stories of Recovery and Hope', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h2', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: "Throughout history, regions across the globe have faced the devastating impact of natural disasters, the turbulence of political unrest, and the challenging ripples of economic downturns. In these moments of profound crisis, an often-underestimated force emerges: the indomitable resilience of the human spirit. These aren't just tales of mere survival, but stories of communities forging bonds, uniting with a collective purpose, and demonstrating an innate ability to overcome.", + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + { + type: 'block', + fields: { + blockName: '', + blockType: 'mediaBlock', + media: '{{IMAGE_2}}', + position: 'default', + }, + format: '', + version: 2, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'From neighbors forming makeshift rescue teams during floods to entire cities rallying to rebuild after economic collapse, the essence of humanity is most evident in these acts of solidarity. As we delve into these narratives, we witness the transformative power of community spirit, where adversity becomes a catalyst for growth, unity, and a brighter, rebuilt future.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + { + type: 'block', + fields: { + blockName: 'Dynamic components', + blockType: 'banner', + content: { + root: { + type: 'root', + children: [ + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: "This content above is completely dynamic using custom layout building blocks configured in the CMS. This can be anything you'd like from rich text and images, to highly designed, complex components.", + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + style: 'info', + }, + format: '', + version: 2, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + meta: { + description: + 'Explore the untold and overlooked. A magnified view into the corners of the world, where every story deserves its spotlight.', + // @ts-ignore + image: '{{IMAGE_1}}', + title: 'Global Gaze: Beyond the Headlines', + }, + relatedPosts: [], // this is populated by the seed script + title: 'Global Gaze: Beyond the Headlines', +} diff --git a/src/endpoints/seed/post-3.ts b/src/endpoints/seed/post-3.ts new file mode 100644 index 0000000..d2700cf --- /dev/null +++ b/src/endpoints/seed/post-3.ts @@ -0,0 +1,263 @@ +import type { Post } from '@/payload-types' + +export const post3: Partial<Post> = { + slug: 'dollar-and-sense-the-financial-forecast', + _status: 'published', + // @ts-ignore + authors: ['{{AUTHOR}}'], + content: { + root: { + type: 'root', + children: [ + { + type: 'block', + fields: { + blockName: 'Disclaimer', + blockType: 'banner', + content: { + root: { + type: 'root', + children: [ + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 1, + mode: 'normal', + style: '', + text: 'Disclaimer: ', + version: 1, + }, + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'This content is fabricated and for demonstration purposes only. To edit this post, ', + version: 1, + }, + { + type: 'link', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'navigate to the admin dashboard.', + version: 1, + }, + ], + direction: 'ltr', + fields: { + linkType: 'custom', + newTab: true, + url: '/admin', + }, + format: '', + indent: 0, + version: 3, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 1, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + style: 'info', + }, + format: '', + version: 2, + }, + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: "Money isn't just currency; ", + version: 1, + }, + { + type: 'text', + detail: 0, + format: 2, + mode: 'normal', + style: '', + text: "it's a language. ", + version: 1, + }, + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Dive deep into its nuances, where strategy meets intuition in the vast sea of finance.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h2', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: "Money, in its essence, transcends the mere concept of coins and paper notes; it becomes a profound language that speaks of value, trust, and societal structures. Like any language, it possesses intricate nuances and subtleties that require a discerning understanding. It's in these depths where the calculated world of financial strategy collides with the raw, instinctive nature of human intuition. Just as a seasoned linguist might dissect the syntax and semantics of a sentence, a financial expert navigates the vast and tumultuous ocean of finance, guided not only by logic and data but also by gut feelings and foresight. Every transaction, investment, and financial decision becomes a dialogue in this expansive lexicon of commerce and value.", + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + { + type: 'block', + fields: { + blockName: '', + blockType: 'mediaBlock', + media: '{{IMAGE_2}}', + position: 'default', + }, + format: '', + version: 2, + }, + { + type: 'heading', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'Stock Market Dynamics: Bulls, Bears, and the Uncertain Middle', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + tag: 'h2', + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: 'The stock market is a realm of vast opportunity but also poses risks. Discover the forces that drive market trends and the strategies employed by top traders to navigate this complex ecosystem. From market analysis to understanding investor psychology, get a comprehensive insight into the world of stocks.', + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: "The stock market, often visualized as a bustling arena of numbers and ticker tapes, is as much about human behavior as it is about economics. It's a place where optimism, represented by the bullish rally, meets the caution of bearish downturns, with each vying to dictate the market's direction. But between these two extremes lies an uncertain middle ground, a zone populated by traders and investors who constantly weigh hope against fear. Successful navigation requires more than just financial acumen; it demands an understanding of collective sentiments and the ability to predict not just market movements, but also the reactions of other market participants. In this intricate dance of numbers and nerves, the most astute players are those who master both the hard data and the soft nuances of human behavior.", + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + { + type: 'block', + fields: { + blockName: 'Dynamic components', + blockType: 'banner', + content: { + root: { + type: 'root', + children: [ + { + type: 'paragraph', + children: [ + { + type: 'text', + detail: 0, + format: 0, + mode: 'normal', + style: '', + text: "This content above is completely dynamic using custom layout building blocks configured in the CMS. This can be anything you'd like from rich text and images, to highly designed, complex components.", + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + textFormat: 0, + version: 1, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + style: 'info', + }, + format: '', + version: 2, + }, + ], + direction: 'ltr', + format: '', + indent: 0, + version: 1, + }, + }, + meta: { + description: `Money isn't just currency; it's a language. Dive deep into its nuances, where strategy meets intuition in the vast sea of finance.`, + // @ts-ignore + image: '{{IMAGE_1}}', + title: 'Dollar and Sense: The Financial Forecast', + }, + relatedPosts: [], // this is populated by the seed script + title: 'Dollar and Sense: The Financial Forecast', +} diff --git a/src/endpoints/seedHandler.ts b/src/endpoints/seedHandler.ts new file mode 100644 index 0000000..bd5d813 --- /dev/null +++ b/src/endpoints/seedHandler.ts @@ -0,0 +1,27 @@ +import { type PayloadHandler, commitTransaction, initTransaction } from 'payload' + +import { seed as seedScript } from '@/endpoints/seed' + +export const seedHandler: PayloadHandler = async (req): Promise<Response> => { + const { payload, user } = req + + if (!user) { + return Response.json({ error: 'Unauthorized' }, { status: 401 }) + } + + try { + // Create a transaction so that all seeding happens in one transaction + await initTransaction(req) + + await seedScript({ payload, req }) + + // Finalise transactiojn + await commitTransaction(req) + + return Response.json({ success: true }) + } catch (error: unknown) { + const message = error instanceof Error ? error.message : 'Unknown error' + payload.logger.error(message) + return Response.json({ error: message }, { status: 500 }) + } +} diff --git a/src/payload/fields/link.ts b/src/fields/link.ts similarity index 77% rename from src/payload/fields/link.ts rename to src/fields/link.ts index 534d094..9a6d2c2 100644 --- a/src/payload/fields/link.ts +++ b/src/fields/link.ts @@ -1,31 +1,27 @@ -import type { Field } from 'payload/types' +import type { Field } from 'payload' -import deepMerge from '../utilities/deepMerge' +import deepMerge from '@/utilities/deepMerge' -export const appearanceOptions = { - primary: { - label: 'Primary Button', - value: 'primary', - }, - secondary: { - label: 'Secondary Button', - value: 'secondary', - }, +export type LinkAppearances = 'default' | 'outline' + +export const appearanceOptions: Record<LinkAppearances, { label: string; value: string }> = { default: { label: 'Default', value: 'default', }, + outline: { + label: 'Outline', + value: 'outline', + }, } -export type LinkAppearances = 'primary' | 'secondary' | 'default' - type LinkType = (options?: { appearances?: LinkAppearances[] | false disableLabel?: boolean overrides?: Record<string, unknown> }) => Field -const link: LinkType = ({ appearances, disableLabel = false, overrides = {} } = {}) => { +export const link: LinkType = ({ appearances, disableLabel = false, overrides = {} } = {}) => { const linkResult: Field = { name: 'link', type: 'group', @@ -39,6 +35,11 @@ const link: LinkType = ({ appearances, disableLabel = false, overrides = {} } = { name: 'type', type: 'radio', + admin: { + layout: 'horizontal', + width: '50%', + }, + defaultValue: 'reference', options: [ { label: 'Internal link', @@ -49,22 +50,17 @@ const link: LinkType = ({ appearances, disableLabel = false, overrides = {} } = value: 'custom', }, ], - defaultValue: 'reference', - admin: { - layout: 'horizontal', - width: '50%', - }, }, { name: 'newTab', - label: 'Open in new tab', type: 'checkbox', admin: { - width: '50%', style: { alignSelf: 'flex-end', }, + width: '50%', }, + label: 'Open in new tab', }, ], }, @@ -74,28 +70,28 @@ const link: LinkType = ({ appearances, disableLabel = false, overrides = {} } = const linkTypes: Field[] = [ { name: 'reference', - label: 'Document to link to', type: 'relationship', - relationTo: ['pages'], - required: true, - maxDepth: 1, admin: { condition: (_, siblingData) => siblingData?.type === 'reference', }, + label: 'Document to link to', + maxDepth: 1, + relationTo: ['pages'], + required: true, }, { name: 'url', - label: 'Custom URL', type: 'text', - required: true, admin: { condition: (_, siblingData) => siblingData?.type === 'custom', }, + label: 'Custom URL', + required: true, }, ] if (!disableLabel) { - linkTypes.map(linkType => ({ + linkTypes.map((linkType) => ({ ...linkType, admin: { ...linkType.admin, @@ -109,12 +105,12 @@ const link: LinkType = ({ appearances, disableLabel = false, overrides = {} } = ...linkTypes, { name: 'label', - label: 'Label', type: 'text', - required: true, admin: { width: '50%', }, + label: 'Label', + required: true, }, ], }) @@ -123,28 +119,22 @@ const link: LinkType = ({ appearances, disableLabel = false, overrides = {} } = } if (appearances !== false) { - let appearanceOptionsToUse = [ - appearanceOptions.default, - appearanceOptions.primary, - appearanceOptions.secondary, - ] + let appearanceOptionsToUse = [appearanceOptions.default, appearanceOptions.outline] if (appearances) { - appearanceOptionsToUse = appearances.map(appearance => appearanceOptions[appearance]) + appearanceOptionsToUse = appearances.map((appearance) => appearanceOptions[appearance]) } linkResult.fields.push({ name: 'appearance', type: 'select', - defaultValue: 'default', - options: appearanceOptionsToUse, admin: { description: 'Choose how the link should be rendered.', }, + defaultValue: 'default', + options: appearanceOptionsToUse, }) } return deepMerge(linkResult, overrides) } - -export default link diff --git a/src/payload/fields/linkGroup.ts b/src/fields/linkGroup.ts similarity index 56% rename from src/payload/fields/linkGroup.ts rename to src/fields/linkGroup.ts index 630c903..c59fb3c 100644 --- a/src/payload/fields/linkGroup.ts +++ b/src/fields/linkGroup.ts @@ -1,16 +1,16 @@ -import type { ArrayField } from 'payload/dist/fields/config/types' -import type { Field } from 'payload/types' +import type { ArrayField, Field } from 'payload' -import deepMerge from '../utilities/deepMerge' import type { LinkAppearances } from './link' -import link from './link' + +import deepMerge from '@/utilities/deepMerge' +import { link } from './link' type LinkGroupType = (options?: { - overrides?: Partial<ArrayField> appearances?: LinkAppearances[] | false + overrides?: Partial<ArrayField> }) => Field -const linkGroup: LinkGroupType = ({ overrides = {}, appearances } = {}) => { +export const linkGroup: LinkGroupType = ({ appearances, overrides = {} } = {}) => { const generatedLinkGroup: Field = { name: 'links', type: 'array', @@ -23,5 +23,3 @@ const linkGroup: LinkGroupType = ({ overrides = {}, appearances } = {}) => { return deepMerge(generatedLinkGroup, overrides) } - -export default linkGroup diff --git a/src/fields/slug/SlugComponent.tsx b/src/fields/slug/SlugComponent.tsx new file mode 100644 index 0000000..4de1778 --- /dev/null +++ b/src/fields/slug/SlugComponent.tsx @@ -0,0 +1,90 @@ +'use client' +import React, { useCallback, useEffect } from 'react' + +import { + useField, + useFieldProps, + Button, + TextInput, + FieldLabel, + useFormFields, + useForm, +} from '@payloadcms/ui' + +import { formatSlug } from './formatSlug' +import './index.scss' +import { TextFieldClientProps } from 'payload' + +type SlugComponentProps = { + fieldToUse: string + checkboxFieldPath: string +} & TextFieldClientProps + +export const SlugComponent: React.FC<SlugComponentProps> = ({ + field, + fieldToUse, + checkboxFieldPath: checkboxFieldPathFromProps, +}) => { + const { label } = field + const { path, readOnly: readOnlyFromProps } = useFieldProps() + + const checkboxFieldPath = path.includes('.') + ? `${path}.${checkboxFieldPathFromProps}` + : checkboxFieldPathFromProps + + const { value, setValue } = useField<string>({ path }) + + const { dispatchFields } = useForm() + + // The value of the checkbox + // We're using separate useFormFields to minimise re-renders + const checkboxValue = useFormFields(([fields]) => { + return fields[checkboxFieldPath]?.value as string + }) + + // The value of the field we're listening to for the slug + const targetFieldValue = useFormFields(([fields]) => { + return fields[fieldToUse]?.value as string + }) + + useEffect(() => { + if (checkboxValue) { + if (targetFieldValue) { + const formattedSlug = formatSlug(targetFieldValue) + + if (value !== formattedSlug) setValue(formattedSlug) + } else { + if (value !== '') setValue('') + } + } + }, [targetFieldValue, checkboxValue, setValue, value]) + + const handleLock = useCallback( + (e) => { + e.preventDefault() + + dispatchFields({ + type: 'UPDATE', + path: checkboxFieldPath, + value: !checkboxValue, + }) + }, + [checkboxValue, checkboxFieldPath, dispatchFields], + ) + + const readOnly = readOnlyFromProps || checkboxValue + + return ( + <div className="field-type slug-field-component"> + <div className="label-wrapper"> + <FieldLabel field={field} htmlFor={`field-${path}`} label={label} /> + + <Button className="lock-button" buttonStyle="none" onClick={handleLock}> + {checkboxValue ? 'Unlock' : 'Lock'} + </Button> + </div> + + <TextInput value={value} onChange={setValue} path={path} readOnly={Boolean(readOnly)} /> + </div> + ) +} diff --git a/src/fields/slug/formatSlug.ts b/src/fields/slug/formatSlug.ts new file mode 100644 index 0000000..004e9f2 --- /dev/null +++ b/src/fields/slug/formatSlug.ts @@ -0,0 +1,25 @@ +import type { FieldHook } from 'payload' + +export const formatSlug = (val: string): string => + val + .replace(/ /g, '-') + .replace(/[^\w-]+/g, '') + .toLowerCase() + +export const formatSlugHook = + (fallback: string): FieldHook => + ({ data, operation, originalDoc, value }) => { + if (typeof value === 'string') { + return formatSlug(value) + } + + if (operation === 'create' || !data?.slug) { + const fallbackData = data?.[fallback] || data?.[fallback] + + if (fallbackData && typeof fallbackData === 'string') { + return formatSlug(fallbackData) + } + } + + return value + } diff --git a/src/fields/slug/index.scss b/src/fields/slug/index.scss new file mode 100644 index 0000000..e3dd2d8 --- /dev/null +++ b/src/fields/slug/index.scss @@ -0,0 +1,12 @@ +.slug-field-component { + .label-wrapper { + display: flex; + justify-content: space-between; + align-items: center; + } + + .lock-button { + margin: 0; + padding-bottom: 0.3125rem; + } +} diff --git a/src/fields/slug/index.ts b/src/fields/slug/index.ts new file mode 100644 index 0000000..95416af --- /dev/null +++ b/src/fields/slug/index.ts @@ -0,0 +1,54 @@ +import type { CheckboxField, TextField } from 'payload' + +import { formatSlugHook } from './formatSlug' + +type Overrides = { + slugOverrides?: Partial<TextField> + checkboxOverrides?: Partial<CheckboxField> +} + +type Slug = (fieldToUse?: string, overrides?: Overrides) => [TextField, CheckboxField] + +export const slugField: Slug = (fieldToUse = 'title', overrides = {}) => { + const { slugOverrides, checkboxOverrides } = overrides + + const checkBoxField: CheckboxField = { + name: 'slugLock', + type: 'checkbox', + defaultValue: true, + admin: { + hidden: true, + position: 'sidebar', + }, + ...checkboxOverrides, + } + + // Expect ts error here because of typescript mismatching Partial<TextField> with TextField + // @ts-expect-error + const slugField: TextField = { + name: 'slug', + type: 'text', + index: true, + label: 'Slug', + ...(slugOverrides || {}), + hooks: { + // Kept this in for hook or API based updates + beforeValidate: [formatSlugHook(fieldToUse)], + }, + admin: { + position: 'sidebar', + ...(slugOverrides?.admin || {}), + components: { + Field: { + path: '@/fields/slug/SlugComponent#SlugComponent', + clientProps: { + fieldToUse, + checkboxFieldPath: checkBoxField.name, + }, + }, + }, + }, + } + + return [slugField, checkBoxField] +} diff --git a/src/heros/HighImpact/index.tsx b/src/heros/HighImpact/index.tsx new file mode 100644 index 0000000..466998e --- /dev/null +++ b/src/heros/HighImpact/index.tsx @@ -0,0 +1,46 @@ +'use client' +import { useHeaderTheme } from '@/providers/HeaderTheme' +import React, { useEffect } from 'react' + +import type { Page } from '@/payload-types' + +import { CMSLink } from '@/components/Link' +import { Media } from '@/components/Media' +import RichText from '@/components/RichText' + +export const HighImpactHero: React.FC<Page['hero']> = ({ links, media, richText }) => { + const { setHeaderTheme } = useHeaderTheme() + + useEffect(() => { + setHeaderTheme('dark') + }) + + return ( + <div className="relative -mt-[10.4rem] flex items-end text-white" data-theme="dark"> + <div className="container mb-8 z-10 relative"> + <div className="max-w-[34rem]"> + {richText && <RichText className="mb-6" content={richText} enableGutter={false} />} + {Array.isArray(links) && links.length > 0 && ( + <ul className="flex gap-4"> + {links.map(({ link }, i) => { + return ( + <li key={i}> + <CMSLink {...link} /> + </li> + ) + })} + </ul> + )} + </div> + </div> + <div className="min-h-[80vh] select-none"> + {media && typeof media === 'object' && ( + <React.Fragment> + <Media fill imgClassName="-z-10 object-cover" priority resource={media} /> + <div className="absolute pointer-events-none left-0 bottom-0 w-full h-1/2 bg-gradient-to-t from-black to-transparent" /> + </React.Fragment> + )} + </div> + </div> + ) +} diff --git a/src/heros/LowImpact/index.tsx b/src/heros/LowImpact/index.tsx new file mode 100644 index 0000000..2b10bcc --- /dev/null +++ b/src/heros/LowImpact/index.tsx @@ -0,0 +1,25 @@ +import React from 'react' + +import type { Page } from '@/payload-types' + +import RichText from '@/components/RichText' + +type LowImpactHeroType = + | { + children?: React.ReactNode + richText?: never + } + | (Omit<Page['hero'], 'richText'> & { + children?: never + richText?: Page['hero']['richText'] + }) + +export const LowImpactHero: React.FC<LowImpactHeroType> = ({ children, richText }) => { + return ( + <div className="container mt-16"> + <div className="max-w-[48rem]"> + {children || (richText && <RichText content={richText} enableGutter={false} />)} + </div> + </div> + ) +} diff --git a/src/heros/MediumImpact/index.tsx b/src/heros/MediumImpact/index.tsx new file mode 100644 index 0000000..52c54da --- /dev/null +++ b/src/heros/MediumImpact/index.tsx @@ -0,0 +1,46 @@ +import React from 'react' + +import type { Page } from '@/payload-types' + +import { CMSLink } from '@/components/Link' +import { Media } from '@/components/Media' +import RichText from '@/components/RichText' + +export const MediumImpactHero: React.FC<Page['hero']> = ({ links, media, richText }) => { + return ( + <div className=""> + <div className="container mb-8"> + {richText && <RichText className="mb-6" content={richText} enableGutter={false} />} + + {Array.isArray(links) && links.length > 0 && ( + <ul className="flex gap-4"> + {links.map(({ link }, i) => { + return ( + <li key={i}> + <CMSLink {...link} /> + </li> + ) + })} + </ul> + )} + </div> + <div className="container "> + {media && typeof media === 'object' && ( + <div> + <Media + className="-mx-4 md:-mx-8 2xl:-mx-16" + imgClassName="" + priority + resource={media} + /> + {media?.caption && ( + <div className="mt-3"> + <RichText content={media.caption} enableGutter={false} /> + </div> + )} + </div> + )} + </div> + </div> + ) +} diff --git a/src/heros/PostHero/index.tsx b/src/heros/PostHero/index.tsx new file mode 100644 index 0000000..279afb2 --- /dev/null +++ b/src/heros/PostHero/index.tsx @@ -0,0 +1,88 @@ +import { formatDateTime } from 'src/utilities/formatDateTime' +import React from 'react' + +import type { Post } from '@/payload-types' + +import { Media } from '@/components/Media' + +export const PostHero: React.FC<{ + post: Post +}> = ({ post }) => { + const { categories, meta: { image: metaImage } = {}, populatedAuthors, publishedAt, title } = post + + return ( + <div className="relative -mt-[10.4rem] flex items-end"> + <div className="container z-10 relative lg:grid lg:grid-cols-[1fr_48rem_1fr] text-white pb-8"> + <div className="col-start-1 col-span-1 md:col-start-2 md:col-span-2"> + <div className="uppercase text-sm mb-6"> + {categories?.map((category, index) => { + if (typeof category === 'object' && category !== null) { + const { title: categoryTitle } = category + + const titleToUse = categoryTitle || 'Untitled category' + + const isLast = index === categories.length - 1 + + return ( + <React.Fragment key={index}> + {titleToUse} + {!isLast && <React.Fragment>, </React.Fragment>} + </React.Fragment> + ) + } + return null + })} + </div> + + <div className=""> + <h1 className="mb-6 text-3xl md:text-5xl lg:text-6xl">{title}</h1> + </div> + + <div className="flex flex-col md:flex-row gap-4 md:gap-16"> + <div className="flex flex-col gap-4"> + {populatedAuthors && ( + <div className="flex flex-col gap-1"> + <p className="text-sm">Author</p> + {populatedAuthors.map((author, index) => { + const { name } = author + + const isLast = index === populatedAuthors.length - 1 + const secondToLast = index === populatedAuthors.length - 2 + + return ( + <React.Fragment key={index}> + {name} + {secondToLast && populatedAuthors.length > 2 && ( + <React.Fragment>, </React.Fragment> + )} + {secondToLast && populatedAuthors.length === 2 && ( + <React.Fragment> </React.Fragment> + )} + {!isLast && populatedAuthors.length > 1 && ( + <React.Fragment>and </React.Fragment> + )} + </React.Fragment> + ) + })} + </div> + )} + </div> + {publishedAt && ( + <div className="flex flex-col gap-1"> + <p className="text-sm">Date Published</p> + + <time dateTime={publishedAt}>{formatDateTime(publishedAt)}</time> + </div> + )} + </div> + </div> + </div> + <div className="min-h-[80vh] select-none"> + {metaImage && typeof metaImage !== 'string' && ( + <Media fill imgClassName="-z-10 object-cover" resource={metaImage} /> + )} + <div className="absolute pointer-events-none left-0 bottom-0 w-full h-1/2 bg-gradient-to-t from-black to-transparent" /> + </div> + </div> + ) +} diff --git a/src/heros/RenderHero.tsx b/src/heros/RenderHero.tsx new file mode 100644 index 0000000..00ca702 --- /dev/null +++ b/src/heros/RenderHero.tsx @@ -0,0 +1,25 @@ +import React from 'react' + +import type { Page } from '@/payload-types' + +import { HighImpactHero } from '@/heros/HighImpact' +import { LowImpactHero } from '@/heros/LowImpact' +import { MediumImpactHero } from '@/heros/MediumImpact' + +const heroes = { + highImpact: HighImpactHero, + lowImpact: LowImpactHero, + mediumImpact: MediumImpactHero, +} + +export const RenderHero: React.FC<Page['hero']> = (props) => { + const { type } = props || {} + + if (!type || type === 'none') return null + + const HeroToRender = heroes[type] + + if (!HeroToRender) return null + + return <HeroToRender {...props} /> +} diff --git a/src/payload/fields/hero.ts b/src/heros/config.ts similarity index 59% rename from src/payload/fields/hero.ts rename to src/heros/config.ts index d8769b9..7bc2f24 100644 --- a/src/payload/fields/hero.ts +++ b/src/heros/config.ts @@ -1,21 +1,23 @@ -import type { Field } from 'payload/types' +import type { Field } from 'payload' -import linkGroup from './linkGroup' -import richText from './richText' -import label from './richText/label' -import largeBody from './richText/largeBody' +import { + FixedToolbarFeature, + HeadingFeature, + InlineToolbarFeature, + lexicalEditor, +} from '@payloadcms/richtext-lexical' + +import { linkGroup } from '@/fields/linkGroup' export const hero: Field = { name: 'hero', - label: false, type: 'group', fields: [ { - type: 'select', name: 'type', - label: 'Type', - required: true, + type: 'select', defaultValue: 'lowImpact', + label: 'Type', options: [ { label: 'None', @@ -34,13 +36,23 @@ export const hero: Field = { value: 'lowImpact', }, ], + required: true, + }, + { + name: 'richText', + type: 'richText', + editor: lexicalEditor({ + features: ({ rootFeatures }) => { + return [ + ...rootFeatures, + HeadingFeature({ enabledHeadingSizes: ['h1', 'h2', 'h3', 'h4'] }), + FixedToolbarFeature(), + InlineToolbarFeature(), + ] + }, + }), + label: false, }, - richText({ - admin: { - elements: ['h1', largeBody, label, 'link'], - leaves: [], - }, - }), linkGroup({ overrides: { maxRows: 2, @@ -49,11 +61,12 @@ export const hero: Field = { { name: 'media', type: 'upload', - relationTo: 'media', - required: true, admin: { condition: (_, { type } = {}) => ['highImpact', 'mediumImpact'].includes(type), }, + relationTo: 'media', + required: true, }, ], + label: false, } diff --git a/src/payload/hooks/formatSlug.ts b/src/hooks/formatSlug.ts similarity index 84% rename from src/payload/hooks/formatSlug.ts rename to src/hooks/formatSlug.ts index bb33fc1..43190f8 100644 --- a/src/payload/hooks/formatSlug.ts +++ b/src/hooks/formatSlug.ts @@ -1,4 +1,4 @@ -import type { FieldHook } from 'payload/types' +import type { FieldHook } from 'payload' const format = (val: string): string => val @@ -8,7 +8,7 @@ const format = (val: string): string => const formatSlug = (fallback: string): FieldHook => - ({ operation, value, originalDoc, data }) => { + ({ data, operation, originalDoc, value }) => { if (typeof value === 'string') { return format(value) } diff --git a/src/hooks/populatePublishedAt.ts b/src/hooks/populatePublishedAt.ts new file mode 100644 index 0000000..de974f7 --- /dev/null +++ b/src/hooks/populatePublishedAt.ts @@ -0,0 +1,15 @@ +import type { CollectionBeforeChangeHook } from 'payload' + +export const populatePublishedAt: CollectionBeforeChangeHook = ({ data, operation, req }) => { + if (operation === 'create' || operation === 'update') { + if (req.data && !req.data.publishedAt) { + const now = new Date() + return { + ...data, + publishedAt: now, + } + } + } + + return data +} diff --git a/src/hooks/revalidateRedirects.ts b/src/hooks/revalidateRedirects.ts new file mode 100644 index 0000000..b5cc3ae --- /dev/null +++ b/src/hooks/revalidateRedirects.ts @@ -0,0 +1,11 @@ +import type { CollectionAfterChangeHook } from 'payload' + +import { revalidateTag } from 'next/cache' + +export const revalidateRedirects: CollectionAfterChangeHook = ({ doc, req: { payload } }) => { + payload.logger.info(`Revalidating redirects`) + + revalidateTag('redirects') + + return doc +} diff --git a/src/payload-types.ts b/src/payload-types.ts new file mode 100644 index 0000000..9b33092 --- /dev/null +++ b/src/payload-types.ts @@ -0,0 +1,944 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * This file was automatically generated by Payload. + * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, + * and re-run `payload generate:types` to regenerate this file. + */ + +export interface Config { + auth: { + users: UserAuthOperations; + }; + collections: { + pages: Page; + posts: Post; + media: Media; + categories: Category; + users: User; + authors: Author; + blogposts: Blogpost; + podcasts: Podcast; + 'talks-and-roundtables': TalksAndRoundtable; + 'case-studies': CaseStudy; + redirects: Redirect; + forms: Form; + 'form-submissions': FormSubmission; + search: Search; + 'payload-locked-documents': PayloadLockedDocument; + 'payload-preferences': PayloadPreference; + 'payload-migrations': PayloadMigration; + }; + db: { + defaultIDType: string; + }; + globals: { + header: Header; + footer: Footer; + 'homepage-settings': HomepageSetting; + }; + locale: null; + user: User & { + collection: 'users'; + }; +} +export interface UserAuthOperations { + forgotPassword: { + email: string; + password: string; + }; + login: { + email: string; + password: string; + }; + registerFirstUser: { + email: string; + password: string; + }; + unlock: { + email: string; + password: string; + }; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "pages". + */ +export interface Page { + id: string; + title: string; + hero: { + type: 'none' | 'highImpact' | 'mediumImpact' | 'lowImpact'; + richText?: { + root: { + type: string; + children: { + type: string; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + } | null; + links?: + | { + link: { + type?: ('reference' | 'custom') | null; + newTab?: boolean | null; + reference?: { + relationTo: 'pages'; + value: string | Page; + } | null; + url?: string | null; + label: string; + appearance?: ('default' | 'outline') | null; + }; + id?: string | null; + }[] + | null; + media?: (string | null) | Media; + }; + layout: (CallToActionBlock | ContentBlock | MediaBlock | ArchiveBlock | FormBlock)[]; + meta?: { + title?: string | null; + image?: (string | null) | Media; + description?: string | null; + }; + publishedAt?: string | null; + slug?: string | null; + slugLock?: boolean | null; + updatedAt: string; + createdAt: string; + _status?: ('draft' | 'published') | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "media". + */ +export interface Media { + id: string; + alt: string; + caption?: { + root: { + type: string; + children: { + type: string; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + } | null; + updatedAt: string; + createdAt: string; + url?: string | null; + thumbnailURL?: string | null; + filename?: string | null; + mimeType?: string | null; + filesize?: number | null; + width?: number | null; + height?: number | null; + focalX?: number | null; + focalY?: number | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "CallToActionBlock". + */ +export interface CallToActionBlock { + richText?: { + root: { + type: string; + children: { + type: string; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + } | null; + links?: + | { + link: { + type?: ('reference' | 'custom') | null; + newTab?: boolean | null; + reference?: { + relationTo: 'pages'; + value: string | Page; + } | null; + url?: string | null; + label: string; + appearance?: ('default' | 'outline') | null; + }; + id?: string | null; + }[] + | null; + id?: string | null; + blockName?: string | null; + blockType: 'cta'; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "ContentBlock". + */ +export interface ContentBlock { + columns?: + | { + size?: ('oneThird' | 'half' | 'twoThirds' | 'full') | null; + richText?: { + root: { + type: string; + children: { + type: string; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + } | null; + enableLink?: boolean | null; + link?: { + type?: ('reference' | 'custom') | null; + newTab?: boolean | null; + reference?: { + relationTo: 'pages'; + value: string | Page; + } | null; + url?: string | null; + label: string; + appearance?: ('default' | 'outline') | null; + }; + id?: string | null; + }[] + | null; + id?: string | null; + blockName?: string | null; + blockType: 'content'; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "MediaBlock". + */ +export interface MediaBlock { + position?: ('default' | 'fullscreen') | null; + media: string | Media; + id?: string | null; + blockName?: string | null; + blockType: 'mediaBlock'; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "ArchiveBlock". + */ +export interface ArchiveBlock { + introContent?: { + root: { + type: string; + children: { + type: string; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + } | null; + populateBy?: ('collection' | 'selection') | null; + relationTo?: 'posts' | null; + categories?: (string | Category)[] | null; + limit?: number | null; + selectedDocs?: + | { + relationTo: 'posts'; + value: string | Post; + }[] + | null; + id?: string | null; + blockName?: string | null; + blockType: 'archive'; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "categories". + */ +export interface Category { + id: string; + title: string; + parent?: (string | null) | Category; + breadcrumbs?: + | { + doc?: (string | null) | Category; + url?: string | null; + label?: string | null; + id?: string | null; + }[] + | null; + updatedAt: string; + createdAt: string; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "posts". + */ +export interface Post { + id: string; + title: string; + content: { + root: { + type: string; + children: { + type: string; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + }; + relatedPosts?: (string | Post)[] | null; + categories?: (string | Category)[] | null; + meta?: { + title?: string | null; + image?: (string | null) | Media; + description?: string | null; + }; + publishedAt?: string | null; + authors?: (string | User)[] | null; + populatedAuthors?: + | { + id?: string | null; + name?: string | null; + }[] + | null; + slug?: string | null; + slugLock?: boolean | null; + updatedAt: string; + createdAt: string; + _status?: ('draft' | 'published') | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "users". + */ +export interface User { + id: string; + name?: string | null; + updatedAt: string; + createdAt: string; + email: string; + resetPasswordToken?: string | null; + resetPasswordExpiration?: string | null; + salt?: string | null; + hash?: string | null; + loginAttempts?: number | null; + lockUntil?: string | null; + password?: string | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "FormBlock". + */ +export interface FormBlock { + form: string | Form; + enableIntro?: boolean | null; + introContent?: { + root: { + type: string; + children: { + type: string; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + } | null; + id?: string | null; + blockName?: string | null; + blockType: 'formBlock'; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "forms". + */ +export interface Form { + id: string; + title: string; + fields?: + | ( + | { + name: string; + label?: string | null; + width?: number | null; + required?: boolean | null; + defaultValue?: boolean | null; + id?: string | null; + blockName?: string | null; + blockType: 'checkbox'; + } + | { + name: string; + label?: string | null; + width?: number | null; + required?: boolean | null; + id?: string | null; + blockName?: string | null; + blockType: 'country'; + } + | { + name: string; + label?: string | null; + width?: number | null; + required?: boolean | null; + id?: string | null; + blockName?: string | null; + blockType: 'email'; + } + | { + message?: { + root: { + type: string; + children: { + type: string; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + } | null; + id?: string | null; + blockName?: string | null; + blockType: 'message'; + } + | { + name: string; + label?: string | null; + width?: number | null; + defaultValue?: number | null; + required?: boolean | null; + id?: string | null; + blockName?: string | null; + blockType: 'number'; + } + | { + name: string; + label?: string | null; + width?: number | null; + defaultValue?: string | null; + options?: + | { + label: string; + value: string; + id?: string | null; + }[] + | null; + required?: boolean | null; + id?: string | null; + blockName?: string | null; + blockType: 'select'; + } + | { + name: string; + label?: string | null; + width?: number | null; + required?: boolean | null; + id?: string | null; + blockName?: string | null; + blockType: 'state'; + } + | { + name: string; + label?: string | null; + width?: number | null; + defaultValue?: string | null; + required?: boolean | null; + id?: string | null; + blockName?: string | null; + blockType: 'text'; + } + | { + name: string; + label?: string | null; + width?: number | null; + defaultValue?: string | null; + required?: boolean | null; + id?: string | null; + blockName?: string | null; + blockType: 'textarea'; + } + )[] + | null; + submitButtonLabel?: string | null; + confirmationType?: ('message' | 'redirect') | null; + confirmationMessage?: { + root: { + type: string; + children: { + type: string; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + } | null; + redirect?: { + url: string; + }; + emails?: + | { + emailTo?: string | null; + cc?: string | null; + bcc?: string | null; + replyTo?: string | null; + emailFrom?: string | null; + subject: string; + message?: { + root: { + type: string; + children: { + type: string; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + } | null; + id?: string | null; + }[] + | null; + updatedAt: string; + createdAt: string; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "authors". + */ +export interface Author { + id: string; + featuredImage?: (string | null) | Media; + name: string; + role: string; + bio: string; + linkedIn?: string | null; + x?: string | null; + gitHub?: string | null; + medium?: string | null; + publishedAt?: string | null; + slug?: string | null; + slugLock?: boolean | null; + updatedAt: string; + createdAt: string; + _status?: ('draft' | 'published') | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "blogposts". + */ +export interface Blogpost { + id: string; + title: string; + summary: string; + content: { + root: { + type: string; + children: { + type: string; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + }; + content_html?: string | null; + featuredImage?: (string | null) | Media; + authors: (string | Author)[]; + categories?: (string | Category)[] | null; + related?: (string | Blogpost)[] | null; + publishedAt?: string | null; + slug?: string | null; + slugLock?: boolean | null; + updatedAt: string; + createdAt: string; + _status?: ('draft' | 'published') | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "podcasts". + */ +export interface Podcast { + id: string; + title: string; + summary: string; + notes: string; + featuredImage?: (string | null) | Media; + episodeFile: string | Media; + spotify?: string | null; + apple?: string | null; + authors: (string | Author)[]; + categories?: (string | Category)[] | null; + related?: (string | Podcast)[] | null; + publishedAt?: string | null; + slug?: string | null; + slugLock?: boolean | null; + updatedAt: string; + createdAt: string; + _status?: ('draft' | 'published') | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "talks-and-roundtables". + */ +export interface TalksAndRoundtable { + id: string; + title: string; + summary: string; + categories?: (string | Category)[] | null; + url?: string | null; + authors?: (string | Author)[] | null; + publishedAt?: string | null; + featuredImage: string | Media; + slug?: string | null; + slugLock?: boolean | null; + updatedAt: string; + createdAt: string; + _status?: ('draft' | 'published') | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "case-studies". + */ +export interface CaseStudy { + id: string; + title?: string | null; + summary?: string | null; + authors?: (string | Author)[] | null; + categories?: (string | Category)[] | null; + publishedAt?: string | null; + featuredImage: string | Media; + slug?: string | null; + slugLock?: boolean | null; + updatedAt: string; + createdAt: string; + _status?: ('draft' | 'published') | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "redirects". + */ +export interface Redirect { + id: string; + from: string; + to?: { + type?: ('reference' | 'custom') | null; + reference?: + | ({ + relationTo: 'pages'; + value: string | Page; + } | null) + | ({ + relationTo: 'posts'; + value: string | Post; + } | null); + url?: string | null; + }; + updatedAt: string; + createdAt: string; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "form-submissions". + */ +export interface FormSubmission { + id: string; + form: string | Form; + submissionData?: + | { + field: string; + value: string; + id?: string | null; + }[] + | null; + updatedAt: string; + createdAt: string; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "search". + */ +export interface Search { + id: string; + title?: string | null; + priority?: number | null; + doc: { + relationTo: 'posts'; + value: string | Post; + }; + slug?: string | null; + meta?: { + title?: string | null; + description?: string | null; + image?: (string | null) | Media; + }; + categories?: + | { + relationTo?: string | null; + id?: string | null; + title?: string | null; + }[] + | null; + updatedAt: string; + createdAt: string; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-locked-documents". + */ +export interface PayloadLockedDocument { + id: string; + document?: + | ({ + relationTo: 'pages'; + value: string | Page; + } | null) + | ({ + relationTo: 'posts'; + value: string | Post; + } | null) + | ({ + relationTo: 'media'; + value: string | Media; + } | null) + | ({ + relationTo: 'categories'; + value: string | Category; + } | null) + | ({ + relationTo: 'users'; + value: string | User; + } | null) + | ({ + relationTo: 'authors'; + value: string | Author; + } | null) + | ({ + relationTo: 'blogposts'; + value: string | Blogpost; + } | null) + | ({ + relationTo: 'podcasts'; + value: string | Podcast; + } | null) + | ({ + relationTo: 'talks-and-roundtables'; + value: string | TalksAndRoundtable; + } | null) + | ({ + relationTo: 'case-studies'; + value: string | CaseStudy; + } | null) + | ({ + relationTo: 'redirects'; + value: string | Redirect; + } | null) + | ({ + relationTo: 'forms'; + value: string | Form; + } | null) + | ({ + relationTo: 'form-submissions'; + value: string | FormSubmission; + } | null) + | ({ + relationTo: 'search'; + value: string | Search; + } | null); + globalSlug?: string | null; + user: { + relationTo: 'users'; + value: string | User; + }; + updatedAt: string; + createdAt: string; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-preferences". + */ +export interface PayloadPreference { + id: string; + user: { + relationTo: 'users'; + value: string | User; + }; + key?: string | null; + value?: + | { + [k: string]: unknown; + } + | unknown[] + | string + | number + | boolean + | null; + updatedAt: string; + createdAt: string; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-migrations". + */ +export interface PayloadMigration { + id: string; + name?: string | null; + batch?: number | null; + updatedAt: string; + createdAt: string; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "header". + */ +export interface Header { + id: string; + navItems?: + | { + link: { + type?: ('reference' | 'custom') | null; + newTab?: boolean | null; + reference?: { + relationTo: 'pages'; + value: string | Page; + } | null; + url?: string | null; + label: string; + }; + id?: string | null; + }[] + | null; + updatedAt?: string | null; + createdAt?: string | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "footer". + */ +export interface Footer { + id: string; + navItems?: + | { + link: { + type?: ('reference' | 'custom') | null; + newTab?: boolean | null; + reference?: { + relationTo: 'pages'; + value: string | Page; + } | null; + url?: string | null; + label: string; + }; + id?: string | null; + }[] + | null; + updatedAt?: string | null; + createdAt?: string | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "homepage-settings". + */ +export interface HomepageSetting { + id: string; + mainHighlight?: (string | null) | Blogpost; + secondaryHighlight?: (string | null) | Blogpost; + updatedAt?: string | null; + createdAt?: string | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "BannerBlock". + */ +export interface BannerBlock { + style: 'info' | 'warning' | 'error' | 'success'; + content: { + root: { + type: string; + children: { + type: string; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + }; + id?: string | null; + blockName?: string | null; + blockType: 'banner'; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "CodeBlock". + */ +export interface CodeBlock { + language?: ('typescript' | 'javascript' | 'css') | null; + code: string; + id?: string | null; + blockName?: string | null; + blockType: 'code'; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "auth". + */ +export interface Auth { + [k: string]: unknown; +} + + +declare module 'payload' { + export interface GeneratedTypes extends Config {} +} \ No newline at end of file diff --git a/src/payload.config.ts b/src/payload.config.ts new file mode 100644 index 0000000..95a9070 --- /dev/null +++ b/src/payload.config.ts @@ -0,0 +1,215 @@ +// storage-adapter-import-placeholder +import { mongooseAdapter } from '@payloadcms/db-mongodb' + +import { payloadCloudPlugin } from '@payloadcms/plugin-cloud' +import { formBuilderPlugin } from '@payloadcms/plugin-form-builder' +import { nestedDocsPlugin } from '@payloadcms/plugin-nested-docs' +import { redirectsPlugin } from '@payloadcms/plugin-redirects' +import { seoPlugin } from '@payloadcms/plugin-seo' +import { searchPlugin } from '@payloadcms/plugin-search' +import { + BoldFeature, + FixedToolbarFeature, + HeadingFeature, + ItalicFeature, + LinkFeature, + lexicalEditor, +} from '@payloadcms/richtext-lexical' +import sharp from 'sharp' // editor-import +import { UnderlineFeature } from '@payloadcms/richtext-lexical' +import path from 'path' +import { buildConfig } from 'payload' +import { fileURLToPath } from 'url' + +import Categories from './collections/Categories' +import { Media } from './collections/Media' +import { Pages } from './collections/Pages' +import { Posts } from './collections/Posts' +import Users from './collections/Users' +import { seedHandler } from './endpoints/seedHandler' +import { Footer } from '@/Globals/Footer/config' +import { Header } from '@/Globals/Header/config' +import { revalidateRedirects } from './hooks/revalidateRedirects' +import { GenerateTitle, GenerateURL } from '@payloadcms/plugin-seo/types' +import { Page, Post } from 'src/payload-types' + +import { searchFields } from '@/search/fieldOverrides' +import { beforeSyncWithSearch } from '@/search/beforeSync' +import { Blogposts } from "@/collections/Blogposts"; +import { Authors } from "@/collections/Authors"; +import { CaseStudies } from "@/collections/CaseStudies"; +import { Podcasts } from "@/collections/Podcasts"; +import { TalksAndRoundtables } from "@/collections/TalksAndRoundtables"; +import { HomePageSettings } from "@/Globals/HubHighlights/config"; + +const filename = fileURLToPath(import.meta.url) +const dirname = path.dirname(filename) + +const generateTitle: GenerateTitle<Post | Page> = ({ doc }) => { + return doc?.title ? `${doc.title} | Payload Website Template` : 'Payload Website Template' +} + +const generateURL: GenerateURL<Post | Page> = ({ doc }) => { + return doc?.slug + ? `${process.env.NEXT_PUBLIC_SERVER_URL!}/${doc.slug}` + : process.env.NEXT_PUBLIC_SERVER_URL! +} + +export default buildConfig({ + admin: { + components: { + // The `BeforeLogin` component renders a message that you see while logging into your admin panel. + // Feel free to delete this at any time. Simply remove the line below and the import `BeforeLogin` statement on line 15. + beforeLogin: ['@/components/BeforeLogin'], + // The `BeforeDashboard` component renders the 'welcome' block that you see after logging into your admin panel. + // Feel free to delete this at any time. Simply remove the line below and the import `BeforeDashboard` statement on line 15. + beforeDashboard: ['@/components/BeforeDashboard'], + }, + importMap: { + baseDir: path.resolve(dirname), + }, + user: Users.slug, + livePreview: { + breakpoints: [ + { + label: 'Mobile', + name: 'mobile', + width: 375, + height: 667, + }, + { + label: 'Tablet', + name: 'tablet', + width: 768, + height: 1024, + }, + { + label: 'Desktop', + name: 'desktop', + width: 1440, + height: 900, + }, + ], + }, + }, + // This config helps us configure global or default features that the other editors can inherit + editor: lexicalEditor({ + features: () => { + return [ + UnderlineFeature(), + BoldFeature(), + ItalicFeature(), + LinkFeature({ + enabledCollections: ['pages', 'posts'], + fields: ({ defaultFields }) => { + const defaultFieldsWithoutUrl = defaultFields.filter((field) => { + if ('name' in field && field.name === 'url') return false + return true + }) + + return [ + ...defaultFieldsWithoutUrl, + { + name: 'url', + type: 'text', + admin: { + condition: ({ linkType }) => linkType !== 'internal', + }, + label: ({ t }) => t('fields:enterURL'), + required: true, + }, + ] + }, + }), + ] + }, + }), + db: mongooseAdapter({ + url: process.env.DATABASE_URI || '', + }), + collections: [Pages, Posts, Media, Categories, Users, Authors, Blogposts, Podcasts, TalksAndRoundtables, CaseStudies], + cors: [process.env.PAYLOAD_PUBLIC_SERVER_URL || ''].filter(Boolean), + csrf: [process.env.PAYLOAD_PUBLIC_SERVER_URL || ''].filter(Boolean), + endpoints: [ + // The seed endpoint is used to populate the database with some example data + // You should delete this endpoint before deploying your site to production + { + handler: seedHandler, + method: 'get', + path: '/seed', + }, + ], + globals: [Header, Footer, HomePageSettings], + plugins: [ + redirectsPlugin({ + collections: ['pages', 'posts'], + overrides: { + // @ts-expect-error + fields: ({ defaultFields }) => { + return defaultFields.map((field) => { + if ('name' in field && field.name === 'from') { + return { + ...field, + admin: { + description: 'You will need to rebuild the website when changing this field.', + }, + } + } + return field + }) + }, + hooks: { + afterChange: [revalidateRedirects], + }, + }, + }), + nestedDocsPlugin({ + collections: ['categories'], + }), + seoPlugin({ + generateTitle, + generateURL, + }), + formBuilderPlugin({ + fields: { + payment: false, + }, + formOverrides: { + fields: ({ defaultFields }) => { + return defaultFields.map((field) => { + if ('name' in field && field.name === 'confirmationMessage') { + return { + ...field, + editor: lexicalEditor({ + features: ({ rootFeatures }) => { + return [ + ...rootFeatures, + FixedToolbarFeature(), + HeadingFeature({ enabledHeadingSizes: ['h1', 'h2', 'h3', 'h4'] }), + ] + }, + }), + } + } + return field + }) + }, + }, + }), + searchPlugin({ + collections: ['posts'], + beforeSync: beforeSyncWithSearch, + searchOverrides: { + fields: ({ defaultFields }) => { + return [...defaultFields, ...searchFields] + }, + }, + }), + payloadCloudPlugin(), // storage-adapter-placeholder + ], + secret: process.env.PAYLOAD_SECRET!, + sharp, + typescript: { + outputFile: path.resolve(dirname, 'payload-types.ts'), + }, +}) diff --git a/src/payload/access/admins.ts b/src/payload/access/admins.ts deleted file mode 100644 index be9c4b5..0000000 --- a/src/payload/access/admins.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { AccessArgs } from 'payload/config' - -import { checkRole } from '../collections/Users/checkRole' -import type { User } from '../payload-types' - -type isAdmin = (args: AccessArgs<unknown, User>) => boolean - -export const admins: isAdmin = ({ req: { user } }) => { - return checkRole(['admin'], user) -} diff --git a/src/payload/access/adminsOrPublished.ts b/src/payload/access/adminsOrPublished.ts deleted file mode 100644 index d1dded4..0000000 --- a/src/payload/access/adminsOrPublished.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { Access } from 'payload/config' - -import { checkRole } from '../collections/Users/checkRole' - -export const adminsOrPublished: Access = ({ req: { user } }) => { - if (user && checkRole(['admin'], user)) { - return true - } - - return { - _status: { - equals: 'published', - }, - } -} diff --git a/src/payload/access/anyone.ts b/src/payload/access/anyone.ts deleted file mode 100644 index c098600..0000000 --- a/src/payload/access/anyone.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { Access } from 'payload/config' - -export const anyone: Access = () => true diff --git a/src/payload/blocks/CallToAction/index.ts b/src/payload/blocks/CallToAction/index.ts deleted file mode 100644 index b70b5ea..0000000 --- a/src/payload/blocks/CallToAction/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { Block } from 'payload/types' - -import { invertBackground } from '../../fields/invertBackground' -import linkGroup from '../../fields/linkGroup' -import richText from '../../fields/richText' - -export const CallToAction: Block = { - slug: 'cta', - labels: { - singular: 'Call to Action', - plural: 'Calls to Action', - }, - fields: [ - invertBackground, - richText(), - linkGroup({ - appearances: ['primary', 'secondary'], - overrides: { - maxRows: 2, - }, - }), - ], -} diff --git a/src/payload/collections/Categories.ts b/src/payload/collections/Categories.ts deleted file mode 100644 index 479dae8..0000000 --- a/src/payload/collections/Categories.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { CollectionConfig } from 'payload/types' - -const Categories: CollectionConfig = { - slug: 'categories', - admin: { - useAsTitle: 'title', - }, - access: { - read: () => true, - }, - fields: [ - { - name: 'title', - type: 'text', - }, - ], -} - -export default Categories diff --git a/src/payload/collections/Media.ts b/src/payload/collections/Media.ts deleted file mode 100644 index b56bd9e..0000000 --- a/src/payload/collections/Media.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { slateEditor } from '@payloadcms/richtext-slate' -import path from 'path' -import type { CollectionConfig } from 'payload/types' - -export const Media: CollectionConfig = { - slug: 'media', - upload: { - staticDir: path.resolve(__dirname, '../../../media'), - }, - access: { - read: () => true, - }, - fields: [ - { - name: 'alt', - type: 'text', - required: true, - }, - { - name: 'caption', - type: 'richText', - editor: slateEditor({ - admin: { - elements: ['link'], - }, - }), - }, - ], -} diff --git a/src/payload/collections/Pages/hooks/revalidatePage.ts b/src/payload/collections/Pages/hooks/revalidatePage.ts deleted file mode 100644 index ba20966..0000000 --- a/src/payload/collections/Pages/hooks/revalidatePage.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { AfterChangeHook } from 'payload/dist/collections/config/types' - -import { revalidate } from '../../../utilities/revalidate' - -// Revalidate the page in the background, so the user doesn't have to wait -// Notice that the hook itself is not async and we are not awaiting `revalidate` -// Only revalidate existing docs that are published -// Don't scope to `operation` in order to purge static demo pages -export const revalidatePage: AfterChangeHook = ({ doc, req: { payload } }) => { - if (doc._status === 'published') { - revalidate({ payload, collection: 'pages', slug: doc.slug }) - } - - return doc -} diff --git a/src/payload/collections/Pages/index.ts b/src/payload/collections/Pages/index.ts deleted file mode 100644 index 8cce2ab..0000000 --- a/src/payload/collections/Pages/index.ts +++ /dev/null @@ -1,72 +0,0 @@ -import type { CollectionConfig } from 'payload/types' - -import { admins } from '../../access/admins' -import { adminsOrPublished } from '../../access/adminsOrPublished' -import { CallToAction } from '../../blocks/CallToAction' -import { Content } from '../../blocks/Content' -import { MediaBlock } from '../../blocks/MediaBlock' -import { hero } from '../../fields/hero' -import { slugField } from '../../fields/slug' -import { populatePublishedAt } from '../../hooks/populatePublishedAt' -import { revalidatePage } from './hooks/revalidatePage' - -export const Pages: CollectionConfig = { - slug: 'pages', - admin: { - useAsTitle: 'title', - defaultColumns: ['title', 'slug', 'updatedAt'], - preview: doc => { - return `${process.env.PAYLOAD_PUBLIC_SERVER_URL}/next/preview?url=${encodeURIComponent( - `${process.env.PAYLOAD_PUBLIC_SERVER_URL}/${doc.slug !== 'home' ? doc.slug : ''}`, - )}&secret=${process.env.PAYLOAD_PUBLIC_DRAFT_SECRET}` - }, - }, - hooks: { - beforeChange: [populatePublishedAt], - afterChange: [revalidatePage], - }, - versions: { - drafts: true, - }, - access: { - read: adminsOrPublished, - update: admins, - create: admins, - delete: admins, - }, - fields: [ - { - name: 'title', - type: 'text', - required: true, - }, - { - name: 'publishedAt', - type: 'date', - admin: { - position: 'sidebar', - }, - }, - { - type: 'tabs', - tabs: [ - { - label: 'Hero', - fields: [hero], - }, - { - label: 'Content', - fields: [ - { - name: 'layout', - type: 'blocks', - required: true, - blocks: [CallToAction, Content, MediaBlock], - }, - ], - }, - ], - }, - slugField(), - ], -} diff --git a/src/payload/collections/Users/access/adminsAndUser.ts b/src/payload/collections/Users/access/adminsAndUser.ts deleted file mode 100644 index 17630ce..0000000 --- a/src/payload/collections/Users/access/adminsAndUser.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { Access } from 'payload/types' - -import { checkRole } from '../checkRole' - -const adminsAndUser: Access = ({ req: { user } }) => { - if (user) { - if (checkRole(['admin'], user)) { - return true - } - - return { - id: { - equals: user.id, - }, - } - } - - return false -} - -export default adminsAndUser diff --git a/src/payload/collections/Users/checkRole.ts b/src/payload/collections/Users/checkRole.ts deleted file mode 100644 index b91b6c4..0000000 --- a/src/payload/collections/Users/checkRole.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { User } from '../../payload-types' - -export const checkRole = (allRoles: User['roles'] = [], user?: User): boolean => { - if (user) { - if ( - allRoles.some(role => { - return user?.roles?.some(individualRole => { - return individualRole === role - }) - }) - ) - return true - } - - return false -} diff --git a/src/payload/collections/Users/hooks/ensureFirstUserIsAdmin.ts b/src/payload/collections/Users/hooks/ensureFirstUserIsAdmin.ts deleted file mode 100644 index 9cddbd6..0000000 --- a/src/payload/collections/Users/hooks/ensureFirstUserIsAdmin.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { FieldHook } from 'payload/types' - -import type { User } from '../../../payload-types' - -// ensure the first user created is an admin -// 1. lookup a single user on create as succinctly as possible -// 2. if there are no users found, append `admin` to the roles array -// access control is already handled by this fields `access` property -// it ensures that only admins can create and update the `roles` field -export const ensureFirstUserIsAdmin: FieldHook<User> = async ({ req, operation, value }) => { - if (operation === 'create') { - const users = await req.payload.find({ collection: 'users', limit: 0, depth: 0 }) - if (users.totalDocs === 0) { - // if `admin` not in array of values, add it - if (!(value || []).includes('admin')) { - return [...(value || []), 'admin'] - } - } - } - - return value -} diff --git a/src/payload/collections/Users/hooks/loginAfterCreate.ts b/src/payload/collections/Users/hooks/loginAfterCreate.ts deleted file mode 100644 index c6cfed0..0000000 --- a/src/payload/collections/Users/hooks/loginAfterCreate.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { AfterChangeHook } from 'payload/dist/collections/config/types' - -export const loginAfterCreate: AfterChangeHook = async ({ - doc, - req, - req: { payload, body = {}, res }, - operation, -}) => { - if (operation === 'create' && !req.user) { - const { email, password } = body - - if (email && password) { - const { user, token } = await payload.login({ - collection: 'users', - data: { email, password }, - req, - res, - }) - - return { - ...doc, - token, - user, - } - } - } - - return doc -} diff --git a/src/payload/collections/Users/index.ts b/src/payload/collections/Users/index.ts deleted file mode 100644 index c2d6232..0000000 --- a/src/payload/collections/Users/index.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { CollectionConfig } from 'payload/types' - -import { admins } from '../../access/admins' -import { anyone } from '../../access/anyone' -import adminsAndUser from './access/adminsAndUser' -import { checkRole } from './checkRole' -import { ensureFirstUserIsAdmin } from './hooks/ensureFirstUserIsAdmin' -import { loginAfterCreate } from './hooks/loginAfterCreate' - -const Users: CollectionConfig = { - slug: 'users', - admin: { - useAsTitle: 'name', - defaultColumns: ['name', 'email'], - }, - access: { - read: adminsAndUser, - create: anyone, - update: adminsAndUser, - delete: admins, - admin: ({ req: { user } }) => checkRole(['admin'], user), - }, - hooks: { - afterChange: [loginAfterCreate], - }, - auth: true, - fields: [ - { - name: 'name', - type: 'text', - }, - { - name: 'roles', - type: 'select', - hasMany: true, - defaultValue: ['user'], - options: [ - { - label: 'admin', - value: 'admin', - }, - { - label: 'user', - value: 'user', - }, - ], - hooks: { - beforeChange: [ensureFirstUserIsAdmin], - }, - access: { - read: admins, - create: admins, - update: admins, - }, - }, - ], - timestamps: true, -} - -export default Users diff --git a/src/payload/components/BeforeDashboard/index.scss b/src/payload/components/BeforeDashboard/index.scss deleted file mode 100644 index da97c95..0000000 --- a/src/payload/components/BeforeDashboard/index.scss +++ /dev/null @@ -1,24 +0,0 @@ -@import '~payload/scss'; - -.dashboard .before-dashboard { - margin-bottom: base(1.5); - - &__banner { - & h4 { - margin: 0; - } - } - - &__instructions { - list-style: decimal; - margin-bottom: base(0.5); - - & li { - width: 100%; - } - } - - & a:hover { - opacity: 0.85; - } -} diff --git a/src/payload/dotenv.js b/src/payload/dotenv.js deleted file mode 100644 index 8c62a1a..0000000 --- a/src/payload/dotenv.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - config: () => null, -} diff --git a/src/payload/emptyModuleMock.js b/src/payload/emptyModuleMock.js deleted file mode 100644 index dfc9125..0000000 --- a/src/payload/emptyModuleMock.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - url: () => {}, - raw: () => {}, -} diff --git a/src/payload/fields/invertBackground.ts b/src/payload/fields/invertBackground.ts deleted file mode 100644 index c9741a0..0000000 --- a/src/payload/fields/invertBackground.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { CheckboxField } from 'payload/types' - -export const invertBackground: CheckboxField = { - name: 'invertBackground', - type: 'checkbox', -} diff --git a/src/payload/fields/richText/elements.ts b/src/payload/fields/richText/elements.ts deleted file mode 100644 index 921be89..0000000 --- a/src/payload/fields/richText/elements.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { RichTextElement } from '@payloadcms/richtext-slate/dist/types' - -import label from './label' -import largeBody from './largeBody' - -const elements: RichTextElement[] = [ - 'blockquote', - 'h2', - 'h3', - 'h4', - 'h5', - 'h6', - 'link', - largeBody, - label, -] - -export default elements diff --git a/src/payload/fields/richText/index.ts b/src/payload/fields/richText/index.ts deleted file mode 100644 index ef7cfa0..0000000 --- a/src/payload/fields/richText/index.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { slateEditor } from '@payloadcms/richtext-slate' -import type { - AdapterArguments, - RichTextElement, - RichTextLeaf, -} from '@payloadcms/richtext-slate/dist/types' -import type { RichTextField } from 'payload/dist/fields/config/types' - -import deepMerge from '../../utilities/deepMerge' -import link from '../link' -import elements from './elements' -import leaves from './leaves' - -type RichText = ( - overrides?: Partial<RichTextField> & { admin?: AdapterArguments['admin'] }, - additions?: { - elements?: RichTextElement[] - leaves?: RichTextLeaf[] - }, -) => RichTextField - -const richText: RichText = ( - overrides, - additions = { - elements: [], - leaves: [], - }, -) => { - const slateOptions = deepMerge<AdapterArguments['admin'], AdapterArguments['admin']>( - overrides?.admin || {}, - { - upload: { - collections: { - media: { - fields: [ - { - type: 'richText', - name: 'caption', - label: 'Caption', - editor: slateEditor({ - admin: { - elements: [...elements], - leaves: [...leaves], - }, - }), - }, - { - type: 'radio', - name: 'alignment', - label: 'Alignment', - options: [ - { - label: 'Left', - value: 'left', - }, - { - label: 'Center', - value: 'center', - }, - { - label: 'Right', - value: 'right', - }, - ], - }, - { - name: 'enableLink', - type: 'checkbox', - label: 'Enable CMSLink', - }, - link({ - appearances: false, - disableLabel: true, - overrides: { - admin: { - condition: (_, data) => Boolean(data?.enableLink), - }, - }, - }), - ], - }, - }, - }, - elements: [...elements, ...(additions.elements || [])], - leaves: [...leaves, ...(additions.leaves || [])], - }, - ) - - const fieldOverrides = { - ...(overrides || {}), - } - - delete fieldOverrides.admin - - return deepMerge<RichTextField, Partial<RichTextField>>( - { - name: 'richText', - type: 'richText', - required: true, - editor: slateEditor({ - admin: slateOptions, - }), - }, - fieldOverrides || {}, - ) -} - -export default richText diff --git a/src/payload/fields/richText/label/Button/index.tsx b/src/payload/fields/richText/label/Button/index.tsx deleted file mode 100644 index 74289c3..0000000 --- a/src/payload/fields/richText/label/Button/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -// eslint-disable-next-line no-use-before-define -import React from 'react' -import ElementButton from '@payloadcms/richtext-slate/dist/field/elements/Button' - -import Icon from '../Icon' - -const baseClass = 'rich-text-label-button' - -const ToolbarButton: React.FC<{ path: string }> = () => ( - <ElementButton className={baseClass} format="label"> - <Icon /> - </ElementButton> -) - -export default ToolbarButton diff --git a/src/payload/fields/richText/label/Element/index.scss b/src/payload/fields/richText/label/Element/index.scss deleted file mode 100644 index 0ea4134..0000000 --- a/src/payload/fields/richText/label/Element/index.scss +++ /dev/null @@ -1,9 +0,0 @@ -@import "~payload/scss"; - -.rich-text-label { - text-transform: uppercase; - font-family: 'Roboto Mono', monospace; - letter-spacing: 2px; - font-size: base(.5); - margin: 0 0 base(1); -} \ No newline at end of file diff --git a/src/payload/fields/richText/label/Element/index.tsx b/src/payload/fields/richText/label/Element/index.tsx deleted file mode 100644 index be59ad9..0000000 --- a/src/payload/fields/richText/label/Element/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' - -import './index.scss' - -const baseClass = 'rich-text-label' - -const LabelElement: React.FC<{ - attributes: any - element: any - children: React.ReactNode -}> = ({ attributes, children }) => ( - <div {...attributes}> - <span className={baseClass}>{children}</span> - </div> -) -export default LabelElement diff --git a/src/payload/fields/richText/label/Icon/index.tsx b/src/payload/fields/richText/label/Icon/index.tsx deleted file mode 100644 index 3bd9697..0000000 --- a/src/payload/fields/richText/label/Icon/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -/* eslint-disable no-use-before-define */ -// eslint-disable-next-line import/no-extraneous-dependencies -import React from 'react' - -const Icon = () => ( - <svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg"> - <path - d="M8.08884 15.2753L8.79758 17.7598H10.916L7.28663 6.41986H5.46413L1.75684 17.7598H3.88308L4.59962 15.2753H8.08884ZM5.10586 13.5385L6.36759 9.20812L7.59816 13.5385H5.10586Z" - fill="currentColor" - /> - <path - d="M21.1778 15.2753L21.8865 17.7598H24.005L20.3756 6.41986H18.5531L14.8458 17.7598H16.972L17.6886 15.2753H21.1778ZM18.1948 13.5385L19.4565 9.20812L20.6871 13.5385H18.1948Z" - fill="currentColor" - /> - </svg> -) - -export default Icon diff --git a/src/payload/fields/richText/label/index.ts b/src/payload/fields/richText/label/index.ts deleted file mode 100644 index 963b6db..0000000 --- a/src/payload/fields/richText/label/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { RichTextCustomElement } from '@payloadcms/richtext-slate/dist/types' - -import Button from './Button' -import Element from './Element' -import withLabel from './plugin' - -const richTextLabel: RichTextCustomElement = { - name: 'label', - Button, - Element, - plugins: [withLabel], -} - -export default richTextLabel diff --git a/src/payload/fields/richText/label/plugin.ts b/src/payload/fields/richText/label/plugin.ts deleted file mode 100644 index 8427755..0000000 --- a/src/payload/fields/richText/label/plugin.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { RichTextCustomElement } from '@payloadcms/richtext-slate/dist/types' -import type { BaseEditor } from 'slate' - -type RichTextPlugin = Exclude<RichTextCustomElement['plugins'], undefined>[0] - -const withLabel: RichTextPlugin = incomingEditor => { - const editor: BaseEditor & { - shouldBreakOutOnEnter?: (element: any) => boolean // eslint-disable-line @typescript-eslint/no-explicit-any - } = incomingEditor - - const { shouldBreakOutOnEnter } = editor - - if (shouldBreakOutOnEnter) { - editor.shouldBreakOutOnEnter = element => - element.type === 'large-body' ? true : shouldBreakOutOnEnter(element) - } - - return editor -} - -export default withLabel diff --git a/src/payload/fields/richText/largeBody/Button/index.tsx b/src/payload/fields/richText/largeBody/Button/index.tsx deleted file mode 100644 index ca2d2c9..0000000 --- a/src/payload/fields/richText/largeBody/Button/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -// eslint-disable-next-line no-use-before-define -import React from 'react' -import ElementButton from '@payloadcms/richtext-slate/dist/field/elements/Button' - -import Icon from '../Icon' - -const baseClass = 'rich-text-large-body-button' - -const ToolbarButton: React.FC<{ path: string }> = () => ( - <ElementButton className={baseClass} format="large-body"> - <Icon /> - </ElementButton> -) - -export default ToolbarButton diff --git a/src/payload/fields/richText/largeBody/Element/index.scss b/src/payload/fields/richText/largeBody/Element/index.scss deleted file mode 100644 index d56f7d9..0000000 --- a/src/payload/fields/richText/largeBody/Element/index.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import "~payload/scss"; - -.rich-text-large-body { - font-size: base(.8); -} diff --git a/src/payload/fields/richText/largeBody/Element/index.tsx b/src/payload/fields/richText/largeBody/Element/index.tsx deleted file mode 100644 index 3d6a3ae..0000000 --- a/src/payload/fields/richText/largeBody/Element/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' - -import './index.scss' - -const baseClass = 'rich-text-large-body' - -const LargeBodyElement: React.FC<{ - attributes: any - element: any - children: React.ReactNode -}> = ({ attributes, children }) => ( - <div {...attributes}> - <span className={baseClass}>{children}</span> - </div> -) -export default LargeBodyElement diff --git a/src/payload/fields/richText/largeBody/Icon/index.tsx b/src/payload/fields/richText/largeBody/Icon/index.tsx deleted file mode 100644 index ef94fe4..0000000 --- a/src/payload/fields/richText/largeBody/Icon/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -/* eslint-disable no-use-before-define */ -// eslint-disable-next-line import/no-extraneous-dependencies -import React from 'react' - -const Icon = () => ( - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 25"> - <path - d="M6.61695 9.94917L3.16602 19.25H4.65415L5.37256 17.2102H9.41361L10.1448 19.25H11.7356L8.23337 9.94917H6.61695ZM5.80874 15.9787L7.37384 11.5399L8.96461 15.9787H5.80874Z" - fill="currentColor" - /> - <path - d="M14.2739 5.75H16.7691L21.8339 19.25H19.2457L18.1843 16.2521H12.7098L11.667 19.25H9.24635L14.2739 5.75ZM13.3988 14.2783H17.4767L15.4284 8.48724L13.3988 14.2783Z" - fill="currentColor" - /> - </svg> -) - -export default Icon diff --git a/src/payload/fields/richText/largeBody/index.ts b/src/payload/fields/richText/largeBody/index.ts deleted file mode 100644 index 08bcd92..0000000 --- a/src/payload/fields/richText/largeBody/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { RichTextCustomElement } from '@payloadcms/richtext-slate/dist/types' - -import Button from './Button' -import Element from './Element' -import withLargeBody from './plugin' - -const richTextLargeBody: RichTextCustomElement = { - name: 'large-body', - Button, - Element, - plugins: [withLargeBody], -} - -export default richTextLargeBody diff --git a/src/payload/fields/richText/largeBody/plugin.ts b/src/payload/fields/richText/largeBody/plugin.ts deleted file mode 100644 index ec7b0e2..0000000 --- a/src/payload/fields/richText/largeBody/plugin.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { RichTextCustomElement } from '@payloadcms/richtext-slate/dist/types' -import type { BaseEditor } from 'slate' - -type RichTextPlugin = Exclude<RichTextCustomElement['plugins'], undefined>[0] - -const withLargeBody: RichTextPlugin = incomingEditor => { - const editor: BaseEditor & { - shouldBreakOutOnEnter?: (element: any) => boolean // eslint-disable-line @typescript-eslint/no-explicit-any - } = incomingEditor - - const { shouldBreakOutOnEnter } = editor - - if (shouldBreakOutOnEnter) { - editor.shouldBreakOutOnEnter = element => - element.type === 'large-body' ? true : shouldBreakOutOnEnter(element) - } - - return editor -} - -export default withLargeBody diff --git a/src/payload/fields/richText/leaves.ts b/src/payload/fields/richText/leaves.ts deleted file mode 100644 index 3ac6604..0000000 --- a/src/payload/fields/richText/leaves.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { RichTextLeaf } from '@payloadcms/richtext-slate/dist/types' - -const defaultLeaves: RichTextLeaf[] = ['bold', 'italic', 'underline'] - -export default defaultLeaves diff --git a/src/payload/fields/slug.ts b/src/payload/fields/slug.ts deleted file mode 100644 index 6de6fce..0000000 --- a/src/payload/fields/slug.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { Field } from 'payload/types' - -import deepMerge from '../utilities/deepMerge' -import formatSlug from '../utilities/formatSlug' - -type Slug = (fieldToUse?: string, overrides?: Partial<Field>) => Field - -export const slugField: Slug = (fieldToUse = 'title', overrides = {}) => - deepMerge<Field, Partial<Field>>( - { - name: 'slug', - label: 'Slug', - type: 'text', - index: true, - admin: { - position: 'sidebar', - }, - hooks: { - beforeValidate: [formatSlug(fieldToUse)], - }, - }, - overrides, - ) diff --git a/src/payload/generated-schema.graphql b/src/payload/generated-schema.graphql deleted file mode 100644 index 0df404e..0000000 --- a/src/payload/generated-schema.graphql +++ /dev/null @@ -1,14226 +0,0 @@ -type Query { - Page(id: String!, draft: Boolean): Page - Pages(draft: Boolean, where: Page_where, limit: Int, page: Int, sort: String): Pages - countPages(draft: Boolean, where: Page_where): countPages - docAccessPage(id: String!): pagesDocAccess - versionPage(id: String): PageVersion - versionsPages(where: versionsPage_where, limit: Int, page: Int, sort: String): versionsPages - Media(id: String!): Media - allMedia(where: Media_where, limit: Int, page: Int, sort: String): allMedia - countallMedia(where: Media_where): countallMedia - docAccessMedia(id: String!): mediaDocAccess - Category(id: String!): Category - Categories(where: Category_where, limit: Int, page: Int, sort: String): Categories - countCategories(where: Category_where): countCategories - docAccessCategory(id: String!): categoriesDocAccess - User(id: String!): User - Users(where: User_where, limit: Int, page: Int, sort: String): Users - countUsers(where: User_where): countUsers - docAccessUser(id: String!): usersDocAccess - meUser: usersMe - initializedUser: Boolean - Author(id: String!, draft: Boolean): Author - Authors(draft: Boolean, where: Author_where, limit: Int, page: Int, sort: String): Authors - countAuthors(draft: Boolean, where: Author_where): countAuthors - docAccessAuthor(id: String!): authorsDocAccess - versionAuthor(id: String): AuthorVersion - versionsAuthors(where: versionsAuthor_where, limit: Int, page: Int, sort: String): versionsAuthors - PodcastEpisode(id: String!, draft: Boolean): PodcastEpisode - PodcastEpisodes(draft: Boolean, where: PodcastEpisode_where, limit: Int, page: Int, sort: String): PodcastEpisodes - countPodcastEpisodes(draft: Boolean, where: PodcastEpisode_where): countPodcastEpisodes - docAccessPodcastEpisode(id: String!): podcast_episodesDocAccess - versionPodcastEpisode(id: String): PodcastEpisodeVersion - versionsPodcastEpisodes(where: versionsPodcastEpisode_where, limit: Int, page: Int, sort: String): versionsPodcastEpisodes - Blogpost(id: String!, draft: Boolean): Blogpost - Blogposts(draft: Boolean, where: Blogpost_where, limit: Int, page: Int, sort: String): Blogposts - countBlogposts(draft: Boolean, where: Blogpost_where): countBlogposts - docAccessBlogpost(id: String!): blogpostsDocAccess - versionBlogpost(id: String): BlogpostVersion - versionsBlogposts(where: versionsBlogpost_where, limit: Int, page: Int, sort: String): versionsBlogposts - TalksAndRoundtable(id: String!, draft: Boolean): TalksAndRoundtable - TalksAndRoundtables(draft: Boolean, where: TalksAndRoundtable_where, limit: Int, page: Int, sort: String): TalksAndRoundtables - countTalksAndRoundtables(draft: Boolean, where: TalksAndRoundtable_where): countTalksAndRoundtables - docAccessTalksAndRoundtable(id: String!): talks_and_roundtablesDocAccess - versionTalksAndRoundtable(id: String): TalksAndRoundtableVersion - versionsTalksAndRoundtables(where: versionsTalksAndRoundtable_where, limit: Int, page: Int, sort: String): versionsTalksAndRoundtables - CaseStudy(id: String!, draft: Boolean): CaseStudy - CaseStudies(draft: Boolean, where: CaseStudy_where, limit: Int, page: Int, sort: String): CaseStudies - countCaseStudies(draft: Boolean, where: CaseStudy_where): countCaseStudies - docAccessCaseStudy(id: String!): case_studiesDocAccess - versionCaseStudy(id: String): CaseStudyVersion - versionsCaseStudies(where: versionsCaseStudy_where, limit: Int, page: Int, sort: String): versionsCaseStudies - PayloadPreference(id: String!): PayloadPreference - PayloadPreferences(where: PayloadPreference_where, limit: Int, page: Int, sort: String): PayloadPreferences - countPayloadPreferences(where: PayloadPreference_where): countPayloadPreferences - docAccessPayloadPreference(id: String!): payload_preferencesDocAccess - Settings(draft: Boolean): Settings - docAccessSettings: settingsDocAccess - Header(draft: Boolean): Header - docAccessHeader: headerDocAccess - Footer(draft: Boolean): Footer - docAccessFooter: footerDocAccess - Social(draft: Boolean): Social - docAccessSocial: socialsDocAccess - Access: Access -} - -type Page { - id: String - title: String - publishedAt: DateTime - hero: Page_Hero - layout: [Page_Layout!]! - slug: String - updatedAt: DateTime - createdAt: DateTime - _status: Page__status -} - -""" -A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. -""" -scalar DateTime - -type Page_Hero { - type: Page_Hero_type - richText(depth: Int): JSON - links: [Page_Hero_Links!] - media(where: Page_Hero_Media_where): Media -} - -enum Page_Hero_type { - none - highImpact - mediumImpact - lowImpact -} - -""" -The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). -""" -scalar JSON - -type Page_Hero_Links { - link: Page_Hero_Links_Link - id: String -} - -type Page_Hero_Links_Link { - type: Page_Hero_Links_Link_type - newTab: Boolean - reference(draft: Boolean): Page_Hero_Links_Link_Reference_Relationship - url: String - label: String - appearance: Page_Hero_Links_Link_appearance -} - -enum Page_Hero_Links_Link_type { - reference - custom -} - -type Page_Hero_Links_Link_Reference_Relationship { - relationTo: Page_Hero_Links_Link_Reference_RelationTo - value: Page_Hero_Links_Link_Reference -} - -enum Page_Hero_Links_Link_Reference_RelationTo { - pages -} - -union Page_Hero_Links_Link_Reference = Page - -enum Page_Hero_Links_Link_appearance { - default - primary - secondary -} - -type Media { - id: String - alt: String! - caption(depth: Int): JSON - updatedAt: DateTime - createdAt: DateTime - url: String - filename: String - mimeType: String - filesize: Float - width: Float - height: Float - focalX: Float - focalY: Float -} - -input Page_Hero_Media_where { - alt: Page_Hero_Media_alt_operator - caption: Page_Hero_Media_caption_operator - updatedAt: Page_Hero_Media_updatedAt_operator - createdAt: Page_Hero_Media_createdAt_operator - url: Page_Hero_Media_url_operator - filename: Page_Hero_Media_filename_operator - mimeType: Page_Hero_Media_mimeType_operator - filesize: Page_Hero_Media_filesize_operator - width: Page_Hero_Media_width_operator - height: Page_Hero_Media_height_operator - focalX: Page_Hero_Media_focalX_operator - focalY: Page_Hero_Media_focalY_operator - id: Page_Hero_Media_id_operator - AND: [Page_Hero_Media_where_and] - OR: [Page_Hero_Media_where_or] -} - -input Page_Hero_Media_alt_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input Page_Hero_Media_caption_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON - exists: Boolean -} - -input Page_Hero_Media_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Page_Hero_Media_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Page_Hero_Media_url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Page_Hero_Media_filename_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Page_Hero_Media_mimeType_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Page_Hero_Media_filesize_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Page_Hero_Media_width_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Page_Hero_Media_height_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Page_Hero_Media_focalX_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Page_Hero_Media_focalY_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Page_Hero_Media_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Page_Hero_Media_where_and { - alt: Page_Hero_Media_alt_operator - caption: Page_Hero_Media_caption_operator - updatedAt: Page_Hero_Media_updatedAt_operator - createdAt: Page_Hero_Media_createdAt_operator - url: Page_Hero_Media_url_operator - filename: Page_Hero_Media_filename_operator - mimeType: Page_Hero_Media_mimeType_operator - filesize: Page_Hero_Media_filesize_operator - width: Page_Hero_Media_width_operator - height: Page_Hero_Media_height_operator - focalX: Page_Hero_Media_focalX_operator - focalY: Page_Hero_Media_focalY_operator - id: Page_Hero_Media_id_operator - AND: [Page_Hero_Media_where_and] - OR: [Page_Hero_Media_where_or] -} - -input Page_Hero_Media_where_or { - alt: Page_Hero_Media_alt_operator - caption: Page_Hero_Media_caption_operator - updatedAt: Page_Hero_Media_updatedAt_operator - createdAt: Page_Hero_Media_createdAt_operator - url: Page_Hero_Media_url_operator - filename: Page_Hero_Media_filename_operator - mimeType: Page_Hero_Media_mimeType_operator - filesize: Page_Hero_Media_filesize_operator - width: Page_Hero_Media_width_operator - height: Page_Hero_Media_height_operator - focalX: Page_Hero_Media_focalX_operator - focalY: Page_Hero_Media_focalY_operator - id: Page_Hero_Media_id_operator - AND: [Page_Hero_Media_where_and] - OR: [Page_Hero_Media_where_or] -} - -union Page_Layout = Cta | Content | MediaBlock - -type Cta { - invertBackground: Boolean - richText(depth: Int): JSON - links: [Cta_Links!] - id: String - blockName: String - blockType: String -} - -type Cta_Links { - link: Cta_Links_Link - id: String -} - -type Cta_Links_Link { - type: Cta_Links_Link_type - newTab: Boolean - reference(draft: Boolean): Cta_Links_Link_Reference_Relationship - url: String - label: String - appearance: Cta_Links_Link_appearance -} - -enum Cta_Links_Link_type { - reference - custom -} - -type Cta_Links_Link_Reference_Relationship { - relationTo: Cta_Links_Link_Reference_RelationTo - value: Cta_Links_Link_Reference -} - -enum Cta_Links_Link_Reference_RelationTo { - pages -} - -union Cta_Links_Link_Reference = Page - -enum Cta_Links_Link_appearance { - primary - secondary -} - -type Content { - invertBackground: Boolean - columns: [Content_Columns!] - id: String - blockName: String - blockType: String -} - -type Content_Columns { - size: Content_Columns_size - richText(depth: Int): JSON - enableLink: Boolean - link: Content_Columns_Link - id: String -} - -enum Content_Columns_size { - oneThird - half - twoThirds - full -} - -type Content_Columns_Link { - type: Content_Columns_Link_type - newTab: Boolean - reference(draft: Boolean): Content_Columns_Link_Reference_Relationship - url: String - label: String - appearance: Content_Columns_Link_appearance -} - -enum Content_Columns_Link_type { - reference - custom -} - -type Content_Columns_Link_Reference_Relationship { - relationTo: Content_Columns_Link_Reference_RelationTo - value: Content_Columns_Link_Reference -} - -enum Content_Columns_Link_Reference_RelationTo { - pages -} - -union Content_Columns_Link_Reference = Page - -enum Content_Columns_Link_appearance { - default - primary - secondary -} - -type MediaBlock { - invertBackground: Boolean - position: MediaBlock_position - media(where: MediaBlock_Media_where): Media - id: String - blockName: String - blockType: String -} - -enum MediaBlock_position { - default - fullscreen -} - -input MediaBlock_Media_where { - alt: MediaBlock_Media_alt_operator - caption: MediaBlock_Media_caption_operator - updatedAt: MediaBlock_Media_updatedAt_operator - createdAt: MediaBlock_Media_createdAt_operator - url: MediaBlock_Media_url_operator - filename: MediaBlock_Media_filename_operator - mimeType: MediaBlock_Media_mimeType_operator - filesize: MediaBlock_Media_filesize_operator - width: MediaBlock_Media_width_operator - height: MediaBlock_Media_height_operator - focalX: MediaBlock_Media_focalX_operator - focalY: MediaBlock_Media_focalY_operator - id: MediaBlock_Media_id_operator - AND: [MediaBlock_Media_where_and] - OR: [MediaBlock_Media_where_or] -} - -input MediaBlock_Media_alt_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input MediaBlock_Media_caption_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON - exists: Boolean -} - -input MediaBlock_Media_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input MediaBlock_Media_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input MediaBlock_Media_url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input MediaBlock_Media_filename_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input MediaBlock_Media_mimeType_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input MediaBlock_Media_filesize_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input MediaBlock_Media_width_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input MediaBlock_Media_height_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input MediaBlock_Media_focalX_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input MediaBlock_Media_focalY_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input MediaBlock_Media_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input MediaBlock_Media_where_and { - alt: MediaBlock_Media_alt_operator - caption: MediaBlock_Media_caption_operator - updatedAt: MediaBlock_Media_updatedAt_operator - createdAt: MediaBlock_Media_createdAt_operator - url: MediaBlock_Media_url_operator - filename: MediaBlock_Media_filename_operator - mimeType: MediaBlock_Media_mimeType_operator - filesize: MediaBlock_Media_filesize_operator - width: MediaBlock_Media_width_operator - height: MediaBlock_Media_height_operator - focalX: MediaBlock_Media_focalX_operator - focalY: MediaBlock_Media_focalY_operator - id: MediaBlock_Media_id_operator - AND: [MediaBlock_Media_where_and] - OR: [MediaBlock_Media_where_or] -} - -input MediaBlock_Media_where_or { - alt: MediaBlock_Media_alt_operator - caption: MediaBlock_Media_caption_operator - updatedAt: MediaBlock_Media_updatedAt_operator - createdAt: MediaBlock_Media_createdAt_operator - url: MediaBlock_Media_url_operator - filename: MediaBlock_Media_filename_operator - mimeType: MediaBlock_Media_mimeType_operator - filesize: MediaBlock_Media_filesize_operator - width: MediaBlock_Media_width_operator - height: MediaBlock_Media_height_operator - focalX: MediaBlock_Media_focalX_operator - focalY: MediaBlock_Media_focalY_operator - id: MediaBlock_Media_id_operator - AND: [MediaBlock_Media_where_and] - OR: [MediaBlock_Media_where_or] -} - -enum Page__status { - draft - published -} - -type Pages { - docs: [Page] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input Page_where { - title: Page_title_operator - publishedAt: Page_publishedAt_operator - hero__type: Page_hero__type_operator - hero__richText: Page_hero__richText_operator - hero__links__link__type: Page_hero__links__link__type_operator - hero__links__link__newTab: Page_hero__links__link__newTab_operator - hero__links__link__reference: Page_hero__links__link__reference_Relation - hero__links__link__url: Page_hero__links__link__url_operator - hero__links__link__label: Page_hero__links__link__label_operator - hero__links__link__appearance: Page_hero__links__link__appearance_operator - hero__links__id: Page_hero__links__id_operator - hero__media: Page_hero__media_operator - slug: Page_slug_operator - updatedAt: Page_updatedAt_operator - createdAt: Page_createdAt_operator - _status: Page__status_operator - id: Page_id_operator - AND: [Page_where_and] - OR: [Page_where_or] -} - -input Page_title_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input Page_publishedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Page_hero__type_operator { - equals: Page_hero__type_Input - not_equals: Page_hero__type_Input - in: [Page_hero__type_Input] - not_in: [Page_hero__type_Input] - all: [Page_hero__type_Input] -} - -enum Page_hero__type_Input { - none - highImpact - mediumImpact - lowImpact -} - -input Page_hero__richText_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON -} - -input Page_hero__links__link__type_operator { - equals: Page_hero__links__link__type_Input - not_equals: Page_hero__links__link__type_Input - like: Page_hero__links__link__type_Input - contains: Page_hero__links__link__type_Input - exists: Boolean -} - -enum Page_hero__links__link__type_Input { - reference - custom -} - -input Page_hero__links__link__newTab_operator { - equals: Boolean - not_equals: Boolean - exists: Boolean -} - -input Page_hero__links__link__reference_Relation { - relationTo: Page_hero__links__link__reference_Relation_RelationTo - value: JSON -} - -enum Page_hero__links__link__reference_Relation_RelationTo { - pages -} - -input Page_hero__links__link__url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input Page_hero__links__link__label_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input Page_hero__links__link__appearance_operator { - equals: Page_hero__links__link__appearance_Input - not_equals: Page_hero__links__link__appearance_Input - in: [Page_hero__links__link__appearance_Input] - not_in: [Page_hero__links__link__appearance_Input] - all: [Page_hero__links__link__appearance_Input] - exists: Boolean -} - -enum Page_hero__links__link__appearance_Input { - default - primary - secondary -} - -input Page_hero__links__id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Page_hero__media_operator { - equals: String - not_equals: String -} - -input Page_slug_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Page_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Page_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Page__status_operator { - equals: Page__status_Input - not_equals: Page__status_Input - in: [Page__status_Input] - not_in: [Page__status_Input] - all: [Page__status_Input] - exists: Boolean -} - -enum Page__status_Input { - draft - published -} - -input Page_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Page_where_and { - title: Page_title_operator - publishedAt: Page_publishedAt_operator - hero__type: Page_hero__type_operator - hero__richText: Page_hero__richText_operator - hero__links__link__type: Page_hero__links__link__type_operator - hero__links__link__newTab: Page_hero__links__link__newTab_operator - hero__links__link__reference: Page_hero__links__link__reference_Relation - hero__links__link__url: Page_hero__links__link__url_operator - hero__links__link__label: Page_hero__links__link__label_operator - hero__links__link__appearance: Page_hero__links__link__appearance_operator - hero__links__id: Page_hero__links__id_operator - hero__media: Page_hero__media_operator - slug: Page_slug_operator - updatedAt: Page_updatedAt_operator - createdAt: Page_createdAt_operator - _status: Page__status_operator - id: Page_id_operator - AND: [Page_where_and] - OR: [Page_where_or] -} - -input Page_where_or { - title: Page_title_operator - publishedAt: Page_publishedAt_operator - hero__type: Page_hero__type_operator - hero__richText: Page_hero__richText_operator - hero__links__link__type: Page_hero__links__link__type_operator - hero__links__link__newTab: Page_hero__links__link__newTab_operator - hero__links__link__reference: Page_hero__links__link__reference_Relation - hero__links__link__url: Page_hero__links__link__url_operator - hero__links__link__label: Page_hero__links__link__label_operator - hero__links__link__appearance: Page_hero__links__link__appearance_operator - hero__links__id: Page_hero__links__id_operator - hero__media: Page_hero__media_operator - slug: Page_slug_operator - updatedAt: Page_updatedAt_operator - createdAt: Page_createdAt_operator - _status: Page__status_operator - id: Page_id_operator - AND: [Page_where_and] - OR: [Page_where_or] -} - -type countPages { - totalDocs: Int -} - -type pagesDocAccess { - fields: PagesDocAccessFields - create: PagesCreateDocAccess - read: PagesReadDocAccess - update: PagesUpdateDocAccess - delete: PagesDeleteDocAccess - readVersions: PagesReadVersionsDocAccess -} - -type PagesDocAccessFields { - title: PagesDocAccessFields_title - publishedAt: PagesDocAccessFields_publishedAt - hero: PagesDocAccessFields_hero - layout: PagesDocAccessFields_layout - slug: PagesDocAccessFields_slug - updatedAt: PagesDocAccessFields_updatedAt - createdAt: PagesDocAccessFields_createdAt - _status: PagesDocAccessFields__status -} - -type PagesDocAccessFields_title { - create: PagesDocAccessFields_title_Create - read: PagesDocAccessFields_title_Read - update: PagesDocAccessFields_title_Update - delete: PagesDocAccessFields_title_Delete -} - -type PagesDocAccessFields_title_Create { - permission: Boolean! -} - -type PagesDocAccessFields_title_Read { - permission: Boolean! -} - -type PagesDocAccessFields_title_Update { - permission: Boolean! -} - -type PagesDocAccessFields_title_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_publishedAt { - create: PagesDocAccessFields_publishedAt_Create - read: PagesDocAccessFields_publishedAt_Read - update: PagesDocAccessFields_publishedAt_Update - delete: PagesDocAccessFields_publishedAt_Delete -} - -type PagesDocAccessFields_publishedAt_Create { - permission: Boolean! -} - -type PagesDocAccessFields_publishedAt_Read { - permission: Boolean! -} - -type PagesDocAccessFields_publishedAt_Update { - permission: Boolean! -} - -type PagesDocAccessFields_publishedAt_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_hero { - create: PagesDocAccessFields_hero_Create - read: PagesDocAccessFields_hero_Read - update: PagesDocAccessFields_hero_Update - delete: PagesDocAccessFields_hero_Delete - fields: PagesDocAccessFields_hero_Fields -} - -type PagesDocAccessFields_hero_Create { - permission: Boolean! -} - -type PagesDocAccessFields_hero_Read { - permission: Boolean! -} - -type PagesDocAccessFields_hero_Update { - permission: Boolean! -} - -type PagesDocAccessFields_hero_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_hero_Fields { - type: PagesDocAccessFields_hero_type - richText: PagesDocAccessFields_hero_richText - links: PagesDocAccessFields_hero_links - media: PagesDocAccessFields_hero_media -} - -type PagesDocAccessFields_hero_type { - create: PagesDocAccessFields_hero_type_Create - read: PagesDocAccessFields_hero_type_Read - update: PagesDocAccessFields_hero_type_Update - delete: PagesDocAccessFields_hero_type_Delete -} - -type PagesDocAccessFields_hero_type_Create { - permission: Boolean! -} - -type PagesDocAccessFields_hero_type_Read { - permission: Boolean! -} - -type PagesDocAccessFields_hero_type_Update { - permission: Boolean! -} - -type PagesDocAccessFields_hero_type_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_hero_richText { - create: PagesDocAccessFields_hero_richText_Create - read: PagesDocAccessFields_hero_richText_Read - update: PagesDocAccessFields_hero_richText_Update - delete: PagesDocAccessFields_hero_richText_Delete -} - -type PagesDocAccessFields_hero_richText_Create { - permission: Boolean! -} - -type PagesDocAccessFields_hero_richText_Read { - permission: Boolean! -} - -type PagesDocAccessFields_hero_richText_Update { - permission: Boolean! -} - -type PagesDocAccessFields_hero_richText_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links { - create: PagesDocAccessFields_hero_links_Create - read: PagesDocAccessFields_hero_links_Read - update: PagesDocAccessFields_hero_links_Update - delete: PagesDocAccessFields_hero_links_Delete - fields: PagesDocAccessFields_hero_links_Fields -} - -type PagesDocAccessFields_hero_links_Create { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_Read { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_Update { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_Fields { - link: PagesDocAccessFields_hero_links_link - id: PagesDocAccessFields_hero_links_id -} - -type PagesDocAccessFields_hero_links_link { - create: PagesDocAccessFields_hero_links_link_Create - read: PagesDocAccessFields_hero_links_link_Read - update: PagesDocAccessFields_hero_links_link_Update - delete: PagesDocAccessFields_hero_links_link_Delete - fields: PagesDocAccessFields_hero_links_link_Fields -} - -type PagesDocAccessFields_hero_links_link_Create { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_Read { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_Update { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_Fields { - type: PagesDocAccessFields_hero_links_link_type - newTab: PagesDocAccessFields_hero_links_link_newTab - reference: PagesDocAccessFields_hero_links_link_reference - url: PagesDocAccessFields_hero_links_link_url - label: PagesDocAccessFields_hero_links_link_label - appearance: PagesDocAccessFields_hero_links_link_appearance -} - -type PagesDocAccessFields_hero_links_link_type { - create: PagesDocAccessFields_hero_links_link_type_Create - read: PagesDocAccessFields_hero_links_link_type_Read - update: PagesDocAccessFields_hero_links_link_type_Update - delete: PagesDocAccessFields_hero_links_link_type_Delete -} - -type PagesDocAccessFields_hero_links_link_type_Create { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_type_Read { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_type_Update { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_type_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_newTab { - create: PagesDocAccessFields_hero_links_link_newTab_Create - read: PagesDocAccessFields_hero_links_link_newTab_Read - update: PagesDocAccessFields_hero_links_link_newTab_Update - delete: PagesDocAccessFields_hero_links_link_newTab_Delete -} - -type PagesDocAccessFields_hero_links_link_newTab_Create { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_newTab_Read { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_newTab_Update { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_newTab_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_reference { - create: PagesDocAccessFields_hero_links_link_reference_Create - read: PagesDocAccessFields_hero_links_link_reference_Read - update: PagesDocAccessFields_hero_links_link_reference_Update - delete: PagesDocAccessFields_hero_links_link_reference_Delete -} - -type PagesDocAccessFields_hero_links_link_reference_Create { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_reference_Read { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_reference_Update { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_reference_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_url { - create: PagesDocAccessFields_hero_links_link_url_Create - read: PagesDocAccessFields_hero_links_link_url_Read - update: PagesDocAccessFields_hero_links_link_url_Update - delete: PagesDocAccessFields_hero_links_link_url_Delete -} - -type PagesDocAccessFields_hero_links_link_url_Create { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_url_Read { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_url_Update { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_url_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_label { - create: PagesDocAccessFields_hero_links_link_label_Create - read: PagesDocAccessFields_hero_links_link_label_Read - update: PagesDocAccessFields_hero_links_link_label_Update - delete: PagesDocAccessFields_hero_links_link_label_Delete -} - -type PagesDocAccessFields_hero_links_link_label_Create { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_label_Read { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_label_Update { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_label_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_appearance { - create: PagesDocAccessFields_hero_links_link_appearance_Create - read: PagesDocAccessFields_hero_links_link_appearance_Read - update: PagesDocAccessFields_hero_links_link_appearance_Update - delete: PagesDocAccessFields_hero_links_link_appearance_Delete -} - -type PagesDocAccessFields_hero_links_link_appearance_Create { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_appearance_Read { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_appearance_Update { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_link_appearance_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_id { - create: PagesDocAccessFields_hero_links_id_Create - read: PagesDocAccessFields_hero_links_id_Read - update: PagesDocAccessFields_hero_links_id_Update - delete: PagesDocAccessFields_hero_links_id_Delete -} - -type PagesDocAccessFields_hero_links_id_Create { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_id_Read { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_id_Update { - permission: Boolean! -} - -type PagesDocAccessFields_hero_links_id_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_hero_media { - create: PagesDocAccessFields_hero_media_Create - read: PagesDocAccessFields_hero_media_Read - update: PagesDocAccessFields_hero_media_Update - delete: PagesDocAccessFields_hero_media_Delete -} - -type PagesDocAccessFields_hero_media_Create { - permission: Boolean! -} - -type PagesDocAccessFields_hero_media_Read { - permission: Boolean! -} - -type PagesDocAccessFields_hero_media_Update { - permission: Boolean! -} - -type PagesDocAccessFields_hero_media_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_layout { - create: PagesDocAccessFields_layout_Create - read: PagesDocAccessFields_layout_Read - update: PagesDocAccessFields_layout_Update - delete: PagesDocAccessFields_layout_Delete -} - -type PagesDocAccessFields_layout_Create { - permission: Boolean! -} - -type PagesDocAccessFields_layout_Read { - permission: Boolean! -} - -type PagesDocAccessFields_layout_Update { - permission: Boolean! -} - -type PagesDocAccessFields_layout_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_slug { - create: PagesDocAccessFields_slug_Create - read: PagesDocAccessFields_slug_Read - update: PagesDocAccessFields_slug_Update - delete: PagesDocAccessFields_slug_Delete -} - -type PagesDocAccessFields_slug_Create { - permission: Boolean! -} - -type PagesDocAccessFields_slug_Read { - permission: Boolean! -} - -type PagesDocAccessFields_slug_Update { - permission: Boolean! -} - -type PagesDocAccessFields_slug_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_updatedAt { - create: PagesDocAccessFields_updatedAt_Create - read: PagesDocAccessFields_updatedAt_Read - update: PagesDocAccessFields_updatedAt_Update - delete: PagesDocAccessFields_updatedAt_Delete -} - -type PagesDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type PagesDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type PagesDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type PagesDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type PagesDocAccessFields_createdAt { - create: PagesDocAccessFields_createdAt_Create - read: PagesDocAccessFields_createdAt_Read - update: PagesDocAccessFields_createdAt_Update - delete: PagesDocAccessFields_createdAt_Delete -} - -type PagesDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type PagesDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type PagesDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type PagesDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type PagesDocAccessFields__status { - create: PagesDocAccessFields__status_Create - read: PagesDocAccessFields__status_Read - update: PagesDocAccessFields__status_Update - delete: PagesDocAccessFields__status_Delete -} - -type PagesDocAccessFields__status_Create { - permission: Boolean! -} - -type PagesDocAccessFields__status_Read { - permission: Boolean! -} - -type PagesDocAccessFields__status_Update { - permission: Boolean! -} - -type PagesDocAccessFields__status_Delete { - permission: Boolean! -} - -type PagesCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -""" -The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). -""" -scalar JSONObject - -type PagesReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type PagesUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type PagesDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type PagesReadVersionsDocAccess { - permission: Boolean! - where: JSONObject -} - -type PageVersion { - parent(draft: Boolean): Page - version: PageVersion_Version - createdAt: DateTime - updatedAt: DateTime - latest: Boolean - id: String -} - -type PageVersion_Version { - title: String - publishedAt: DateTime - hero: PageVersion_Version_Hero - layout: [PageVersion_Version_Layout!]! - slug: String - updatedAt: DateTime - createdAt: DateTime - _status: PageVersion_Version__status -} - -type PageVersion_Version_Hero { - type: PageVersion_Version_Hero_type - richText(depth: Int): JSON - links: [PageVersion_Version_Hero_Links!] - media(where: PageVersion_Version_Hero_Media_where): Media -} - -enum PageVersion_Version_Hero_type { - none - highImpact - mediumImpact - lowImpact -} - -type PageVersion_Version_Hero_Links { - link: PageVersion_Version_Hero_Links_Link - id: String -} - -type PageVersion_Version_Hero_Links_Link { - type: PageVersion_Version_Hero_Links_Link_type - newTab: Boolean - reference(draft: Boolean): PageVersion_Version_Hero_Links_Link_Reference_Relationship - url: String - label: String - appearance: PageVersion_Version_Hero_Links_Link_appearance -} - -enum PageVersion_Version_Hero_Links_Link_type { - reference - custom -} - -type PageVersion_Version_Hero_Links_Link_Reference_Relationship { - relationTo: PageVersion_Version_Hero_Links_Link_Reference_RelationTo - value: PageVersion_Version_Hero_Links_Link_Reference -} - -enum PageVersion_Version_Hero_Links_Link_Reference_RelationTo { - pages -} - -union PageVersion_Version_Hero_Links_Link_Reference = Page - -enum PageVersion_Version_Hero_Links_Link_appearance { - default - primary - secondary -} - -input PageVersion_Version_Hero_Media_where { - alt: PageVersion_Version_Hero_Media_alt_operator - caption: PageVersion_Version_Hero_Media_caption_operator - updatedAt: PageVersion_Version_Hero_Media_updatedAt_operator - createdAt: PageVersion_Version_Hero_Media_createdAt_operator - url: PageVersion_Version_Hero_Media_url_operator - filename: PageVersion_Version_Hero_Media_filename_operator - mimeType: PageVersion_Version_Hero_Media_mimeType_operator - filesize: PageVersion_Version_Hero_Media_filesize_operator - width: PageVersion_Version_Hero_Media_width_operator - height: PageVersion_Version_Hero_Media_height_operator - focalX: PageVersion_Version_Hero_Media_focalX_operator - focalY: PageVersion_Version_Hero_Media_focalY_operator - id: PageVersion_Version_Hero_Media_id_operator - AND: [PageVersion_Version_Hero_Media_where_and] - OR: [PageVersion_Version_Hero_Media_where_or] -} - -input PageVersion_Version_Hero_Media_alt_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input PageVersion_Version_Hero_Media_caption_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON - exists: Boolean -} - -input PageVersion_Version_Hero_Media_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PageVersion_Version_Hero_Media_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PageVersion_Version_Hero_Media_url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PageVersion_Version_Hero_Media_filename_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PageVersion_Version_Hero_Media_mimeType_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PageVersion_Version_Hero_Media_filesize_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PageVersion_Version_Hero_Media_width_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PageVersion_Version_Hero_Media_height_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PageVersion_Version_Hero_Media_focalX_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PageVersion_Version_Hero_Media_focalY_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PageVersion_Version_Hero_Media_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PageVersion_Version_Hero_Media_where_and { - alt: PageVersion_Version_Hero_Media_alt_operator - caption: PageVersion_Version_Hero_Media_caption_operator - updatedAt: PageVersion_Version_Hero_Media_updatedAt_operator - createdAt: PageVersion_Version_Hero_Media_createdAt_operator - url: PageVersion_Version_Hero_Media_url_operator - filename: PageVersion_Version_Hero_Media_filename_operator - mimeType: PageVersion_Version_Hero_Media_mimeType_operator - filesize: PageVersion_Version_Hero_Media_filesize_operator - width: PageVersion_Version_Hero_Media_width_operator - height: PageVersion_Version_Hero_Media_height_operator - focalX: PageVersion_Version_Hero_Media_focalX_operator - focalY: PageVersion_Version_Hero_Media_focalY_operator - id: PageVersion_Version_Hero_Media_id_operator - AND: [PageVersion_Version_Hero_Media_where_and] - OR: [PageVersion_Version_Hero_Media_where_or] -} - -input PageVersion_Version_Hero_Media_where_or { - alt: PageVersion_Version_Hero_Media_alt_operator - caption: PageVersion_Version_Hero_Media_caption_operator - updatedAt: PageVersion_Version_Hero_Media_updatedAt_operator - createdAt: PageVersion_Version_Hero_Media_createdAt_operator - url: PageVersion_Version_Hero_Media_url_operator - filename: PageVersion_Version_Hero_Media_filename_operator - mimeType: PageVersion_Version_Hero_Media_mimeType_operator - filesize: PageVersion_Version_Hero_Media_filesize_operator - width: PageVersion_Version_Hero_Media_width_operator - height: PageVersion_Version_Hero_Media_height_operator - focalX: PageVersion_Version_Hero_Media_focalX_operator - focalY: PageVersion_Version_Hero_Media_focalY_operator - id: PageVersion_Version_Hero_Media_id_operator - AND: [PageVersion_Version_Hero_Media_where_and] - OR: [PageVersion_Version_Hero_Media_where_or] -} - -union PageVersion_Version_Layout = Cta | Content | MediaBlock - -enum PageVersion_Version__status { - draft - published -} - -type versionsPages { - docs: [PageVersion] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input versionsPage_where { - parent: versionsPage_parent_operator - version__title: versionsPage_version__title_operator - version__publishedAt: versionsPage_version__publishedAt_operator - version__hero__type: versionsPage_version__hero__type_operator - version__hero__richText: versionsPage_version__hero__richText_operator - version__hero__links__link__type: versionsPage_version__hero__links__link__type_operator - version__hero__links__link__newTab: versionsPage_version__hero__links__link__newTab_operator - version__hero__links__link__reference: versionsPage_version__hero__links__link__reference_Relation - version__hero__links__link__url: versionsPage_version__hero__links__link__url_operator - version__hero__links__link__label: versionsPage_version__hero__links__link__label_operator - version__hero__links__link__appearance: versionsPage_version__hero__links__link__appearance_operator - version__hero__links__id: versionsPage_version__hero__links__id_operator - version__hero__media: versionsPage_version__hero__media_operator - version__slug: versionsPage_version__slug_operator - version__updatedAt: versionsPage_version__updatedAt_operator - version__createdAt: versionsPage_version__createdAt_operator - version___status: versionsPage_version___status_operator - createdAt: versionsPage_createdAt_operator - updatedAt: versionsPage_updatedAt_operator - latest: versionsPage_latest_operator - id: versionsPage_id_operator - AND: [versionsPage_where_and] - OR: [versionsPage_where_or] -} - -input versionsPage_parent_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsPage_version__title_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input versionsPage_version__publishedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsPage_version__hero__type_operator { - equals: versionsPage_version__hero__type_Input - not_equals: versionsPage_version__hero__type_Input - in: [versionsPage_version__hero__type_Input] - not_in: [versionsPage_version__hero__type_Input] - all: [versionsPage_version__hero__type_Input] -} - -enum versionsPage_version__hero__type_Input { - none - highImpact - mediumImpact - lowImpact -} - -input versionsPage_version__hero__richText_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON -} - -input versionsPage_version__hero__links__link__type_operator { - equals: versionsPage_version__hero__links__link__type_Input - not_equals: versionsPage_version__hero__links__link__type_Input - like: versionsPage_version__hero__links__link__type_Input - contains: versionsPage_version__hero__links__link__type_Input - exists: Boolean -} - -enum versionsPage_version__hero__links__link__type_Input { - reference - custom -} - -input versionsPage_version__hero__links__link__newTab_operator { - equals: Boolean - not_equals: Boolean - exists: Boolean -} - -input versionsPage_version__hero__links__link__reference_Relation { - relationTo: versionsPage_version__hero__links__link__reference_Relation_RelationTo - value: JSON -} - -enum versionsPage_version__hero__links__link__reference_Relation_RelationTo { - pages -} - -input versionsPage_version__hero__links__link__url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input versionsPage_version__hero__links__link__label_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input versionsPage_version__hero__links__link__appearance_operator { - equals: versionsPage_version__hero__links__link__appearance_Input - not_equals: versionsPage_version__hero__links__link__appearance_Input - in: [versionsPage_version__hero__links__link__appearance_Input] - not_in: [versionsPage_version__hero__links__link__appearance_Input] - all: [versionsPage_version__hero__links__link__appearance_Input] - exists: Boolean -} - -enum versionsPage_version__hero__links__link__appearance_Input { - default - primary - secondary -} - -input versionsPage_version__hero__links__id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsPage_version__hero__media_operator { - equals: String - not_equals: String -} - -input versionsPage_version__slug_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsPage_version__updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsPage_version__createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsPage_version___status_operator { - equals: versionsPage_version___status_Input - not_equals: versionsPage_version___status_Input - in: [versionsPage_version___status_Input] - not_in: [versionsPage_version___status_Input] - all: [versionsPage_version___status_Input] - exists: Boolean -} - -enum versionsPage_version___status_Input { - draft - published -} - -input versionsPage_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsPage_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsPage_latest_operator { - equals: Boolean - not_equals: Boolean - exists: Boolean -} - -input versionsPage_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsPage_where_and { - parent: versionsPage_parent_operator - version__title: versionsPage_version__title_operator - version__publishedAt: versionsPage_version__publishedAt_operator - version__hero__type: versionsPage_version__hero__type_operator - version__hero__richText: versionsPage_version__hero__richText_operator - version__hero__links__link__type: versionsPage_version__hero__links__link__type_operator - version__hero__links__link__newTab: versionsPage_version__hero__links__link__newTab_operator - version__hero__links__link__reference: versionsPage_version__hero__links__link__reference_Relation - version__hero__links__link__url: versionsPage_version__hero__links__link__url_operator - version__hero__links__link__label: versionsPage_version__hero__links__link__label_operator - version__hero__links__link__appearance: versionsPage_version__hero__links__link__appearance_operator - version__hero__links__id: versionsPage_version__hero__links__id_operator - version__hero__media: versionsPage_version__hero__media_operator - version__slug: versionsPage_version__slug_operator - version__updatedAt: versionsPage_version__updatedAt_operator - version__createdAt: versionsPage_version__createdAt_operator - version___status: versionsPage_version___status_operator - createdAt: versionsPage_createdAt_operator - updatedAt: versionsPage_updatedAt_operator - latest: versionsPage_latest_operator - id: versionsPage_id_operator - AND: [versionsPage_where_and] - OR: [versionsPage_where_or] -} - -input versionsPage_where_or { - parent: versionsPage_parent_operator - version__title: versionsPage_version__title_operator - version__publishedAt: versionsPage_version__publishedAt_operator - version__hero__type: versionsPage_version__hero__type_operator - version__hero__richText: versionsPage_version__hero__richText_operator - version__hero__links__link__type: versionsPage_version__hero__links__link__type_operator - version__hero__links__link__newTab: versionsPage_version__hero__links__link__newTab_operator - version__hero__links__link__reference: versionsPage_version__hero__links__link__reference_Relation - version__hero__links__link__url: versionsPage_version__hero__links__link__url_operator - version__hero__links__link__label: versionsPage_version__hero__links__link__label_operator - version__hero__links__link__appearance: versionsPage_version__hero__links__link__appearance_operator - version__hero__links__id: versionsPage_version__hero__links__id_operator - version__hero__media: versionsPage_version__hero__media_operator - version__slug: versionsPage_version__slug_operator - version__updatedAt: versionsPage_version__updatedAt_operator - version__createdAt: versionsPage_version__createdAt_operator - version___status: versionsPage_version___status_operator - createdAt: versionsPage_createdAt_operator - updatedAt: versionsPage_updatedAt_operator - latest: versionsPage_latest_operator - id: versionsPage_id_operator - AND: [versionsPage_where_and] - OR: [versionsPage_where_or] -} - -type allMedia { - docs: [Media] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input Media_where { - alt: Media_alt_operator - caption: Media_caption_operator - updatedAt: Media_updatedAt_operator - createdAt: Media_createdAt_operator - url: Media_url_operator - filename: Media_filename_operator - mimeType: Media_mimeType_operator - filesize: Media_filesize_operator - width: Media_width_operator - height: Media_height_operator - focalX: Media_focalX_operator - focalY: Media_focalY_operator - id: Media_id_operator - AND: [Media_where_and] - OR: [Media_where_or] -} - -input Media_alt_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input Media_caption_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON - exists: Boolean -} - -input Media_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Media_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Media_url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Media_filename_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Media_mimeType_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Media_filesize_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Media_width_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Media_height_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Media_focalX_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Media_focalY_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Media_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Media_where_and { - alt: Media_alt_operator - caption: Media_caption_operator - updatedAt: Media_updatedAt_operator - createdAt: Media_createdAt_operator - url: Media_url_operator - filename: Media_filename_operator - mimeType: Media_mimeType_operator - filesize: Media_filesize_operator - width: Media_width_operator - height: Media_height_operator - focalX: Media_focalX_operator - focalY: Media_focalY_operator - id: Media_id_operator - AND: [Media_where_and] - OR: [Media_where_or] -} - -input Media_where_or { - alt: Media_alt_operator - caption: Media_caption_operator - updatedAt: Media_updatedAt_operator - createdAt: Media_createdAt_operator - url: Media_url_operator - filename: Media_filename_operator - mimeType: Media_mimeType_operator - filesize: Media_filesize_operator - width: Media_width_operator - height: Media_height_operator - focalX: Media_focalX_operator - focalY: Media_focalY_operator - id: Media_id_operator - AND: [Media_where_and] - OR: [Media_where_or] -} - -type countallMedia { - totalDocs: Int -} - -type mediaDocAccess { - fields: MediaDocAccessFields - create: MediaCreateDocAccess - read: MediaReadDocAccess - update: MediaUpdateDocAccess - delete: MediaDeleteDocAccess -} - -type MediaDocAccessFields { - alt: MediaDocAccessFields_alt - caption: MediaDocAccessFields_caption - updatedAt: MediaDocAccessFields_updatedAt - createdAt: MediaDocAccessFields_createdAt - url: MediaDocAccessFields_url - filename: MediaDocAccessFields_filename - mimeType: MediaDocAccessFields_mimeType - filesize: MediaDocAccessFields_filesize - width: MediaDocAccessFields_width - height: MediaDocAccessFields_height - focalX: MediaDocAccessFields_focalX - focalY: MediaDocAccessFields_focalY -} - -type MediaDocAccessFields_alt { - create: MediaDocAccessFields_alt_Create - read: MediaDocAccessFields_alt_Read - update: MediaDocAccessFields_alt_Update - delete: MediaDocAccessFields_alt_Delete -} - -type MediaDocAccessFields_alt_Create { - permission: Boolean! -} - -type MediaDocAccessFields_alt_Read { - permission: Boolean! -} - -type MediaDocAccessFields_alt_Update { - permission: Boolean! -} - -type MediaDocAccessFields_alt_Delete { - permission: Boolean! -} - -type MediaDocAccessFields_caption { - create: MediaDocAccessFields_caption_Create - read: MediaDocAccessFields_caption_Read - update: MediaDocAccessFields_caption_Update - delete: MediaDocAccessFields_caption_Delete -} - -type MediaDocAccessFields_caption_Create { - permission: Boolean! -} - -type MediaDocAccessFields_caption_Read { - permission: Boolean! -} - -type MediaDocAccessFields_caption_Update { - permission: Boolean! -} - -type MediaDocAccessFields_caption_Delete { - permission: Boolean! -} - -type MediaDocAccessFields_updatedAt { - create: MediaDocAccessFields_updatedAt_Create - read: MediaDocAccessFields_updatedAt_Read - update: MediaDocAccessFields_updatedAt_Update - delete: MediaDocAccessFields_updatedAt_Delete -} - -type MediaDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type MediaDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type MediaDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type MediaDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type MediaDocAccessFields_createdAt { - create: MediaDocAccessFields_createdAt_Create - read: MediaDocAccessFields_createdAt_Read - update: MediaDocAccessFields_createdAt_Update - delete: MediaDocAccessFields_createdAt_Delete -} - -type MediaDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type MediaDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type MediaDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type MediaDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type MediaDocAccessFields_url { - create: MediaDocAccessFields_url_Create - read: MediaDocAccessFields_url_Read - update: MediaDocAccessFields_url_Update - delete: MediaDocAccessFields_url_Delete -} - -type MediaDocAccessFields_url_Create { - permission: Boolean! -} - -type MediaDocAccessFields_url_Read { - permission: Boolean! -} - -type MediaDocAccessFields_url_Update { - permission: Boolean! -} - -type MediaDocAccessFields_url_Delete { - permission: Boolean! -} - -type MediaDocAccessFields_filename { - create: MediaDocAccessFields_filename_Create - read: MediaDocAccessFields_filename_Read - update: MediaDocAccessFields_filename_Update - delete: MediaDocAccessFields_filename_Delete -} - -type MediaDocAccessFields_filename_Create { - permission: Boolean! -} - -type MediaDocAccessFields_filename_Read { - permission: Boolean! -} - -type MediaDocAccessFields_filename_Update { - permission: Boolean! -} - -type MediaDocAccessFields_filename_Delete { - permission: Boolean! -} - -type MediaDocAccessFields_mimeType { - create: MediaDocAccessFields_mimeType_Create - read: MediaDocAccessFields_mimeType_Read - update: MediaDocAccessFields_mimeType_Update - delete: MediaDocAccessFields_mimeType_Delete -} - -type MediaDocAccessFields_mimeType_Create { - permission: Boolean! -} - -type MediaDocAccessFields_mimeType_Read { - permission: Boolean! -} - -type MediaDocAccessFields_mimeType_Update { - permission: Boolean! -} - -type MediaDocAccessFields_mimeType_Delete { - permission: Boolean! -} - -type MediaDocAccessFields_filesize { - create: MediaDocAccessFields_filesize_Create - read: MediaDocAccessFields_filesize_Read - update: MediaDocAccessFields_filesize_Update - delete: MediaDocAccessFields_filesize_Delete -} - -type MediaDocAccessFields_filesize_Create { - permission: Boolean! -} - -type MediaDocAccessFields_filesize_Read { - permission: Boolean! -} - -type MediaDocAccessFields_filesize_Update { - permission: Boolean! -} - -type MediaDocAccessFields_filesize_Delete { - permission: Boolean! -} - -type MediaDocAccessFields_width { - create: MediaDocAccessFields_width_Create - read: MediaDocAccessFields_width_Read - update: MediaDocAccessFields_width_Update - delete: MediaDocAccessFields_width_Delete -} - -type MediaDocAccessFields_width_Create { - permission: Boolean! -} - -type MediaDocAccessFields_width_Read { - permission: Boolean! -} - -type MediaDocAccessFields_width_Update { - permission: Boolean! -} - -type MediaDocAccessFields_width_Delete { - permission: Boolean! -} - -type MediaDocAccessFields_height { - create: MediaDocAccessFields_height_Create - read: MediaDocAccessFields_height_Read - update: MediaDocAccessFields_height_Update - delete: MediaDocAccessFields_height_Delete -} - -type MediaDocAccessFields_height_Create { - permission: Boolean! -} - -type MediaDocAccessFields_height_Read { - permission: Boolean! -} - -type MediaDocAccessFields_height_Update { - permission: Boolean! -} - -type MediaDocAccessFields_height_Delete { - permission: Boolean! -} - -type MediaDocAccessFields_focalX { - create: MediaDocAccessFields_focalX_Create - read: MediaDocAccessFields_focalX_Read - update: MediaDocAccessFields_focalX_Update - delete: MediaDocAccessFields_focalX_Delete -} - -type MediaDocAccessFields_focalX_Create { - permission: Boolean! -} - -type MediaDocAccessFields_focalX_Read { - permission: Boolean! -} - -type MediaDocAccessFields_focalX_Update { - permission: Boolean! -} - -type MediaDocAccessFields_focalX_Delete { - permission: Boolean! -} - -type MediaDocAccessFields_focalY { - create: MediaDocAccessFields_focalY_Create - read: MediaDocAccessFields_focalY_Read - update: MediaDocAccessFields_focalY_Update - delete: MediaDocAccessFields_focalY_Delete -} - -type MediaDocAccessFields_focalY_Create { - permission: Boolean! -} - -type MediaDocAccessFields_focalY_Read { - permission: Boolean! -} - -type MediaDocAccessFields_focalY_Update { - permission: Boolean! -} - -type MediaDocAccessFields_focalY_Delete { - permission: Boolean! -} - -type MediaCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -type MediaReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type MediaUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type MediaDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type Category { - id: String - title: String - updatedAt: DateTime - createdAt: DateTime -} - -type Categories { - docs: [Category] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input Category_where { - title: Category_title_operator - updatedAt: Category_updatedAt_operator - createdAt: Category_createdAt_operator - id: Category_id_operator - AND: [Category_where_and] - OR: [Category_where_or] -} - -input Category_title_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Category_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Category_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Category_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Category_where_and { - title: Category_title_operator - updatedAt: Category_updatedAt_operator - createdAt: Category_createdAt_operator - id: Category_id_operator - AND: [Category_where_and] - OR: [Category_where_or] -} - -input Category_where_or { - title: Category_title_operator - updatedAt: Category_updatedAt_operator - createdAt: Category_createdAt_operator - id: Category_id_operator - AND: [Category_where_and] - OR: [Category_where_or] -} - -type countCategories { - totalDocs: Int -} - -type categoriesDocAccess { - fields: CategoriesDocAccessFields - create: CategoriesCreateDocAccess - read: CategoriesReadDocAccess - update: CategoriesUpdateDocAccess - delete: CategoriesDeleteDocAccess -} - -type CategoriesDocAccessFields { - title: CategoriesDocAccessFields_title - updatedAt: CategoriesDocAccessFields_updatedAt - createdAt: CategoriesDocAccessFields_createdAt -} - -type CategoriesDocAccessFields_title { - create: CategoriesDocAccessFields_title_Create - read: CategoriesDocAccessFields_title_Read - update: CategoriesDocAccessFields_title_Update - delete: CategoriesDocAccessFields_title_Delete -} - -type CategoriesDocAccessFields_title_Create { - permission: Boolean! -} - -type CategoriesDocAccessFields_title_Read { - permission: Boolean! -} - -type CategoriesDocAccessFields_title_Update { - permission: Boolean! -} - -type CategoriesDocAccessFields_title_Delete { - permission: Boolean! -} - -type CategoriesDocAccessFields_updatedAt { - create: CategoriesDocAccessFields_updatedAt_Create - read: CategoriesDocAccessFields_updatedAt_Read - update: CategoriesDocAccessFields_updatedAt_Update - delete: CategoriesDocAccessFields_updatedAt_Delete -} - -type CategoriesDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type CategoriesDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type CategoriesDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type CategoriesDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type CategoriesDocAccessFields_createdAt { - create: CategoriesDocAccessFields_createdAt_Create - read: CategoriesDocAccessFields_createdAt_Read - update: CategoriesDocAccessFields_createdAt_Update - delete: CategoriesDocAccessFields_createdAt_Delete -} - -type CategoriesDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type CategoriesDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type CategoriesDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type CategoriesDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type CategoriesCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -type CategoriesReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type CategoriesUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type CategoriesDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type User { - id: String - name: String - roles: [User_roles!] - updatedAt: DateTime - createdAt: DateTime - email: EmailAddress! - resetPasswordToken: String - resetPasswordExpiration: DateTime - salt: String - hash: String - loginAttempts: Float - lockUntil: DateTime - password: String! -} - -enum User_roles { - admin - user -} - -""" -A field whose value conforms to the standard internet email address format as specified in HTML Spec: https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address. -""" -scalar EmailAddress @specifiedBy(url: "https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address") - -type Users { - docs: [User] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input User_where { - name: User_name_operator - roles: User_roles_operator - updatedAt: User_updatedAt_operator - createdAt: User_createdAt_operator - email: User_email_operator - id: User_id_operator - AND: [User_where_and] - OR: [User_where_or] -} - -input User_name_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input User_roles_operator { - equals: User_roles_Input - not_equals: User_roles_Input - in: [User_roles_Input] - not_in: [User_roles_Input] - all: [User_roles_Input] - exists: Boolean -} - -enum User_roles_Input { - admin - user -} - -input User_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input User_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input User_email_operator { - equals: EmailAddress - not_equals: EmailAddress - like: EmailAddress - contains: EmailAddress - in: [EmailAddress] - not_in: [EmailAddress] - all: [EmailAddress] -} - -input User_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input User_where_and { - name: User_name_operator - roles: User_roles_operator - updatedAt: User_updatedAt_operator - createdAt: User_createdAt_operator - email: User_email_operator - id: User_id_operator - AND: [User_where_and] - OR: [User_where_or] -} - -input User_where_or { - name: User_name_operator - roles: User_roles_operator - updatedAt: User_updatedAt_operator - createdAt: User_createdAt_operator - email: User_email_operator - id: User_id_operator - AND: [User_where_and] - OR: [User_where_or] -} - -type countUsers { - totalDocs: Int -} - -type usersDocAccess { - fields: UsersDocAccessFields - create: UsersCreateDocAccess - read: UsersReadDocAccess - update: UsersUpdateDocAccess - delete: UsersDeleteDocAccess - unlock: UsersUnlockDocAccess -} - -type UsersDocAccessFields { - name: UsersDocAccessFields_name - roles: UsersDocAccessFields_roles - updatedAt: UsersDocAccessFields_updatedAt - createdAt: UsersDocAccessFields_createdAt - email: UsersDocAccessFields_email - password: UsersDocAccessFields_password -} - -type UsersDocAccessFields_name { - create: UsersDocAccessFields_name_Create - read: UsersDocAccessFields_name_Read - update: UsersDocAccessFields_name_Update - delete: UsersDocAccessFields_name_Delete -} - -type UsersDocAccessFields_name_Create { - permission: Boolean! -} - -type UsersDocAccessFields_name_Read { - permission: Boolean! -} - -type UsersDocAccessFields_name_Update { - permission: Boolean! -} - -type UsersDocAccessFields_name_Delete { - permission: Boolean! -} - -type UsersDocAccessFields_roles { - create: UsersDocAccessFields_roles_Create - read: UsersDocAccessFields_roles_Read - update: UsersDocAccessFields_roles_Update - delete: UsersDocAccessFields_roles_Delete -} - -type UsersDocAccessFields_roles_Create { - permission: Boolean! -} - -type UsersDocAccessFields_roles_Read { - permission: Boolean! -} - -type UsersDocAccessFields_roles_Update { - permission: Boolean! -} - -type UsersDocAccessFields_roles_Delete { - permission: Boolean! -} - -type UsersDocAccessFields_updatedAt { - create: UsersDocAccessFields_updatedAt_Create - read: UsersDocAccessFields_updatedAt_Read - update: UsersDocAccessFields_updatedAt_Update - delete: UsersDocAccessFields_updatedAt_Delete -} - -type UsersDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type UsersDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type UsersDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type UsersDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type UsersDocAccessFields_createdAt { - create: UsersDocAccessFields_createdAt_Create - read: UsersDocAccessFields_createdAt_Read - update: UsersDocAccessFields_createdAt_Update - delete: UsersDocAccessFields_createdAt_Delete -} - -type UsersDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type UsersDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type UsersDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type UsersDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type UsersDocAccessFields_email { - create: UsersDocAccessFields_email_Create - read: UsersDocAccessFields_email_Read - update: UsersDocAccessFields_email_Update - delete: UsersDocAccessFields_email_Delete -} - -type UsersDocAccessFields_email_Create { - permission: Boolean! -} - -type UsersDocAccessFields_email_Read { - permission: Boolean! -} - -type UsersDocAccessFields_email_Update { - permission: Boolean! -} - -type UsersDocAccessFields_email_Delete { - permission: Boolean! -} - -type UsersDocAccessFields_password { - create: UsersDocAccessFields_password_Create - read: UsersDocAccessFields_password_Read - update: UsersDocAccessFields_password_Update - delete: UsersDocAccessFields_password_Delete -} - -type UsersDocAccessFields_password_Create { - permission: Boolean! -} - -type UsersDocAccessFields_password_Read { - permission: Boolean! -} - -type UsersDocAccessFields_password_Update { - permission: Boolean! -} - -type UsersDocAccessFields_password_Delete { - permission: Boolean! -} - -type UsersCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -type UsersReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type UsersUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type UsersDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type UsersUnlockDocAccess { - permission: Boolean! - where: JSONObject -} - -type usersMe { - collection: String - exp: Int - strategy: String - token: String - user: User -} - -type Author { - id: String - featuredImage(where: Author_FeaturedImage_where): Media - name: String - role: Author_role - bio: String - linkedIn: String - x: String - gitHub: String - medium: String - publishedAt: DateTime - slug: String - updatedAt: DateTime - createdAt: DateTime - _status: Author__status -} - -input Author_FeaturedImage_where { - alt: Author_FeaturedImage_alt_operator - caption: Author_FeaturedImage_caption_operator - updatedAt: Author_FeaturedImage_updatedAt_operator - createdAt: Author_FeaturedImage_createdAt_operator - url: Author_FeaturedImage_url_operator - filename: Author_FeaturedImage_filename_operator - mimeType: Author_FeaturedImage_mimeType_operator - filesize: Author_FeaturedImage_filesize_operator - width: Author_FeaturedImage_width_operator - height: Author_FeaturedImage_height_operator - focalX: Author_FeaturedImage_focalX_operator - focalY: Author_FeaturedImage_focalY_operator - id: Author_FeaturedImage_id_operator - AND: [Author_FeaturedImage_where_and] - OR: [Author_FeaturedImage_where_or] -} - -input Author_FeaturedImage_alt_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input Author_FeaturedImage_caption_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON - exists: Boolean -} - -input Author_FeaturedImage_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Author_FeaturedImage_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Author_FeaturedImage_url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Author_FeaturedImage_filename_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Author_FeaturedImage_mimeType_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Author_FeaturedImage_filesize_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Author_FeaturedImage_width_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Author_FeaturedImage_height_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Author_FeaturedImage_focalX_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Author_FeaturedImage_focalY_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Author_FeaturedImage_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Author_FeaturedImage_where_and { - alt: Author_FeaturedImage_alt_operator - caption: Author_FeaturedImage_caption_operator - updatedAt: Author_FeaturedImage_updatedAt_operator - createdAt: Author_FeaturedImage_createdAt_operator - url: Author_FeaturedImage_url_operator - filename: Author_FeaturedImage_filename_operator - mimeType: Author_FeaturedImage_mimeType_operator - filesize: Author_FeaturedImage_filesize_operator - width: Author_FeaturedImage_width_operator - height: Author_FeaturedImage_height_operator - focalX: Author_FeaturedImage_focalX_operator - focalY: Author_FeaturedImage_focalY_operator - id: Author_FeaturedImage_id_operator - AND: [Author_FeaturedImage_where_and] - OR: [Author_FeaturedImage_where_or] -} - -input Author_FeaturedImage_where_or { - alt: Author_FeaturedImage_alt_operator - caption: Author_FeaturedImage_caption_operator - updatedAt: Author_FeaturedImage_updatedAt_operator - createdAt: Author_FeaturedImage_createdAt_operator - url: Author_FeaturedImage_url_operator - filename: Author_FeaturedImage_filename_operator - mimeType: Author_FeaturedImage_mimeType_operator - filesize: Author_FeaturedImage_filesize_operator - width: Author_FeaturedImage_width_operator - height: Author_FeaturedImage_height_operator - focalX: Author_FeaturedImage_focalX_operator - focalY: Author_FeaturedImage_focalY_operator - id: Author_FeaturedImage_id_operator - AND: [Author_FeaturedImage_where_and] - OR: [Author_FeaturedImage_where_or] -} - -enum Author_role { - developer - product_manager - designer -} - -enum Author__status { - draft - published -} - -type Authors { - docs: [Author] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input Author_where { - featuredImage: Author_featuredImage_operator - name: Author_name_operator - role: Author_role_operator - bio: Author_bio_operator - linkedIn: Author_linkedIn_operator - x: Author_x_operator - gitHub: Author_gitHub_operator - medium: Author_medium_operator - publishedAt: Author_publishedAt_operator - slug: Author_slug_operator - updatedAt: Author_updatedAt_operator - createdAt: Author_createdAt_operator - _status: Author__status_operator - id: Author_id_operator - AND: [Author_where_and] - OR: [Author_where_or] -} - -input Author_featuredImage_operator { - equals: String - not_equals: String -} - -input Author_name_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input Author_role_operator { - equals: Author_role_Input - not_equals: Author_role_Input - in: [Author_role_Input] - not_in: [Author_role_Input] - all: [Author_role_Input] -} - -enum Author_role_Input { - developer - product_manager - designer -} - -input Author_bio_operator { - equals: String - not_equals: String - like: String - contains: String -} - -input Author_linkedIn_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Author_x_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Author_gitHub_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Author_medium_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Author_publishedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Author_slug_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Author_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Author_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Author__status_operator { - equals: Author__status_Input - not_equals: Author__status_Input - in: [Author__status_Input] - not_in: [Author__status_Input] - all: [Author__status_Input] - exists: Boolean -} - -enum Author__status_Input { - draft - published -} - -input Author_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Author_where_and { - featuredImage: Author_featuredImage_operator - name: Author_name_operator - role: Author_role_operator - bio: Author_bio_operator - linkedIn: Author_linkedIn_operator - x: Author_x_operator - gitHub: Author_gitHub_operator - medium: Author_medium_operator - publishedAt: Author_publishedAt_operator - slug: Author_slug_operator - updatedAt: Author_updatedAt_operator - createdAt: Author_createdAt_operator - _status: Author__status_operator - id: Author_id_operator - AND: [Author_where_and] - OR: [Author_where_or] -} - -input Author_where_or { - featuredImage: Author_featuredImage_operator - name: Author_name_operator - role: Author_role_operator - bio: Author_bio_operator - linkedIn: Author_linkedIn_operator - x: Author_x_operator - gitHub: Author_gitHub_operator - medium: Author_medium_operator - publishedAt: Author_publishedAt_operator - slug: Author_slug_operator - updatedAt: Author_updatedAt_operator - createdAt: Author_createdAt_operator - _status: Author__status_operator - id: Author_id_operator - AND: [Author_where_and] - OR: [Author_where_or] -} - -type countAuthors { - totalDocs: Int -} - -type authorsDocAccess { - fields: AuthorsDocAccessFields - create: AuthorsCreateDocAccess - read: AuthorsReadDocAccess - update: AuthorsUpdateDocAccess - delete: AuthorsDeleteDocAccess - readVersions: AuthorsReadVersionsDocAccess -} - -type AuthorsDocAccessFields { - featuredImage: AuthorsDocAccessFields_featuredImage - name: AuthorsDocAccessFields_name - role: AuthorsDocAccessFields_role - bio: AuthorsDocAccessFields_bio - linkedIn: AuthorsDocAccessFields_linkedIn - x: AuthorsDocAccessFields_x - gitHub: AuthorsDocAccessFields_gitHub - medium: AuthorsDocAccessFields_medium - publishedAt: AuthorsDocAccessFields_publishedAt - slug: AuthorsDocAccessFields_slug - updatedAt: AuthorsDocAccessFields_updatedAt - createdAt: AuthorsDocAccessFields_createdAt - _status: AuthorsDocAccessFields__status -} - -type AuthorsDocAccessFields_featuredImage { - create: AuthorsDocAccessFields_featuredImage_Create - read: AuthorsDocAccessFields_featuredImage_Read - update: AuthorsDocAccessFields_featuredImage_Update - delete: AuthorsDocAccessFields_featuredImage_Delete -} - -type AuthorsDocAccessFields_featuredImage_Create { - permission: Boolean! -} - -type AuthorsDocAccessFields_featuredImage_Read { - permission: Boolean! -} - -type AuthorsDocAccessFields_featuredImage_Update { - permission: Boolean! -} - -type AuthorsDocAccessFields_featuredImage_Delete { - permission: Boolean! -} - -type AuthorsDocAccessFields_name { - create: AuthorsDocAccessFields_name_Create - read: AuthorsDocAccessFields_name_Read - update: AuthorsDocAccessFields_name_Update - delete: AuthorsDocAccessFields_name_Delete -} - -type AuthorsDocAccessFields_name_Create { - permission: Boolean! -} - -type AuthorsDocAccessFields_name_Read { - permission: Boolean! -} - -type AuthorsDocAccessFields_name_Update { - permission: Boolean! -} - -type AuthorsDocAccessFields_name_Delete { - permission: Boolean! -} - -type AuthorsDocAccessFields_role { - create: AuthorsDocAccessFields_role_Create - read: AuthorsDocAccessFields_role_Read - update: AuthorsDocAccessFields_role_Update - delete: AuthorsDocAccessFields_role_Delete -} - -type AuthorsDocAccessFields_role_Create { - permission: Boolean! -} - -type AuthorsDocAccessFields_role_Read { - permission: Boolean! -} - -type AuthorsDocAccessFields_role_Update { - permission: Boolean! -} - -type AuthorsDocAccessFields_role_Delete { - permission: Boolean! -} - -type AuthorsDocAccessFields_bio { - create: AuthorsDocAccessFields_bio_Create - read: AuthorsDocAccessFields_bio_Read - update: AuthorsDocAccessFields_bio_Update - delete: AuthorsDocAccessFields_bio_Delete -} - -type AuthorsDocAccessFields_bio_Create { - permission: Boolean! -} - -type AuthorsDocAccessFields_bio_Read { - permission: Boolean! -} - -type AuthorsDocAccessFields_bio_Update { - permission: Boolean! -} - -type AuthorsDocAccessFields_bio_Delete { - permission: Boolean! -} - -type AuthorsDocAccessFields_linkedIn { - create: AuthorsDocAccessFields_linkedIn_Create - read: AuthorsDocAccessFields_linkedIn_Read - update: AuthorsDocAccessFields_linkedIn_Update - delete: AuthorsDocAccessFields_linkedIn_Delete -} - -type AuthorsDocAccessFields_linkedIn_Create { - permission: Boolean! -} - -type AuthorsDocAccessFields_linkedIn_Read { - permission: Boolean! -} - -type AuthorsDocAccessFields_linkedIn_Update { - permission: Boolean! -} - -type AuthorsDocAccessFields_linkedIn_Delete { - permission: Boolean! -} - -type AuthorsDocAccessFields_x { - create: AuthorsDocAccessFields_x_Create - read: AuthorsDocAccessFields_x_Read - update: AuthorsDocAccessFields_x_Update - delete: AuthorsDocAccessFields_x_Delete -} - -type AuthorsDocAccessFields_x_Create { - permission: Boolean! -} - -type AuthorsDocAccessFields_x_Read { - permission: Boolean! -} - -type AuthorsDocAccessFields_x_Update { - permission: Boolean! -} - -type AuthorsDocAccessFields_x_Delete { - permission: Boolean! -} - -type AuthorsDocAccessFields_gitHub { - create: AuthorsDocAccessFields_gitHub_Create - read: AuthorsDocAccessFields_gitHub_Read - update: AuthorsDocAccessFields_gitHub_Update - delete: AuthorsDocAccessFields_gitHub_Delete -} - -type AuthorsDocAccessFields_gitHub_Create { - permission: Boolean! -} - -type AuthorsDocAccessFields_gitHub_Read { - permission: Boolean! -} - -type AuthorsDocAccessFields_gitHub_Update { - permission: Boolean! -} - -type AuthorsDocAccessFields_gitHub_Delete { - permission: Boolean! -} - -type AuthorsDocAccessFields_medium { - create: AuthorsDocAccessFields_medium_Create - read: AuthorsDocAccessFields_medium_Read - update: AuthorsDocAccessFields_medium_Update - delete: AuthorsDocAccessFields_medium_Delete -} - -type AuthorsDocAccessFields_medium_Create { - permission: Boolean! -} - -type AuthorsDocAccessFields_medium_Read { - permission: Boolean! -} - -type AuthorsDocAccessFields_medium_Update { - permission: Boolean! -} - -type AuthorsDocAccessFields_medium_Delete { - permission: Boolean! -} - -type AuthorsDocAccessFields_publishedAt { - create: AuthorsDocAccessFields_publishedAt_Create - read: AuthorsDocAccessFields_publishedAt_Read - update: AuthorsDocAccessFields_publishedAt_Update - delete: AuthorsDocAccessFields_publishedAt_Delete -} - -type AuthorsDocAccessFields_publishedAt_Create { - permission: Boolean! -} - -type AuthorsDocAccessFields_publishedAt_Read { - permission: Boolean! -} - -type AuthorsDocAccessFields_publishedAt_Update { - permission: Boolean! -} - -type AuthorsDocAccessFields_publishedAt_Delete { - permission: Boolean! -} - -type AuthorsDocAccessFields_slug { - create: AuthorsDocAccessFields_slug_Create - read: AuthorsDocAccessFields_slug_Read - update: AuthorsDocAccessFields_slug_Update - delete: AuthorsDocAccessFields_slug_Delete -} - -type AuthorsDocAccessFields_slug_Create { - permission: Boolean! -} - -type AuthorsDocAccessFields_slug_Read { - permission: Boolean! -} - -type AuthorsDocAccessFields_slug_Update { - permission: Boolean! -} - -type AuthorsDocAccessFields_slug_Delete { - permission: Boolean! -} - -type AuthorsDocAccessFields_updatedAt { - create: AuthorsDocAccessFields_updatedAt_Create - read: AuthorsDocAccessFields_updatedAt_Read - update: AuthorsDocAccessFields_updatedAt_Update - delete: AuthorsDocAccessFields_updatedAt_Delete -} - -type AuthorsDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type AuthorsDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type AuthorsDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type AuthorsDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type AuthorsDocAccessFields_createdAt { - create: AuthorsDocAccessFields_createdAt_Create - read: AuthorsDocAccessFields_createdAt_Read - update: AuthorsDocAccessFields_createdAt_Update - delete: AuthorsDocAccessFields_createdAt_Delete -} - -type AuthorsDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type AuthorsDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type AuthorsDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type AuthorsDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type AuthorsDocAccessFields__status { - create: AuthorsDocAccessFields__status_Create - read: AuthorsDocAccessFields__status_Read - update: AuthorsDocAccessFields__status_Update - delete: AuthorsDocAccessFields__status_Delete -} - -type AuthorsDocAccessFields__status_Create { - permission: Boolean! -} - -type AuthorsDocAccessFields__status_Read { - permission: Boolean! -} - -type AuthorsDocAccessFields__status_Update { - permission: Boolean! -} - -type AuthorsDocAccessFields__status_Delete { - permission: Boolean! -} - -type AuthorsCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -type AuthorsReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type AuthorsUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type AuthorsDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type AuthorsReadVersionsDocAccess { - permission: Boolean! - where: JSONObject -} - -type AuthorVersion { - parent(draft: Boolean): Author - version: AuthorVersion_Version - createdAt: DateTime - updatedAt: DateTime - latest: Boolean - id: String -} - -type AuthorVersion_Version { - featuredImage(where: AuthorVersion_Version_FeaturedImage_where): Media - name: String - role: AuthorVersion_Version_role - bio: String - linkedIn: String - x: String - gitHub: String - medium: String - publishedAt: DateTime - slug: String - updatedAt: DateTime - createdAt: DateTime - _status: AuthorVersion_Version__status -} - -input AuthorVersion_Version_FeaturedImage_where { - alt: AuthorVersion_Version_FeaturedImage_alt_operator - caption: AuthorVersion_Version_FeaturedImage_caption_operator - updatedAt: AuthorVersion_Version_FeaturedImage_updatedAt_operator - createdAt: AuthorVersion_Version_FeaturedImage_createdAt_operator - url: AuthorVersion_Version_FeaturedImage_url_operator - filename: AuthorVersion_Version_FeaturedImage_filename_operator - mimeType: AuthorVersion_Version_FeaturedImage_mimeType_operator - filesize: AuthorVersion_Version_FeaturedImage_filesize_operator - width: AuthorVersion_Version_FeaturedImage_width_operator - height: AuthorVersion_Version_FeaturedImage_height_operator - focalX: AuthorVersion_Version_FeaturedImage_focalX_operator - focalY: AuthorVersion_Version_FeaturedImage_focalY_operator - id: AuthorVersion_Version_FeaturedImage_id_operator - AND: [AuthorVersion_Version_FeaturedImage_where_and] - OR: [AuthorVersion_Version_FeaturedImage_where_or] -} - -input AuthorVersion_Version_FeaturedImage_alt_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input AuthorVersion_Version_FeaturedImage_caption_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON - exists: Boolean -} - -input AuthorVersion_Version_FeaturedImage_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input AuthorVersion_Version_FeaturedImage_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input AuthorVersion_Version_FeaturedImage_url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input AuthorVersion_Version_FeaturedImage_filename_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input AuthorVersion_Version_FeaturedImage_mimeType_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input AuthorVersion_Version_FeaturedImage_filesize_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input AuthorVersion_Version_FeaturedImage_width_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input AuthorVersion_Version_FeaturedImage_height_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input AuthorVersion_Version_FeaturedImage_focalX_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input AuthorVersion_Version_FeaturedImage_focalY_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input AuthorVersion_Version_FeaturedImage_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input AuthorVersion_Version_FeaturedImage_where_and { - alt: AuthorVersion_Version_FeaturedImage_alt_operator - caption: AuthorVersion_Version_FeaturedImage_caption_operator - updatedAt: AuthorVersion_Version_FeaturedImage_updatedAt_operator - createdAt: AuthorVersion_Version_FeaturedImage_createdAt_operator - url: AuthorVersion_Version_FeaturedImage_url_operator - filename: AuthorVersion_Version_FeaturedImage_filename_operator - mimeType: AuthorVersion_Version_FeaturedImage_mimeType_operator - filesize: AuthorVersion_Version_FeaturedImage_filesize_operator - width: AuthorVersion_Version_FeaturedImage_width_operator - height: AuthorVersion_Version_FeaturedImage_height_operator - focalX: AuthorVersion_Version_FeaturedImage_focalX_operator - focalY: AuthorVersion_Version_FeaturedImage_focalY_operator - id: AuthorVersion_Version_FeaturedImage_id_operator - AND: [AuthorVersion_Version_FeaturedImage_where_and] - OR: [AuthorVersion_Version_FeaturedImage_where_or] -} - -input AuthorVersion_Version_FeaturedImage_where_or { - alt: AuthorVersion_Version_FeaturedImage_alt_operator - caption: AuthorVersion_Version_FeaturedImage_caption_operator - updatedAt: AuthorVersion_Version_FeaturedImage_updatedAt_operator - createdAt: AuthorVersion_Version_FeaturedImage_createdAt_operator - url: AuthorVersion_Version_FeaturedImage_url_operator - filename: AuthorVersion_Version_FeaturedImage_filename_operator - mimeType: AuthorVersion_Version_FeaturedImage_mimeType_operator - filesize: AuthorVersion_Version_FeaturedImage_filesize_operator - width: AuthorVersion_Version_FeaturedImage_width_operator - height: AuthorVersion_Version_FeaturedImage_height_operator - focalX: AuthorVersion_Version_FeaturedImage_focalX_operator - focalY: AuthorVersion_Version_FeaturedImage_focalY_operator - id: AuthorVersion_Version_FeaturedImage_id_operator - AND: [AuthorVersion_Version_FeaturedImage_where_and] - OR: [AuthorVersion_Version_FeaturedImage_where_or] -} - -enum AuthorVersion_Version_role { - developer - product_manager - designer -} - -enum AuthorVersion_Version__status { - draft - published -} - -type versionsAuthors { - docs: [AuthorVersion] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input versionsAuthor_where { - parent: versionsAuthor_parent_operator - version__featuredImage: versionsAuthor_version__featuredImage_operator - version__name: versionsAuthor_version__name_operator - version__role: versionsAuthor_version__role_operator - version__bio: versionsAuthor_version__bio_operator - version__linkedIn: versionsAuthor_version__linkedIn_operator - version__x: versionsAuthor_version__x_operator - version__gitHub: versionsAuthor_version__gitHub_operator - version__medium: versionsAuthor_version__medium_operator - version__publishedAt: versionsAuthor_version__publishedAt_operator - version__slug: versionsAuthor_version__slug_operator - version__updatedAt: versionsAuthor_version__updatedAt_operator - version__createdAt: versionsAuthor_version__createdAt_operator - version___status: versionsAuthor_version___status_operator - createdAt: versionsAuthor_createdAt_operator - updatedAt: versionsAuthor_updatedAt_operator - latest: versionsAuthor_latest_operator - id: versionsAuthor_id_operator - AND: [versionsAuthor_where_and] - OR: [versionsAuthor_where_or] -} - -input versionsAuthor_parent_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsAuthor_version__featuredImage_operator { - equals: String - not_equals: String -} - -input versionsAuthor_version__name_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input versionsAuthor_version__role_operator { - equals: versionsAuthor_version__role_Input - not_equals: versionsAuthor_version__role_Input - in: [versionsAuthor_version__role_Input] - not_in: [versionsAuthor_version__role_Input] - all: [versionsAuthor_version__role_Input] -} - -enum versionsAuthor_version__role_Input { - developer - product_manager - designer -} - -input versionsAuthor_version__bio_operator { - equals: String - not_equals: String - like: String - contains: String -} - -input versionsAuthor_version__linkedIn_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsAuthor_version__x_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsAuthor_version__gitHub_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsAuthor_version__medium_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsAuthor_version__publishedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsAuthor_version__slug_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsAuthor_version__updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsAuthor_version__createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsAuthor_version___status_operator { - equals: versionsAuthor_version___status_Input - not_equals: versionsAuthor_version___status_Input - in: [versionsAuthor_version___status_Input] - not_in: [versionsAuthor_version___status_Input] - all: [versionsAuthor_version___status_Input] - exists: Boolean -} - -enum versionsAuthor_version___status_Input { - draft - published -} - -input versionsAuthor_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsAuthor_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsAuthor_latest_operator { - equals: Boolean - not_equals: Boolean - exists: Boolean -} - -input versionsAuthor_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsAuthor_where_and { - parent: versionsAuthor_parent_operator - version__featuredImage: versionsAuthor_version__featuredImage_operator - version__name: versionsAuthor_version__name_operator - version__role: versionsAuthor_version__role_operator - version__bio: versionsAuthor_version__bio_operator - version__linkedIn: versionsAuthor_version__linkedIn_operator - version__x: versionsAuthor_version__x_operator - version__gitHub: versionsAuthor_version__gitHub_operator - version__medium: versionsAuthor_version__medium_operator - version__publishedAt: versionsAuthor_version__publishedAt_operator - version__slug: versionsAuthor_version__slug_operator - version__updatedAt: versionsAuthor_version__updatedAt_operator - version__createdAt: versionsAuthor_version__createdAt_operator - version___status: versionsAuthor_version___status_operator - createdAt: versionsAuthor_createdAt_operator - updatedAt: versionsAuthor_updatedAt_operator - latest: versionsAuthor_latest_operator - id: versionsAuthor_id_operator - AND: [versionsAuthor_where_and] - OR: [versionsAuthor_where_or] -} - -input versionsAuthor_where_or { - parent: versionsAuthor_parent_operator - version__featuredImage: versionsAuthor_version__featuredImage_operator - version__name: versionsAuthor_version__name_operator - version__role: versionsAuthor_version__role_operator - version__bio: versionsAuthor_version__bio_operator - version__linkedIn: versionsAuthor_version__linkedIn_operator - version__x: versionsAuthor_version__x_operator - version__gitHub: versionsAuthor_version__gitHub_operator - version__medium: versionsAuthor_version__medium_operator - version__publishedAt: versionsAuthor_version__publishedAt_operator - version__slug: versionsAuthor_version__slug_operator - version__updatedAt: versionsAuthor_version__updatedAt_operator - version__createdAt: versionsAuthor_version__createdAt_operator - version___status: versionsAuthor_version___status_operator - createdAt: versionsAuthor_createdAt_operator - updatedAt: versionsAuthor_updatedAt_operator - latest: versionsAuthor_latest_operator - id: versionsAuthor_id_operator - AND: [versionsAuthor_where_and] - OR: [versionsAuthor_where_or] -} - -type PodcastEpisode { - id: String - title: String - summary: String - notes: String - featuredImage(where: PodcastEpisode_FeaturedImage_where): Media - episodeFile(where: PodcastEpisode_EpisodeFile_where): Media - spotify: String - apple: String - authors(draft: Boolean): [Author!] - categories: [Category!] - relatedEpisodes(draft: Boolean): [PodcastEpisode!] - publishedAt: DateTime - slug: String - updatedAt: DateTime - createdAt: DateTime - _status: PodcastEpisode__status -} - -input PodcastEpisode_FeaturedImage_where { - alt: PodcastEpisode_FeaturedImage_alt_operator - caption: PodcastEpisode_FeaturedImage_caption_operator - updatedAt: PodcastEpisode_FeaturedImage_updatedAt_operator - createdAt: PodcastEpisode_FeaturedImage_createdAt_operator - url: PodcastEpisode_FeaturedImage_url_operator - filename: PodcastEpisode_FeaturedImage_filename_operator - mimeType: PodcastEpisode_FeaturedImage_mimeType_operator - filesize: PodcastEpisode_FeaturedImage_filesize_operator - width: PodcastEpisode_FeaturedImage_width_operator - height: PodcastEpisode_FeaturedImage_height_operator - focalX: PodcastEpisode_FeaturedImage_focalX_operator - focalY: PodcastEpisode_FeaturedImage_focalY_operator - id: PodcastEpisode_FeaturedImage_id_operator - AND: [PodcastEpisode_FeaturedImage_where_and] - OR: [PodcastEpisode_FeaturedImage_where_or] -} - -input PodcastEpisode_FeaturedImage_alt_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input PodcastEpisode_FeaturedImage_caption_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON - exists: Boolean -} - -input PodcastEpisode_FeaturedImage_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PodcastEpisode_FeaturedImage_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PodcastEpisode_FeaturedImage_url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisode_FeaturedImage_filename_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisode_FeaturedImage_mimeType_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisode_FeaturedImage_filesize_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisode_FeaturedImage_width_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisode_FeaturedImage_height_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisode_FeaturedImage_focalX_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisode_FeaturedImage_focalY_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisode_FeaturedImage_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisode_FeaturedImage_where_and { - alt: PodcastEpisode_FeaturedImage_alt_operator - caption: PodcastEpisode_FeaturedImage_caption_operator - updatedAt: PodcastEpisode_FeaturedImage_updatedAt_operator - createdAt: PodcastEpisode_FeaturedImage_createdAt_operator - url: PodcastEpisode_FeaturedImage_url_operator - filename: PodcastEpisode_FeaturedImage_filename_operator - mimeType: PodcastEpisode_FeaturedImage_mimeType_operator - filesize: PodcastEpisode_FeaturedImage_filesize_operator - width: PodcastEpisode_FeaturedImage_width_operator - height: PodcastEpisode_FeaturedImage_height_operator - focalX: PodcastEpisode_FeaturedImage_focalX_operator - focalY: PodcastEpisode_FeaturedImage_focalY_operator - id: PodcastEpisode_FeaturedImage_id_operator - AND: [PodcastEpisode_FeaturedImage_where_and] - OR: [PodcastEpisode_FeaturedImage_where_or] -} - -input PodcastEpisode_FeaturedImage_where_or { - alt: PodcastEpisode_FeaturedImage_alt_operator - caption: PodcastEpisode_FeaturedImage_caption_operator - updatedAt: PodcastEpisode_FeaturedImage_updatedAt_operator - createdAt: PodcastEpisode_FeaturedImage_createdAt_operator - url: PodcastEpisode_FeaturedImage_url_operator - filename: PodcastEpisode_FeaturedImage_filename_operator - mimeType: PodcastEpisode_FeaturedImage_mimeType_operator - filesize: PodcastEpisode_FeaturedImage_filesize_operator - width: PodcastEpisode_FeaturedImage_width_operator - height: PodcastEpisode_FeaturedImage_height_operator - focalX: PodcastEpisode_FeaturedImage_focalX_operator - focalY: PodcastEpisode_FeaturedImage_focalY_operator - id: PodcastEpisode_FeaturedImage_id_operator - AND: [PodcastEpisode_FeaturedImage_where_and] - OR: [PodcastEpisode_FeaturedImage_where_or] -} - -input PodcastEpisode_EpisodeFile_where { - alt: PodcastEpisode_EpisodeFile_alt_operator - caption: PodcastEpisode_EpisodeFile_caption_operator - updatedAt: PodcastEpisode_EpisodeFile_updatedAt_operator - createdAt: PodcastEpisode_EpisodeFile_createdAt_operator - url: PodcastEpisode_EpisodeFile_url_operator - filename: PodcastEpisode_EpisodeFile_filename_operator - mimeType: PodcastEpisode_EpisodeFile_mimeType_operator - filesize: PodcastEpisode_EpisodeFile_filesize_operator - width: PodcastEpisode_EpisodeFile_width_operator - height: PodcastEpisode_EpisodeFile_height_operator - focalX: PodcastEpisode_EpisodeFile_focalX_operator - focalY: PodcastEpisode_EpisodeFile_focalY_operator - id: PodcastEpisode_EpisodeFile_id_operator - AND: [PodcastEpisode_EpisodeFile_where_and] - OR: [PodcastEpisode_EpisodeFile_where_or] -} - -input PodcastEpisode_EpisodeFile_alt_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input PodcastEpisode_EpisodeFile_caption_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON - exists: Boolean -} - -input PodcastEpisode_EpisodeFile_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PodcastEpisode_EpisodeFile_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PodcastEpisode_EpisodeFile_url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisode_EpisodeFile_filename_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisode_EpisodeFile_mimeType_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisode_EpisodeFile_filesize_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisode_EpisodeFile_width_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisode_EpisodeFile_height_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisode_EpisodeFile_focalX_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisode_EpisodeFile_focalY_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisode_EpisodeFile_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisode_EpisodeFile_where_and { - alt: PodcastEpisode_EpisodeFile_alt_operator - caption: PodcastEpisode_EpisodeFile_caption_operator - updatedAt: PodcastEpisode_EpisodeFile_updatedAt_operator - createdAt: PodcastEpisode_EpisodeFile_createdAt_operator - url: PodcastEpisode_EpisodeFile_url_operator - filename: PodcastEpisode_EpisodeFile_filename_operator - mimeType: PodcastEpisode_EpisodeFile_mimeType_operator - filesize: PodcastEpisode_EpisodeFile_filesize_operator - width: PodcastEpisode_EpisodeFile_width_operator - height: PodcastEpisode_EpisodeFile_height_operator - focalX: PodcastEpisode_EpisodeFile_focalX_operator - focalY: PodcastEpisode_EpisodeFile_focalY_operator - id: PodcastEpisode_EpisodeFile_id_operator - AND: [PodcastEpisode_EpisodeFile_where_and] - OR: [PodcastEpisode_EpisodeFile_where_or] -} - -input PodcastEpisode_EpisodeFile_where_or { - alt: PodcastEpisode_EpisodeFile_alt_operator - caption: PodcastEpisode_EpisodeFile_caption_operator - updatedAt: PodcastEpisode_EpisodeFile_updatedAt_operator - createdAt: PodcastEpisode_EpisodeFile_createdAt_operator - url: PodcastEpisode_EpisodeFile_url_operator - filename: PodcastEpisode_EpisodeFile_filename_operator - mimeType: PodcastEpisode_EpisodeFile_mimeType_operator - filesize: PodcastEpisode_EpisodeFile_filesize_operator - width: PodcastEpisode_EpisodeFile_width_operator - height: PodcastEpisode_EpisodeFile_height_operator - focalX: PodcastEpisode_EpisodeFile_focalX_operator - focalY: PodcastEpisode_EpisodeFile_focalY_operator - id: PodcastEpisode_EpisodeFile_id_operator - AND: [PodcastEpisode_EpisodeFile_where_and] - OR: [PodcastEpisode_EpisodeFile_where_or] -} - -enum PodcastEpisode__status { - draft - published -} - -type PodcastEpisodes { - docs: [PodcastEpisode] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input PodcastEpisode_where { - title: PodcastEpisode_title_operator - summary: PodcastEpisode_summary_operator - notes: PodcastEpisode_notes_operator - featuredImage: PodcastEpisode_featuredImage_operator - episodeFile: PodcastEpisode_episodeFile_operator - spotify: PodcastEpisode_spotify_operator - apple: PodcastEpisode_apple_operator - authors: PodcastEpisode_authors_operator - categories: PodcastEpisode_categories_operator - relatedEpisodes: PodcastEpisode_relatedEpisodes_operator - publishedAt: PodcastEpisode_publishedAt_operator - slug: PodcastEpisode_slug_operator - updatedAt: PodcastEpisode_updatedAt_operator - createdAt: PodcastEpisode_createdAt_operator - _status: PodcastEpisode__status_operator - id: PodcastEpisode_id_operator - AND: [PodcastEpisode_where_and] - OR: [PodcastEpisode_where_or] -} - -input PodcastEpisode_title_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input PodcastEpisode_summary_operator { - equals: String - not_equals: String - like: String - contains: String -} - -input PodcastEpisode_notes_operator { - equals: String - not_equals: String - like: String - contains: String -} - -input PodcastEpisode_featuredImage_operator { - equals: String - not_equals: String -} - -input PodcastEpisode_episodeFile_operator { - equals: String - not_equals: String -} - -input PodcastEpisode_spotify_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisode_apple_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisode_authors_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input PodcastEpisode_categories_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input PodcastEpisode_relatedEpisodes_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input PodcastEpisode_publishedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PodcastEpisode_slug_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisode_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PodcastEpisode_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PodcastEpisode__status_operator { - equals: PodcastEpisode__status_Input - not_equals: PodcastEpisode__status_Input - in: [PodcastEpisode__status_Input] - not_in: [PodcastEpisode__status_Input] - all: [PodcastEpisode__status_Input] - exists: Boolean -} - -enum PodcastEpisode__status_Input { - draft - published -} - -input PodcastEpisode_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisode_where_and { - title: PodcastEpisode_title_operator - summary: PodcastEpisode_summary_operator - notes: PodcastEpisode_notes_operator - featuredImage: PodcastEpisode_featuredImage_operator - episodeFile: PodcastEpisode_episodeFile_operator - spotify: PodcastEpisode_spotify_operator - apple: PodcastEpisode_apple_operator - authors: PodcastEpisode_authors_operator - categories: PodcastEpisode_categories_operator - relatedEpisodes: PodcastEpisode_relatedEpisodes_operator - publishedAt: PodcastEpisode_publishedAt_operator - slug: PodcastEpisode_slug_operator - updatedAt: PodcastEpisode_updatedAt_operator - createdAt: PodcastEpisode_createdAt_operator - _status: PodcastEpisode__status_operator - id: PodcastEpisode_id_operator - AND: [PodcastEpisode_where_and] - OR: [PodcastEpisode_where_or] -} - -input PodcastEpisode_where_or { - title: PodcastEpisode_title_operator - summary: PodcastEpisode_summary_operator - notes: PodcastEpisode_notes_operator - featuredImage: PodcastEpisode_featuredImage_operator - episodeFile: PodcastEpisode_episodeFile_operator - spotify: PodcastEpisode_spotify_operator - apple: PodcastEpisode_apple_operator - authors: PodcastEpisode_authors_operator - categories: PodcastEpisode_categories_operator - relatedEpisodes: PodcastEpisode_relatedEpisodes_operator - publishedAt: PodcastEpisode_publishedAt_operator - slug: PodcastEpisode_slug_operator - updatedAt: PodcastEpisode_updatedAt_operator - createdAt: PodcastEpisode_createdAt_operator - _status: PodcastEpisode__status_operator - id: PodcastEpisode_id_operator - AND: [PodcastEpisode_where_and] - OR: [PodcastEpisode_where_or] -} - -type countPodcastEpisodes { - totalDocs: Int -} - -type podcast_episodesDocAccess { - fields: PodcastEpisodesDocAccessFields - create: PodcastEpisodesCreateDocAccess - read: PodcastEpisodesReadDocAccess - update: PodcastEpisodesUpdateDocAccess - delete: PodcastEpisodesDeleteDocAccess - readVersions: PodcastEpisodesReadVersionsDocAccess -} - -type PodcastEpisodesDocAccessFields { - title: PodcastEpisodesDocAccessFields_title - summary: PodcastEpisodesDocAccessFields_summary - notes: PodcastEpisodesDocAccessFields_notes - featuredImage: PodcastEpisodesDocAccessFields_featuredImage - episodeFile: PodcastEpisodesDocAccessFields_episodeFile - spotify: PodcastEpisodesDocAccessFields_spotify - apple: PodcastEpisodesDocAccessFields_apple - authors: PodcastEpisodesDocAccessFields_authors - categories: PodcastEpisodesDocAccessFields_categories - relatedEpisodes: PodcastEpisodesDocAccessFields_relatedEpisodes - publishedAt: PodcastEpisodesDocAccessFields_publishedAt - slug: PodcastEpisodesDocAccessFields_slug - updatedAt: PodcastEpisodesDocAccessFields_updatedAt - createdAt: PodcastEpisodesDocAccessFields_createdAt - _status: PodcastEpisodesDocAccessFields__status -} - -type PodcastEpisodesDocAccessFields_title { - create: PodcastEpisodesDocAccessFields_title_Create - read: PodcastEpisodesDocAccessFields_title_Read - update: PodcastEpisodesDocAccessFields_title_Update - delete: PodcastEpisodesDocAccessFields_title_Delete -} - -type PodcastEpisodesDocAccessFields_title_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_title_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_title_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_title_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_summary { - create: PodcastEpisodesDocAccessFields_summary_Create - read: PodcastEpisodesDocAccessFields_summary_Read - update: PodcastEpisodesDocAccessFields_summary_Update - delete: PodcastEpisodesDocAccessFields_summary_Delete -} - -type PodcastEpisodesDocAccessFields_summary_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_summary_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_summary_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_summary_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_notes { - create: PodcastEpisodesDocAccessFields_notes_Create - read: PodcastEpisodesDocAccessFields_notes_Read - update: PodcastEpisodesDocAccessFields_notes_Update - delete: PodcastEpisodesDocAccessFields_notes_Delete -} - -type PodcastEpisodesDocAccessFields_notes_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_notes_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_notes_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_notes_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_featuredImage { - create: PodcastEpisodesDocAccessFields_featuredImage_Create - read: PodcastEpisodesDocAccessFields_featuredImage_Read - update: PodcastEpisodesDocAccessFields_featuredImage_Update - delete: PodcastEpisodesDocAccessFields_featuredImage_Delete -} - -type PodcastEpisodesDocAccessFields_featuredImage_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_featuredImage_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_featuredImage_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_featuredImage_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_episodeFile { - create: PodcastEpisodesDocAccessFields_episodeFile_Create - read: PodcastEpisodesDocAccessFields_episodeFile_Read - update: PodcastEpisodesDocAccessFields_episodeFile_Update - delete: PodcastEpisodesDocAccessFields_episodeFile_Delete -} - -type PodcastEpisodesDocAccessFields_episodeFile_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_episodeFile_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_episodeFile_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_episodeFile_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_spotify { - create: PodcastEpisodesDocAccessFields_spotify_Create - read: PodcastEpisodesDocAccessFields_spotify_Read - update: PodcastEpisodesDocAccessFields_spotify_Update - delete: PodcastEpisodesDocAccessFields_spotify_Delete -} - -type PodcastEpisodesDocAccessFields_spotify_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_spotify_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_spotify_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_spotify_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_apple { - create: PodcastEpisodesDocAccessFields_apple_Create - read: PodcastEpisodesDocAccessFields_apple_Read - update: PodcastEpisodesDocAccessFields_apple_Update - delete: PodcastEpisodesDocAccessFields_apple_Delete -} - -type PodcastEpisodesDocAccessFields_apple_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_apple_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_apple_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_apple_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_authors { - create: PodcastEpisodesDocAccessFields_authors_Create - read: PodcastEpisodesDocAccessFields_authors_Read - update: PodcastEpisodesDocAccessFields_authors_Update - delete: PodcastEpisodesDocAccessFields_authors_Delete -} - -type PodcastEpisodesDocAccessFields_authors_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_authors_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_authors_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_authors_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_categories { - create: PodcastEpisodesDocAccessFields_categories_Create - read: PodcastEpisodesDocAccessFields_categories_Read - update: PodcastEpisodesDocAccessFields_categories_Update - delete: PodcastEpisodesDocAccessFields_categories_Delete -} - -type PodcastEpisodesDocAccessFields_categories_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_categories_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_categories_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_categories_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_relatedEpisodes { - create: PodcastEpisodesDocAccessFields_relatedEpisodes_Create - read: PodcastEpisodesDocAccessFields_relatedEpisodes_Read - update: PodcastEpisodesDocAccessFields_relatedEpisodes_Update - delete: PodcastEpisodesDocAccessFields_relatedEpisodes_Delete -} - -type PodcastEpisodesDocAccessFields_relatedEpisodes_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_relatedEpisodes_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_relatedEpisodes_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_relatedEpisodes_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_publishedAt { - create: PodcastEpisodesDocAccessFields_publishedAt_Create - read: PodcastEpisodesDocAccessFields_publishedAt_Read - update: PodcastEpisodesDocAccessFields_publishedAt_Update - delete: PodcastEpisodesDocAccessFields_publishedAt_Delete -} - -type PodcastEpisodesDocAccessFields_publishedAt_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_publishedAt_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_publishedAt_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_publishedAt_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_slug { - create: PodcastEpisodesDocAccessFields_slug_Create - read: PodcastEpisodesDocAccessFields_slug_Read - update: PodcastEpisodesDocAccessFields_slug_Update - delete: PodcastEpisodesDocAccessFields_slug_Delete -} - -type PodcastEpisodesDocAccessFields_slug_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_slug_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_slug_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_slug_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_updatedAt { - create: PodcastEpisodesDocAccessFields_updatedAt_Create - read: PodcastEpisodesDocAccessFields_updatedAt_Read - update: PodcastEpisodesDocAccessFields_updatedAt_Update - delete: PodcastEpisodesDocAccessFields_updatedAt_Delete -} - -type PodcastEpisodesDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_createdAt { - create: PodcastEpisodesDocAccessFields_createdAt_Create - read: PodcastEpisodesDocAccessFields_createdAt_Read - update: PodcastEpisodesDocAccessFields_createdAt_Update - delete: PodcastEpisodesDocAccessFields_createdAt_Delete -} - -type PodcastEpisodesDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields__status { - create: PodcastEpisodesDocAccessFields__status_Create - read: PodcastEpisodesDocAccessFields__status_Read - update: PodcastEpisodesDocAccessFields__status_Update - delete: PodcastEpisodesDocAccessFields__status_Delete -} - -type PodcastEpisodesDocAccessFields__status_Create { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields__status_Read { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields__status_Update { - permission: Boolean! -} - -type PodcastEpisodesDocAccessFields__status_Delete { - permission: Boolean! -} - -type PodcastEpisodesCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -type PodcastEpisodesReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type PodcastEpisodesUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type PodcastEpisodesDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type PodcastEpisodesReadVersionsDocAccess { - permission: Boolean! - where: JSONObject -} - -type PodcastEpisodeVersion { - parent(draft: Boolean): PodcastEpisode - version: PodcastEpisodeVersion_Version - createdAt: DateTime - updatedAt: DateTime - latest: Boolean - id: String -} - -type PodcastEpisodeVersion_Version { - title: String - summary: String - notes: String - featuredImage(where: PodcastEpisodeVersion_Version_FeaturedImage_where): Media - episodeFile(where: PodcastEpisodeVersion_Version_EpisodeFile_where): Media - spotify: String - apple: String - authors(draft: Boolean): [Author!] - categories: [Category!] - relatedEpisodes(draft: Boolean): [PodcastEpisode!] - publishedAt: DateTime - slug: String - updatedAt: DateTime - createdAt: DateTime - _status: PodcastEpisodeVersion_Version__status -} - -input PodcastEpisodeVersion_Version_FeaturedImage_where { - alt: PodcastEpisodeVersion_Version_FeaturedImage_alt_operator - caption: PodcastEpisodeVersion_Version_FeaturedImage_caption_operator - updatedAt: PodcastEpisodeVersion_Version_FeaturedImage_updatedAt_operator - createdAt: PodcastEpisodeVersion_Version_FeaturedImage_createdAt_operator - url: PodcastEpisodeVersion_Version_FeaturedImage_url_operator - filename: PodcastEpisodeVersion_Version_FeaturedImage_filename_operator - mimeType: PodcastEpisodeVersion_Version_FeaturedImage_mimeType_operator - filesize: PodcastEpisodeVersion_Version_FeaturedImage_filesize_operator - width: PodcastEpisodeVersion_Version_FeaturedImage_width_operator - height: PodcastEpisodeVersion_Version_FeaturedImage_height_operator - focalX: PodcastEpisodeVersion_Version_FeaturedImage_focalX_operator - focalY: PodcastEpisodeVersion_Version_FeaturedImage_focalY_operator - id: PodcastEpisodeVersion_Version_FeaturedImage_id_operator - AND: [PodcastEpisodeVersion_Version_FeaturedImage_where_and] - OR: [PodcastEpisodeVersion_Version_FeaturedImage_where_or] -} - -input PodcastEpisodeVersion_Version_FeaturedImage_alt_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input PodcastEpisodeVersion_Version_FeaturedImage_caption_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON - exists: Boolean -} - -input PodcastEpisodeVersion_Version_FeaturedImage_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PodcastEpisodeVersion_Version_FeaturedImage_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PodcastEpisodeVersion_Version_FeaturedImage_url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisodeVersion_Version_FeaturedImage_filename_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisodeVersion_Version_FeaturedImage_mimeType_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisodeVersion_Version_FeaturedImage_filesize_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisodeVersion_Version_FeaturedImage_width_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisodeVersion_Version_FeaturedImage_height_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisodeVersion_Version_FeaturedImage_focalX_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisodeVersion_Version_FeaturedImage_focalY_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisodeVersion_Version_FeaturedImage_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisodeVersion_Version_FeaturedImage_where_and { - alt: PodcastEpisodeVersion_Version_FeaturedImage_alt_operator - caption: PodcastEpisodeVersion_Version_FeaturedImage_caption_operator - updatedAt: PodcastEpisodeVersion_Version_FeaturedImage_updatedAt_operator - createdAt: PodcastEpisodeVersion_Version_FeaturedImage_createdAt_operator - url: PodcastEpisodeVersion_Version_FeaturedImage_url_operator - filename: PodcastEpisodeVersion_Version_FeaturedImage_filename_operator - mimeType: PodcastEpisodeVersion_Version_FeaturedImage_mimeType_operator - filesize: PodcastEpisodeVersion_Version_FeaturedImage_filesize_operator - width: PodcastEpisodeVersion_Version_FeaturedImage_width_operator - height: PodcastEpisodeVersion_Version_FeaturedImage_height_operator - focalX: PodcastEpisodeVersion_Version_FeaturedImage_focalX_operator - focalY: PodcastEpisodeVersion_Version_FeaturedImage_focalY_operator - id: PodcastEpisodeVersion_Version_FeaturedImage_id_operator - AND: [PodcastEpisodeVersion_Version_FeaturedImage_where_and] - OR: [PodcastEpisodeVersion_Version_FeaturedImage_where_or] -} - -input PodcastEpisodeVersion_Version_FeaturedImage_where_or { - alt: PodcastEpisodeVersion_Version_FeaturedImage_alt_operator - caption: PodcastEpisodeVersion_Version_FeaturedImage_caption_operator - updatedAt: PodcastEpisodeVersion_Version_FeaturedImage_updatedAt_operator - createdAt: PodcastEpisodeVersion_Version_FeaturedImage_createdAt_operator - url: PodcastEpisodeVersion_Version_FeaturedImage_url_operator - filename: PodcastEpisodeVersion_Version_FeaturedImage_filename_operator - mimeType: PodcastEpisodeVersion_Version_FeaturedImage_mimeType_operator - filesize: PodcastEpisodeVersion_Version_FeaturedImage_filesize_operator - width: PodcastEpisodeVersion_Version_FeaturedImage_width_operator - height: PodcastEpisodeVersion_Version_FeaturedImage_height_operator - focalX: PodcastEpisodeVersion_Version_FeaturedImage_focalX_operator - focalY: PodcastEpisodeVersion_Version_FeaturedImage_focalY_operator - id: PodcastEpisodeVersion_Version_FeaturedImage_id_operator - AND: [PodcastEpisodeVersion_Version_FeaturedImage_where_and] - OR: [PodcastEpisodeVersion_Version_FeaturedImage_where_or] -} - -input PodcastEpisodeVersion_Version_EpisodeFile_where { - alt: PodcastEpisodeVersion_Version_EpisodeFile_alt_operator - caption: PodcastEpisodeVersion_Version_EpisodeFile_caption_operator - updatedAt: PodcastEpisodeVersion_Version_EpisodeFile_updatedAt_operator - createdAt: PodcastEpisodeVersion_Version_EpisodeFile_createdAt_operator - url: PodcastEpisodeVersion_Version_EpisodeFile_url_operator - filename: PodcastEpisodeVersion_Version_EpisodeFile_filename_operator - mimeType: PodcastEpisodeVersion_Version_EpisodeFile_mimeType_operator - filesize: PodcastEpisodeVersion_Version_EpisodeFile_filesize_operator - width: PodcastEpisodeVersion_Version_EpisodeFile_width_operator - height: PodcastEpisodeVersion_Version_EpisodeFile_height_operator - focalX: PodcastEpisodeVersion_Version_EpisodeFile_focalX_operator - focalY: PodcastEpisodeVersion_Version_EpisodeFile_focalY_operator - id: PodcastEpisodeVersion_Version_EpisodeFile_id_operator - AND: [PodcastEpisodeVersion_Version_EpisodeFile_where_and] - OR: [PodcastEpisodeVersion_Version_EpisodeFile_where_or] -} - -input PodcastEpisodeVersion_Version_EpisodeFile_alt_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input PodcastEpisodeVersion_Version_EpisodeFile_caption_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON - exists: Boolean -} - -input PodcastEpisodeVersion_Version_EpisodeFile_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PodcastEpisodeVersion_Version_EpisodeFile_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PodcastEpisodeVersion_Version_EpisodeFile_url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisodeVersion_Version_EpisodeFile_filename_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisodeVersion_Version_EpisodeFile_mimeType_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisodeVersion_Version_EpisodeFile_filesize_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisodeVersion_Version_EpisodeFile_width_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisodeVersion_Version_EpisodeFile_height_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisodeVersion_Version_EpisodeFile_focalX_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisodeVersion_Version_EpisodeFile_focalY_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input PodcastEpisodeVersion_Version_EpisodeFile_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PodcastEpisodeVersion_Version_EpisodeFile_where_and { - alt: PodcastEpisodeVersion_Version_EpisodeFile_alt_operator - caption: PodcastEpisodeVersion_Version_EpisodeFile_caption_operator - updatedAt: PodcastEpisodeVersion_Version_EpisodeFile_updatedAt_operator - createdAt: PodcastEpisodeVersion_Version_EpisodeFile_createdAt_operator - url: PodcastEpisodeVersion_Version_EpisodeFile_url_operator - filename: PodcastEpisodeVersion_Version_EpisodeFile_filename_operator - mimeType: PodcastEpisodeVersion_Version_EpisodeFile_mimeType_operator - filesize: PodcastEpisodeVersion_Version_EpisodeFile_filesize_operator - width: PodcastEpisodeVersion_Version_EpisodeFile_width_operator - height: PodcastEpisodeVersion_Version_EpisodeFile_height_operator - focalX: PodcastEpisodeVersion_Version_EpisodeFile_focalX_operator - focalY: PodcastEpisodeVersion_Version_EpisodeFile_focalY_operator - id: PodcastEpisodeVersion_Version_EpisodeFile_id_operator - AND: [PodcastEpisodeVersion_Version_EpisodeFile_where_and] - OR: [PodcastEpisodeVersion_Version_EpisodeFile_where_or] -} - -input PodcastEpisodeVersion_Version_EpisodeFile_where_or { - alt: PodcastEpisodeVersion_Version_EpisodeFile_alt_operator - caption: PodcastEpisodeVersion_Version_EpisodeFile_caption_operator - updatedAt: PodcastEpisodeVersion_Version_EpisodeFile_updatedAt_operator - createdAt: PodcastEpisodeVersion_Version_EpisodeFile_createdAt_operator - url: PodcastEpisodeVersion_Version_EpisodeFile_url_operator - filename: PodcastEpisodeVersion_Version_EpisodeFile_filename_operator - mimeType: PodcastEpisodeVersion_Version_EpisodeFile_mimeType_operator - filesize: PodcastEpisodeVersion_Version_EpisodeFile_filesize_operator - width: PodcastEpisodeVersion_Version_EpisodeFile_width_operator - height: PodcastEpisodeVersion_Version_EpisodeFile_height_operator - focalX: PodcastEpisodeVersion_Version_EpisodeFile_focalX_operator - focalY: PodcastEpisodeVersion_Version_EpisodeFile_focalY_operator - id: PodcastEpisodeVersion_Version_EpisodeFile_id_operator - AND: [PodcastEpisodeVersion_Version_EpisodeFile_where_and] - OR: [PodcastEpisodeVersion_Version_EpisodeFile_where_or] -} - -enum PodcastEpisodeVersion_Version__status { - draft - published -} - -type versionsPodcastEpisodes { - docs: [PodcastEpisodeVersion] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input versionsPodcastEpisode_where { - parent: versionsPodcastEpisode_parent_operator - version__title: versionsPodcastEpisode_version__title_operator - version__summary: versionsPodcastEpisode_version__summary_operator - version__notes: versionsPodcastEpisode_version__notes_operator - version__featuredImage: versionsPodcastEpisode_version__featuredImage_operator - version__episodeFile: versionsPodcastEpisode_version__episodeFile_operator - version__spotify: versionsPodcastEpisode_version__spotify_operator - version__apple: versionsPodcastEpisode_version__apple_operator - version__authors: versionsPodcastEpisode_version__authors_operator - version__categories: versionsPodcastEpisode_version__categories_operator - version__relatedEpisodes: versionsPodcastEpisode_version__relatedEpisodes_operator - version__publishedAt: versionsPodcastEpisode_version__publishedAt_operator - version__slug: versionsPodcastEpisode_version__slug_operator - version__updatedAt: versionsPodcastEpisode_version__updatedAt_operator - version__createdAt: versionsPodcastEpisode_version__createdAt_operator - version___status: versionsPodcastEpisode_version___status_operator - createdAt: versionsPodcastEpisode_createdAt_operator - updatedAt: versionsPodcastEpisode_updatedAt_operator - latest: versionsPodcastEpisode_latest_operator - id: versionsPodcastEpisode_id_operator - AND: [versionsPodcastEpisode_where_and] - OR: [versionsPodcastEpisode_where_or] -} - -input versionsPodcastEpisode_parent_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsPodcastEpisode_version__title_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input versionsPodcastEpisode_version__summary_operator { - equals: String - not_equals: String - like: String - contains: String -} - -input versionsPodcastEpisode_version__notes_operator { - equals: String - not_equals: String - like: String - contains: String -} - -input versionsPodcastEpisode_version__featuredImage_operator { - equals: String - not_equals: String -} - -input versionsPodcastEpisode_version__episodeFile_operator { - equals: String - not_equals: String -} - -input versionsPodcastEpisode_version__spotify_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsPodcastEpisode_version__apple_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsPodcastEpisode_version__authors_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsPodcastEpisode_version__categories_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsPodcastEpisode_version__relatedEpisodes_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsPodcastEpisode_version__publishedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsPodcastEpisode_version__slug_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsPodcastEpisode_version__updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsPodcastEpisode_version__createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsPodcastEpisode_version___status_operator { - equals: versionsPodcastEpisode_version___status_Input - not_equals: versionsPodcastEpisode_version___status_Input - in: [versionsPodcastEpisode_version___status_Input] - not_in: [versionsPodcastEpisode_version___status_Input] - all: [versionsPodcastEpisode_version___status_Input] - exists: Boolean -} - -enum versionsPodcastEpisode_version___status_Input { - draft - published -} - -input versionsPodcastEpisode_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsPodcastEpisode_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsPodcastEpisode_latest_operator { - equals: Boolean - not_equals: Boolean - exists: Boolean -} - -input versionsPodcastEpisode_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsPodcastEpisode_where_and { - parent: versionsPodcastEpisode_parent_operator - version__title: versionsPodcastEpisode_version__title_operator - version__summary: versionsPodcastEpisode_version__summary_operator - version__notes: versionsPodcastEpisode_version__notes_operator - version__featuredImage: versionsPodcastEpisode_version__featuredImage_operator - version__episodeFile: versionsPodcastEpisode_version__episodeFile_operator - version__spotify: versionsPodcastEpisode_version__spotify_operator - version__apple: versionsPodcastEpisode_version__apple_operator - version__authors: versionsPodcastEpisode_version__authors_operator - version__categories: versionsPodcastEpisode_version__categories_operator - version__relatedEpisodes: versionsPodcastEpisode_version__relatedEpisodes_operator - version__publishedAt: versionsPodcastEpisode_version__publishedAt_operator - version__slug: versionsPodcastEpisode_version__slug_operator - version__updatedAt: versionsPodcastEpisode_version__updatedAt_operator - version__createdAt: versionsPodcastEpisode_version__createdAt_operator - version___status: versionsPodcastEpisode_version___status_operator - createdAt: versionsPodcastEpisode_createdAt_operator - updatedAt: versionsPodcastEpisode_updatedAt_operator - latest: versionsPodcastEpisode_latest_operator - id: versionsPodcastEpisode_id_operator - AND: [versionsPodcastEpisode_where_and] - OR: [versionsPodcastEpisode_where_or] -} - -input versionsPodcastEpisode_where_or { - parent: versionsPodcastEpisode_parent_operator - version__title: versionsPodcastEpisode_version__title_operator - version__summary: versionsPodcastEpisode_version__summary_operator - version__notes: versionsPodcastEpisode_version__notes_operator - version__featuredImage: versionsPodcastEpisode_version__featuredImage_operator - version__episodeFile: versionsPodcastEpisode_version__episodeFile_operator - version__spotify: versionsPodcastEpisode_version__spotify_operator - version__apple: versionsPodcastEpisode_version__apple_operator - version__authors: versionsPodcastEpisode_version__authors_operator - version__categories: versionsPodcastEpisode_version__categories_operator - version__relatedEpisodes: versionsPodcastEpisode_version__relatedEpisodes_operator - version__publishedAt: versionsPodcastEpisode_version__publishedAt_operator - version__slug: versionsPodcastEpisode_version__slug_operator - version__updatedAt: versionsPodcastEpisode_version__updatedAt_operator - version__createdAt: versionsPodcastEpisode_version__createdAt_operator - version___status: versionsPodcastEpisode_version___status_operator - createdAt: versionsPodcastEpisode_createdAt_operator - updatedAt: versionsPodcastEpisode_updatedAt_operator - latest: versionsPodcastEpisode_latest_operator - id: versionsPodcastEpisode_id_operator - AND: [versionsPodcastEpisode_where_and] - OR: [versionsPodcastEpisode_where_or] -} - -type Blogpost { - id: String - title: String - summary: String - content(depth: Int): JSON - content_html: String - featuredImage(where: Blogpost_FeaturedImage_where): Media - authors(draft: Boolean): [Author!] - categories: [Category!] - relatedPosts(draft: Boolean): [Blogpost!] - publishedAt: DateTime - slug: String - updatedAt: DateTime - createdAt: DateTime - _status: Blogpost__status -} - -input Blogpost_FeaturedImage_where { - alt: Blogpost_FeaturedImage_alt_operator - caption: Blogpost_FeaturedImage_caption_operator - updatedAt: Blogpost_FeaturedImage_updatedAt_operator - createdAt: Blogpost_FeaturedImage_createdAt_operator - url: Blogpost_FeaturedImage_url_operator - filename: Blogpost_FeaturedImage_filename_operator - mimeType: Blogpost_FeaturedImage_mimeType_operator - filesize: Blogpost_FeaturedImage_filesize_operator - width: Blogpost_FeaturedImage_width_operator - height: Blogpost_FeaturedImage_height_operator - focalX: Blogpost_FeaturedImage_focalX_operator - focalY: Blogpost_FeaturedImage_focalY_operator - id: Blogpost_FeaturedImage_id_operator - AND: [Blogpost_FeaturedImage_where_and] - OR: [Blogpost_FeaturedImage_where_or] -} - -input Blogpost_FeaturedImage_alt_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input Blogpost_FeaturedImage_caption_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON - exists: Boolean -} - -input Blogpost_FeaturedImage_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Blogpost_FeaturedImage_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Blogpost_FeaturedImage_url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Blogpost_FeaturedImage_filename_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Blogpost_FeaturedImage_mimeType_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Blogpost_FeaturedImage_filesize_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Blogpost_FeaturedImage_width_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Blogpost_FeaturedImage_height_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Blogpost_FeaturedImage_focalX_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Blogpost_FeaturedImage_focalY_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input Blogpost_FeaturedImage_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Blogpost_FeaturedImage_where_and { - alt: Blogpost_FeaturedImage_alt_operator - caption: Blogpost_FeaturedImage_caption_operator - updatedAt: Blogpost_FeaturedImage_updatedAt_operator - createdAt: Blogpost_FeaturedImage_createdAt_operator - url: Blogpost_FeaturedImage_url_operator - filename: Blogpost_FeaturedImage_filename_operator - mimeType: Blogpost_FeaturedImage_mimeType_operator - filesize: Blogpost_FeaturedImage_filesize_operator - width: Blogpost_FeaturedImage_width_operator - height: Blogpost_FeaturedImage_height_operator - focalX: Blogpost_FeaturedImage_focalX_operator - focalY: Blogpost_FeaturedImage_focalY_operator - id: Blogpost_FeaturedImage_id_operator - AND: [Blogpost_FeaturedImage_where_and] - OR: [Blogpost_FeaturedImage_where_or] -} - -input Blogpost_FeaturedImage_where_or { - alt: Blogpost_FeaturedImage_alt_operator - caption: Blogpost_FeaturedImage_caption_operator - updatedAt: Blogpost_FeaturedImage_updatedAt_operator - createdAt: Blogpost_FeaturedImage_createdAt_operator - url: Blogpost_FeaturedImage_url_operator - filename: Blogpost_FeaturedImage_filename_operator - mimeType: Blogpost_FeaturedImage_mimeType_operator - filesize: Blogpost_FeaturedImage_filesize_operator - width: Blogpost_FeaturedImage_width_operator - height: Blogpost_FeaturedImage_height_operator - focalX: Blogpost_FeaturedImage_focalX_operator - focalY: Blogpost_FeaturedImage_focalY_operator - id: Blogpost_FeaturedImage_id_operator - AND: [Blogpost_FeaturedImage_where_and] - OR: [Blogpost_FeaturedImage_where_or] -} - -enum Blogpost__status { - draft - published -} - -type Blogposts { - docs: [Blogpost] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input Blogpost_where { - title: Blogpost_title_operator - summary: Blogpost_summary_operator - content: Blogpost_content_operator - content_html: Blogpost_content_html_operator - featuredImage: Blogpost_featuredImage_operator - authors: Blogpost_authors_operator - categories: Blogpost_categories_operator - relatedPosts: Blogpost_relatedPosts_operator - publishedAt: Blogpost_publishedAt_operator - slug: Blogpost_slug_operator - updatedAt: Blogpost_updatedAt_operator - createdAt: Blogpost_createdAt_operator - _status: Blogpost__status_operator - id: Blogpost_id_operator - AND: [Blogpost_where_and] - OR: [Blogpost_where_or] -} - -input Blogpost_title_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input Blogpost_summary_operator { - equals: String - not_equals: String - like: String - contains: String -} - -input Blogpost_content_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON -} - -input Blogpost_content_html_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Blogpost_featuredImage_operator { - equals: String - not_equals: String -} - -input Blogpost_authors_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input Blogpost_categories_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input Blogpost_relatedPosts_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input Blogpost_publishedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Blogpost_slug_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Blogpost_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Blogpost_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input Blogpost__status_operator { - equals: Blogpost__status_Input - not_equals: Blogpost__status_Input - in: [Blogpost__status_Input] - not_in: [Blogpost__status_Input] - all: [Blogpost__status_Input] - exists: Boolean -} - -enum Blogpost__status_Input { - draft - published -} - -input Blogpost_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input Blogpost_where_and { - title: Blogpost_title_operator - summary: Blogpost_summary_operator - content: Blogpost_content_operator - content_html: Blogpost_content_html_operator - featuredImage: Blogpost_featuredImage_operator - authors: Blogpost_authors_operator - categories: Blogpost_categories_operator - relatedPosts: Blogpost_relatedPosts_operator - publishedAt: Blogpost_publishedAt_operator - slug: Blogpost_slug_operator - updatedAt: Blogpost_updatedAt_operator - createdAt: Blogpost_createdAt_operator - _status: Blogpost__status_operator - id: Blogpost_id_operator - AND: [Blogpost_where_and] - OR: [Blogpost_where_or] -} - -input Blogpost_where_or { - title: Blogpost_title_operator - summary: Blogpost_summary_operator - content: Blogpost_content_operator - content_html: Blogpost_content_html_operator - featuredImage: Blogpost_featuredImage_operator - authors: Blogpost_authors_operator - categories: Blogpost_categories_operator - relatedPosts: Blogpost_relatedPosts_operator - publishedAt: Blogpost_publishedAt_operator - slug: Blogpost_slug_operator - updatedAt: Blogpost_updatedAt_operator - createdAt: Blogpost_createdAt_operator - _status: Blogpost__status_operator - id: Blogpost_id_operator - AND: [Blogpost_where_and] - OR: [Blogpost_where_or] -} - -type countBlogposts { - totalDocs: Int -} - -type blogpostsDocAccess { - fields: BlogpostsDocAccessFields - create: BlogpostsCreateDocAccess - read: BlogpostsReadDocAccess - update: BlogpostsUpdateDocAccess - delete: BlogpostsDeleteDocAccess - readVersions: BlogpostsReadVersionsDocAccess -} - -type BlogpostsDocAccessFields { - title: BlogpostsDocAccessFields_title - summary: BlogpostsDocAccessFields_summary - content: BlogpostsDocAccessFields_content - content_html: BlogpostsDocAccessFields_content_html - featuredImage: BlogpostsDocAccessFields_featuredImage - authors: BlogpostsDocAccessFields_authors - categories: BlogpostsDocAccessFields_categories - relatedPosts: BlogpostsDocAccessFields_relatedPosts - publishedAt: BlogpostsDocAccessFields_publishedAt - slug: BlogpostsDocAccessFields_slug - updatedAt: BlogpostsDocAccessFields_updatedAt - createdAt: BlogpostsDocAccessFields_createdAt - _status: BlogpostsDocAccessFields__status -} - -type BlogpostsDocAccessFields_title { - create: BlogpostsDocAccessFields_title_Create - read: BlogpostsDocAccessFields_title_Read - update: BlogpostsDocAccessFields_title_Update - delete: BlogpostsDocAccessFields_title_Delete -} - -type BlogpostsDocAccessFields_title_Create { - permission: Boolean! -} - -type BlogpostsDocAccessFields_title_Read { - permission: Boolean! -} - -type BlogpostsDocAccessFields_title_Update { - permission: Boolean! -} - -type BlogpostsDocAccessFields_title_Delete { - permission: Boolean! -} - -type BlogpostsDocAccessFields_summary { - create: BlogpostsDocAccessFields_summary_Create - read: BlogpostsDocAccessFields_summary_Read - update: BlogpostsDocAccessFields_summary_Update - delete: BlogpostsDocAccessFields_summary_Delete -} - -type BlogpostsDocAccessFields_summary_Create { - permission: Boolean! -} - -type BlogpostsDocAccessFields_summary_Read { - permission: Boolean! -} - -type BlogpostsDocAccessFields_summary_Update { - permission: Boolean! -} - -type BlogpostsDocAccessFields_summary_Delete { - permission: Boolean! -} - -type BlogpostsDocAccessFields_content { - create: BlogpostsDocAccessFields_content_Create - read: BlogpostsDocAccessFields_content_Read - update: BlogpostsDocAccessFields_content_Update - delete: BlogpostsDocAccessFields_content_Delete -} - -type BlogpostsDocAccessFields_content_Create { - permission: Boolean! -} - -type BlogpostsDocAccessFields_content_Read { - permission: Boolean! -} - -type BlogpostsDocAccessFields_content_Update { - permission: Boolean! -} - -type BlogpostsDocAccessFields_content_Delete { - permission: Boolean! -} - -type BlogpostsDocAccessFields_content_html { - create: BlogpostsDocAccessFields_content_html_Create - read: BlogpostsDocAccessFields_content_html_Read - update: BlogpostsDocAccessFields_content_html_Update - delete: BlogpostsDocAccessFields_content_html_Delete -} - -type BlogpostsDocAccessFields_content_html_Create { - permission: Boolean! -} - -type BlogpostsDocAccessFields_content_html_Read { - permission: Boolean! -} - -type BlogpostsDocAccessFields_content_html_Update { - permission: Boolean! -} - -type BlogpostsDocAccessFields_content_html_Delete { - permission: Boolean! -} - -type BlogpostsDocAccessFields_featuredImage { - create: BlogpostsDocAccessFields_featuredImage_Create - read: BlogpostsDocAccessFields_featuredImage_Read - update: BlogpostsDocAccessFields_featuredImage_Update - delete: BlogpostsDocAccessFields_featuredImage_Delete -} - -type BlogpostsDocAccessFields_featuredImage_Create { - permission: Boolean! -} - -type BlogpostsDocAccessFields_featuredImage_Read { - permission: Boolean! -} - -type BlogpostsDocAccessFields_featuredImage_Update { - permission: Boolean! -} - -type BlogpostsDocAccessFields_featuredImage_Delete { - permission: Boolean! -} - -type BlogpostsDocAccessFields_authors { - create: BlogpostsDocAccessFields_authors_Create - read: BlogpostsDocAccessFields_authors_Read - update: BlogpostsDocAccessFields_authors_Update - delete: BlogpostsDocAccessFields_authors_Delete -} - -type BlogpostsDocAccessFields_authors_Create { - permission: Boolean! -} - -type BlogpostsDocAccessFields_authors_Read { - permission: Boolean! -} - -type BlogpostsDocAccessFields_authors_Update { - permission: Boolean! -} - -type BlogpostsDocAccessFields_authors_Delete { - permission: Boolean! -} - -type BlogpostsDocAccessFields_categories { - create: BlogpostsDocAccessFields_categories_Create - read: BlogpostsDocAccessFields_categories_Read - update: BlogpostsDocAccessFields_categories_Update - delete: BlogpostsDocAccessFields_categories_Delete -} - -type BlogpostsDocAccessFields_categories_Create { - permission: Boolean! -} - -type BlogpostsDocAccessFields_categories_Read { - permission: Boolean! -} - -type BlogpostsDocAccessFields_categories_Update { - permission: Boolean! -} - -type BlogpostsDocAccessFields_categories_Delete { - permission: Boolean! -} - -type BlogpostsDocAccessFields_relatedPosts { - create: BlogpostsDocAccessFields_relatedPosts_Create - read: BlogpostsDocAccessFields_relatedPosts_Read - update: BlogpostsDocAccessFields_relatedPosts_Update - delete: BlogpostsDocAccessFields_relatedPosts_Delete -} - -type BlogpostsDocAccessFields_relatedPosts_Create { - permission: Boolean! -} - -type BlogpostsDocAccessFields_relatedPosts_Read { - permission: Boolean! -} - -type BlogpostsDocAccessFields_relatedPosts_Update { - permission: Boolean! -} - -type BlogpostsDocAccessFields_relatedPosts_Delete { - permission: Boolean! -} - -type BlogpostsDocAccessFields_publishedAt { - create: BlogpostsDocAccessFields_publishedAt_Create - read: BlogpostsDocAccessFields_publishedAt_Read - update: BlogpostsDocAccessFields_publishedAt_Update - delete: BlogpostsDocAccessFields_publishedAt_Delete -} - -type BlogpostsDocAccessFields_publishedAt_Create { - permission: Boolean! -} - -type BlogpostsDocAccessFields_publishedAt_Read { - permission: Boolean! -} - -type BlogpostsDocAccessFields_publishedAt_Update { - permission: Boolean! -} - -type BlogpostsDocAccessFields_publishedAt_Delete { - permission: Boolean! -} - -type BlogpostsDocAccessFields_slug { - create: BlogpostsDocAccessFields_slug_Create - read: BlogpostsDocAccessFields_slug_Read - update: BlogpostsDocAccessFields_slug_Update - delete: BlogpostsDocAccessFields_slug_Delete -} - -type BlogpostsDocAccessFields_slug_Create { - permission: Boolean! -} - -type BlogpostsDocAccessFields_slug_Read { - permission: Boolean! -} - -type BlogpostsDocAccessFields_slug_Update { - permission: Boolean! -} - -type BlogpostsDocAccessFields_slug_Delete { - permission: Boolean! -} - -type BlogpostsDocAccessFields_updatedAt { - create: BlogpostsDocAccessFields_updatedAt_Create - read: BlogpostsDocAccessFields_updatedAt_Read - update: BlogpostsDocAccessFields_updatedAt_Update - delete: BlogpostsDocAccessFields_updatedAt_Delete -} - -type BlogpostsDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type BlogpostsDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type BlogpostsDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type BlogpostsDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type BlogpostsDocAccessFields_createdAt { - create: BlogpostsDocAccessFields_createdAt_Create - read: BlogpostsDocAccessFields_createdAt_Read - update: BlogpostsDocAccessFields_createdAt_Update - delete: BlogpostsDocAccessFields_createdAt_Delete -} - -type BlogpostsDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type BlogpostsDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type BlogpostsDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type BlogpostsDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type BlogpostsDocAccessFields__status { - create: BlogpostsDocAccessFields__status_Create - read: BlogpostsDocAccessFields__status_Read - update: BlogpostsDocAccessFields__status_Update - delete: BlogpostsDocAccessFields__status_Delete -} - -type BlogpostsDocAccessFields__status_Create { - permission: Boolean! -} - -type BlogpostsDocAccessFields__status_Read { - permission: Boolean! -} - -type BlogpostsDocAccessFields__status_Update { - permission: Boolean! -} - -type BlogpostsDocAccessFields__status_Delete { - permission: Boolean! -} - -type BlogpostsCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -type BlogpostsReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type BlogpostsUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type BlogpostsDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type BlogpostsReadVersionsDocAccess { - permission: Boolean! - where: JSONObject -} - -type BlogpostVersion { - parent(draft: Boolean): Blogpost - version: BlogpostVersion_Version - createdAt: DateTime - updatedAt: DateTime - latest: Boolean - id: String -} - -type BlogpostVersion_Version { - title: String - summary: String - content(depth: Int): JSON - content_html: String - featuredImage(where: BlogpostVersion_Version_FeaturedImage_where): Media - authors(draft: Boolean): [Author!] - categories: [Category!] - relatedPosts(draft: Boolean): [Blogpost!] - publishedAt: DateTime - slug: String - updatedAt: DateTime - createdAt: DateTime - _status: BlogpostVersion_Version__status -} - -input BlogpostVersion_Version_FeaturedImage_where { - alt: BlogpostVersion_Version_FeaturedImage_alt_operator - caption: BlogpostVersion_Version_FeaturedImage_caption_operator - updatedAt: BlogpostVersion_Version_FeaturedImage_updatedAt_operator - createdAt: BlogpostVersion_Version_FeaturedImage_createdAt_operator - url: BlogpostVersion_Version_FeaturedImage_url_operator - filename: BlogpostVersion_Version_FeaturedImage_filename_operator - mimeType: BlogpostVersion_Version_FeaturedImage_mimeType_operator - filesize: BlogpostVersion_Version_FeaturedImage_filesize_operator - width: BlogpostVersion_Version_FeaturedImage_width_operator - height: BlogpostVersion_Version_FeaturedImage_height_operator - focalX: BlogpostVersion_Version_FeaturedImage_focalX_operator - focalY: BlogpostVersion_Version_FeaturedImage_focalY_operator - id: BlogpostVersion_Version_FeaturedImage_id_operator - AND: [BlogpostVersion_Version_FeaturedImage_where_and] - OR: [BlogpostVersion_Version_FeaturedImage_where_or] -} - -input BlogpostVersion_Version_FeaturedImage_alt_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input BlogpostVersion_Version_FeaturedImage_caption_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON - exists: Boolean -} - -input BlogpostVersion_Version_FeaturedImage_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input BlogpostVersion_Version_FeaturedImage_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input BlogpostVersion_Version_FeaturedImage_url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input BlogpostVersion_Version_FeaturedImage_filename_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input BlogpostVersion_Version_FeaturedImage_mimeType_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input BlogpostVersion_Version_FeaturedImage_filesize_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input BlogpostVersion_Version_FeaturedImage_width_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input BlogpostVersion_Version_FeaturedImage_height_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input BlogpostVersion_Version_FeaturedImage_focalX_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input BlogpostVersion_Version_FeaturedImage_focalY_operator { - equals: Float - not_equals: Float - greater_than_equal: Float - greater_than: Float - less_than_equal: Float - less_than: Float - exists: Boolean -} - -input BlogpostVersion_Version_FeaturedImage_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input BlogpostVersion_Version_FeaturedImage_where_and { - alt: BlogpostVersion_Version_FeaturedImage_alt_operator - caption: BlogpostVersion_Version_FeaturedImage_caption_operator - updatedAt: BlogpostVersion_Version_FeaturedImage_updatedAt_operator - createdAt: BlogpostVersion_Version_FeaturedImage_createdAt_operator - url: BlogpostVersion_Version_FeaturedImage_url_operator - filename: BlogpostVersion_Version_FeaturedImage_filename_operator - mimeType: BlogpostVersion_Version_FeaturedImage_mimeType_operator - filesize: BlogpostVersion_Version_FeaturedImage_filesize_operator - width: BlogpostVersion_Version_FeaturedImage_width_operator - height: BlogpostVersion_Version_FeaturedImage_height_operator - focalX: BlogpostVersion_Version_FeaturedImage_focalX_operator - focalY: BlogpostVersion_Version_FeaturedImage_focalY_operator - id: BlogpostVersion_Version_FeaturedImage_id_operator - AND: [BlogpostVersion_Version_FeaturedImage_where_and] - OR: [BlogpostVersion_Version_FeaturedImage_where_or] -} - -input BlogpostVersion_Version_FeaturedImage_where_or { - alt: BlogpostVersion_Version_FeaturedImage_alt_operator - caption: BlogpostVersion_Version_FeaturedImage_caption_operator - updatedAt: BlogpostVersion_Version_FeaturedImage_updatedAt_operator - createdAt: BlogpostVersion_Version_FeaturedImage_createdAt_operator - url: BlogpostVersion_Version_FeaturedImage_url_operator - filename: BlogpostVersion_Version_FeaturedImage_filename_operator - mimeType: BlogpostVersion_Version_FeaturedImage_mimeType_operator - filesize: BlogpostVersion_Version_FeaturedImage_filesize_operator - width: BlogpostVersion_Version_FeaturedImage_width_operator - height: BlogpostVersion_Version_FeaturedImage_height_operator - focalX: BlogpostVersion_Version_FeaturedImage_focalX_operator - focalY: BlogpostVersion_Version_FeaturedImage_focalY_operator - id: BlogpostVersion_Version_FeaturedImage_id_operator - AND: [BlogpostVersion_Version_FeaturedImage_where_and] - OR: [BlogpostVersion_Version_FeaturedImage_where_or] -} - -enum BlogpostVersion_Version__status { - draft - published -} - -type versionsBlogposts { - docs: [BlogpostVersion] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input versionsBlogpost_where { - parent: versionsBlogpost_parent_operator - version__title: versionsBlogpost_version__title_operator - version__summary: versionsBlogpost_version__summary_operator - version__content: versionsBlogpost_version__content_operator - version__content_html: versionsBlogpost_version__content_html_operator - version__featuredImage: versionsBlogpost_version__featuredImage_operator - version__authors: versionsBlogpost_version__authors_operator - version__categories: versionsBlogpost_version__categories_operator - version__relatedPosts: versionsBlogpost_version__relatedPosts_operator - version__publishedAt: versionsBlogpost_version__publishedAt_operator - version__slug: versionsBlogpost_version__slug_operator - version__updatedAt: versionsBlogpost_version__updatedAt_operator - version__createdAt: versionsBlogpost_version__createdAt_operator - version___status: versionsBlogpost_version___status_operator - createdAt: versionsBlogpost_createdAt_operator - updatedAt: versionsBlogpost_updatedAt_operator - latest: versionsBlogpost_latest_operator - id: versionsBlogpost_id_operator - AND: [versionsBlogpost_where_and] - OR: [versionsBlogpost_where_or] -} - -input versionsBlogpost_parent_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsBlogpost_version__title_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input versionsBlogpost_version__summary_operator { - equals: String - not_equals: String - like: String - contains: String -} - -input versionsBlogpost_version__content_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON -} - -input versionsBlogpost_version__content_html_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsBlogpost_version__featuredImage_operator { - equals: String - not_equals: String -} - -input versionsBlogpost_version__authors_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsBlogpost_version__categories_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsBlogpost_version__relatedPosts_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsBlogpost_version__publishedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsBlogpost_version__slug_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsBlogpost_version__updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsBlogpost_version__createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsBlogpost_version___status_operator { - equals: versionsBlogpost_version___status_Input - not_equals: versionsBlogpost_version___status_Input - in: [versionsBlogpost_version___status_Input] - not_in: [versionsBlogpost_version___status_Input] - all: [versionsBlogpost_version___status_Input] - exists: Boolean -} - -enum versionsBlogpost_version___status_Input { - draft - published -} - -input versionsBlogpost_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsBlogpost_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsBlogpost_latest_operator { - equals: Boolean - not_equals: Boolean - exists: Boolean -} - -input versionsBlogpost_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsBlogpost_where_and { - parent: versionsBlogpost_parent_operator - version__title: versionsBlogpost_version__title_operator - version__summary: versionsBlogpost_version__summary_operator - version__content: versionsBlogpost_version__content_operator - version__content_html: versionsBlogpost_version__content_html_operator - version__featuredImage: versionsBlogpost_version__featuredImage_operator - version__authors: versionsBlogpost_version__authors_operator - version__categories: versionsBlogpost_version__categories_operator - version__relatedPosts: versionsBlogpost_version__relatedPosts_operator - version__publishedAt: versionsBlogpost_version__publishedAt_operator - version__slug: versionsBlogpost_version__slug_operator - version__updatedAt: versionsBlogpost_version__updatedAt_operator - version__createdAt: versionsBlogpost_version__createdAt_operator - version___status: versionsBlogpost_version___status_operator - createdAt: versionsBlogpost_createdAt_operator - updatedAt: versionsBlogpost_updatedAt_operator - latest: versionsBlogpost_latest_operator - id: versionsBlogpost_id_operator - AND: [versionsBlogpost_where_and] - OR: [versionsBlogpost_where_or] -} - -input versionsBlogpost_where_or { - parent: versionsBlogpost_parent_operator - version__title: versionsBlogpost_version__title_operator - version__summary: versionsBlogpost_version__summary_operator - version__content: versionsBlogpost_version__content_operator - version__content_html: versionsBlogpost_version__content_html_operator - version__featuredImage: versionsBlogpost_version__featuredImage_operator - version__authors: versionsBlogpost_version__authors_operator - version__categories: versionsBlogpost_version__categories_operator - version__relatedPosts: versionsBlogpost_version__relatedPosts_operator - version__publishedAt: versionsBlogpost_version__publishedAt_operator - version__slug: versionsBlogpost_version__slug_operator - version__updatedAt: versionsBlogpost_version__updatedAt_operator - version__createdAt: versionsBlogpost_version__createdAt_operator - version___status: versionsBlogpost_version___status_operator - createdAt: versionsBlogpost_createdAt_operator - updatedAt: versionsBlogpost_updatedAt_operator - latest: versionsBlogpost_latest_operator - id: versionsBlogpost_id_operator - AND: [versionsBlogpost_where_and] - OR: [versionsBlogpost_where_or] -} - -type TalksAndRoundtable { - id: String - title: String - about: String - categories: [Category!] - url: String - authors(draft: Boolean): [Author!] - publishedAt: DateTime - slug: String - updatedAt: DateTime - createdAt: DateTime - _status: TalksAndRoundtable__status -} - -enum TalksAndRoundtable__status { - draft - published -} - -type TalksAndRoundtables { - docs: [TalksAndRoundtable] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input TalksAndRoundtable_where { - title: TalksAndRoundtable_title_operator - about: TalksAndRoundtable_about_operator - categories: TalksAndRoundtable_categories_operator - url: TalksAndRoundtable_url_operator - authors: TalksAndRoundtable_authors_operator - publishedAt: TalksAndRoundtable_publishedAt_operator - slug: TalksAndRoundtable_slug_operator - updatedAt: TalksAndRoundtable_updatedAt_operator - createdAt: TalksAndRoundtable_createdAt_operator - _status: TalksAndRoundtable__status_operator - id: TalksAndRoundtable_id_operator - AND: [TalksAndRoundtable_where_and] - OR: [TalksAndRoundtable_where_or] -} - -input TalksAndRoundtable_title_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input TalksAndRoundtable_about_operator { - equals: String - not_equals: String - like: String - contains: String -} - -input TalksAndRoundtable_categories_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input TalksAndRoundtable_url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input TalksAndRoundtable_authors_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input TalksAndRoundtable_publishedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input TalksAndRoundtable_slug_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input TalksAndRoundtable_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input TalksAndRoundtable_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input TalksAndRoundtable__status_operator { - equals: TalksAndRoundtable__status_Input - not_equals: TalksAndRoundtable__status_Input - in: [TalksAndRoundtable__status_Input] - not_in: [TalksAndRoundtable__status_Input] - all: [TalksAndRoundtable__status_Input] - exists: Boolean -} - -enum TalksAndRoundtable__status_Input { - draft - published -} - -input TalksAndRoundtable_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input TalksAndRoundtable_where_and { - title: TalksAndRoundtable_title_operator - about: TalksAndRoundtable_about_operator - categories: TalksAndRoundtable_categories_operator - url: TalksAndRoundtable_url_operator - authors: TalksAndRoundtable_authors_operator - publishedAt: TalksAndRoundtable_publishedAt_operator - slug: TalksAndRoundtable_slug_operator - updatedAt: TalksAndRoundtable_updatedAt_operator - createdAt: TalksAndRoundtable_createdAt_operator - _status: TalksAndRoundtable__status_operator - id: TalksAndRoundtable_id_operator - AND: [TalksAndRoundtable_where_and] - OR: [TalksAndRoundtable_where_or] -} - -input TalksAndRoundtable_where_or { - title: TalksAndRoundtable_title_operator - about: TalksAndRoundtable_about_operator - categories: TalksAndRoundtable_categories_operator - url: TalksAndRoundtable_url_operator - authors: TalksAndRoundtable_authors_operator - publishedAt: TalksAndRoundtable_publishedAt_operator - slug: TalksAndRoundtable_slug_operator - updatedAt: TalksAndRoundtable_updatedAt_operator - createdAt: TalksAndRoundtable_createdAt_operator - _status: TalksAndRoundtable__status_operator - id: TalksAndRoundtable_id_operator - AND: [TalksAndRoundtable_where_and] - OR: [TalksAndRoundtable_where_or] -} - -type countTalksAndRoundtables { - totalDocs: Int -} - -type talks_and_roundtablesDocAccess { - fields: TalksAndRoundtablesDocAccessFields - create: TalksAndRoundtablesCreateDocAccess - read: TalksAndRoundtablesReadDocAccess - update: TalksAndRoundtablesUpdateDocAccess - delete: TalksAndRoundtablesDeleteDocAccess - readVersions: TalksAndRoundtablesReadVersionsDocAccess -} - -type TalksAndRoundtablesDocAccessFields { - title: TalksAndRoundtablesDocAccessFields_title - about: TalksAndRoundtablesDocAccessFields_about - categories: TalksAndRoundtablesDocAccessFields_categories - url: TalksAndRoundtablesDocAccessFields_url - authors: TalksAndRoundtablesDocAccessFields_authors - publishedAt: TalksAndRoundtablesDocAccessFields_publishedAt - slug: TalksAndRoundtablesDocAccessFields_slug - updatedAt: TalksAndRoundtablesDocAccessFields_updatedAt - createdAt: TalksAndRoundtablesDocAccessFields_createdAt - _status: TalksAndRoundtablesDocAccessFields__status -} - -type TalksAndRoundtablesDocAccessFields_title { - create: TalksAndRoundtablesDocAccessFields_title_Create - read: TalksAndRoundtablesDocAccessFields_title_Read - update: TalksAndRoundtablesDocAccessFields_title_Update - delete: TalksAndRoundtablesDocAccessFields_title_Delete -} - -type TalksAndRoundtablesDocAccessFields_title_Create { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_title_Read { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_title_Update { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_title_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_about { - create: TalksAndRoundtablesDocAccessFields_about_Create - read: TalksAndRoundtablesDocAccessFields_about_Read - update: TalksAndRoundtablesDocAccessFields_about_Update - delete: TalksAndRoundtablesDocAccessFields_about_Delete -} - -type TalksAndRoundtablesDocAccessFields_about_Create { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_about_Read { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_about_Update { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_about_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_categories { - create: TalksAndRoundtablesDocAccessFields_categories_Create - read: TalksAndRoundtablesDocAccessFields_categories_Read - update: TalksAndRoundtablesDocAccessFields_categories_Update - delete: TalksAndRoundtablesDocAccessFields_categories_Delete -} - -type TalksAndRoundtablesDocAccessFields_categories_Create { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_categories_Read { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_categories_Update { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_categories_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_url { - create: TalksAndRoundtablesDocAccessFields_url_Create - read: TalksAndRoundtablesDocAccessFields_url_Read - update: TalksAndRoundtablesDocAccessFields_url_Update - delete: TalksAndRoundtablesDocAccessFields_url_Delete -} - -type TalksAndRoundtablesDocAccessFields_url_Create { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_url_Read { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_url_Update { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_url_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_authors { - create: TalksAndRoundtablesDocAccessFields_authors_Create - read: TalksAndRoundtablesDocAccessFields_authors_Read - update: TalksAndRoundtablesDocAccessFields_authors_Update - delete: TalksAndRoundtablesDocAccessFields_authors_Delete -} - -type TalksAndRoundtablesDocAccessFields_authors_Create { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_authors_Read { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_authors_Update { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_authors_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_publishedAt { - create: TalksAndRoundtablesDocAccessFields_publishedAt_Create - read: TalksAndRoundtablesDocAccessFields_publishedAt_Read - update: TalksAndRoundtablesDocAccessFields_publishedAt_Update - delete: TalksAndRoundtablesDocAccessFields_publishedAt_Delete -} - -type TalksAndRoundtablesDocAccessFields_publishedAt_Create { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_publishedAt_Read { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_publishedAt_Update { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_publishedAt_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_slug { - create: TalksAndRoundtablesDocAccessFields_slug_Create - read: TalksAndRoundtablesDocAccessFields_slug_Read - update: TalksAndRoundtablesDocAccessFields_slug_Update - delete: TalksAndRoundtablesDocAccessFields_slug_Delete -} - -type TalksAndRoundtablesDocAccessFields_slug_Create { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_slug_Read { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_slug_Update { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_slug_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_updatedAt { - create: TalksAndRoundtablesDocAccessFields_updatedAt_Create - read: TalksAndRoundtablesDocAccessFields_updatedAt_Read - update: TalksAndRoundtablesDocAccessFields_updatedAt_Update - delete: TalksAndRoundtablesDocAccessFields_updatedAt_Delete -} - -type TalksAndRoundtablesDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_createdAt { - create: TalksAndRoundtablesDocAccessFields_createdAt_Create - read: TalksAndRoundtablesDocAccessFields_createdAt_Read - update: TalksAndRoundtablesDocAccessFields_createdAt_Update - delete: TalksAndRoundtablesDocAccessFields_createdAt_Delete -} - -type TalksAndRoundtablesDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields__status { - create: TalksAndRoundtablesDocAccessFields__status_Create - read: TalksAndRoundtablesDocAccessFields__status_Read - update: TalksAndRoundtablesDocAccessFields__status_Update - delete: TalksAndRoundtablesDocAccessFields__status_Delete -} - -type TalksAndRoundtablesDocAccessFields__status_Create { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields__status_Read { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields__status_Update { - permission: Boolean! -} - -type TalksAndRoundtablesDocAccessFields__status_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -type TalksAndRoundtablesReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type TalksAndRoundtablesUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type TalksAndRoundtablesDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type TalksAndRoundtablesReadVersionsDocAccess { - permission: Boolean! - where: JSONObject -} - -type TalksAndRoundtableVersion { - parent(draft: Boolean): TalksAndRoundtable - version: TalksAndRoundtableVersion_Version - createdAt: DateTime - updatedAt: DateTime - latest: Boolean - id: String -} - -type TalksAndRoundtableVersion_Version { - title: String - about: String - categories: [Category!] - url: String - authors(draft: Boolean): [Author!] - publishedAt: DateTime - slug: String - updatedAt: DateTime - createdAt: DateTime - _status: TalksAndRoundtableVersion_Version__status -} - -enum TalksAndRoundtableVersion_Version__status { - draft - published -} - -type versionsTalksAndRoundtables { - docs: [TalksAndRoundtableVersion] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input versionsTalksAndRoundtable_where { - parent: versionsTalksAndRoundtable_parent_operator - version__title: versionsTalksAndRoundtable_version__title_operator - version__about: versionsTalksAndRoundtable_version__about_operator - version__categories: versionsTalksAndRoundtable_version__categories_operator - version__url: versionsTalksAndRoundtable_version__url_operator - version__authors: versionsTalksAndRoundtable_version__authors_operator - version__publishedAt: versionsTalksAndRoundtable_version__publishedAt_operator - version__slug: versionsTalksAndRoundtable_version__slug_operator - version__updatedAt: versionsTalksAndRoundtable_version__updatedAt_operator - version__createdAt: versionsTalksAndRoundtable_version__createdAt_operator - version___status: versionsTalksAndRoundtable_version___status_operator - createdAt: versionsTalksAndRoundtable_createdAt_operator - updatedAt: versionsTalksAndRoundtable_updatedAt_operator - latest: versionsTalksAndRoundtable_latest_operator - id: versionsTalksAndRoundtable_id_operator - AND: [versionsTalksAndRoundtable_where_and] - OR: [versionsTalksAndRoundtable_where_or] -} - -input versionsTalksAndRoundtable_parent_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsTalksAndRoundtable_version__title_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] -} - -input versionsTalksAndRoundtable_version__about_operator { - equals: String - not_equals: String - like: String - contains: String -} - -input versionsTalksAndRoundtable_version__categories_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsTalksAndRoundtable_version__url_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsTalksAndRoundtable_version__authors_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsTalksAndRoundtable_version__publishedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsTalksAndRoundtable_version__slug_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsTalksAndRoundtable_version__updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsTalksAndRoundtable_version__createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsTalksAndRoundtable_version___status_operator { - equals: versionsTalksAndRoundtable_version___status_Input - not_equals: versionsTalksAndRoundtable_version___status_Input - in: [versionsTalksAndRoundtable_version___status_Input] - not_in: [versionsTalksAndRoundtable_version___status_Input] - all: [versionsTalksAndRoundtable_version___status_Input] - exists: Boolean -} - -enum versionsTalksAndRoundtable_version___status_Input { - draft - published -} - -input versionsTalksAndRoundtable_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsTalksAndRoundtable_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsTalksAndRoundtable_latest_operator { - equals: Boolean - not_equals: Boolean - exists: Boolean -} - -input versionsTalksAndRoundtable_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsTalksAndRoundtable_where_and { - parent: versionsTalksAndRoundtable_parent_operator - version__title: versionsTalksAndRoundtable_version__title_operator - version__about: versionsTalksAndRoundtable_version__about_operator - version__categories: versionsTalksAndRoundtable_version__categories_operator - version__url: versionsTalksAndRoundtable_version__url_operator - version__authors: versionsTalksAndRoundtable_version__authors_operator - version__publishedAt: versionsTalksAndRoundtable_version__publishedAt_operator - version__slug: versionsTalksAndRoundtable_version__slug_operator - version__updatedAt: versionsTalksAndRoundtable_version__updatedAt_operator - version__createdAt: versionsTalksAndRoundtable_version__createdAt_operator - version___status: versionsTalksAndRoundtable_version___status_operator - createdAt: versionsTalksAndRoundtable_createdAt_operator - updatedAt: versionsTalksAndRoundtable_updatedAt_operator - latest: versionsTalksAndRoundtable_latest_operator - id: versionsTalksAndRoundtable_id_operator - AND: [versionsTalksAndRoundtable_where_and] - OR: [versionsTalksAndRoundtable_where_or] -} - -input versionsTalksAndRoundtable_where_or { - parent: versionsTalksAndRoundtable_parent_operator - version__title: versionsTalksAndRoundtable_version__title_operator - version__about: versionsTalksAndRoundtable_version__about_operator - version__categories: versionsTalksAndRoundtable_version__categories_operator - version__url: versionsTalksAndRoundtable_version__url_operator - version__authors: versionsTalksAndRoundtable_version__authors_operator - version__publishedAt: versionsTalksAndRoundtable_version__publishedAt_operator - version__slug: versionsTalksAndRoundtable_version__slug_operator - version__updatedAt: versionsTalksAndRoundtable_version__updatedAt_operator - version__createdAt: versionsTalksAndRoundtable_version__createdAt_operator - version___status: versionsTalksAndRoundtable_version___status_operator - createdAt: versionsTalksAndRoundtable_createdAt_operator - updatedAt: versionsTalksAndRoundtable_updatedAt_operator - latest: versionsTalksAndRoundtable_latest_operator - id: versionsTalksAndRoundtable_id_operator - AND: [versionsTalksAndRoundtable_where_and] - OR: [versionsTalksAndRoundtable_where_or] -} - -type CaseStudy { - id: String - title: String - summary: String - authors(draft: Boolean): [Author!] - categories: [Category!] - slug: String - updatedAt: DateTime - createdAt: DateTime - _status: CaseStudy__status -} - -enum CaseStudy__status { - draft - published -} - -type CaseStudies { - docs: [CaseStudy] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input CaseStudy_where { - title: CaseStudy_title_operator - summary: CaseStudy_summary_operator - authors: CaseStudy_authors_operator - categories: CaseStudy_categories_operator - slug: CaseStudy_slug_operator - updatedAt: CaseStudy_updatedAt_operator - createdAt: CaseStudy_createdAt_operator - _status: CaseStudy__status_operator - id: CaseStudy_id_operator - AND: [CaseStudy_where_and] - OR: [CaseStudy_where_or] -} - -input CaseStudy_title_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input CaseStudy_summary_operator { - equals: String - not_equals: String - like: String - contains: String - exists: Boolean -} - -input CaseStudy_authors_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input CaseStudy_categories_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input CaseStudy_slug_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input CaseStudy_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input CaseStudy_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input CaseStudy__status_operator { - equals: CaseStudy__status_Input - not_equals: CaseStudy__status_Input - in: [CaseStudy__status_Input] - not_in: [CaseStudy__status_Input] - all: [CaseStudy__status_Input] - exists: Boolean -} - -enum CaseStudy__status_Input { - draft - published -} - -input CaseStudy_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input CaseStudy_where_and { - title: CaseStudy_title_operator - summary: CaseStudy_summary_operator - authors: CaseStudy_authors_operator - categories: CaseStudy_categories_operator - slug: CaseStudy_slug_operator - updatedAt: CaseStudy_updatedAt_operator - createdAt: CaseStudy_createdAt_operator - _status: CaseStudy__status_operator - id: CaseStudy_id_operator - AND: [CaseStudy_where_and] - OR: [CaseStudy_where_or] -} - -input CaseStudy_where_or { - title: CaseStudy_title_operator - summary: CaseStudy_summary_operator - authors: CaseStudy_authors_operator - categories: CaseStudy_categories_operator - slug: CaseStudy_slug_operator - updatedAt: CaseStudy_updatedAt_operator - createdAt: CaseStudy_createdAt_operator - _status: CaseStudy__status_operator - id: CaseStudy_id_operator - AND: [CaseStudy_where_and] - OR: [CaseStudy_where_or] -} - -type countCaseStudies { - totalDocs: Int -} - -type case_studiesDocAccess { - fields: CaseStudiesDocAccessFields - create: CaseStudiesCreateDocAccess - read: CaseStudiesReadDocAccess - update: CaseStudiesUpdateDocAccess - delete: CaseStudiesDeleteDocAccess - readVersions: CaseStudiesReadVersionsDocAccess -} - -type CaseStudiesDocAccessFields { - title: CaseStudiesDocAccessFields_title - summary: CaseStudiesDocAccessFields_summary - authors: CaseStudiesDocAccessFields_authors - categories: CaseStudiesDocAccessFields_categories - slug: CaseStudiesDocAccessFields_slug - updatedAt: CaseStudiesDocAccessFields_updatedAt - createdAt: CaseStudiesDocAccessFields_createdAt - _status: CaseStudiesDocAccessFields__status -} - -type CaseStudiesDocAccessFields_title { - create: CaseStudiesDocAccessFields_title_Create - read: CaseStudiesDocAccessFields_title_Read - update: CaseStudiesDocAccessFields_title_Update - delete: CaseStudiesDocAccessFields_title_Delete -} - -type CaseStudiesDocAccessFields_title_Create { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_title_Read { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_title_Update { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_title_Delete { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_summary { - create: CaseStudiesDocAccessFields_summary_Create - read: CaseStudiesDocAccessFields_summary_Read - update: CaseStudiesDocAccessFields_summary_Update - delete: CaseStudiesDocAccessFields_summary_Delete -} - -type CaseStudiesDocAccessFields_summary_Create { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_summary_Read { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_summary_Update { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_summary_Delete { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_authors { - create: CaseStudiesDocAccessFields_authors_Create - read: CaseStudiesDocAccessFields_authors_Read - update: CaseStudiesDocAccessFields_authors_Update - delete: CaseStudiesDocAccessFields_authors_Delete -} - -type CaseStudiesDocAccessFields_authors_Create { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_authors_Read { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_authors_Update { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_authors_Delete { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_categories { - create: CaseStudiesDocAccessFields_categories_Create - read: CaseStudiesDocAccessFields_categories_Read - update: CaseStudiesDocAccessFields_categories_Update - delete: CaseStudiesDocAccessFields_categories_Delete -} - -type CaseStudiesDocAccessFields_categories_Create { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_categories_Read { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_categories_Update { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_categories_Delete { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_slug { - create: CaseStudiesDocAccessFields_slug_Create - read: CaseStudiesDocAccessFields_slug_Read - update: CaseStudiesDocAccessFields_slug_Update - delete: CaseStudiesDocAccessFields_slug_Delete -} - -type CaseStudiesDocAccessFields_slug_Create { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_slug_Read { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_slug_Update { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_slug_Delete { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_updatedAt { - create: CaseStudiesDocAccessFields_updatedAt_Create - read: CaseStudiesDocAccessFields_updatedAt_Read - update: CaseStudiesDocAccessFields_updatedAt_Update - delete: CaseStudiesDocAccessFields_updatedAt_Delete -} - -type CaseStudiesDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_createdAt { - create: CaseStudiesDocAccessFields_createdAt_Create - read: CaseStudiesDocAccessFields_createdAt_Read - update: CaseStudiesDocAccessFields_createdAt_Update - delete: CaseStudiesDocAccessFields_createdAt_Delete -} - -type CaseStudiesDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type CaseStudiesDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type CaseStudiesDocAccessFields__status { - create: CaseStudiesDocAccessFields__status_Create - read: CaseStudiesDocAccessFields__status_Read - update: CaseStudiesDocAccessFields__status_Update - delete: CaseStudiesDocAccessFields__status_Delete -} - -type CaseStudiesDocAccessFields__status_Create { - permission: Boolean! -} - -type CaseStudiesDocAccessFields__status_Read { - permission: Boolean! -} - -type CaseStudiesDocAccessFields__status_Update { - permission: Boolean! -} - -type CaseStudiesDocAccessFields__status_Delete { - permission: Boolean! -} - -type CaseStudiesCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -type CaseStudiesReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type CaseStudiesUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type CaseStudiesDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type CaseStudiesReadVersionsDocAccess { - permission: Boolean! - where: JSONObject -} - -type CaseStudyVersion { - parent(draft: Boolean): CaseStudy - version: CaseStudyVersion_Version - createdAt: DateTime - updatedAt: DateTime - latest: Boolean - id: String -} - -type CaseStudyVersion_Version { - title: String - summary: String - authors(draft: Boolean): [Author!] - categories: [Category!] - slug: String - updatedAt: DateTime - createdAt: DateTime - _status: CaseStudyVersion_Version__status -} - -enum CaseStudyVersion_Version__status { - draft - published -} - -type versionsCaseStudies { - docs: [CaseStudyVersion] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input versionsCaseStudy_where { - parent: versionsCaseStudy_parent_operator - version__title: versionsCaseStudy_version__title_operator - version__summary: versionsCaseStudy_version__summary_operator - version__authors: versionsCaseStudy_version__authors_operator - version__categories: versionsCaseStudy_version__categories_operator - version__slug: versionsCaseStudy_version__slug_operator - version__updatedAt: versionsCaseStudy_version__updatedAt_operator - version__createdAt: versionsCaseStudy_version__createdAt_operator - version___status: versionsCaseStudy_version___status_operator - createdAt: versionsCaseStudy_createdAt_operator - updatedAt: versionsCaseStudy_updatedAt_operator - latest: versionsCaseStudy_latest_operator - id: versionsCaseStudy_id_operator - AND: [versionsCaseStudy_where_and] - OR: [versionsCaseStudy_where_or] -} - -input versionsCaseStudy_parent_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsCaseStudy_version__title_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsCaseStudy_version__summary_operator { - equals: String - not_equals: String - like: String - contains: String - exists: Boolean -} - -input versionsCaseStudy_version__authors_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsCaseStudy_version__categories_operator { - equals: JSON - not_equals: JSON - in: [JSON] - not_in: [JSON] - all: [JSON] - exists: Boolean -} - -input versionsCaseStudy_version__slug_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsCaseStudy_version__updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsCaseStudy_version__createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsCaseStudy_version___status_operator { - equals: versionsCaseStudy_version___status_Input - not_equals: versionsCaseStudy_version___status_Input - in: [versionsCaseStudy_version___status_Input] - not_in: [versionsCaseStudy_version___status_Input] - all: [versionsCaseStudy_version___status_Input] - exists: Boolean -} - -enum versionsCaseStudy_version___status_Input { - draft - published -} - -input versionsCaseStudy_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsCaseStudy_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input versionsCaseStudy_latest_operator { - equals: Boolean - not_equals: Boolean - exists: Boolean -} - -input versionsCaseStudy_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input versionsCaseStudy_where_and { - parent: versionsCaseStudy_parent_operator - version__title: versionsCaseStudy_version__title_operator - version__summary: versionsCaseStudy_version__summary_operator - version__authors: versionsCaseStudy_version__authors_operator - version__categories: versionsCaseStudy_version__categories_operator - version__slug: versionsCaseStudy_version__slug_operator - version__updatedAt: versionsCaseStudy_version__updatedAt_operator - version__createdAt: versionsCaseStudy_version__createdAt_operator - version___status: versionsCaseStudy_version___status_operator - createdAt: versionsCaseStudy_createdAt_operator - updatedAt: versionsCaseStudy_updatedAt_operator - latest: versionsCaseStudy_latest_operator - id: versionsCaseStudy_id_operator - AND: [versionsCaseStudy_where_and] - OR: [versionsCaseStudy_where_or] -} - -input versionsCaseStudy_where_or { - parent: versionsCaseStudy_parent_operator - version__title: versionsCaseStudy_version__title_operator - version__summary: versionsCaseStudy_version__summary_operator - version__authors: versionsCaseStudy_version__authors_operator - version__categories: versionsCaseStudy_version__categories_operator - version__slug: versionsCaseStudy_version__slug_operator - version__updatedAt: versionsCaseStudy_version__updatedAt_operator - version__createdAt: versionsCaseStudy_version__createdAt_operator - version___status: versionsCaseStudy_version___status_operator - createdAt: versionsCaseStudy_createdAt_operator - updatedAt: versionsCaseStudy_updatedAt_operator - latest: versionsCaseStudy_latest_operator - id: versionsCaseStudy_id_operator - AND: [versionsCaseStudy_where_and] - OR: [versionsCaseStudy_where_or] -} - -type PayloadPreference { - id: String - user: PayloadPreference_User_Relationship! - key: String - value: JSON - updatedAt: DateTime - createdAt: DateTime -} - -type PayloadPreference_User_Relationship { - relationTo: PayloadPreference_User_RelationTo - value: PayloadPreference_User -} - -enum PayloadPreference_User_RelationTo { - users -} - -union PayloadPreference_User = User - -type PayloadPreferences { - docs: [PayloadPreference] - hasNextPage: Boolean - hasPrevPage: Boolean - limit: Int - nextPage: Int - offset: Int - page: Int - pagingCounter: Int - prevPage: Int - totalDocs: Int - totalPages: Int -} - -input PayloadPreference_where { - user: PayloadPreference_user_Relation - key: PayloadPreference_key_operator - value: PayloadPreference_value_operator - updatedAt: PayloadPreference_updatedAt_operator - createdAt: PayloadPreference_createdAt_operator - id: PayloadPreference_id_operator - AND: [PayloadPreference_where_and] - OR: [PayloadPreference_where_or] -} - -input PayloadPreference_user_Relation { - relationTo: PayloadPreference_user_Relation_RelationTo - value: JSON -} - -enum PayloadPreference_user_Relation_RelationTo { - users -} - -input PayloadPreference_key_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PayloadPreference_value_operator { - equals: JSON - not_equals: JSON - like: JSON - contains: JSON - within: JSON - intersects: JSON - exists: Boolean -} - -input PayloadPreference_updatedAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PayloadPreference_createdAt_operator { - equals: DateTime - not_equals: DateTime - greater_than_equal: DateTime - greater_than: DateTime - less_than_equal: DateTime - less_than: DateTime - like: DateTime - exists: Boolean -} - -input PayloadPreference_id_operator { - equals: String - not_equals: String - like: String - contains: String - in: [String] - not_in: [String] - all: [String] - exists: Boolean -} - -input PayloadPreference_where_and { - user: PayloadPreference_user_Relation - key: PayloadPreference_key_operator - value: PayloadPreference_value_operator - updatedAt: PayloadPreference_updatedAt_operator - createdAt: PayloadPreference_createdAt_operator - id: PayloadPreference_id_operator - AND: [PayloadPreference_where_and] - OR: [PayloadPreference_where_or] -} - -input PayloadPreference_where_or { - user: PayloadPreference_user_Relation - key: PayloadPreference_key_operator - value: PayloadPreference_value_operator - updatedAt: PayloadPreference_updatedAt_operator - createdAt: PayloadPreference_createdAt_operator - id: PayloadPreference_id_operator - AND: [PayloadPreference_where_and] - OR: [PayloadPreference_where_or] -} - -type countPayloadPreferences { - totalDocs: Int -} - -type payload_preferencesDocAccess { - fields: PayloadPreferencesDocAccessFields - create: PayloadPreferencesCreateDocAccess - read: PayloadPreferencesReadDocAccess - update: PayloadPreferencesUpdateDocAccess - delete: PayloadPreferencesDeleteDocAccess -} - -type PayloadPreferencesDocAccessFields { - user: PayloadPreferencesDocAccessFields_user - key: PayloadPreferencesDocAccessFields_key - value: PayloadPreferencesDocAccessFields_value - updatedAt: PayloadPreferencesDocAccessFields_updatedAt - createdAt: PayloadPreferencesDocAccessFields_createdAt -} - -type PayloadPreferencesDocAccessFields_user { - create: PayloadPreferencesDocAccessFields_user_Create - read: PayloadPreferencesDocAccessFields_user_Read - update: PayloadPreferencesDocAccessFields_user_Update - delete: PayloadPreferencesDocAccessFields_user_Delete -} - -type PayloadPreferencesDocAccessFields_user_Create { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_user_Read { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_user_Update { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_user_Delete { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_key { - create: PayloadPreferencesDocAccessFields_key_Create - read: PayloadPreferencesDocAccessFields_key_Read - update: PayloadPreferencesDocAccessFields_key_Update - delete: PayloadPreferencesDocAccessFields_key_Delete -} - -type PayloadPreferencesDocAccessFields_key_Create { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_key_Read { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_key_Update { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_key_Delete { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_value { - create: PayloadPreferencesDocAccessFields_value_Create - read: PayloadPreferencesDocAccessFields_value_Read - update: PayloadPreferencesDocAccessFields_value_Update - delete: PayloadPreferencesDocAccessFields_value_Delete -} - -type PayloadPreferencesDocAccessFields_value_Create { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_value_Read { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_value_Update { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_value_Delete { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_updatedAt { - create: PayloadPreferencesDocAccessFields_updatedAt_Create - read: PayloadPreferencesDocAccessFields_updatedAt_Read - update: PayloadPreferencesDocAccessFields_updatedAt_Update - delete: PayloadPreferencesDocAccessFields_updatedAt_Delete -} - -type PayloadPreferencesDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_createdAt { - create: PayloadPreferencesDocAccessFields_createdAt_Create - read: PayloadPreferencesDocAccessFields_createdAt_Read - update: PayloadPreferencesDocAccessFields_createdAt_Update - delete: PayloadPreferencesDocAccessFields_createdAt_Delete -} - -type PayloadPreferencesDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type PayloadPreferencesDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type PayloadPreferencesCreateDocAccess { - permission: Boolean! - where: JSONObject -} - -type PayloadPreferencesReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type PayloadPreferencesUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type PayloadPreferencesDeleteDocAccess { - permission: Boolean! - where: JSONObject -} - -type Settings { - postsPage(draft: Boolean): Page - projectsPage(draft: Boolean): Page - podcastEpisodesPage(draft: Boolean): Page - updatedAt: DateTime - createdAt: DateTime -} - -type settingsDocAccess { - fields: SettingsDocAccessFields - read: SettingsReadDocAccess - update: SettingsUpdateDocAccess -} - -type SettingsDocAccessFields { - postsPage: SettingsDocAccessFields_postsPage - projectsPage: SettingsDocAccessFields_projectsPage - podcastEpisodesPage: SettingsDocAccessFields_podcastEpisodesPage - updatedAt: SettingsDocAccessFields_updatedAt - createdAt: SettingsDocAccessFields_createdAt -} - -type SettingsDocAccessFields_postsPage { - create: SettingsDocAccessFields_postsPage_Create - read: SettingsDocAccessFields_postsPage_Read - update: SettingsDocAccessFields_postsPage_Update - delete: SettingsDocAccessFields_postsPage_Delete -} - -type SettingsDocAccessFields_postsPage_Create { - permission: Boolean! -} - -type SettingsDocAccessFields_postsPage_Read { - permission: Boolean! -} - -type SettingsDocAccessFields_postsPage_Update { - permission: Boolean! -} - -type SettingsDocAccessFields_postsPage_Delete { - permission: Boolean! -} - -type SettingsDocAccessFields_projectsPage { - create: SettingsDocAccessFields_projectsPage_Create - read: SettingsDocAccessFields_projectsPage_Read - update: SettingsDocAccessFields_projectsPage_Update - delete: SettingsDocAccessFields_projectsPage_Delete -} - -type SettingsDocAccessFields_projectsPage_Create { - permission: Boolean! -} - -type SettingsDocAccessFields_projectsPage_Read { - permission: Boolean! -} - -type SettingsDocAccessFields_projectsPage_Update { - permission: Boolean! -} - -type SettingsDocAccessFields_projectsPage_Delete { - permission: Boolean! -} - -type SettingsDocAccessFields_podcastEpisodesPage { - create: SettingsDocAccessFields_podcastEpisodesPage_Create - read: SettingsDocAccessFields_podcastEpisodesPage_Read - update: SettingsDocAccessFields_podcastEpisodesPage_Update - delete: SettingsDocAccessFields_podcastEpisodesPage_Delete -} - -type SettingsDocAccessFields_podcastEpisodesPage_Create { - permission: Boolean! -} - -type SettingsDocAccessFields_podcastEpisodesPage_Read { - permission: Boolean! -} - -type SettingsDocAccessFields_podcastEpisodesPage_Update { - permission: Boolean! -} - -type SettingsDocAccessFields_podcastEpisodesPage_Delete { - permission: Boolean! -} - -type SettingsDocAccessFields_updatedAt { - create: SettingsDocAccessFields_updatedAt_Create - read: SettingsDocAccessFields_updatedAt_Read - update: SettingsDocAccessFields_updatedAt_Update - delete: SettingsDocAccessFields_updatedAt_Delete -} - -type SettingsDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type SettingsDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type SettingsDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type SettingsDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type SettingsDocAccessFields_createdAt { - create: SettingsDocAccessFields_createdAt_Create - read: SettingsDocAccessFields_createdAt_Read - update: SettingsDocAccessFields_createdAt_Update - delete: SettingsDocAccessFields_createdAt_Delete -} - -type SettingsDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type SettingsDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type SettingsDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type SettingsDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type SettingsReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type SettingsUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type Header { - navItems: [Header_NavItems!] - updatedAt: DateTime - createdAt: DateTime -} - -type Header_NavItems { - link: Header_NavItems_Link - id: String -} - -type Header_NavItems_Link { - type: Header_NavItems_Link_type - newTab: Boolean - reference(draft: Boolean): Header_NavItems_Link_Reference_Relationship - url: String - label: String -} - -enum Header_NavItems_Link_type { - reference - custom -} - -type Header_NavItems_Link_Reference_Relationship { - relationTo: Header_NavItems_Link_Reference_RelationTo - value: Header_NavItems_Link_Reference -} - -enum Header_NavItems_Link_Reference_RelationTo { - pages -} - -union Header_NavItems_Link_Reference = Page - -type headerDocAccess { - fields: HeaderDocAccessFields - read: HeaderReadDocAccess - update: HeaderUpdateDocAccess -} - -type HeaderDocAccessFields { - navItems: HeaderDocAccessFields_navItems - updatedAt: HeaderDocAccessFields_updatedAt - createdAt: HeaderDocAccessFields_createdAt -} - -type HeaderDocAccessFields_navItems { - create: HeaderDocAccessFields_navItems_Create - read: HeaderDocAccessFields_navItems_Read - update: HeaderDocAccessFields_navItems_Update - delete: HeaderDocAccessFields_navItems_Delete - fields: HeaderDocAccessFields_navItems_Fields -} - -type HeaderDocAccessFields_navItems_Create { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_Read { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_Update { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_Delete { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_Fields { - link: HeaderDocAccessFields_navItems_link - id: HeaderDocAccessFields_navItems_id -} - -type HeaderDocAccessFields_navItems_link { - create: HeaderDocAccessFields_navItems_link_Create - read: HeaderDocAccessFields_navItems_link_Read - update: HeaderDocAccessFields_navItems_link_Update - delete: HeaderDocAccessFields_navItems_link_Delete - fields: HeaderDocAccessFields_navItems_link_Fields -} - -type HeaderDocAccessFields_navItems_link_Create { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_Read { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_Update { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_Delete { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_Fields { - type: HeaderDocAccessFields_navItems_link_type - newTab: HeaderDocAccessFields_navItems_link_newTab - reference: HeaderDocAccessFields_navItems_link_reference - url: HeaderDocAccessFields_navItems_link_url - label: HeaderDocAccessFields_navItems_link_label -} - -type HeaderDocAccessFields_navItems_link_type { - create: HeaderDocAccessFields_navItems_link_type_Create - read: HeaderDocAccessFields_navItems_link_type_Read - update: HeaderDocAccessFields_navItems_link_type_Update - delete: HeaderDocAccessFields_navItems_link_type_Delete -} - -type HeaderDocAccessFields_navItems_link_type_Create { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_type_Read { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_type_Update { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_type_Delete { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_newTab { - create: HeaderDocAccessFields_navItems_link_newTab_Create - read: HeaderDocAccessFields_navItems_link_newTab_Read - update: HeaderDocAccessFields_navItems_link_newTab_Update - delete: HeaderDocAccessFields_navItems_link_newTab_Delete -} - -type HeaderDocAccessFields_navItems_link_newTab_Create { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_newTab_Read { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_newTab_Update { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_newTab_Delete { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_reference { - create: HeaderDocAccessFields_navItems_link_reference_Create - read: HeaderDocAccessFields_navItems_link_reference_Read - update: HeaderDocAccessFields_navItems_link_reference_Update - delete: HeaderDocAccessFields_navItems_link_reference_Delete -} - -type HeaderDocAccessFields_navItems_link_reference_Create { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_reference_Read { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_reference_Update { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_reference_Delete { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_url { - create: HeaderDocAccessFields_navItems_link_url_Create - read: HeaderDocAccessFields_navItems_link_url_Read - update: HeaderDocAccessFields_navItems_link_url_Update - delete: HeaderDocAccessFields_navItems_link_url_Delete -} - -type HeaderDocAccessFields_navItems_link_url_Create { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_url_Read { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_url_Update { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_url_Delete { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_label { - create: HeaderDocAccessFields_navItems_link_label_Create - read: HeaderDocAccessFields_navItems_link_label_Read - update: HeaderDocAccessFields_navItems_link_label_Update - delete: HeaderDocAccessFields_navItems_link_label_Delete -} - -type HeaderDocAccessFields_navItems_link_label_Create { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_label_Read { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_label_Update { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_link_label_Delete { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_id { - create: HeaderDocAccessFields_navItems_id_Create - read: HeaderDocAccessFields_navItems_id_Read - update: HeaderDocAccessFields_navItems_id_Update - delete: HeaderDocAccessFields_navItems_id_Delete -} - -type HeaderDocAccessFields_navItems_id_Create { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_id_Read { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_id_Update { - permission: Boolean! -} - -type HeaderDocAccessFields_navItems_id_Delete { - permission: Boolean! -} - -type HeaderDocAccessFields_updatedAt { - create: HeaderDocAccessFields_updatedAt_Create - read: HeaderDocAccessFields_updatedAt_Read - update: HeaderDocAccessFields_updatedAt_Update - delete: HeaderDocAccessFields_updatedAt_Delete -} - -type HeaderDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type HeaderDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type HeaderDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type HeaderDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type HeaderDocAccessFields_createdAt { - create: HeaderDocAccessFields_createdAt_Create - read: HeaderDocAccessFields_createdAt_Read - update: HeaderDocAccessFields_createdAt_Update - delete: HeaderDocAccessFields_createdAt_Delete -} - -type HeaderDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type HeaderDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type HeaderDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type HeaderDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type HeaderReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type HeaderUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type Footer { - navItems: [Footer_NavItems!] - updatedAt: DateTime - createdAt: DateTime -} - -type Footer_NavItems { - link: Footer_NavItems_Link - id: String -} - -type Footer_NavItems_Link { - type: Footer_NavItems_Link_type - newTab: Boolean - reference(draft: Boolean): Footer_NavItems_Link_Reference_Relationship - url: String - label: String -} - -enum Footer_NavItems_Link_type { - reference - custom -} - -type Footer_NavItems_Link_Reference_Relationship { - relationTo: Footer_NavItems_Link_Reference_RelationTo - value: Footer_NavItems_Link_Reference -} - -enum Footer_NavItems_Link_Reference_RelationTo { - pages -} - -union Footer_NavItems_Link_Reference = Page - -type footerDocAccess { - fields: FooterDocAccessFields - read: FooterReadDocAccess - update: FooterUpdateDocAccess -} - -type FooterDocAccessFields { - navItems: FooterDocAccessFields_navItems - updatedAt: FooterDocAccessFields_updatedAt - createdAt: FooterDocAccessFields_createdAt -} - -type FooterDocAccessFields_navItems { - create: FooterDocAccessFields_navItems_Create - read: FooterDocAccessFields_navItems_Read - update: FooterDocAccessFields_navItems_Update - delete: FooterDocAccessFields_navItems_Delete - fields: FooterDocAccessFields_navItems_Fields -} - -type FooterDocAccessFields_navItems_Create { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_Read { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_Update { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_Delete { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_Fields { - link: FooterDocAccessFields_navItems_link - id: FooterDocAccessFields_navItems_id -} - -type FooterDocAccessFields_navItems_link { - create: FooterDocAccessFields_navItems_link_Create - read: FooterDocAccessFields_navItems_link_Read - update: FooterDocAccessFields_navItems_link_Update - delete: FooterDocAccessFields_navItems_link_Delete - fields: FooterDocAccessFields_navItems_link_Fields -} - -type FooterDocAccessFields_navItems_link_Create { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_Read { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_Update { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_Delete { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_Fields { - type: FooterDocAccessFields_navItems_link_type - newTab: FooterDocAccessFields_navItems_link_newTab - reference: FooterDocAccessFields_navItems_link_reference - url: FooterDocAccessFields_navItems_link_url - label: FooterDocAccessFields_navItems_link_label -} - -type FooterDocAccessFields_navItems_link_type { - create: FooterDocAccessFields_navItems_link_type_Create - read: FooterDocAccessFields_navItems_link_type_Read - update: FooterDocAccessFields_navItems_link_type_Update - delete: FooterDocAccessFields_navItems_link_type_Delete -} - -type FooterDocAccessFields_navItems_link_type_Create { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_type_Read { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_type_Update { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_type_Delete { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_newTab { - create: FooterDocAccessFields_navItems_link_newTab_Create - read: FooterDocAccessFields_navItems_link_newTab_Read - update: FooterDocAccessFields_navItems_link_newTab_Update - delete: FooterDocAccessFields_navItems_link_newTab_Delete -} - -type FooterDocAccessFields_navItems_link_newTab_Create { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_newTab_Read { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_newTab_Update { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_newTab_Delete { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_reference { - create: FooterDocAccessFields_navItems_link_reference_Create - read: FooterDocAccessFields_navItems_link_reference_Read - update: FooterDocAccessFields_navItems_link_reference_Update - delete: FooterDocAccessFields_navItems_link_reference_Delete -} - -type FooterDocAccessFields_navItems_link_reference_Create { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_reference_Read { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_reference_Update { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_reference_Delete { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_url { - create: FooterDocAccessFields_navItems_link_url_Create - read: FooterDocAccessFields_navItems_link_url_Read - update: FooterDocAccessFields_navItems_link_url_Update - delete: FooterDocAccessFields_navItems_link_url_Delete -} - -type FooterDocAccessFields_navItems_link_url_Create { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_url_Read { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_url_Update { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_url_Delete { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_label { - create: FooterDocAccessFields_navItems_link_label_Create - read: FooterDocAccessFields_navItems_link_label_Read - update: FooterDocAccessFields_navItems_link_label_Update - delete: FooterDocAccessFields_navItems_link_label_Delete -} - -type FooterDocAccessFields_navItems_link_label_Create { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_label_Read { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_label_Update { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_link_label_Delete { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_id { - create: FooterDocAccessFields_navItems_id_Create - read: FooterDocAccessFields_navItems_id_Read - update: FooterDocAccessFields_navItems_id_Update - delete: FooterDocAccessFields_navItems_id_Delete -} - -type FooterDocAccessFields_navItems_id_Create { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_id_Read { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_id_Update { - permission: Boolean! -} - -type FooterDocAccessFields_navItems_id_Delete { - permission: Boolean! -} - -type FooterDocAccessFields_updatedAt { - create: FooterDocAccessFields_updatedAt_Create - read: FooterDocAccessFields_updatedAt_Read - update: FooterDocAccessFields_updatedAt_Update - delete: FooterDocAccessFields_updatedAt_Delete -} - -type FooterDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type FooterDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type FooterDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type FooterDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type FooterDocAccessFields_createdAt { - create: FooterDocAccessFields_createdAt_Create - read: FooterDocAccessFields_createdAt_Read - update: FooterDocAccessFields_createdAt_Update - delete: FooterDocAccessFields_createdAt_Delete -} - -type FooterDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type FooterDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type FooterDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type FooterDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type FooterReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type FooterUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type Social { - socials: [Social_Socials!] - updatedAt: DateTime - createdAt: DateTime -} - -type Social_Socials { - name: String - link: String - id: String -} - -type socialsDocAccess { - fields: SocialsDocAccessFields - read: SocialsReadDocAccess - update: SocialsUpdateDocAccess -} - -type SocialsDocAccessFields { - socials: SocialsDocAccessFields_socials - updatedAt: SocialsDocAccessFields_updatedAt - createdAt: SocialsDocAccessFields_createdAt -} - -type SocialsDocAccessFields_socials { - create: SocialsDocAccessFields_socials_Create - read: SocialsDocAccessFields_socials_Read - update: SocialsDocAccessFields_socials_Update - delete: SocialsDocAccessFields_socials_Delete - fields: SocialsDocAccessFields_socials_Fields -} - -type SocialsDocAccessFields_socials_Create { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_Read { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_Update { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_Delete { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_Fields { - name: SocialsDocAccessFields_socials_name - link: SocialsDocAccessFields_socials_link - id: SocialsDocAccessFields_socials_id -} - -type SocialsDocAccessFields_socials_name { - create: SocialsDocAccessFields_socials_name_Create - read: SocialsDocAccessFields_socials_name_Read - update: SocialsDocAccessFields_socials_name_Update - delete: SocialsDocAccessFields_socials_name_Delete -} - -type SocialsDocAccessFields_socials_name_Create { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_name_Read { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_name_Update { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_name_Delete { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_link { - create: SocialsDocAccessFields_socials_link_Create - read: SocialsDocAccessFields_socials_link_Read - update: SocialsDocAccessFields_socials_link_Update - delete: SocialsDocAccessFields_socials_link_Delete -} - -type SocialsDocAccessFields_socials_link_Create { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_link_Read { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_link_Update { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_link_Delete { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_id { - create: SocialsDocAccessFields_socials_id_Create - read: SocialsDocAccessFields_socials_id_Read - update: SocialsDocAccessFields_socials_id_Update - delete: SocialsDocAccessFields_socials_id_Delete -} - -type SocialsDocAccessFields_socials_id_Create { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_id_Read { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_id_Update { - permission: Boolean! -} - -type SocialsDocAccessFields_socials_id_Delete { - permission: Boolean! -} - -type SocialsDocAccessFields_updatedAt { - create: SocialsDocAccessFields_updatedAt_Create - read: SocialsDocAccessFields_updatedAt_Read - update: SocialsDocAccessFields_updatedAt_Update - delete: SocialsDocAccessFields_updatedAt_Delete -} - -type SocialsDocAccessFields_updatedAt_Create { - permission: Boolean! -} - -type SocialsDocAccessFields_updatedAt_Read { - permission: Boolean! -} - -type SocialsDocAccessFields_updatedAt_Update { - permission: Boolean! -} - -type SocialsDocAccessFields_updatedAt_Delete { - permission: Boolean! -} - -type SocialsDocAccessFields_createdAt { - create: SocialsDocAccessFields_createdAt_Create - read: SocialsDocAccessFields_createdAt_Read - update: SocialsDocAccessFields_createdAt_Update - delete: SocialsDocAccessFields_createdAt_Delete -} - -type SocialsDocAccessFields_createdAt_Create { - permission: Boolean! -} - -type SocialsDocAccessFields_createdAt_Read { - permission: Boolean! -} - -type SocialsDocAccessFields_createdAt_Update { - permission: Boolean! -} - -type SocialsDocAccessFields_createdAt_Delete { - permission: Boolean! -} - -type SocialsReadDocAccess { - permission: Boolean! - where: JSONObject -} - -type SocialsUpdateDocAccess { - permission: Boolean! - where: JSONObject -} - -type Access { - canAccessAdmin: Boolean! - pages: pagesAccess - media: mediaAccess - categories: categoriesAccess - users: usersAccess - authors: authorsAccess - podcast_episodes: podcast_episodesAccess - blogposts: blogpostsAccess - talks_and_roundtables: talks_and_roundtablesAccess - case_studies: case_studiesAccess - payload_preferences: payload_preferencesAccess - settings: settingsAccess - header: headerAccess - footer: footerAccess - socials: socialsAccess -} - -type pagesAccess { - fields: PagesFields - create: PagesCreateAccess - read: PagesReadAccess - update: PagesUpdateAccess - delete: PagesDeleteAccess - readVersions: PagesReadVersionsAccess -} - -type PagesFields { - title: PagesFields_title - publishedAt: PagesFields_publishedAt - hero: PagesFields_hero - layout: PagesFields_layout - slug: PagesFields_slug - updatedAt: PagesFields_updatedAt - createdAt: PagesFields_createdAt - _status: PagesFields__status -} - -type PagesFields_title { - create: PagesFields_title_Create - read: PagesFields_title_Read - update: PagesFields_title_Update - delete: PagesFields_title_Delete -} - -type PagesFields_title_Create { - permission: Boolean! -} - -type PagesFields_title_Read { - permission: Boolean! -} - -type PagesFields_title_Update { - permission: Boolean! -} - -type PagesFields_title_Delete { - permission: Boolean! -} - -type PagesFields_publishedAt { - create: PagesFields_publishedAt_Create - read: PagesFields_publishedAt_Read - update: PagesFields_publishedAt_Update - delete: PagesFields_publishedAt_Delete -} - -type PagesFields_publishedAt_Create { - permission: Boolean! -} - -type PagesFields_publishedAt_Read { - permission: Boolean! -} - -type PagesFields_publishedAt_Update { - permission: Boolean! -} - -type PagesFields_publishedAt_Delete { - permission: Boolean! -} - -type PagesFields_hero { - create: PagesFields_hero_Create - read: PagesFields_hero_Read - update: PagesFields_hero_Update - delete: PagesFields_hero_Delete - fields: PagesFields_hero_Fields -} - -type PagesFields_hero_Create { - permission: Boolean! -} - -type PagesFields_hero_Read { - permission: Boolean! -} - -type PagesFields_hero_Update { - permission: Boolean! -} - -type PagesFields_hero_Delete { - permission: Boolean! -} - -type PagesFields_hero_Fields { - type: PagesFields_hero_type - richText: PagesFields_hero_richText - links: PagesFields_hero_links - media: PagesFields_hero_media -} - -type PagesFields_hero_type { - create: PagesFields_hero_type_Create - read: PagesFields_hero_type_Read - update: PagesFields_hero_type_Update - delete: PagesFields_hero_type_Delete -} - -type PagesFields_hero_type_Create { - permission: Boolean! -} - -type PagesFields_hero_type_Read { - permission: Boolean! -} - -type PagesFields_hero_type_Update { - permission: Boolean! -} - -type PagesFields_hero_type_Delete { - permission: Boolean! -} - -type PagesFields_hero_richText { - create: PagesFields_hero_richText_Create - read: PagesFields_hero_richText_Read - update: PagesFields_hero_richText_Update - delete: PagesFields_hero_richText_Delete -} - -type PagesFields_hero_richText_Create { - permission: Boolean! -} - -type PagesFields_hero_richText_Read { - permission: Boolean! -} - -type PagesFields_hero_richText_Update { - permission: Boolean! -} - -type PagesFields_hero_richText_Delete { - permission: Boolean! -} - -type PagesFields_hero_links { - create: PagesFields_hero_links_Create - read: PagesFields_hero_links_Read - update: PagesFields_hero_links_Update - delete: PagesFields_hero_links_Delete - fields: PagesFields_hero_links_Fields -} - -type PagesFields_hero_links_Create { - permission: Boolean! -} - -type PagesFields_hero_links_Read { - permission: Boolean! -} - -type PagesFields_hero_links_Update { - permission: Boolean! -} - -type PagesFields_hero_links_Delete { - permission: Boolean! -} - -type PagesFields_hero_links_Fields { - link: PagesFields_hero_links_link - id: PagesFields_hero_links_id -} - -type PagesFields_hero_links_link { - create: PagesFields_hero_links_link_Create - read: PagesFields_hero_links_link_Read - update: PagesFields_hero_links_link_Update - delete: PagesFields_hero_links_link_Delete - fields: PagesFields_hero_links_link_Fields -} - -type PagesFields_hero_links_link_Create { - permission: Boolean! -} - -type PagesFields_hero_links_link_Read { - permission: Boolean! -} - -type PagesFields_hero_links_link_Update { - permission: Boolean! -} - -type PagesFields_hero_links_link_Delete { - permission: Boolean! -} - -type PagesFields_hero_links_link_Fields { - type: PagesFields_hero_links_link_type - newTab: PagesFields_hero_links_link_newTab - reference: PagesFields_hero_links_link_reference - url: PagesFields_hero_links_link_url - label: PagesFields_hero_links_link_label - appearance: PagesFields_hero_links_link_appearance -} - -type PagesFields_hero_links_link_type { - create: PagesFields_hero_links_link_type_Create - read: PagesFields_hero_links_link_type_Read - update: PagesFields_hero_links_link_type_Update - delete: PagesFields_hero_links_link_type_Delete -} - -type PagesFields_hero_links_link_type_Create { - permission: Boolean! -} - -type PagesFields_hero_links_link_type_Read { - permission: Boolean! -} - -type PagesFields_hero_links_link_type_Update { - permission: Boolean! -} - -type PagesFields_hero_links_link_type_Delete { - permission: Boolean! -} - -type PagesFields_hero_links_link_newTab { - create: PagesFields_hero_links_link_newTab_Create - read: PagesFields_hero_links_link_newTab_Read - update: PagesFields_hero_links_link_newTab_Update - delete: PagesFields_hero_links_link_newTab_Delete -} - -type PagesFields_hero_links_link_newTab_Create { - permission: Boolean! -} - -type PagesFields_hero_links_link_newTab_Read { - permission: Boolean! -} - -type PagesFields_hero_links_link_newTab_Update { - permission: Boolean! -} - -type PagesFields_hero_links_link_newTab_Delete { - permission: Boolean! -} - -type PagesFields_hero_links_link_reference { - create: PagesFields_hero_links_link_reference_Create - read: PagesFields_hero_links_link_reference_Read - update: PagesFields_hero_links_link_reference_Update - delete: PagesFields_hero_links_link_reference_Delete -} - -type PagesFields_hero_links_link_reference_Create { - permission: Boolean! -} - -type PagesFields_hero_links_link_reference_Read { - permission: Boolean! -} - -type PagesFields_hero_links_link_reference_Update { - permission: Boolean! -} - -type PagesFields_hero_links_link_reference_Delete { - permission: Boolean! -} - -type PagesFields_hero_links_link_url { - create: PagesFields_hero_links_link_url_Create - read: PagesFields_hero_links_link_url_Read - update: PagesFields_hero_links_link_url_Update - delete: PagesFields_hero_links_link_url_Delete -} - -type PagesFields_hero_links_link_url_Create { - permission: Boolean! -} - -type PagesFields_hero_links_link_url_Read { - permission: Boolean! -} - -type PagesFields_hero_links_link_url_Update { - permission: Boolean! -} - -type PagesFields_hero_links_link_url_Delete { - permission: Boolean! -} - -type PagesFields_hero_links_link_label { - create: PagesFields_hero_links_link_label_Create - read: PagesFields_hero_links_link_label_Read - update: PagesFields_hero_links_link_label_Update - delete: PagesFields_hero_links_link_label_Delete -} - -type PagesFields_hero_links_link_label_Create { - permission: Boolean! -} - -type PagesFields_hero_links_link_label_Read { - permission: Boolean! -} - -type PagesFields_hero_links_link_label_Update { - permission: Boolean! -} - -type PagesFields_hero_links_link_label_Delete { - permission: Boolean! -} - -type PagesFields_hero_links_link_appearance { - create: PagesFields_hero_links_link_appearance_Create - read: PagesFields_hero_links_link_appearance_Read - update: PagesFields_hero_links_link_appearance_Update - delete: PagesFields_hero_links_link_appearance_Delete -} - -type PagesFields_hero_links_link_appearance_Create { - permission: Boolean! -} - -type PagesFields_hero_links_link_appearance_Read { - permission: Boolean! -} - -type PagesFields_hero_links_link_appearance_Update { - permission: Boolean! -} - -type PagesFields_hero_links_link_appearance_Delete { - permission: Boolean! -} - -type PagesFields_hero_links_id { - create: PagesFields_hero_links_id_Create - read: PagesFields_hero_links_id_Read - update: PagesFields_hero_links_id_Update - delete: PagesFields_hero_links_id_Delete -} - -type PagesFields_hero_links_id_Create { - permission: Boolean! -} - -type PagesFields_hero_links_id_Read { - permission: Boolean! -} - -type PagesFields_hero_links_id_Update { - permission: Boolean! -} - -type PagesFields_hero_links_id_Delete { - permission: Boolean! -} - -type PagesFields_hero_media { - create: PagesFields_hero_media_Create - read: PagesFields_hero_media_Read - update: PagesFields_hero_media_Update - delete: PagesFields_hero_media_Delete -} - -type PagesFields_hero_media_Create { - permission: Boolean! -} - -type PagesFields_hero_media_Read { - permission: Boolean! -} - -type PagesFields_hero_media_Update { - permission: Boolean! -} - -type PagesFields_hero_media_Delete { - permission: Boolean! -} - -type PagesFields_layout { - create: PagesFields_layout_Create - read: PagesFields_layout_Read - update: PagesFields_layout_Update - delete: PagesFields_layout_Delete -} - -type PagesFields_layout_Create { - permission: Boolean! -} - -type PagesFields_layout_Read { - permission: Boolean! -} - -type PagesFields_layout_Update { - permission: Boolean! -} - -type PagesFields_layout_Delete { - permission: Boolean! -} - -type PagesFields_slug { - create: PagesFields_slug_Create - read: PagesFields_slug_Read - update: PagesFields_slug_Update - delete: PagesFields_slug_Delete -} - -type PagesFields_slug_Create { - permission: Boolean! -} - -type PagesFields_slug_Read { - permission: Boolean! -} - -type PagesFields_slug_Update { - permission: Boolean! -} - -type PagesFields_slug_Delete { - permission: Boolean! -} - -type PagesFields_updatedAt { - create: PagesFields_updatedAt_Create - read: PagesFields_updatedAt_Read - update: PagesFields_updatedAt_Update - delete: PagesFields_updatedAt_Delete -} - -type PagesFields_updatedAt_Create { - permission: Boolean! -} - -type PagesFields_updatedAt_Read { - permission: Boolean! -} - -type PagesFields_updatedAt_Update { - permission: Boolean! -} - -type PagesFields_updatedAt_Delete { - permission: Boolean! -} - -type PagesFields_createdAt { - create: PagesFields_createdAt_Create - read: PagesFields_createdAt_Read - update: PagesFields_createdAt_Update - delete: PagesFields_createdAt_Delete -} - -type PagesFields_createdAt_Create { - permission: Boolean! -} - -type PagesFields_createdAt_Read { - permission: Boolean! -} - -type PagesFields_createdAt_Update { - permission: Boolean! -} - -type PagesFields_createdAt_Delete { - permission: Boolean! -} - -type PagesFields__status { - create: PagesFields__status_Create - read: PagesFields__status_Read - update: PagesFields__status_Update - delete: PagesFields__status_Delete -} - -type PagesFields__status_Create { - permission: Boolean! -} - -type PagesFields__status_Read { - permission: Boolean! -} - -type PagesFields__status_Update { - permission: Boolean! -} - -type PagesFields__status_Delete { - permission: Boolean! -} - -type PagesCreateAccess { - permission: Boolean! - where: JSONObject -} - -type PagesReadAccess { - permission: Boolean! - where: JSONObject -} - -type PagesUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type PagesDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type PagesReadVersionsAccess { - permission: Boolean! - where: JSONObject -} - -type mediaAccess { - fields: MediaFields - create: MediaCreateAccess - read: MediaReadAccess - update: MediaUpdateAccess - delete: MediaDeleteAccess -} - -type MediaFields { - alt: MediaFields_alt - caption: MediaFields_caption - updatedAt: MediaFields_updatedAt - createdAt: MediaFields_createdAt - url: MediaFields_url - filename: MediaFields_filename - mimeType: MediaFields_mimeType - filesize: MediaFields_filesize - width: MediaFields_width - height: MediaFields_height - focalX: MediaFields_focalX - focalY: MediaFields_focalY -} - -type MediaFields_alt { - create: MediaFields_alt_Create - read: MediaFields_alt_Read - update: MediaFields_alt_Update - delete: MediaFields_alt_Delete -} - -type MediaFields_alt_Create { - permission: Boolean! -} - -type MediaFields_alt_Read { - permission: Boolean! -} - -type MediaFields_alt_Update { - permission: Boolean! -} - -type MediaFields_alt_Delete { - permission: Boolean! -} - -type MediaFields_caption { - create: MediaFields_caption_Create - read: MediaFields_caption_Read - update: MediaFields_caption_Update - delete: MediaFields_caption_Delete -} - -type MediaFields_caption_Create { - permission: Boolean! -} - -type MediaFields_caption_Read { - permission: Boolean! -} - -type MediaFields_caption_Update { - permission: Boolean! -} - -type MediaFields_caption_Delete { - permission: Boolean! -} - -type MediaFields_updatedAt { - create: MediaFields_updatedAt_Create - read: MediaFields_updatedAt_Read - update: MediaFields_updatedAt_Update - delete: MediaFields_updatedAt_Delete -} - -type MediaFields_updatedAt_Create { - permission: Boolean! -} - -type MediaFields_updatedAt_Read { - permission: Boolean! -} - -type MediaFields_updatedAt_Update { - permission: Boolean! -} - -type MediaFields_updatedAt_Delete { - permission: Boolean! -} - -type MediaFields_createdAt { - create: MediaFields_createdAt_Create - read: MediaFields_createdAt_Read - update: MediaFields_createdAt_Update - delete: MediaFields_createdAt_Delete -} - -type MediaFields_createdAt_Create { - permission: Boolean! -} - -type MediaFields_createdAt_Read { - permission: Boolean! -} - -type MediaFields_createdAt_Update { - permission: Boolean! -} - -type MediaFields_createdAt_Delete { - permission: Boolean! -} - -type MediaFields_url { - create: MediaFields_url_Create - read: MediaFields_url_Read - update: MediaFields_url_Update - delete: MediaFields_url_Delete -} - -type MediaFields_url_Create { - permission: Boolean! -} - -type MediaFields_url_Read { - permission: Boolean! -} - -type MediaFields_url_Update { - permission: Boolean! -} - -type MediaFields_url_Delete { - permission: Boolean! -} - -type MediaFields_filename { - create: MediaFields_filename_Create - read: MediaFields_filename_Read - update: MediaFields_filename_Update - delete: MediaFields_filename_Delete -} - -type MediaFields_filename_Create { - permission: Boolean! -} - -type MediaFields_filename_Read { - permission: Boolean! -} - -type MediaFields_filename_Update { - permission: Boolean! -} - -type MediaFields_filename_Delete { - permission: Boolean! -} - -type MediaFields_mimeType { - create: MediaFields_mimeType_Create - read: MediaFields_mimeType_Read - update: MediaFields_mimeType_Update - delete: MediaFields_mimeType_Delete -} - -type MediaFields_mimeType_Create { - permission: Boolean! -} - -type MediaFields_mimeType_Read { - permission: Boolean! -} - -type MediaFields_mimeType_Update { - permission: Boolean! -} - -type MediaFields_mimeType_Delete { - permission: Boolean! -} - -type MediaFields_filesize { - create: MediaFields_filesize_Create - read: MediaFields_filesize_Read - update: MediaFields_filesize_Update - delete: MediaFields_filesize_Delete -} - -type MediaFields_filesize_Create { - permission: Boolean! -} - -type MediaFields_filesize_Read { - permission: Boolean! -} - -type MediaFields_filesize_Update { - permission: Boolean! -} - -type MediaFields_filesize_Delete { - permission: Boolean! -} - -type MediaFields_width { - create: MediaFields_width_Create - read: MediaFields_width_Read - update: MediaFields_width_Update - delete: MediaFields_width_Delete -} - -type MediaFields_width_Create { - permission: Boolean! -} - -type MediaFields_width_Read { - permission: Boolean! -} - -type MediaFields_width_Update { - permission: Boolean! -} - -type MediaFields_width_Delete { - permission: Boolean! -} - -type MediaFields_height { - create: MediaFields_height_Create - read: MediaFields_height_Read - update: MediaFields_height_Update - delete: MediaFields_height_Delete -} - -type MediaFields_height_Create { - permission: Boolean! -} - -type MediaFields_height_Read { - permission: Boolean! -} - -type MediaFields_height_Update { - permission: Boolean! -} - -type MediaFields_height_Delete { - permission: Boolean! -} - -type MediaFields_focalX { - create: MediaFields_focalX_Create - read: MediaFields_focalX_Read - update: MediaFields_focalX_Update - delete: MediaFields_focalX_Delete -} - -type MediaFields_focalX_Create { - permission: Boolean! -} - -type MediaFields_focalX_Read { - permission: Boolean! -} - -type MediaFields_focalX_Update { - permission: Boolean! -} - -type MediaFields_focalX_Delete { - permission: Boolean! -} - -type MediaFields_focalY { - create: MediaFields_focalY_Create - read: MediaFields_focalY_Read - update: MediaFields_focalY_Update - delete: MediaFields_focalY_Delete -} - -type MediaFields_focalY_Create { - permission: Boolean! -} - -type MediaFields_focalY_Read { - permission: Boolean! -} - -type MediaFields_focalY_Update { - permission: Boolean! -} - -type MediaFields_focalY_Delete { - permission: Boolean! -} - -type MediaCreateAccess { - permission: Boolean! - where: JSONObject -} - -type MediaReadAccess { - permission: Boolean! - where: JSONObject -} - -type MediaUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type MediaDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type categoriesAccess { - fields: CategoriesFields - create: CategoriesCreateAccess - read: CategoriesReadAccess - update: CategoriesUpdateAccess - delete: CategoriesDeleteAccess -} - -type CategoriesFields { - title: CategoriesFields_title - updatedAt: CategoriesFields_updatedAt - createdAt: CategoriesFields_createdAt -} - -type CategoriesFields_title { - create: CategoriesFields_title_Create - read: CategoriesFields_title_Read - update: CategoriesFields_title_Update - delete: CategoriesFields_title_Delete -} - -type CategoriesFields_title_Create { - permission: Boolean! -} - -type CategoriesFields_title_Read { - permission: Boolean! -} - -type CategoriesFields_title_Update { - permission: Boolean! -} - -type CategoriesFields_title_Delete { - permission: Boolean! -} - -type CategoriesFields_updatedAt { - create: CategoriesFields_updatedAt_Create - read: CategoriesFields_updatedAt_Read - update: CategoriesFields_updatedAt_Update - delete: CategoriesFields_updatedAt_Delete -} - -type CategoriesFields_updatedAt_Create { - permission: Boolean! -} - -type CategoriesFields_updatedAt_Read { - permission: Boolean! -} - -type CategoriesFields_updatedAt_Update { - permission: Boolean! -} - -type CategoriesFields_updatedAt_Delete { - permission: Boolean! -} - -type CategoriesFields_createdAt { - create: CategoriesFields_createdAt_Create - read: CategoriesFields_createdAt_Read - update: CategoriesFields_createdAt_Update - delete: CategoriesFields_createdAt_Delete -} - -type CategoriesFields_createdAt_Create { - permission: Boolean! -} - -type CategoriesFields_createdAt_Read { - permission: Boolean! -} - -type CategoriesFields_createdAt_Update { - permission: Boolean! -} - -type CategoriesFields_createdAt_Delete { - permission: Boolean! -} - -type CategoriesCreateAccess { - permission: Boolean! - where: JSONObject -} - -type CategoriesReadAccess { - permission: Boolean! - where: JSONObject -} - -type CategoriesUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type CategoriesDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type usersAccess { - fields: UsersFields - create: UsersCreateAccess - read: UsersReadAccess - update: UsersUpdateAccess - delete: UsersDeleteAccess - unlock: UsersUnlockAccess -} - -type UsersFields { - name: UsersFields_name - roles: UsersFields_roles - updatedAt: UsersFields_updatedAt - createdAt: UsersFields_createdAt - email: UsersFields_email - password: UsersFields_password -} - -type UsersFields_name { - create: UsersFields_name_Create - read: UsersFields_name_Read - update: UsersFields_name_Update - delete: UsersFields_name_Delete -} - -type UsersFields_name_Create { - permission: Boolean! -} - -type UsersFields_name_Read { - permission: Boolean! -} - -type UsersFields_name_Update { - permission: Boolean! -} - -type UsersFields_name_Delete { - permission: Boolean! -} - -type UsersFields_roles { - create: UsersFields_roles_Create - read: UsersFields_roles_Read - update: UsersFields_roles_Update - delete: UsersFields_roles_Delete -} - -type UsersFields_roles_Create { - permission: Boolean! -} - -type UsersFields_roles_Read { - permission: Boolean! -} - -type UsersFields_roles_Update { - permission: Boolean! -} - -type UsersFields_roles_Delete { - permission: Boolean! -} - -type UsersFields_updatedAt { - create: UsersFields_updatedAt_Create - read: UsersFields_updatedAt_Read - update: UsersFields_updatedAt_Update - delete: UsersFields_updatedAt_Delete -} - -type UsersFields_updatedAt_Create { - permission: Boolean! -} - -type UsersFields_updatedAt_Read { - permission: Boolean! -} - -type UsersFields_updatedAt_Update { - permission: Boolean! -} - -type UsersFields_updatedAt_Delete { - permission: Boolean! -} - -type UsersFields_createdAt { - create: UsersFields_createdAt_Create - read: UsersFields_createdAt_Read - update: UsersFields_createdAt_Update - delete: UsersFields_createdAt_Delete -} - -type UsersFields_createdAt_Create { - permission: Boolean! -} - -type UsersFields_createdAt_Read { - permission: Boolean! -} - -type UsersFields_createdAt_Update { - permission: Boolean! -} - -type UsersFields_createdAt_Delete { - permission: Boolean! -} - -type UsersFields_email { - create: UsersFields_email_Create - read: UsersFields_email_Read - update: UsersFields_email_Update - delete: UsersFields_email_Delete -} - -type UsersFields_email_Create { - permission: Boolean! -} - -type UsersFields_email_Read { - permission: Boolean! -} - -type UsersFields_email_Update { - permission: Boolean! -} - -type UsersFields_email_Delete { - permission: Boolean! -} - -type UsersFields_password { - create: UsersFields_password_Create - read: UsersFields_password_Read - update: UsersFields_password_Update - delete: UsersFields_password_Delete -} - -type UsersFields_password_Create { - permission: Boolean! -} - -type UsersFields_password_Read { - permission: Boolean! -} - -type UsersFields_password_Update { - permission: Boolean! -} - -type UsersFields_password_Delete { - permission: Boolean! -} - -type UsersCreateAccess { - permission: Boolean! - where: JSONObject -} - -type UsersReadAccess { - permission: Boolean! - where: JSONObject -} - -type UsersUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type UsersDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type UsersUnlockAccess { - permission: Boolean! - where: JSONObject -} - -type authorsAccess { - fields: AuthorsFields - create: AuthorsCreateAccess - read: AuthorsReadAccess - update: AuthorsUpdateAccess - delete: AuthorsDeleteAccess - readVersions: AuthorsReadVersionsAccess -} - -type AuthorsFields { - featuredImage: AuthorsFields_featuredImage - name: AuthorsFields_name - role: AuthorsFields_role - bio: AuthorsFields_bio - linkedIn: AuthorsFields_linkedIn - x: AuthorsFields_x - gitHub: AuthorsFields_gitHub - medium: AuthorsFields_medium - publishedAt: AuthorsFields_publishedAt - slug: AuthorsFields_slug - updatedAt: AuthorsFields_updatedAt - createdAt: AuthorsFields_createdAt - _status: AuthorsFields__status -} - -type AuthorsFields_featuredImage { - create: AuthorsFields_featuredImage_Create - read: AuthorsFields_featuredImage_Read - update: AuthorsFields_featuredImage_Update - delete: AuthorsFields_featuredImage_Delete -} - -type AuthorsFields_featuredImage_Create { - permission: Boolean! -} - -type AuthorsFields_featuredImage_Read { - permission: Boolean! -} - -type AuthorsFields_featuredImage_Update { - permission: Boolean! -} - -type AuthorsFields_featuredImage_Delete { - permission: Boolean! -} - -type AuthorsFields_name { - create: AuthorsFields_name_Create - read: AuthorsFields_name_Read - update: AuthorsFields_name_Update - delete: AuthorsFields_name_Delete -} - -type AuthorsFields_name_Create { - permission: Boolean! -} - -type AuthorsFields_name_Read { - permission: Boolean! -} - -type AuthorsFields_name_Update { - permission: Boolean! -} - -type AuthorsFields_name_Delete { - permission: Boolean! -} - -type AuthorsFields_role { - create: AuthorsFields_role_Create - read: AuthorsFields_role_Read - update: AuthorsFields_role_Update - delete: AuthorsFields_role_Delete -} - -type AuthorsFields_role_Create { - permission: Boolean! -} - -type AuthorsFields_role_Read { - permission: Boolean! -} - -type AuthorsFields_role_Update { - permission: Boolean! -} - -type AuthorsFields_role_Delete { - permission: Boolean! -} - -type AuthorsFields_bio { - create: AuthorsFields_bio_Create - read: AuthorsFields_bio_Read - update: AuthorsFields_bio_Update - delete: AuthorsFields_bio_Delete -} - -type AuthorsFields_bio_Create { - permission: Boolean! -} - -type AuthorsFields_bio_Read { - permission: Boolean! -} - -type AuthorsFields_bio_Update { - permission: Boolean! -} - -type AuthorsFields_bio_Delete { - permission: Boolean! -} - -type AuthorsFields_linkedIn { - create: AuthorsFields_linkedIn_Create - read: AuthorsFields_linkedIn_Read - update: AuthorsFields_linkedIn_Update - delete: AuthorsFields_linkedIn_Delete -} - -type AuthorsFields_linkedIn_Create { - permission: Boolean! -} - -type AuthorsFields_linkedIn_Read { - permission: Boolean! -} - -type AuthorsFields_linkedIn_Update { - permission: Boolean! -} - -type AuthorsFields_linkedIn_Delete { - permission: Boolean! -} - -type AuthorsFields_x { - create: AuthorsFields_x_Create - read: AuthorsFields_x_Read - update: AuthorsFields_x_Update - delete: AuthorsFields_x_Delete -} - -type AuthorsFields_x_Create { - permission: Boolean! -} - -type AuthorsFields_x_Read { - permission: Boolean! -} - -type AuthorsFields_x_Update { - permission: Boolean! -} - -type AuthorsFields_x_Delete { - permission: Boolean! -} - -type AuthorsFields_gitHub { - create: AuthorsFields_gitHub_Create - read: AuthorsFields_gitHub_Read - update: AuthorsFields_gitHub_Update - delete: AuthorsFields_gitHub_Delete -} - -type AuthorsFields_gitHub_Create { - permission: Boolean! -} - -type AuthorsFields_gitHub_Read { - permission: Boolean! -} - -type AuthorsFields_gitHub_Update { - permission: Boolean! -} - -type AuthorsFields_gitHub_Delete { - permission: Boolean! -} - -type AuthorsFields_medium { - create: AuthorsFields_medium_Create - read: AuthorsFields_medium_Read - update: AuthorsFields_medium_Update - delete: AuthorsFields_medium_Delete -} - -type AuthorsFields_medium_Create { - permission: Boolean! -} - -type AuthorsFields_medium_Read { - permission: Boolean! -} - -type AuthorsFields_medium_Update { - permission: Boolean! -} - -type AuthorsFields_medium_Delete { - permission: Boolean! -} - -type AuthorsFields_publishedAt { - create: AuthorsFields_publishedAt_Create - read: AuthorsFields_publishedAt_Read - update: AuthorsFields_publishedAt_Update - delete: AuthorsFields_publishedAt_Delete -} - -type AuthorsFields_publishedAt_Create { - permission: Boolean! -} - -type AuthorsFields_publishedAt_Read { - permission: Boolean! -} - -type AuthorsFields_publishedAt_Update { - permission: Boolean! -} - -type AuthorsFields_publishedAt_Delete { - permission: Boolean! -} - -type AuthorsFields_slug { - create: AuthorsFields_slug_Create - read: AuthorsFields_slug_Read - update: AuthorsFields_slug_Update - delete: AuthorsFields_slug_Delete -} - -type AuthorsFields_slug_Create { - permission: Boolean! -} - -type AuthorsFields_slug_Read { - permission: Boolean! -} - -type AuthorsFields_slug_Update { - permission: Boolean! -} - -type AuthorsFields_slug_Delete { - permission: Boolean! -} - -type AuthorsFields_updatedAt { - create: AuthorsFields_updatedAt_Create - read: AuthorsFields_updatedAt_Read - update: AuthorsFields_updatedAt_Update - delete: AuthorsFields_updatedAt_Delete -} - -type AuthorsFields_updatedAt_Create { - permission: Boolean! -} - -type AuthorsFields_updatedAt_Read { - permission: Boolean! -} - -type AuthorsFields_updatedAt_Update { - permission: Boolean! -} - -type AuthorsFields_updatedAt_Delete { - permission: Boolean! -} - -type AuthorsFields_createdAt { - create: AuthorsFields_createdAt_Create - read: AuthorsFields_createdAt_Read - update: AuthorsFields_createdAt_Update - delete: AuthorsFields_createdAt_Delete -} - -type AuthorsFields_createdAt_Create { - permission: Boolean! -} - -type AuthorsFields_createdAt_Read { - permission: Boolean! -} - -type AuthorsFields_createdAt_Update { - permission: Boolean! -} - -type AuthorsFields_createdAt_Delete { - permission: Boolean! -} - -type AuthorsFields__status { - create: AuthorsFields__status_Create - read: AuthorsFields__status_Read - update: AuthorsFields__status_Update - delete: AuthorsFields__status_Delete -} - -type AuthorsFields__status_Create { - permission: Boolean! -} - -type AuthorsFields__status_Read { - permission: Boolean! -} - -type AuthorsFields__status_Update { - permission: Boolean! -} - -type AuthorsFields__status_Delete { - permission: Boolean! -} - -type AuthorsCreateAccess { - permission: Boolean! - where: JSONObject -} - -type AuthorsReadAccess { - permission: Boolean! - where: JSONObject -} - -type AuthorsUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type AuthorsDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type AuthorsReadVersionsAccess { - permission: Boolean! - where: JSONObject -} - -type podcast_episodesAccess { - fields: PodcastEpisodesFields - create: PodcastEpisodesCreateAccess - read: PodcastEpisodesReadAccess - update: PodcastEpisodesUpdateAccess - delete: PodcastEpisodesDeleteAccess - readVersions: PodcastEpisodesReadVersionsAccess -} - -type PodcastEpisodesFields { - title: PodcastEpisodesFields_title - summary: PodcastEpisodesFields_summary - notes: PodcastEpisodesFields_notes - featuredImage: PodcastEpisodesFields_featuredImage - episodeFile: PodcastEpisodesFields_episodeFile - spotify: PodcastEpisodesFields_spotify - apple: PodcastEpisodesFields_apple - authors: PodcastEpisodesFields_authors - categories: PodcastEpisodesFields_categories - relatedEpisodes: PodcastEpisodesFields_relatedEpisodes - publishedAt: PodcastEpisodesFields_publishedAt - slug: PodcastEpisodesFields_slug - updatedAt: PodcastEpisodesFields_updatedAt - createdAt: PodcastEpisodesFields_createdAt - _status: PodcastEpisodesFields__status -} - -type PodcastEpisodesFields_title { - create: PodcastEpisodesFields_title_Create - read: PodcastEpisodesFields_title_Read - update: PodcastEpisodesFields_title_Update - delete: PodcastEpisodesFields_title_Delete -} - -type PodcastEpisodesFields_title_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_title_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_title_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_title_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields_summary { - create: PodcastEpisodesFields_summary_Create - read: PodcastEpisodesFields_summary_Read - update: PodcastEpisodesFields_summary_Update - delete: PodcastEpisodesFields_summary_Delete -} - -type PodcastEpisodesFields_summary_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_summary_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_summary_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_summary_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields_notes { - create: PodcastEpisodesFields_notes_Create - read: PodcastEpisodesFields_notes_Read - update: PodcastEpisodesFields_notes_Update - delete: PodcastEpisodesFields_notes_Delete -} - -type PodcastEpisodesFields_notes_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_notes_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_notes_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_notes_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields_featuredImage { - create: PodcastEpisodesFields_featuredImage_Create - read: PodcastEpisodesFields_featuredImage_Read - update: PodcastEpisodesFields_featuredImage_Update - delete: PodcastEpisodesFields_featuredImage_Delete -} - -type PodcastEpisodesFields_featuredImage_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_featuredImage_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_featuredImage_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_featuredImage_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields_episodeFile { - create: PodcastEpisodesFields_episodeFile_Create - read: PodcastEpisodesFields_episodeFile_Read - update: PodcastEpisodesFields_episodeFile_Update - delete: PodcastEpisodesFields_episodeFile_Delete -} - -type PodcastEpisodesFields_episodeFile_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_episodeFile_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_episodeFile_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_episodeFile_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields_spotify { - create: PodcastEpisodesFields_spotify_Create - read: PodcastEpisodesFields_spotify_Read - update: PodcastEpisodesFields_spotify_Update - delete: PodcastEpisodesFields_spotify_Delete -} - -type PodcastEpisodesFields_spotify_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_spotify_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_spotify_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_spotify_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields_apple { - create: PodcastEpisodesFields_apple_Create - read: PodcastEpisodesFields_apple_Read - update: PodcastEpisodesFields_apple_Update - delete: PodcastEpisodesFields_apple_Delete -} - -type PodcastEpisodesFields_apple_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_apple_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_apple_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_apple_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields_authors { - create: PodcastEpisodesFields_authors_Create - read: PodcastEpisodesFields_authors_Read - update: PodcastEpisodesFields_authors_Update - delete: PodcastEpisodesFields_authors_Delete -} - -type PodcastEpisodesFields_authors_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_authors_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_authors_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_authors_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields_categories { - create: PodcastEpisodesFields_categories_Create - read: PodcastEpisodesFields_categories_Read - update: PodcastEpisodesFields_categories_Update - delete: PodcastEpisodesFields_categories_Delete -} - -type PodcastEpisodesFields_categories_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_categories_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_categories_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_categories_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields_relatedEpisodes { - create: PodcastEpisodesFields_relatedEpisodes_Create - read: PodcastEpisodesFields_relatedEpisodes_Read - update: PodcastEpisodesFields_relatedEpisodes_Update - delete: PodcastEpisodesFields_relatedEpisodes_Delete -} - -type PodcastEpisodesFields_relatedEpisodes_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_relatedEpisodes_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_relatedEpisodes_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_relatedEpisodes_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields_publishedAt { - create: PodcastEpisodesFields_publishedAt_Create - read: PodcastEpisodesFields_publishedAt_Read - update: PodcastEpisodesFields_publishedAt_Update - delete: PodcastEpisodesFields_publishedAt_Delete -} - -type PodcastEpisodesFields_publishedAt_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_publishedAt_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_publishedAt_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_publishedAt_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields_slug { - create: PodcastEpisodesFields_slug_Create - read: PodcastEpisodesFields_slug_Read - update: PodcastEpisodesFields_slug_Update - delete: PodcastEpisodesFields_slug_Delete -} - -type PodcastEpisodesFields_slug_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_slug_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_slug_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_slug_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields_updatedAt { - create: PodcastEpisodesFields_updatedAt_Create - read: PodcastEpisodesFields_updatedAt_Read - update: PodcastEpisodesFields_updatedAt_Update - delete: PodcastEpisodesFields_updatedAt_Delete -} - -type PodcastEpisodesFields_updatedAt_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_updatedAt_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_updatedAt_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_updatedAt_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields_createdAt { - create: PodcastEpisodesFields_createdAt_Create - read: PodcastEpisodesFields_createdAt_Read - update: PodcastEpisodesFields_createdAt_Update - delete: PodcastEpisodesFields_createdAt_Delete -} - -type PodcastEpisodesFields_createdAt_Create { - permission: Boolean! -} - -type PodcastEpisodesFields_createdAt_Read { - permission: Boolean! -} - -type PodcastEpisodesFields_createdAt_Update { - permission: Boolean! -} - -type PodcastEpisodesFields_createdAt_Delete { - permission: Boolean! -} - -type PodcastEpisodesFields__status { - create: PodcastEpisodesFields__status_Create - read: PodcastEpisodesFields__status_Read - update: PodcastEpisodesFields__status_Update - delete: PodcastEpisodesFields__status_Delete -} - -type PodcastEpisodesFields__status_Create { - permission: Boolean! -} - -type PodcastEpisodesFields__status_Read { - permission: Boolean! -} - -type PodcastEpisodesFields__status_Update { - permission: Boolean! -} - -type PodcastEpisodesFields__status_Delete { - permission: Boolean! -} - -type PodcastEpisodesCreateAccess { - permission: Boolean! - where: JSONObject -} - -type PodcastEpisodesReadAccess { - permission: Boolean! - where: JSONObject -} - -type PodcastEpisodesUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type PodcastEpisodesDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type PodcastEpisodesReadVersionsAccess { - permission: Boolean! - where: JSONObject -} - -type blogpostsAccess { - fields: BlogpostsFields - create: BlogpostsCreateAccess - read: BlogpostsReadAccess - update: BlogpostsUpdateAccess - delete: BlogpostsDeleteAccess - readVersions: BlogpostsReadVersionsAccess -} - -type BlogpostsFields { - title: BlogpostsFields_title - summary: BlogpostsFields_summary - content: BlogpostsFields_content - content_html: BlogpostsFields_content_html - featuredImage: BlogpostsFields_featuredImage - authors: BlogpostsFields_authors - categories: BlogpostsFields_categories - relatedPosts: BlogpostsFields_relatedPosts - publishedAt: BlogpostsFields_publishedAt - slug: BlogpostsFields_slug - updatedAt: BlogpostsFields_updatedAt - createdAt: BlogpostsFields_createdAt - _status: BlogpostsFields__status -} - -type BlogpostsFields_title { - create: BlogpostsFields_title_Create - read: BlogpostsFields_title_Read - update: BlogpostsFields_title_Update - delete: BlogpostsFields_title_Delete -} - -type BlogpostsFields_title_Create { - permission: Boolean! -} - -type BlogpostsFields_title_Read { - permission: Boolean! -} - -type BlogpostsFields_title_Update { - permission: Boolean! -} - -type BlogpostsFields_title_Delete { - permission: Boolean! -} - -type BlogpostsFields_summary { - create: BlogpostsFields_summary_Create - read: BlogpostsFields_summary_Read - update: BlogpostsFields_summary_Update - delete: BlogpostsFields_summary_Delete -} - -type BlogpostsFields_summary_Create { - permission: Boolean! -} - -type BlogpostsFields_summary_Read { - permission: Boolean! -} - -type BlogpostsFields_summary_Update { - permission: Boolean! -} - -type BlogpostsFields_summary_Delete { - permission: Boolean! -} - -type BlogpostsFields_content { - create: BlogpostsFields_content_Create - read: BlogpostsFields_content_Read - update: BlogpostsFields_content_Update - delete: BlogpostsFields_content_Delete -} - -type BlogpostsFields_content_Create { - permission: Boolean! -} - -type BlogpostsFields_content_Read { - permission: Boolean! -} - -type BlogpostsFields_content_Update { - permission: Boolean! -} - -type BlogpostsFields_content_Delete { - permission: Boolean! -} - -type BlogpostsFields_content_html { - create: BlogpostsFields_content_html_Create - read: BlogpostsFields_content_html_Read - update: BlogpostsFields_content_html_Update - delete: BlogpostsFields_content_html_Delete -} - -type BlogpostsFields_content_html_Create { - permission: Boolean! -} - -type BlogpostsFields_content_html_Read { - permission: Boolean! -} - -type BlogpostsFields_content_html_Update { - permission: Boolean! -} - -type BlogpostsFields_content_html_Delete { - permission: Boolean! -} - -type BlogpostsFields_featuredImage { - create: BlogpostsFields_featuredImage_Create - read: BlogpostsFields_featuredImage_Read - update: BlogpostsFields_featuredImage_Update - delete: BlogpostsFields_featuredImage_Delete -} - -type BlogpostsFields_featuredImage_Create { - permission: Boolean! -} - -type BlogpostsFields_featuredImage_Read { - permission: Boolean! -} - -type BlogpostsFields_featuredImage_Update { - permission: Boolean! -} - -type BlogpostsFields_featuredImage_Delete { - permission: Boolean! -} - -type BlogpostsFields_authors { - create: BlogpostsFields_authors_Create - read: BlogpostsFields_authors_Read - update: BlogpostsFields_authors_Update - delete: BlogpostsFields_authors_Delete -} - -type BlogpostsFields_authors_Create { - permission: Boolean! -} - -type BlogpostsFields_authors_Read { - permission: Boolean! -} - -type BlogpostsFields_authors_Update { - permission: Boolean! -} - -type BlogpostsFields_authors_Delete { - permission: Boolean! -} - -type BlogpostsFields_categories { - create: BlogpostsFields_categories_Create - read: BlogpostsFields_categories_Read - update: BlogpostsFields_categories_Update - delete: BlogpostsFields_categories_Delete -} - -type BlogpostsFields_categories_Create { - permission: Boolean! -} - -type BlogpostsFields_categories_Read { - permission: Boolean! -} - -type BlogpostsFields_categories_Update { - permission: Boolean! -} - -type BlogpostsFields_categories_Delete { - permission: Boolean! -} - -type BlogpostsFields_relatedPosts { - create: BlogpostsFields_relatedPosts_Create - read: BlogpostsFields_relatedPosts_Read - update: BlogpostsFields_relatedPosts_Update - delete: BlogpostsFields_relatedPosts_Delete -} - -type BlogpostsFields_relatedPosts_Create { - permission: Boolean! -} - -type BlogpostsFields_relatedPosts_Read { - permission: Boolean! -} - -type BlogpostsFields_relatedPosts_Update { - permission: Boolean! -} - -type BlogpostsFields_relatedPosts_Delete { - permission: Boolean! -} - -type BlogpostsFields_publishedAt { - create: BlogpostsFields_publishedAt_Create - read: BlogpostsFields_publishedAt_Read - update: BlogpostsFields_publishedAt_Update - delete: BlogpostsFields_publishedAt_Delete -} - -type BlogpostsFields_publishedAt_Create { - permission: Boolean! -} - -type BlogpostsFields_publishedAt_Read { - permission: Boolean! -} - -type BlogpostsFields_publishedAt_Update { - permission: Boolean! -} - -type BlogpostsFields_publishedAt_Delete { - permission: Boolean! -} - -type BlogpostsFields_slug { - create: BlogpostsFields_slug_Create - read: BlogpostsFields_slug_Read - update: BlogpostsFields_slug_Update - delete: BlogpostsFields_slug_Delete -} - -type BlogpostsFields_slug_Create { - permission: Boolean! -} - -type BlogpostsFields_slug_Read { - permission: Boolean! -} - -type BlogpostsFields_slug_Update { - permission: Boolean! -} - -type BlogpostsFields_slug_Delete { - permission: Boolean! -} - -type BlogpostsFields_updatedAt { - create: BlogpostsFields_updatedAt_Create - read: BlogpostsFields_updatedAt_Read - update: BlogpostsFields_updatedAt_Update - delete: BlogpostsFields_updatedAt_Delete -} - -type BlogpostsFields_updatedAt_Create { - permission: Boolean! -} - -type BlogpostsFields_updatedAt_Read { - permission: Boolean! -} - -type BlogpostsFields_updatedAt_Update { - permission: Boolean! -} - -type BlogpostsFields_updatedAt_Delete { - permission: Boolean! -} - -type BlogpostsFields_createdAt { - create: BlogpostsFields_createdAt_Create - read: BlogpostsFields_createdAt_Read - update: BlogpostsFields_createdAt_Update - delete: BlogpostsFields_createdAt_Delete -} - -type BlogpostsFields_createdAt_Create { - permission: Boolean! -} - -type BlogpostsFields_createdAt_Read { - permission: Boolean! -} - -type BlogpostsFields_createdAt_Update { - permission: Boolean! -} - -type BlogpostsFields_createdAt_Delete { - permission: Boolean! -} - -type BlogpostsFields__status { - create: BlogpostsFields__status_Create - read: BlogpostsFields__status_Read - update: BlogpostsFields__status_Update - delete: BlogpostsFields__status_Delete -} - -type BlogpostsFields__status_Create { - permission: Boolean! -} - -type BlogpostsFields__status_Read { - permission: Boolean! -} - -type BlogpostsFields__status_Update { - permission: Boolean! -} - -type BlogpostsFields__status_Delete { - permission: Boolean! -} - -type BlogpostsCreateAccess { - permission: Boolean! - where: JSONObject -} - -type BlogpostsReadAccess { - permission: Boolean! - where: JSONObject -} - -type BlogpostsUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type BlogpostsDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type BlogpostsReadVersionsAccess { - permission: Boolean! - where: JSONObject -} - -type talks_and_roundtablesAccess { - fields: TalksAndRoundtablesFields - create: TalksAndRoundtablesCreateAccess - read: TalksAndRoundtablesReadAccess - update: TalksAndRoundtablesUpdateAccess - delete: TalksAndRoundtablesDeleteAccess - readVersions: TalksAndRoundtablesReadVersionsAccess -} - -type TalksAndRoundtablesFields { - title: TalksAndRoundtablesFields_title - about: TalksAndRoundtablesFields_about - categories: TalksAndRoundtablesFields_categories - url: TalksAndRoundtablesFields_url - authors: TalksAndRoundtablesFields_authors - publishedAt: TalksAndRoundtablesFields_publishedAt - slug: TalksAndRoundtablesFields_slug - updatedAt: TalksAndRoundtablesFields_updatedAt - createdAt: TalksAndRoundtablesFields_createdAt - _status: TalksAndRoundtablesFields__status -} - -type TalksAndRoundtablesFields_title { - create: TalksAndRoundtablesFields_title_Create - read: TalksAndRoundtablesFields_title_Read - update: TalksAndRoundtablesFields_title_Update - delete: TalksAndRoundtablesFields_title_Delete -} - -type TalksAndRoundtablesFields_title_Create { - permission: Boolean! -} - -type TalksAndRoundtablesFields_title_Read { - permission: Boolean! -} - -type TalksAndRoundtablesFields_title_Update { - permission: Boolean! -} - -type TalksAndRoundtablesFields_title_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesFields_about { - create: TalksAndRoundtablesFields_about_Create - read: TalksAndRoundtablesFields_about_Read - update: TalksAndRoundtablesFields_about_Update - delete: TalksAndRoundtablesFields_about_Delete -} - -type TalksAndRoundtablesFields_about_Create { - permission: Boolean! -} - -type TalksAndRoundtablesFields_about_Read { - permission: Boolean! -} - -type TalksAndRoundtablesFields_about_Update { - permission: Boolean! -} - -type TalksAndRoundtablesFields_about_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesFields_categories { - create: TalksAndRoundtablesFields_categories_Create - read: TalksAndRoundtablesFields_categories_Read - update: TalksAndRoundtablesFields_categories_Update - delete: TalksAndRoundtablesFields_categories_Delete -} - -type TalksAndRoundtablesFields_categories_Create { - permission: Boolean! -} - -type TalksAndRoundtablesFields_categories_Read { - permission: Boolean! -} - -type TalksAndRoundtablesFields_categories_Update { - permission: Boolean! -} - -type TalksAndRoundtablesFields_categories_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesFields_url { - create: TalksAndRoundtablesFields_url_Create - read: TalksAndRoundtablesFields_url_Read - update: TalksAndRoundtablesFields_url_Update - delete: TalksAndRoundtablesFields_url_Delete -} - -type TalksAndRoundtablesFields_url_Create { - permission: Boolean! -} - -type TalksAndRoundtablesFields_url_Read { - permission: Boolean! -} - -type TalksAndRoundtablesFields_url_Update { - permission: Boolean! -} - -type TalksAndRoundtablesFields_url_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesFields_authors { - create: TalksAndRoundtablesFields_authors_Create - read: TalksAndRoundtablesFields_authors_Read - update: TalksAndRoundtablesFields_authors_Update - delete: TalksAndRoundtablesFields_authors_Delete -} - -type TalksAndRoundtablesFields_authors_Create { - permission: Boolean! -} - -type TalksAndRoundtablesFields_authors_Read { - permission: Boolean! -} - -type TalksAndRoundtablesFields_authors_Update { - permission: Boolean! -} - -type TalksAndRoundtablesFields_authors_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesFields_publishedAt { - create: TalksAndRoundtablesFields_publishedAt_Create - read: TalksAndRoundtablesFields_publishedAt_Read - update: TalksAndRoundtablesFields_publishedAt_Update - delete: TalksAndRoundtablesFields_publishedAt_Delete -} - -type TalksAndRoundtablesFields_publishedAt_Create { - permission: Boolean! -} - -type TalksAndRoundtablesFields_publishedAt_Read { - permission: Boolean! -} - -type TalksAndRoundtablesFields_publishedAt_Update { - permission: Boolean! -} - -type TalksAndRoundtablesFields_publishedAt_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesFields_slug { - create: TalksAndRoundtablesFields_slug_Create - read: TalksAndRoundtablesFields_slug_Read - update: TalksAndRoundtablesFields_slug_Update - delete: TalksAndRoundtablesFields_slug_Delete -} - -type TalksAndRoundtablesFields_slug_Create { - permission: Boolean! -} - -type TalksAndRoundtablesFields_slug_Read { - permission: Boolean! -} - -type TalksAndRoundtablesFields_slug_Update { - permission: Boolean! -} - -type TalksAndRoundtablesFields_slug_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesFields_updatedAt { - create: TalksAndRoundtablesFields_updatedAt_Create - read: TalksAndRoundtablesFields_updatedAt_Read - update: TalksAndRoundtablesFields_updatedAt_Update - delete: TalksAndRoundtablesFields_updatedAt_Delete -} - -type TalksAndRoundtablesFields_updatedAt_Create { - permission: Boolean! -} - -type TalksAndRoundtablesFields_updatedAt_Read { - permission: Boolean! -} - -type TalksAndRoundtablesFields_updatedAt_Update { - permission: Boolean! -} - -type TalksAndRoundtablesFields_updatedAt_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesFields_createdAt { - create: TalksAndRoundtablesFields_createdAt_Create - read: TalksAndRoundtablesFields_createdAt_Read - update: TalksAndRoundtablesFields_createdAt_Update - delete: TalksAndRoundtablesFields_createdAt_Delete -} - -type TalksAndRoundtablesFields_createdAt_Create { - permission: Boolean! -} - -type TalksAndRoundtablesFields_createdAt_Read { - permission: Boolean! -} - -type TalksAndRoundtablesFields_createdAt_Update { - permission: Boolean! -} - -type TalksAndRoundtablesFields_createdAt_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesFields__status { - create: TalksAndRoundtablesFields__status_Create - read: TalksAndRoundtablesFields__status_Read - update: TalksAndRoundtablesFields__status_Update - delete: TalksAndRoundtablesFields__status_Delete -} - -type TalksAndRoundtablesFields__status_Create { - permission: Boolean! -} - -type TalksAndRoundtablesFields__status_Read { - permission: Boolean! -} - -type TalksAndRoundtablesFields__status_Update { - permission: Boolean! -} - -type TalksAndRoundtablesFields__status_Delete { - permission: Boolean! -} - -type TalksAndRoundtablesCreateAccess { - permission: Boolean! - where: JSONObject -} - -type TalksAndRoundtablesReadAccess { - permission: Boolean! - where: JSONObject -} - -type TalksAndRoundtablesUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type TalksAndRoundtablesDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type TalksAndRoundtablesReadVersionsAccess { - permission: Boolean! - where: JSONObject -} - -type case_studiesAccess { - fields: CaseStudiesFields - create: CaseStudiesCreateAccess - read: CaseStudiesReadAccess - update: CaseStudiesUpdateAccess - delete: CaseStudiesDeleteAccess - readVersions: CaseStudiesReadVersionsAccess -} - -type CaseStudiesFields { - title: CaseStudiesFields_title - summary: CaseStudiesFields_summary - authors: CaseStudiesFields_authors - categories: CaseStudiesFields_categories - slug: CaseStudiesFields_slug - updatedAt: CaseStudiesFields_updatedAt - createdAt: CaseStudiesFields_createdAt - _status: CaseStudiesFields__status -} - -type CaseStudiesFields_title { - create: CaseStudiesFields_title_Create - read: CaseStudiesFields_title_Read - update: CaseStudiesFields_title_Update - delete: CaseStudiesFields_title_Delete -} - -type CaseStudiesFields_title_Create { - permission: Boolean! -} - -type CaseStudiesFields_title_Read { - permission: Boolean! -} - -type CaseStudiesFields_title_Update { - permission: Boolean! -} - -type CaseStudiesFields_title_Delete { - permission: Boolean! -} - -type CaseStudiesFields_summary { - create: CaseStudiesFields_summary_Create - read: CaseStudiesFields_summary_Read - update: CaseStudiesFields_summary_Update - delete: CaseStudiesFields_summary_Delete -} - -type CaseStudiesFields_summary_Create { - permission: Boolean! -} - -type CaseStudiesFields_summary_Read { - permission: Boolean! -} - -type CaseStudiesFields_summary_Update { - permission: Boolean! -} - -type CaseStudiesFields_summary_Delete { - permission: Boolean! -} - -type CaseStudiesFields_authors { - create: CaseStudiesFields_authors_Create - read: CaseStudiesFields_authors_Read - update: CaseStudiesFields_authors_Update - delete: CaseStudiesFields_authors_Delete -} - -type CaseStudiesFields_authors_Create { - permission: Boolean! -} - -type CaseStudiesFields_authors_Read { - permission: Boolean! -} - -type CaseStudiesFields_authors_Update { - permission: Boolean! -} - -type CaseStudiesFields_authors_Delete { - permission: Boolean! -} - -type CaseStudiesFields_categories { - create: CaseStudiesFields_categories_Create - read: CaseStudiesFields_categories_Read - update: CaseStudiesFields_categories_Update - delete: CaseStudiesFields_categories_Delete -} - -type CaseStudiesFields_categories_Create { - permission: Boolean! -} - -type CaseStudiesFields_categories_Read { - permission: Boolean! -} - -type CaseStudiesFields_categories_Update { - permission: Boolean! -} - -type CaseStudiesFields_categories_Delete { - permission: Boolean! -} - -type CaseStudiesFields_slug { - create: CaseStudiesFields_slug_Create - read: CaseStudiesFields_slug_Read - update: CaseStudiesFields_slug_Update - delete: CaseStudiesFields_slug_Delete -} - -type CaseStudiesFields_slug_Create { - permission: Boolean! -} - -type CaseStudiesFields_slug_Read { - permission: Boolean! -} - -type CaseStudiesFields_slug_Update { - permission: Boolean! -} - -type CaseStudiesFields_slug_Delete { - permission: Boolean! -} - -type CaseStudiesFields_updatedAt { - create: CaseStudiesFields_updatedAt_Create - read: CaseStudiesFields_updatedAt_Read - update: CaseStudiesFields_updatedAt_Update - delete: CaseStudiesFields_updatedAt_Delete -} - -type CaseStudiesFields_updatedAt_Create { - permission: Boolean! -} - -type CaseStudiesFields_updatedAt_Read { - permission: Boolean! -} - -type CaseStudiesFields_updatedAt_Update { - permission: Boolean! -} - -type CaseStudiesFields_updatedAt_Delete { - permission: Boolean! -} - -type CaseStudiesFields_createdAt { - create: CaseStudiesFields_createdAt_Create - read: CaseStudiesFields_createdAt_Read - update: CaseStudiesFields_createdAt_Update - delete: CaseStudiesFields_createdAt_Delete -} - -type CaseStudiesFields_createdAt_Create { - permission: Boolean! -} - -type CaseStudiesFields_createdAt_Read { - permission: Boolean! -} - -type CaseStudiesFields_createdAt_Update { - permission: Boolean! -} - -type CaseStudiesFields_createdAt_Delete { - permission: Boolean! -} - -type CaseStudiesFields__status { - create: CaseStudiesFields__status_Create - read: CaseStudiesFields__status_Read - update: CaseStudiesFields__status_Update - delete: CaseStudiesFields__status_Delete -} - -type CaseStudiesFields__status_Create { - permission: Boolean! -} - -type CaseStudiesFields__status_Read { - permission: Boolean! -} - -type CaseStudiesFields__status_Update { - permission: Boolean! -} - -type CaseStudiesFields__status_Delete { - permission: Boolean! -} - -type CaseStudiesCreateAccess { - permission: Boolean! - where: JSONObject -} - -type CaseStudiesReadAccess { - permission: Boolean! - where: JSONObject -} - -type CaseStudiesUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type CaseStudiesDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type CaseStudiesReadVersionsAccess { - permission: Boolean! - where: JSONObject -} - -type payload_preferencesAccess { - fields: PayloadPreferencesFields - create: PayloadPreferencesCreateAccess - read: PayloadPreferencesReadAccess - update: PayloadPreferencesUpdateAccess - delete: PayloadPreferencesDeleteAccess -} - -type PayloadPreferencesFields { - user: PayloadPreferencesFields_user - key: PayloadPreferencesFields_key - value: PayloadPreferencesFields_value - updatedAt: PayloadPreferencesFields_updatedAt - createdAt: PayloadPreferencesFields_createdAt -} - -type PayloadPreferencesFields_user { - create: PayloadPreferencesFields_user_Create - read: PayloadPreferencesFields_user_Read - update: PayloadPreferencesFields_user_Update - delete: PayloadPreferencesFields_user_Delete -} - -type PayloadPreferencesFields_user_Create { - permission: Boolean! -} - -type PayloadPreferencesFields_user_Read { - permission: Boolean! -} - -type PayloadPreferencesFields_user_Update { - permission: Boolean! -} - -type PayloadPreferencesFields_user_Delete { - permission: Boolean! -} - -type PayloadPreferencesFields_key { - create: PayloadPreferencesFields_key_Create - read: PayloadPreferencesFields_key_Read - update: PayloadPreferencesFields_key_Update - delete: PayloadPreferencesFields_key_Delete -} - -type PayloadPreferencesFields_key_Create { - permission: Boolean! -} - -type PayloadPreferencesFields_key_Read { - permission: Boolean! -} - -type PayloadPreferencesFields_key_Update { - permission: Boolean! -} - -type PayloadPreferencesFields_key_Delete { - permission: Boolean! -} - -type PayloadPreferencesFields_value { - create: PayloadPreferencesFields_value_Create - read: PayloadPreferencesFields_value_Read - update: PayloadPreferencesFields_value_Update - delete: PayloadPreferencesFields_value_Delete -} - -type PayloadPreferencesFields_value_Create { - permission: Boolean! -} - -type PayloadPreferencesFields_value_Read { - permission: Boolean! -} - -type PayloadPreferencesFields_value_Update { - permission: Boolean! -} - -type PayloadPreferencesFields_value_Delete { - permission: Boolean! -} - -type PayloadPreferencesFields_updatedAt { - create: PayloadPreferencesFields_updatedAt_Create - read: PayloadPreferencesFields_updatedAt_Read - update: PayloadPreferencesFields_updatedAt_Update - delete: PayloadPreferencesFields_updatedAt_Delete -} - -type PayloadPreferencesFields_updatedAt_Create { - permission: Boolean! -} - -type PayloadPreferencesFields_updatedAt_Read { - permission: Boolean! -} - -type PayloadPreferencesFields_updatedAt_Update { - permission: Boolean! -} - -type PayloadPreferencesFields_updatedAt_Delete { - permission: Boolean! -} - -type PayloadPreferencesFields_createdAt { - create: PayloadPreferencesFields_createdAt_Create - read: PayloadPreferencesFields_createdAt_Read - update: PayloadPreferencesFields_createdAt_Update - delete: PayloadPreferencesFields_createdAt_Delete -} - -type PayloadPreferencesFields_createdAt_Create { - permission: Boolean! -} - -type PayloadPreferencesFields_createdAt_Read { - permission: Boolean! -} - -type PayloadPreferencesFields_createdAt_Update { - permission: Boolean! -} - -type PayloadPreferencesFields_createdAt_Delete { - permission: Boolean! -} - -type PayloadPreferencesCreateAccess { - permission: Boolean! - where: JSONObject -} - -type PayloadPreferencesReadAccess { - permission: Boolean! - where: JSONObject -} - -type PayloadPreferencesUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type PayloadPreferencesDeleteAccess { - permission: Boolean! - where: JSONObject -} - -type settingsAccess { - fields: SettingsFields - read: SettingsReadAccess - update: SettingsUpdateAccess -} - -type SettingsFields { - postsPage: SettingsFields_postsPage - projectsPage: SettingsFields_projectsPage - podcastEpisodesPage: SettingsFields_podcastEpisodesPage - updatedAt: SettingsFields_updatedAt - createdAt: SettingsFields_createdAt -} - -type SettingsFields_postsPage { - create: SettingsFields_postsPage_Create - read: SettingsFields_postsPage_Read - update: SettingsFields_postsPage_Update - delete: SettingsFields_postsPage_Delete -} - -type SettingsFields_postsPage_Create { - permission: Boolean! -} - -type SettingsFields_postsPage_Read { - permission: Boolean! -} - -type SettingsFields_postsPage_Update { - permission: Boolean! -} - -type SettingsFields_postsPage_Delete { - permission: Boolean! -} - -type SettingsFields_projectsPage { - create: SettingsFields_projectsPage_Create - read: SettingsFields_projectsPage_Read - update: SettingsFields_projectsPage_Update - delete: SettingsFields_projectsPage_Delete -} - -type SettingsFields_projectsPage_Create { - permission: Boolean! -} - -type SettingsFields_projectsPage_Read { - permission: Boolean! -} - -type SettingsFields_projectsPage_Update { - permission: Boolean! -} - -type SettingsFields_projectsPage_Delete { - permission: Boolean! -} - -type SettingsFields_podcastEpisodesPage { - create: SettingsFields_podcastEpisodesPage_Create - read: SettingsFields_podcastEpisodesPage_Read - update: SettingsFields_podcastEpisodesPage_Update - delete: SettingsFields_podcastEpisodesPage_Delete -} - -type SettingsFields_podcastEpisodesPage_Create { - permission: Boolean! -} - -type SettingsFields_podcastEpisodesPage_Read { - permission: Boolean! -} - -type SettingsFields_podcastEpisodesPage_Update { - permission: Boolean! -} - -type SettingsFields_podcastEpisodesPage_Delete { - permission: Boolean! -} - -type SettingsFields_updatedAt { - create: SettingsFields_updatedAt_Create - read: SettingsFields_updatedAt_Read - update: SettingsFields_updatedAt_Update - delete: SettingsFields_updatedAt_Delete -} - -type SettingsFields_updatedAt_Create { - permission: Boolean! -} - -type SettingsFields_updatedAt_Read { - permission: Boolean! -} - -type SettingsFields_updatedAt_Update { - permission: Boolean! -} - -type SettingsFields_updatedAt_Delete { - permission: Boolean! -} - -type SettingsFields_createdAt { - create: SettingsFields_createdAt_Create - read: SettingsFields_createdAt_Read - update: SettingsFields_createdAt_Update - delete: SettingsFields_createdAt_Delete -} - -type SettingsFields_createdAt_Create { - permission: Boolean! -} - -type SettingsFields_createdAt_Read { - permission: Boolean! -} - -type SettingsFields_createdAt_Update { - permission: Boolean! -} - -type SettingsFields_createdAt_Delete { - permission: Boolean! -} - -type SettingsReadAccess { - permission: Boolean! - where: JSONObject -} - -type SettingsUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type headerAccess { - fields: HeaderFields - read: HeaderReadAccess - update: HeaderUpdateAccess -} - -type HeaderFields { - navItems: HeaderFields_navItems - updatedAt: HeaderFields_updatedAt - createdAt: HeaderFields_createdAt -} - -type HeaderFields_navItems { - create: HeaderFields_navItems_Create - read: HeaderFields_navItems_Read - update: HeaderFields_navItems_Update - delete: HeaderFields_navItems_Delete - fields: HeaderFields_navItems_Fields -} - -type HeaderFields_navItems_Create { - permission: Boolean! -} - -type HeaderFields_navItems_Read { - permission: Boolean! -} - -type HeaderFields_navItems_Update { - permission: Boolean! -} - -type HeaderFields_navItems_Delete { - permission: Boolean! -} - -type HeaderFields_navItems_Fields { - link: HeaderFields_navItems_link - id: HeaderFields_navItems_id -} - -type HeaderFields_navItems_link { - create: HeaderFields_navItems_link_Create - read: HeaderFields_navItems_link_Read - update: HeaderFields_navItems_link_Update - delete: HeaderFields_navItems_link_Delete - fields: HeaderFields_navItems_link_Fields -} - -type HeaderFields_navItems_link_Create { - permission: Boolean! -} - -type HeaderFields_navItems_link_Read { - permission: Boolean! -} - -type HeaderFields_navItems_link_Update { - permission: Boolean! -} - -type HeaderFields_navItems_link_Delete { - permission: Boolean! -} - -type HeaderFields_navItems_link_Fields { - type: HeaderFields_navItems_link_type - newTab: HeaderFields_navItems_link_newTab - reference: HeaderFields_navItems_link_reference - url: HeaderFields_navItems_link_url - label: HeaderFields_navItems_link_label -} - -type HeaderFields_navItems_link_type { - create: HeaderFields_navItems_link_type_Create - read: HeaderFields_navItems_link_type_Read - update: HeaderFields_navItems_link_type_Update - delete: HeaderFields_navItems_link_type_Delete -} - -type HeaderFields_navItems_link_type_Create { - permission: Boolean! -} - -type HeaderFields_navItems_link_type_Read { - permission: Boolean! -} - -type HeaderFields_navItems_link_type_Update { - permission: Boolean! -} - -type HeaderFields_navItems_link_type_Delete { - permission: Boolean! -} - -type HeaderFields_navItems_link_newTab { - create: HeaderFields_navItems_link_newTab_Create - read: HeaderFields_navItems_link_newTab_Read - update: HeaderFields_navItems_link_newTab_Update - delete: HeaderFields_navItems_link_newTab_Delete -} - -type HeaderFields_navItems_link_newTab_Create { - permission: Boolean! -} - -type HeaderFields_navItems_link_newTab_Read { - permission: Boolean! -} - -type HeaderFields_navItems_link_newTab_Update { - permission: Boolean! -} - -type HeaderFields_navItems_link_newTab_Delete { - permission: Boolean! -} - -type HeaderFields_navItems_link_reference { - create: HeaderFields_navItems_link_reference_Create - read: HeaderFields_navItems_link_reference_Read - update: HeaderFields_navItems_link_reference_Update - delete: HeaderFields_navItems_link_reference_Delete -} - -type HeaderFields_navItems_link_reference_Create { - permission: Boolean! -} - -type HeaderFields_navItems_link_reference_Read { - permission: Boolean! -} - -type HeaderFields_navItems_link_reference_Update { - permission: Boolean! -} - -type HeaderFields_navItems_link_reference_Delete { - permission: Boolean! -} - -type HeaderFields_navItems_link_url { - create: HeaderFields_navItems_link_url_Create - read: HeaderFields_navItems_link_url_Read - update: HeaderFields_navItems_link_url_Update - delete: HeaderFields_navItems_link_url_Delete -} - -type HeaderFields_navItems_link_url_Create { - permission: Boolean! -} - -type HeaderFields_navItems_link_url_Read { - permission: Boolean! -} - -type HeaderFields_navItems_link_url_Update { - permission: Boolean! -} - -type HeaderFields_navItems_link_url_Delete { - permission: Boolean! -} - -type HeaderFields_navItems_link_label { - create: HeaderFields_navItems_link_label_Create - read: HeaderFields_navItems_link_label_Read - update: HeaderFields_navItems_link_label_Update - delete: HeaderFields_navItems_link_label_Delete -} - -type HeaderFields_navItems_link_label_Create { - permission: Boolean! -} - -type HeaderFields_navItems_link_label_Read { - permission: Boolean! -} - -type HeaderFields_navItems_link_label_Update { - permission: Boolean! -} - -type HeaderFields_navItems_link_label_Delete { - permission: Boolean! -} - -type HeaderFields_navItems_id { - create: HeaderFields_navItems_id_Create - read: HeaderFields_navItems_id_Read - update: HeaderFields_navItems_id_Update - delete: HeaderFields_navItems_id_Delete -} - -type HeaderFields_navItems_id_Create { - permission: Boolean! -} - -type HeaderFields_navItems_id_Read { - permission: Boolean! -} - -type HeaderFields_navItems_id_Update { - permission: Boolean! -} - -type HeaderFields_navItems_id_Delete { - permission: Boolean! -} - -type HeaderFields_updatedAt { - create: HeaderFields_updatedAt_Create - read: HeaderFields_updatedAt_Read - update: HeaderFields_updatedAt_Update - delete: HeaderFields_updatedAt_Delete -} - -type HeaderFields_updatedAt_Create { - permission: Boolean! -} - -type HeaderFields_updatedAt_Read { - permission: Boolean! -} - -type HeaderFields_updatedAt_Update { - permission: Boolean! -} - -type HeaderFields_updatedAt_Delete { - permission: Boolean! -} - -type HeaderFields_createdAt { - create: HeaderFields_createdAt_Create - read: HeaderFields_createdAt_Read - update: HeaderFields_createdAt_Update - delete: HeaderFields_createdAt_Delete -} - -type HeaderFields_createdAt_Create { - permission: Boolean! -} - -type HeaderFields_createdAt_Read { - permission: Boolean! -} - -type HeaderFields_createdAt_Update { - permission: Boolean! -} - -type HeaderFields_createdAt_Delete { - permission: Boolean! -} - -type HeaderReadAccess { - permission: Boolean! - where: JSONObject -} - -type HeaderUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type footerAccess { - fields: FooterFields - read: FooterReadAccess - update: FooterUpdateAccess -} - -type FooterFields { - navItems: FooterFields_navItems - updatedAt: FooterFields_updatedAt - createdAt: FooterFields_createdAt -} - -type FooterFields_navItems { - create: FooterFields_navItems_Create - read: FooterFields_navItems_Read - update: FooterFields_navItems_Update - delete: FooterFields_navItems_Delete - fields: FooterFields_navItems_Fields -} - -type FooterFields_navItems_Create { - permission: Boolean! -} - -type FooterFields_navItems_Read { - permission: Boolean! -} - -type FooterFields_navItems_Update { - permission: Boolean! -} - -type FooterFields_navItems_Delete { - permission: Boolean! -} - -type FooterFields_navItems_Fields { - link: FooterFields_navItems_link - id: FooterFields_navItems_id -} - -type FooterFields_navItems_link { - create: FooterFields_navItems_link_Create - read: FooterFields_navItems_link_Read - update: FooterFields_navItems_link_Update - delete: FooterFields_navItems_link_Delete - fields: FooterFields_navItems_link_Fields -} - -type FooterFields_navItems_link_Create { - permission: Boolean! -} - -type FooterFields_navItems_link_Read { - permission: Boolean! -} - -type FooterFields_navItems_link_Update { - permission: Boolean! -} - -type FooterFields_navItems_link_Delete { - permission: Boolean! -} - -type FooterFields_navItems_link_Fields { - type: FooterFields_navItems_link_type - newTab: FooterFields_navItems_link_newTab - reference: FooterFields_navItems_link_reference - url: FooterFields_navItems_link_url - label: FooterFields_navItems_link_label -} - -type FooterFields_navItems_link_type { - create: FooterFields_navItems_link_type_Create - read: FooterFields_navItems_link_type_Read - update: FooterFields_navItems_link_type_Update - delete: FooterFields_navItems_link_type_Delete -} - -type FooterFields_navItems_link_type_Create { - permission: Boolean! -} - -type FooterFields_navItems_link_type_Read { - permission: Boolean! -} - -type FooterFields_navItems_link_type_Update { - permission: Boolean! -} - -type FooterFields_navItems_link_type_Delete { - permission: Boolean! -} - -type FooterFields_navItems_link_newTab { - create: FooterFields_navItems_link_newTab_Create - read: FooterFields_navItems_link_newTab_Read - update: FooterFields_navItems_link_newTab_Update - delete: FooterFields_navItems_link_newTab_Delete -} - -type FooterFields_navItems_link_newTab_Create { - permission: Boolean! -} - -type FooterFields_navItems_link_newTab_Read { - permission: Boolean! -} - -type FooterFields_navItems_link_newTab_Update { - permission: Boolean! -} - -type FooterFields_navItems_link_newTab_Delete { - permission: Boolean! -} - -type FooterFields_navItems_link_reference { - create: FooterFields_navItems_link_reference_Create - read: FooterFields_navItems_link_reference_Read - update: FooterFields_navItems_link_reference_Update - delete: FooterFields_navItems_link_reference_Delete -} - -type FooterFields_navItems_link_reference_Create { - permission: Boolean! -} - -type FooterFields_navItems_link_reference_Read { - permission: Boolean! -} - -type FooterFields_navItems_link_reference_Update { - permission: Boolean! -} - -type FooterFields_navItems_link_reference_Delete { - permission: Boolean! -} - -type FooterFields_navItems_link_url { - create: FooterFields_navItems_link_url_Create - read: FooterFields_navItems_link_url_Read - update: FooterFields_navItems_link_url_Update - delete: FooterFields_navItems_link_url_Delete -} - -type FooterFields_navItems_link_url_Create { - permission: Boolean! -} - -type FooterFields_navItems_link_url_Read { - permission: Boolean! -} - -type FooterFields_navItems_link_url_Update { - permission: Boolean! -} - -type FooterFields_navItems_link_url_Delete { - permission: Boolean! -} - -type FooterFields_navItems_link_label { - create: FooterFields_navItems_link_label_Create - read: FooterFields_navItems_link_label_Read - update: FooterFields_navItems_link_label_Update - delete: FooterFields_navItems_link_label_Delete -} - -type FooterFields_navItems_link_label_Create { - permission: Boolean! -} - -type FooterFields_navItems_link_label_Read { - permission: Boolean! -} - -type FooterFields_navItems_link_label_Update { - permission: Boolean! -} - -type FooterFields_navItems_link_label_Delete { - permission: Boolean! -} - -type FooterFields_navItems_id { - create: FooterFields_navItems_id_Create - read: FooterFields_navItems_id_Read - update: FooterFields_navItems_id_Update - delete: FooterFields_navItems_id_Delete -} - -type FooterFields_navItems_id_Create { - permission: Boolean! -} - -type FooterFields_navItems_id_Read { - permission: Boolean! -} - -type FooterFields_navItems_id_Update { - permission: Boolean! -} - -type FooterFields_navItems_id_Delete { - permission: Boolean! -} - -type FooterFields_updatedAt { - create: FooterFields_updatedAt_Create - read: FooterFields_updatedAt_Read - update: FooterFields_updatedAt_Update - delete: FooterFields_updatedAt_Delete -} - -type FooterFields_updatedAt_Create { - permission: Boolean! -} - -type FooterFields_updatedAt_Read { - permission: Boolean! -} - -type FooterFields_updatedAt_Update { - permission: Boolean! -} - -type FooterFields_updatedAt_Delete { - permission: Boolean! -} - -type FooterFields_createdAt { - create: FooterFields_createdAt_Create - read: FooterFields_createdAt_Read - update: FooterFields_createdAt_Update - delete: FooterFields_createdAt_Delete -} - -type FooterFields_createdAt_Create { - permission: Boolean! -} - -type FooterFields_createdAt_Read { - permission: Boolean! -} - -type FooterFields_createdAt_Update { - permission: Boolean! -} - -type FooterFields_createdAt_Delete { - permission: Boolean! -} - -type FooterReadAccess { - permission: Boolean! - where: JSONObject -} - -type FooterUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type socialsAccess { - fields: SocialsFields - read: SocialsReadAccess - update: SocialsUpdateAccess -} - -type SocialsFields { - socials: SocialsFields_socials - updatedAt: SocialsFields_updatedAt - createdAt: SocialsFields_createdAt -} - -type SocialsFields_socials { - create: SocialsFields_socials_Create - read: SocialsFields_socials_Read - update: SocialsFields_socials_Update - delete: SocialsFields_socials_Delete - fields: SocialsFields_socials_Fields -} - -type SocialsFields_socials_Create { - permission: Boolean! -} - -type SocialsFields_socials_Read { - permission: Boolean! -} - -type SocialsFields_socials_Update { - permission: Boolean! -} - -type SocialsFields_socials_Delete { - permission: Boolean! -} - -type SocialsFields_socials_Fields { - name: SocialsFields_socials_name - link: SocialsFields_socials_link - id: SocialsFields_socials_id -} - -type SocialsFields_socials_name { - create: SocialsFields_socials_name_Create - read: SocialsFields_socials_name_Read - update: SocialsFields_socials_name_Update - delete: SocialsFields_socials_name_Delete -} - -type SocialsFields_socials_name_Create { - permission: Boolean! -} - -type SocialsFields_socials_name_Read { - permission: Boolean! -} - -type SocialsFields_socials_name_Update { - permission: Boolean! -} - -type SocialsFields_socials_name_Delete { - permission: Boolean! -} - -type SocialsFields_socials_link { - create: SocialsFields_socials_link_Create - read: SocialsFields_socials_link_Read - update: SocialsFields_socials_link_Update - delete: SocialsFields_socials_link_Delete -} - -type SocialsFields_socials_link_Create { - permission: Boolean! -} - -type SocialsFields_socials_link_Read { - permission: Boolean! -} - -type SocialsFields_socials_link_Update { - permission: Boolean! -} - -type SocialsFields_socials_link_Delete { - permission: Boolean! -} - -type SocialsFields_socials_id { - create: SocialsFields_socials_id_Create - read: SocialsFields_socials_id_Read - update: SocialsFields_socials_id_Update - delete: SocialsFields_socials_id_Delete -} - -type SocialsFields_socials_id_Create { - permission: Boolean! -} - -type SocialsFields_socials_id_Read { - permission: Boolean! -} - -type SocialsFields_socials_id_Update { - permission: Boolean! -} - -type SocialsFields_socials_id_Delete { - permission: Boolean! -} - -type SocialsFields_updatedAt { - create: SocialsFields_updatedAt_Create - read: SocialsFields_updatedAt_Read - update: SocialsFields_updatedAt_Update - delete: SocialsFields_updatedAt_Delete -} - -type SocialsFields_updatedAt_Create { - permission: Boolean! -} - -type SocialsFields_updatedAt_Read { - permission: Boolean! -} - -type SocialsFields_updatedAt_Update { - permission: Boolean! -} - -type SocialsFields_updatedAt_Delete { - permission: Boolean! -} - -type SocialsFields_createdAt { - create: SocialsFields_createdAt_Create - read: SocialsFields_createdAt_Read - update: SocialsFields_createdAt_Update - delete: SocialsFields_createdAt_Delete -} - -type SocialsFields_createdAt_Create { - permission: Boolean! -} - -type SocialsFields_createdAt_Read { - permission: Boolean! -} - -type SocialsFields_createdAt_Update { - permission: Boolean! -} - -type SocialsFields_createdAt_Delete { - permission: Boolean! -} - -type SocialsReadAccess { - permission: Boolean! - where: JSONObject -} - -type SocialsUpdateAccess { - permission: Boolean! - where: JSONObject -} - -type Mutation { - createPage(data: mutationPageInput!, draft: Boolean): Page - updatePage(id: String!, autosave: Boolean, data: mutationPageUpdateInput!, draft: Boolean): Page - deletePage(id: String!): Page - restoreVersionPage(id: String): Page - createMedia(data: mutationMediaInput!): Media - updateMedia(id: String!, autosave: Boolean, data: mutationMediaUpdateInput!): Media - deleteMedia(id: String!): Media - createCategory(data: mutationCategoryInput!): Category - updateCategory(id: String!, autosave: Boolean, data: mutationCategoryUpdateInput!): Category - deleteCategory(id: String!): Category - createUser(data: mutationUserInput!): User - updateUser(id: String!, autosave: Boolean, data: mutationUserUpdateInput!): User - deleteUser(id: String!): User - refreshTokenUser: usersRefreshedUser - logoutUser: String - unlockUser(email: String!): Boolean! - loginUser(email: String, password: String): usersLoginResult - forgotPasswordUser(disableEmail: Boolean, email: String!, expiration: Int): Boolean! - resetPasswordUser(password: String, token: String): usersResetPassword - verifyEmailUser(token: String): Boolean - createAuthor(data: mutationAuthorInput!, draft: Boolean): Author - updateAuthor(id: String!, autosave: Boolean, data: mutationAuthorUpdateInput!, draft: Boolean): Author - deleteAuthor(id: String!): Author - restoreVersionAuthor(id: String): Author - createPodcastEpisode(data: mutationPodcastEpisodeInput!, draft: Boolean): PodcastEpisode - updatePodcastEpisode(id: String!, autosave: Boolean, data: mutationPodcastEpisodeUpdateInput!, draft: Boolean): PodcastEpisode - deletePodcastEpisode(id: String!): PodcastEpisode - restoreVersionPodcastEpisode(id: String): PodcastEpisode - createBlogpost(data: mutationBlogpostInput!, draft: Boolean): Blogpost - updateBlogpost(id: String!, autosave: Boolean, data: mutationBlogpostUpdateInput!, draft: Boolean): Blogpost - deleteBlogpost(id: String!): Blogpost - restoreVersionBlogpost(id: String): Blogpost - createTalksAndRoundtable(data: mutationTalksAndRoundtableInput!, draft: Boolean): TalksAndRoundtable - updateTalksAndRoundtable(id: String!, autosave: Boolean, data: mutationTalksAndRoundtableUpdateInput!, draft: Boolean): TalksAndRoundtable - deleteTalksAndRoundtable(id: String!): TalksAndRoundtable - restoreVersionTalksAndRoundtable(id: String): TalksAndRoundtable - createCaseStudy(data: mutationCaseStudyInput!, draft: Boolean): CaseStudy - updateCaseStudy(id: String!, autosave: Boolean, data: mutationCaseStudyUpdateInput!, draft: Boolean): CaseStudy - deleteCaseStudy(id: String!): CaseStudy - restoreVersionCaseStudy(id: String): CaseStudy - createPayloadPreference(data: mutationPayloadPreferenceInput!): PayloadPreference - updatePayloadPreference(id: String!, autosave: Boolean, data: mutationPayloadPreferenceUpdateInput!): PayloadPreference - deletePayloadPreference(id: String!): PayloadPreference - updateSettings(data: mutationSettingsInput!, draft: Boolean): Settings - updateHeader(data: mutationHeaderInput!, draft: Boolean): Header - updateFooter(data: mutationFooterInput!, draft: Boolean): Footer - updateSocial(data: mutationSocialInput!, draft: Boolean): Social -} - -input mutationPageInput { - title: String! - publishedAt: String - hero: mutationPage_HeroInput! - layout: JSON - slug: String - updatedAt: String - createdAt: String - _status: Page__status_MutationInput -} - -input mutationPage_HeroInput { - type: Page_Hero_type_MutationInput! - richText: JSON! - links: [mutationPage_Hero_LinksInput] - media: String -} - -enum Page_Hero_type_MutationInput { - none - highImpact - mediumImpact - lowImpact -} - -input mutationPage_Hero_LinksInput { - link: mutationPage_Hero_Links_LinkInput - id: String -} - -input mutationPage_Hero_Links_LinkInput { - type: String - newTab: Boolean - reference: Page_Hero_Links_Link_ReferenceRelationshipInput - url: String - label: String! - appearance: Page_Hero_Links_Link_appearance_MutationInput -} - -input Page_Hero_Links_Link_ReferenceRelationshipInput { - relationTo: Page_Hero_Links_Link_ReferenceRelationshipInputRelationTo - value: JSON -} - -enum Page_Hero_Links_Link_ReferenceRelationshipInputRelationTo { - pages -} - -enum Page_Hero_Links_Link_appearance_MutationInput { - default - primary - secondary -} - -enum Page__status_MutationInput { - draft - published -} - -input mutationPageUpdateInput { - title: String - publishedAt: String - hero: mutationPageUpdate_HeroInput! - layout: JSON - slug: String - updatedAt: String - createdAt: String - _status: PageUpdate__status_MutationInput -} - -input mutationPageUpdate_HeroInput { - type: PageUpdate_Hero_type_MutationInput! - richText: JSON! - links: [mutationPageUpdate_Hero_LinksInput] - media: String -} - -enum PageUpdate_Hero_type_MutationInput { - none - highImpact - mediumImpact - lowImpact -} - -input mutationPageUpdate_Hero_LinksInput { - link: mutationPageUpdate_Hero_Links_LinkInput - id: String -} - -input mutationPageUpdate_Hero_Links_LinkInput { - type: String - newTab: Boolean - reference: PageUpdate_Hero_Links_Link_ReferenceRelationshipInput - url: String - label: String! - appearance: PageUpdate_Hero_Links_Link_appearance_MutationInput -} - -input PageUpdate_Hero_Links_Link_ReferenceRelationshipInput { - relationTo: PageUpdate_Hero_Links_Link_ReferenceRelationshipInputRelationTo - value: JSON -} - -enum PageUpdate_Hero_Links_Link_ReferenceRelationshipInputRelationTo { - pages -} - -enum PageUpdate_Hero_Links_Link_appearance_MutationInput { - default - primary - secondary -} - -enum PageUpdate__status_MutationInput { - draft - published -} - -input mutationMediaInput { - alt: String! - caption: JSON - updatedAt: String - createdAt: String - url: String - filename: String - mimeType: String - filesize: Float - width: Float - height: Float - focalX: Float - focalY: Float -} - -input mutationMediaUpdateInput { - alt: String - caption: JSON - updatedAt: String - createdAt: String - url: String - filename: String - mimeType: String - filesize: Float - width: Float - height: Float - focalX: Float - focalY: Float -} - -input mutationCategoryInput { - title: String - updatedAt: String - createdAt: String -} - -input mutationCategoryUpdateInput { - title: String - updatedAt: String - createdAt: String -} - -input mutationUserInput { - name: String - roles: [User_roles_MutationInput] - updatedAt: String - createdAt: String - email: String! - resetPasswordToken: String - resetPasswordExpiration: String - salt: String - hash: String - loginAttempts: Float - lockUntil: String - password: String! -} - -enum User_roles_MutationInput { - admin - user -} - -input mutationUserUpdateInput { - name: String - roles: [UserUpdate_roles_MutationInput] - updatedAt: String - createdAt: String - email: String - resetPasswordToken: String - resetPasswordExpiration: String - salt: String - hash: String - loginAttempts: Float - lockUntil: String - password: String -} - -enum UserUpdate_roles_MutationInput { - admin - user -} - -type usersRefreshedUser { - exp: Int - refreshedToken: String - strategy: String - user: usersJWT -} - -type usersJWT { - email: EmailAddress! - collection: String! -} - -type usersLoginResult { - exp: Int - token: String - user: User -} - -type usersResetPassword { - token: String - user: User -} - -input mutationAuthorInput { - featuredImage: String! - name: String! - role: Author_role_MutationInput! - bio: String! - linkedIn: String - x: String - gitHub: String - medium: String - publishedAt: String - slug: String - updatedAt: String - createdAt: String - _status: Author__status_MutationInput -} - -enum Author_role_MutationInput { - developer - product_manager - designer -} - -enum Author__status_MutationInput { - draft - published -} - -input mutationAuthorUpdateInput { - featuredImage: String - name: String - role: AuthorUpdate_role_MutationInput - bio: String - linkedIn: String - x: String - gitHub: String - medium: String - publishedAt: String - slug: String - updatedAt: String - createdAt: String - _status: AuthorUpdate__status_MutationInput -} - -enum AuthorUpdate_role_MutationInput { - developer - product_manager - designer -} - -enum AuthorUpdate__status_MutationInput { - draft - published -} - -input mutationPodcastEpisodeInput { - title: String! - summary: String! - notes: String! - featuredImage: String! - episodeFile: String! - spotify: String - apple: String - authors: [String] - categories: [String] - relatedEpisodes: [String] - publishedAt: String - slug: String - updatedAt: String - createdAt: String - _status: PodcastEpisode__status_MutationInput -} - -enum PodcastEpisode__status_MutationInput { - draft - published -} - -input mutationPodcastEpisodeUpdateInput { - title: String - summary: String - notes: String - featuredImage: String - episodeFile: String - spotify: String - apple: String - authors: [String] - categories: [String] - relatedEpisodes: [String] - publishedAt: String - slug: String - updatedAt: String - createdAt: String - _status: PodcastEpisodeUpdate__status_MutationInput -} - -enum PodcastEpisodeUpdate__status_MutationInput { - draft - published -} - -input mutationBlogpostInput { - title: String! - summary: String! - content: JSON! - content_html: String - featuredImage: String! - authors: [String] - categories: [String] - relatedPosts: [String] - publishedAt: String - slug: String - updatedAt: String - createdAt: String - _status: Blogpost__status_MutationInput -} - -enum Blogpost__status_MutationInput { - draft - published -} - -input mutationBlogpostUpdateInput { - title: String - summary: String - content: JSON - content_html: String - featuredImage: String - authors: [String] - categories: [String] - relatedPosts: [String] - publishedAt: String - slug: String - updatedAt: String - createdAt: String - _status: BlogpostUpdate__status_MutationInput -} - -enum BlogpostUpdate__status_MutationInput { - draft - published -} - -input mutationTalksAndRoundtableInput { - title: String! - about: String! - categories: [String] - url: String - authors: [String] - publishedAt: String - slug: String - updatedAt: String - createdAt: String - _status: TalksAndRoundtable__status_MutationInput -} - -enum TalksAndRoundtable__status_MutationInput { - draft - published -} - -input mutationTalksAndRoundtableUpdateInput { - title: String - about: String - categories: [String] - url: String - authors: [String] - publishedAt: String - slug: String - updatedAt: String - createdAt: String - _status: TalksAndRoundtableUpdate__status_MutationInput -} - -enum TalksAndRoundtableUpdate__status_MutationInput { - draft - published -} - -input mutationCaseStudyInput { - title: String - summary: String - authors: [String] - categories: [String] - slug: String - updatedAt: String - createdAt: String - _status: CaseStudy__status_MutationInput -} - -enum CaseStudy__status_MutationInput { - draft - published -} - -input mutationCaseStudyUpdateInput { - title: String - summary: String - authors: [String] - categories: [String] - slug: String - updatedAt: String - createdAt: String - _status: CaseStudyUpdate__status_MutationInput -} - -enum CaseStudyUpdate__status_MutationInput { - draft - published -} - -input mutationPayloadPreferenceInput { - user: PayloadPreference_UserRelationshipInput - key: String - value: JSON - updatedAt: String - createdAt: String -} - -input PayloadPreference_UserRelationshipInput { - relationTo: PayloadPreference_UserRelationshipInputRelationTo - value: JSON -} - -enum PayloadPreference_UserRelationshipInputRelationTo { - users -} - -input mutationPayloadPreferenceUpdateInput { - user: PayloadPreferenceUpdate_UserRelationshipInput - key: String - value: JSON - updatedAt: String - createdAt: String -} - -input PayloadPreferenceUpdate_UserRelationshipInput { - relationTo: PayloadPreferenceUpdate_UserRelationshipInputRelationTo - value: JSON -} - -enum PayloadPreferenceUpdate_UserRelationshipInputRelationTo { - users -} - -input mutationSettingsInput { - postsPage: String - projectsPage: String - podcastEpisodesPage: String - updatedAt: String - createdAt: String -} - -input mutationHeaderInput { - navItems: [mutationHeader_NavItemsInput] - updatedAt: String - createdAt: String -} - -input mutationHeader_NavItemsInput { - link: mutationHeader_NavItems_LinkInput - id: String -} - -input mutationHeader_NavItems_LinkInput { - type: String - newTab: Boolean - reference: Header_NavItems_Link_ReferenceRelationshipInput - url: String - label: String! -} - -input Header_NavItems_Link_ReferenceRelationshipInput { - relationTo: Header_NavItems_Link_ReferenceRelationshipInputRelationTo - value: JSON -} - -enum Header_NavItems_Link_ReferenceRelationshipInputRelationTo { - pages -} - -input mutationFooterInput { - navItems: [mutationFooter_NavItemsInput] - updatedAt: String - createdAt: String -} - -input mutationFooter_NavItemsInput { - link: mutationFooter_NavItems_LinkInput - id: String -} - -input mutationFooter_NavItems_LinkInput { - type: String - newTab: Boolean - reference: Footer_NavItems_Link_ReferenceRelationshipInput - url: String - label: String! -} - -input Footer_NavItems_Link_ReferenceRelationshipInput { - relationTo: Footer_NavItems_Link_ReferenceRelationshipInputRelationTo - value: JSON -} - -enum Footer_NavItems_Link_ReferenceRelationshipInputRelationTo { - pages -} - -input mutationSocialInput { - socials: [mutationSocial_SocialsInput] - updatedAt: String - createdAt: String -} - -input mutationSocial_SocialsInput { - name: String! - link: String! - id: String -} \ No newline at end of file diff --git a/src/payload/globals/Settings.ts b/src/payload/globals/Settings.ts deleted file mode 100644 index 33152d3..0000000 --- a/src/payload/globals/Settings.ts +++ /dev/null @@ -1,28 +0,0 @@ -import type { GlobalConfig } from 'payload/types' - -export const Settings: GlobalConfig = { - slug: 'settings', - typescript: { - interface: 'Settings', - }, - graphQL: { - name: 'Settings', - }, - access: { - read: () => true, - }, - fields: [ - { - name: 'mainHighlight', - type: 'relationship', - relationTo: 'blogposts', - label: 'Main Highlight', - }, - { - name: 'secondaryHighlight', - type: 'relationship', - relationTo: 'blogposts', - label: 'Secondary Highlight', - }, - ], -} diff --git a/src/payload/globals/Socials.ts b/src/payload/globals/Socials.ts deleted file mode 100644 index 086dfb6..0000000 --- a/src/payload/globals/Socials.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { GlobalConfig } from 'payload/types' - -export const Socials: GlobalConfig = { - slug: 'socials', - access: { - read: () => true, - }, - fields: [ - { - name: 'socials', - type: 'array', - fields: [ - { - name: 'name', - type: 'text', - required: true, - }, - { - name: 'link', - type: 'text', - required: true, - }, - ], - }, - ], -} diff --git a/src/payload/hooks/populatePublishedAt.ts b/src/payload/hooks/populatePublishedAt.ts deleted file mode 100644 index 9996f31..0000000 --- a/src/payload/hooks/populatePublishedAt.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { BeforeChangeHook } from 'payload/dist/collections/config/types' - -export const populatePublishedAt: BeforeChangeHook = ({ data, req, operation }) => { - if (operation === 'create' || operation === 'update') { - if (req.body && !req.body.publishedAt) { - const now = new Date() - return { - ...data, - publishedAt: now, - } - } - } - - return data -} diff --git a/src/payload/hooks/revalidatePage.ts b/src/payload/hooks/revalidatePage.ts deleted file mode 100644 index 24b5c48..0000000 --- a/src/payload/hooks/revalidatePage.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { AfterChangeHook } from 'payload/dist/collections/config/types' - -// ensure that the home page is revalidated at '/' instead of '/home' -export const formatAppURL = ({ doc }): string => { - const pathToUse = doc.slug === 'home' ? '' : doc.slug - const { pathname } = new URL(`${process.env.PAYLOAD_PUBLIC_SERVER_URL}/${pathToUse}`) - return pathname -} - -// Revalidate the page in the background, so the user doesn't have to wait -// Notice that the hook itself is not async and we are not awaiting `revalidate` -export const revalidatePage: AfterChangeHook = ({ doc, req }) => { - const revalidate = async (): Promise<void> => { - let url - - try { - url = formatAppURL({ doc }) - const res = await fetch( - `${process.env.PAYLOAD_PUBLIC_SERVER_URL}/next/revalidate?secret=${process.env.REVALIDATION_KEY}&revalidatePath=${url}`, - ) - - if (res.ok) { - req.payload.logger.info(`Revalidated path ${url}`) - } else { - req.payload.logger.error(`Error revalidating path ${url}`) - } - } catch (err: unknown) { - req.payload.logger.error(`Error hitting revalidate route for ${url}`) - } - } - - revalidate() - - return doc -} diff --git a/src/payload/payload-types.ts b/src/payload/payload-types.ts deleted file mode 100644 index 4f338ba..0000000 --- a/src/payload/payload-types.ts +++ /dev/null @@ -1,404 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * This file was automatically generated by Payload. - * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, - * and re-run `payload generate:types` to regenerate this file. - */ - -export interface Config { - collections: { - pages: Page; - media: Media; - categories: Category; - users: User; - authors: Author; - 'podcast-episodes': PodcastEpisode; - blogposts: Blogpost; - 'talks-and-roundtables': TalksAndRoundtable; - 'case-studies': CaseStudy; - 'payload-preferences': PayloadPreference; - 'payload-migrations': PayloadMigration; - }; - globals: { - settings: Settings; - header: Header; - footer: Footer; - socials: Social; - }; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "pages". - */ -export interface Page { - id: string; - title: string; - publishedAt?: string | null; - hero: { - type: 'none' | 'highImpact' | 'mediumImpact' | 'lowImpact'; - richText: { - [k: string]: unknown; - }[]; - links?: - | { - link: { - type?: ('reference' | 'custom') | null; - newTab?: boolean | null; - reference?: { - relationTo: 'pages'; - value: string | Page; - } | null; - url?: string | null; - label: string; - appearance?: ('default' | 'primary' | 'secondary') | null; - }; - id?: string | null; - }[] - | null; - media?: Media | null; - }; - layout: ( - | { - invertBackground?: boolean | null; - richText: { - [k: string]: unknown; - }[]; - links?: - | { - link: { - type?: ('reference' | 'custom') | null; - newTab?: boolean | null; - reference?: { - relationTo: 'pages'; - value: string | Page; - } | null; - url?: string | null; - label: string; - appearance?: ('primary' | 'secondary') | null; - }; - id?: string | null; - }[] - | null; - id?: string | null; - blockName?: string | null; - blockType: 'cta'; - } - | { - invertBackground?: boolean | null; - columns?: - | { - size?: ('oneThird' | 'half' | 'twoThirds' | 'full') | null; - richText: { - [k: string]: unknown; - }[]; - enableLink?: boolean | null; - link?: { - type?: ('reference' | 'custom') | null; - newTab?: boolean | null; - reference?: { - relationTo: 'pages'; - value: string | Page; - } | null; - url?: string | null; - label: string; - appearance?: ('default' | 'primary' | 'secondary') | null; - }; - id?: string | null; - }[] - | null; - id?: string | null; - blockName?: string | null; - blockType: 'content'; - } - | { - invertBackground?: boolean | null; - position?: ('default' | 'fullscreen') | null; - media: Media; - id?: string | null; - blockName?: string | null; - blockType: 'mediaBlock'; - } - )[]; - slug?: string | null; - updatedAt: string; - createdAt: string; - _status?: ('draft' | 'published') | null; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "media". - */ -export interface Media { - id: string; - alt: string; - caption?: - | { - [k: string]: unknown; - }[] - | null; - updatedAt: string; - createdAt: string; - url?: string | null; - filename?: string | null; - mimeType?: string | null; - filesize?: number | null; - width?: number | null; - height?: number | null; - focalX?: number | null; - focalY?: number | null; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "categories". - */ -export interface Category { - id: string; - title?: string | null; - updatedAt: string; - createdAt: string; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "users". - */ -export interface User { - id: string; - name?: string | null; - roles?: ('admin' | 'user')[] | null; - updatedAt: string; - createdAt: string; - email: string; - resetPasswordToken?: string | null; - resetPasswordExpiration?: string | null; - salt?: string | null; - hash?: string | null; - loginAttempts?: number | null; - lockUntil?: string | null; - password: string | null; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "authors". - */ -export interface Author { - id: string; - featuredImage: Media; - name: string; - role: 'developer' | 'product-manager' | 'designer'; - bio: string; - linkedIn?: string | null; - x?: string | null; - gitHub?: string | null; - medium?: string | null; - publishedAt?: string | null; - slug?: string | null; - updatedAt: string; - createdAt: string; - _status?: ('draft' | 'published') | null; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "podcast-episodes". - */ -export interface PodcastEpisode { - id: string; - title: string; - summary: string; - notes: string; - featuredImage: Media; - episodeFile: Media; - spotify?: string | null; - apple?: string | null; - authors?: (string | Author)[] | null; - categories?: (string | Category)[] | null; - relatedEpisodes?: (string | PodcastEpisode)[] | null; - publishedAt?: string | null; - slug?: string | null; - updatedAt: string; - createdAt: string; - _status?: ('draft' | 'published') | null; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "blogposts". - */ -export interface Blogpost { - id: string; - title: string; - summary: string; - content: { - root: { - type: string; - children: { - type: string; - version: number; - [k: string]: unknown; - }[]; - direction: ('ltr' | 'rtl') | null; - format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; - indent: number; - version: number; - }; - [k: string]: unknown; - }; - content_html?: string | null; - featuredImage: Media; - authors?: (string | Author)[] | null; - categories?: (string | Category)[] | null; - relatedPosts?: (string | Blogpost)[] | null; - publishedAt?: string | null; - slug?: string | null; - updatedAt: string; - createdAt: string; - _status?: ('draft' | 'published') | null; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "talks-and-roundtables". - */ -export interface TalksAndRoundtable { - id: string; - title: string; - summary: string; - categories?: (string | Category)[] | null; - url?: string | null; - authors?: (string | Author)[] | null; - publishedAt?: string | null; - featuredImage: Media; - slug?: string | null; - updatedAt: string; - createdAt: string; - _status?: ('draft' | 'published') | null; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "case-studies". - */ -export interface CaseStudy { - id: string; - title?: string | null; - summary?: string | null; - authors?: (string | Author)[] | null; - categories?: (string | Category)[] | null; - publishedAt?: string | null; - featuredImage: Media; - slug?: string | null; - updatedAt: string; - createdAt: string; - _status?: ('draft' | 'published') | null; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "payload-preferences". - */ -export interface PayloadPreference { - id: string; - user: { - relationTo: 'users'; - value: string | User; - }; - key?: string | null; - value?: - | { - [k: string]: unknown; - } - | unknown[] - | string - | number - | boolean - | null; - updatedAt: string; - createdAt: string; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "payload-migrations". - */ -export interface PayloadMigration { - id: string; - name?: string | null; - batch?: number | null; - updatedAt: string; - createdAt: string; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "settings". - */ -export interface Settings { - id: string; - mainHighlight?: (string | null) | Blogpost; - secondaryHighlight?: (string | null) | Blogpost; - updatedAt?: string | null; - createdAt?: string | null; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "header". - */ -export interface Header { - id: string; - navItems?: - | { - link: { - type?: ('reference' | 'custom') | null; - newTab?: boolean | null; - reference?: { - relationTo: 'pages'; - value: string | Page; - } | null; - url?: string | null; - label: string; - }; - id?: string | null; - }[] - | null; - updatedAt?: string | null; - createdAt?: string | null; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "footer". - */ -export interface Footer { - id: string; - navItems?: - | { - link: { - type?: ('reference' | 'custom') | null; - newTab?: boolean | null; - reference?: { - relationTo: 'pages'; - value: string | Page; - } | null; - url?: string | null; - label: string; - }; - id?: string | null; - }[] - | null; - updatedAt?: string | null; - createdAt?: string | null; -} -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "socials". - */ -export interface Social { - id: string; - socials?: - | { - name: string; - link: string; - id?: string | null; - }[] - | null; - updatedAt?: string | null; - createdAt?: string | null; -} - - -declare module 'payload' { - export interface GeneratedTypes extends Config {} -} diff --git a/src/payload/payload.config.ts b/src/payload/payload.config.ts deleted file mode 100644 index d4bf114..0000000 --- a/src/payload/payload.config.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { webpackBundler } from '@payloadcms/bundler-webpack' -import { mongooseAdapter } from '@payloadcms/db-mongodb' -import { lexicalEditor } from '@payloadcms/richtext-lexical' -import dotenv from 'dotenv' -import path from 'path' -import { buildConfig } from 'payload/config' - -import { Authors } from './collections/Authors' -import { BlogPosts } from './collections/BlogPosts' -import { CaseStudies } from './collections/CaseStudies' -// Collections go here -import Categories from './collections/Categories' -import { Media } from './collections/Media' -import { Pages } from './collections/Pages' -import { PodcastEpisodes } from './collections/PodcastEpisodes' -import { TalksAndRoundtables } from './collections/TalksAndRoundtables' -import Users from './collections/Users' -import BeforeDashboard from './components/BeforeDashboard' -import BeforeLogin from './components/BeforeLogin' -import { Footer } from './globals/Footer' -import { Header } from './globals/Header' -import { Settings } from './globals/Settings' -import { Socials } from './globals/Socials' - -dotenv.config({ - path: path.resolve(__dirname, '../../.env'), -}) - -export default buildConfig({ - admin: { - user: Users.slug, - bundler: webpackBundler(), - components: { - // The `BeforeLogin` component renders a message that you see while logging into your admin panel. - // Feel free to delete this at any time. Simply remove the line below and the import `BeforeLogin` statement on line 15. - beforeLogin: [BeforeLogin], - // The `BeforeDashboard` component renders the 'welcome' block that you see after logging into your admin panel. - // Feel free to delete this at any time. Simply remove the line below and the import `BeforeDashboard` statement on line 15. - beforeDashboard: [BeforeDashboard], - }, - webpack: config => ({ - ...config, - resolve: { - ...config.resolve, - alias: { - ...config.resolve.alias, - dotenv: path.resolve(__dirname, './dotenv.js'), - [path.resolve(__dirname, './endpoints/seed')]: path.resolve( - __dirname, - './emptyModuleMock.js', - ), - }, - }, - }), - }, - editor: lexicalEditor({ - features: ({ defaultFeatures }) => [...defaultFeatures], - }), - db: mongooseAdapter({ - url: process.env.DATABASE_URI, - }), - serverURL: process.env.PAYLOAD_PUBLIC_SERVER_URL, - collections: [ - Pages, - Media, - Categories, - Users, - Authors, - PodcastEpisodes, - BlogPosts, - TalksAndRoundtables, - CaseStudies, - ], - globals: [Settings, Header, Footer, Socials], - typescript: { - outputFile: path.resolve(__dirname, 'payload-types.ts'), - }, - graphQL: { - schemaOutputFile: path.resolve(__dirname, 'generated-schema.graphql'), - }, - cors: [process.env.PAYLOAD_PUBLIC_SERVER_URL || ''].filter(Boolean), - csrf: [process.env.PAYLOAD_PUBLIC_SERVER_URL || ''].filter(Boolean), -}) diff --git a/src/payload/utilities/formatSlug.ts b/src/payload/utilities/formatSlug.ts deleted file mode 100644 index bb33fc1..0000000 --- a/src/payload/utilities/formatSlug.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { FieldHook } from 'payload/types' - -const format = (val: string): string => - val - .replace(/ /g, '-') - .replace(/[^\w-]+/g, '') - .toLowerCase() - -const formatSlug = - (fallback: string): FieldHook => - ({ operation, value, originalDoc, data }) => { - if (typeof value === 'string') { - return format(value) - } - - if (operation === 'create') { - const fallbackData = data?.[fallback] || originalDoc?.[fallback] - - if (fallbackData && typeof fallbackData === 'string') { - return format(fallbackData) - } - } - - return value - } - -export default formatSlug diff --git a/src/payload/utilities/revalidate.ts b/src/payload/utilities/revalidate.ts deleted file mode 100644 index f528bcb..0000000 --- a/src/payload/utilities/revalidate.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { Payload } from 'payload' - -export const revalidate = async (args: { - collection: string - slug: string - payload: Payload -}): Promise<void> => { - const { collection, slug, payload } = args - - try { - const res = await fetch( - `${process.env.PAYLOAD_PUBLIC_SERVER_URL}/next/revalidate?secret=${process.env.REVALIDATION_KEY}&collection=${collection}&slug=${slug}`, - ) - - if (res.ok) { - payload.logger.info(`Revalidated page '${slug}' in collection '${collection}'`) - } else { - payload.logger.error( - `Error revalidating page '${slug}' in collection '${collection}': ${res}`, - ) - } - } catch (err: unknown) { - payload.logger.error( - `Error hitting revalidate route for page '${slug}' in collection '${collection}': ${err}`, - ) - } -} diff --git a/src/providers/HeaderTheme/index.tsx b/src/providers/HeaderTheme/index.tsx new file mode 100644 index 0000000..76666f1 --- /dev/null +++ b/src/providers/HeaderTheme/index.tsx @@ -0,0 +1,37 @@ +'use client' + +import type { Theme } from '@/providers/Theme/types' + +import React, { createContext, useCallback, useContext, useState } from 'react' + +import canUseDOM from '@/utilities/canUseDOM' + +export interface ContextType { + headerTheme?: Theme | null + setHeaderTheme: (theme: Theme | null) => void +} + +const initialContext: ContextType = { + headerTheme: undefined, + setHeaderTheme: () => null, +} + +const HeaderThemeContext = createContext(initialContext) + +export const HeaderThemeProvider = ({ children }: { children: React.ReactNode }) => { + const [headerTheme, setThemeState] = useState<Theme | undefined | null>( + canUseDOM ? (document.documentElement.getAttribute('data-theme') as Theme) : undefined, + ) + + const setHeaderTheme = useCallback((themeToSet: Theme | null) => { + setThemeState(themeToSet) + }, []) + + return ( + <HeaderThemeContext.Provider value={{ headerTheme, setHeaderTheme }}> + {children} + </HeaderThemeContext.Provider> + ) +} + +export const useHeaderTheme = (): ContextType => useContext(HeaderThemeContext) diff --git a/src/providers/Theme/InitTheme/index.tsx b/src/providers/Theme/InitTheme/index.tsx new file mode 100644 index 0000000..13ce0d6 --- /dev/null +++ b/src/providers/Theme/InitTheme/index.tsx @@ -0,0 +1,50 @@ +import Script from 'next/script' +import React from 'react' + +import { defaultTheme, themeLocalStorageKey } from '../ThemeSelector/types' + +export const InitTheme: React.FC = () => { + return ( + // eslint-disable-next-line @next/next/no-before-interactive-script-outside-document + <Script + dangerouslySetInnerHTML={{ + __html: ` + (function () { + function getImplicitPreference() { + var mediaQuery = '(prefers-color-scheme: dark)' + var mql = window.matchMedia(mediaQuery) + var hasImplicitPreference = typeof mql.matches === 'boolean' + + if (hasImplicitPreference) { + return mql.matches ? 'dark' : 'light' + } + + return null + } + + function themeIsValid(theme) { + return theme === 'light' || theme === 'dark' + } + + var themeToSet = '${defaultTheme}' + var preference = window.localStorage.getItem('${themeLocalStorageKey}') + + if (themeIsValid(preference)) { + themeToSet = preference + } else { + var implicitPreference = getImplicitPreference() + + if (implicitPreference) { + themeToSet = implicitPreference + } + } + + document.documentElement.setAttribute('data-theme', themeToSet) + })(); + `, + }} + id="theme-script" + strategy="beforeInteractive" + /> + ) +} diff --git a/src/providers/Theme/ThemeSelector/index.tsx b/src/providers/Theme/ThemeSelector/index.tsx new file mode 100644 index 0000000..fc4ca50 --- /dev/null +++ b/src/providers/Theme/ThemeSelector/index.tsx @@ -0,0 +1,48 @@ +'use client' + +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@/components/ui/select' +import React, { useState } from 'react' + +import type { Theme } from './types' + +import { useTheme } from '..' +import { themeLocalStorageKey } from './types' + +export const ThemeSelector: React.FC = () => { + const { setTheme } = useTheme() + const [value, setValue] = useState('') + + const onThemeChange = (themeToSet: Theme & 'auto') => { + if (themeToSet === 'auto') { + setTheme(null) + setValue('auto') + } else { + setTheme(themeToSet) + setValue(themeToSet) + } + } + + React.useEffect(() => { + const preference = window.localStorage.getItem(themeLocalStorageKey) + setValue(preference ?? 'auto') + }, []) + + return ( + <Select onValueChange={onThemeChange} value={value}> + <SelectTrigger className="w-auto bg-transparent gap-2 pl-0 md:pl-3 border-none"> + <SelectValue placeholder="Theme" /> + </SelectTrigger> + <SelectContent> + <SelectItem value="auto">Auto</SelectItem> + <SelectItem value="light">Light</SelectItem> + <SelectItem value="dark">Dark</SelectItem> + </SelectContent> + </Select> + ) +} diff --git a/src/providers/Theme/ThemeSelector/types.ts b/src/providers/Theme/ThemeSelector/types.ts new file mode 100644 index 0000000..9bd94ce --- /dev/null +++ b/src/providers/Theme/ThemeSelector/types.ts @@ -0,0 +1,5 @@ +export type Theme = 'dark' | 'light' + +export const themeLocalStorageKey = 'payload-theme' + +export const defaultTheme = 'light' diff --git a/src/providers/Theme/index.tsx b/src/providers/Theme/index.tsx new file mode 100644 index 0000000..882d831 --- /dev/null +++ b/src/providers/Theme/index.tsx @@ -0,0 +1,57 @@ +'use client' + +import React, { createContext, useCallback, useContext, useEffect, useState } from 'react' + +import type { Theme, ThemeContextType } from './types' + +import canUseDOM from '@/utilities/canUseDOM' +import { defaultTheme, getImplicitPreference, themeLocalStorageKey } from './shared' +import { themeIsValid } from './types' + +const initialContext: ThemeContextType = { + setTheme: () => null, + theme: undefined, +} + +const ThemeContext = createContext(initialContext) + +export const ThemeProvider = ({ children }: { children: React.ReactNode }) => { + const [theme, setThemeState] = useState<Theme | undefined>( + canUseDOM ? (document.documentElement.getAttribute('data-theme') as Theme) : undefined, + ) + + const setTheme = useCallback((themeToSet: Theme | null) => { + if (themeToSet === null) { + window.localStorage.removeItem(themeLocalStorageKey) + const implicitPreference = getImplicitPreference() + document.documentElement.setAttribute('data-theme', implicitPreference || '') + if (implicitPreference) setThemeState(implicitPreference) + } else { + setThemeState(themeToSet) + window.localStorage.setItem(themeLocalStorageKey, themeToSet) + document.documentElement.setAttribute('data-theme', themeToSet) + } + }, []) + + useEffect(() => { + let themeToSet: Theme = defaultTheme + const preference = window.localStorage.getItem(themeLocalStorageKey) + + if (themeIsValid(preference)) { + themeToSet = preference + } else { + const implicitPreference = getImplicitPreference() + + if (implicitPreference) { + themeToSet = implicitPreference + } + } + + document.documentElement.setAttribute('data-theme', themeToSet) + setThemeState(themeToSet) + }, []) + + return <ThemeContext.Provider value={{ setTheme, theme }}>{children}</ThemeContext.Provider> +} + +export const useTheme = (): ThemeContextType => useContext(ThemeContext) diff --git a/src/providers/Theme/shared.ts b/src/providers/Theme/shared.ts new file mode 100644 index 0000000..a038908 --- /dev/null +++ b/src/providers/Theme/shared.ts @@ -0,0 +1,17 @@ +import type { Theme } from './types' + +export const themeLocalStorageKey = 'payload-theme' + +export const defaultTheme = 'light' + +export const getImplicitPreference = (): Theme | null => { + const mediaQuery = '(prefers-color-scheme: dark)' + const mql = window.matchMedia(mediaQuery) + const hasImplicitPreference = typeof mql.matches === 'boolean' + + if (hasImplicitPreference) { + return mql.matches ? 'dark' : 'light' + } + + return null +} diff --git a/src/providers/Theme/types.ts b/src/providers/Theme/types.ts new file mode 100644 index 0000000..4ea0a52 --- /dev/null +++ b/src/providers/Theme/types.ts @@ -0,0 +1,10 @@ +export type Theme = 'dark' | 'light' + +export interface ThemeContextType { + setTheme: (theme: Theme | null) => void // eslint-disable-line no-unused-vars + theme?: Theme | null +} + +export function themeIsValid(string: null | string): string is Theme { + return string ? ['dark', 'light'].includes(string) : false +} diff --git a/src/providers/index.tsx b/src/providers/index.tsx new file mode 100644 index 0000000..92276a8 --- /dev/null +++ b/src/providers/index.tsx @@ -0,0 +1,14 @@ +import React from 'react' + +import { HeaderThemeProvider } from './HeaderTheme' +import { ThemeProvider } from './Theme' + +export const Providers: React.FC<{ + children: React.ReactNode +}> = ({ children }) => { + return ( + <ThemeProvider> + <HeaderThemeProvider>{children}</HeaderThemeProvider> + </ThemeProvider> + ) +} diff --git a/src/search/Component.tsx b/src/search/Component.tsx new file mode 100644 index 0000000..6c26847 --- /dev/null +++ b/src/search/Component.tsx @@ -0,0 +1,41 @@ +'use client' +import { Input } from '@/components/ui/input' +import { Label } from '@/components/ui/label' +import React, { useState, useEffect } from 'react' +import { useDebounce } from '@/utilities/useDebounce' +import { useRouter } from 'next/navigation' + +export const Search: React.FC = () => { + const [value, setValue] = useState('') + const router = useRouter() + + const debouncedValue = useDebounce(value) + + useEffect(() => { + router.push(`/search${debouncedValue ? `?q=${debouncedValue}` : ''}`) + }, [debouncedValue, router]) + + return ( + <div> + <form + onSubmit={(e) => { + e.preventDefault() + }} + > + <Label htmlFor="search" className="sr-only"> + Search + </Label> + <Input + id="search" + onChange={(event) => { + setValue(event.target.value) + }} + placeholder="Search" + /> + <button type="submit" className="sr-only"> + submit + </button> + </form> + </div> + ) +} diff --git a/src/search/beforeSync.ts b/src/search/beforeSync.ts new file mode 100644 index 0000000..d0c03c8 --- /dev/null +++ b/src/search/beforeSync.ts @@ -0,0 +1,44 @@ +import { BeforeSync, DocToSync } from '@payloadcms/plugin-search/types' + +export const beforeSyncWithSearch: BeforeSync = async ({ originalDoc, searchDoc, payload }) => { + const { + doc: { relationTo: collection }, + } = searchDoc + + const { slug, id, categories, title, meta, excerpt } = originalDoc + + const modifiedDoc: DocToSync = { + ...searchDoc, + slug, + meta: { + ...meta, + title: meta?.title || title, + image: meta?.image?.id || meta?.image, + description: meta?.description, + }, + categories: [], + } + + if (categories && Array.isArray(categories) && categories.length > 0) { + // get full categories and keep a flattened copy of their most important properties + try { + const mappedCategories = categories.map((category) => { + const { id, title } = category + + return { + relationTo: 'categories', + id, + title, + } + }) + + modifiedDoc.categories = mappedCategories + } catch (err) { + console.error( + `Failed. Category not found when syncing collection '${collection}' with id: '${id}' to search.`, + ) + } + } + + return modifiedDoc +} diff --git a/src/search/fieldOverrides.ts b/src/search/fieldOverrides.ts new file mode 100644 index 0000000..6d086cb --- /dev/null +++ b/src/search/fieldOverrides.ts @@ -0,0 +1,61 @@ +import { Field } from 'payload' + +export const searchFields: Field[] = [ + { + name: 'slug', + type: 'text', + index: true, + admin: { + readOnly: true, + }, + }, + { + name: 'meta', + label: 'Meta', + type: 'group', + index: true, + admin: { + readOnly: true, + }, + fields: [ + { + type: 'text', + name: 'title', + label: 'Title', + }, + { + type: 'text', + name: 'description', + label: 'Description', + }, + { + name: 'image', + label: 'Image', + type: 'upload', + relationTo: 'media', + }, + ], + }, + { + label: 'Categories', + name: 'categories', + type: 'array', + admin: { + readOnly: true, + }, + fields: [ + { + name: 'relationTo', + type: 'text', + }, + { + name: 'id', + type: 'text', + }, + { + name: 'title', + type: 'text', + }, + ], + }, +] diff --git a/src/server.default.ts b/src/server.default.ts deleted file mode 100644 index c5f8d4d..0000000 --- a/src/server.default.ts +++ /dev/null @@ -1,36 +0,0 @@ -import dotenv from 'dotenv' -import express from 'express' -import path from 'path' -import payload from 'payload' - -// This file is used to replace `server.ts` when ejecting i.e. `yarn eject` -// See `../eject.ts` for exact details on how this file is used -// See `./README.md#eject` for more information - -dotenv.config({ - path: path.resolve(__dirname, '../.env'), -}) - -const app = express() -const PORT = process.env.PORT || 3000 - -// Redirect root to the admin panel -app.get('/', (_, res) => { - res.redirect('/admin') -}) - -const start = async (): Promise<void> => { - await payload.init({ - secret: process.env.PAYLOAD_SECRET || '', - express: app, - onInit: () => { - payload.logger.info(`Payload Admin URL: ${payload.getAdminURL()}`) - }, - }) - - app.listen(PORT, async () => { - payload.logger.info(`App URL: ${process.env.PAYLOAD_PUBLIC_SERVER_URL}`) - }) -} - -start() diff --git a/src/server.ts b/src/server.ts deleted file mode 100644 index 0097488..0000000 --- a/src/server.ts +++ /dev/null @@ -1,53 +0,0 @@ -import dotenv from 'dotenv' -import express from 'express' -import next from 'next' -import nextBuild from 'next/dist/build' -import path from 'path' -import payload from 'payload' - -dotenv.config({ - path: path.resolve(__dirname, '../.env'), -}) - -const app = express() -const PORT = process.env.PORT || 3000 - -const start = async (): Promise<void> => { - await payload.init({ - secret: process.env.PAYLOAD_SECRET || '', - express: app, - onInit: () => { - payload.logger.info(`Payload Admin URL: ${payload.getAdminURL()}`) - }, - }) - - if (process.env.NEXT_BUILD) { - app.listen(PORT, async () => { - payload.logger.info(`Next.js is now building...`) - // @ts-expect-error - await nextBuild(path.join(__dirname, '../')) - process.exit() - }) - - return - } - - const nextApp = next({ - dev: process.env.NODE_ENV !== 'production', - port: Number(PORT), - }) - - const nextHandler = nextApp.getRequestHandler() - - app.use((req, res) => nextHandler(req, res)) - - nextApp.prepare().then(() => { - payload.logger.info('Starting Next.js...') - - app.listen(PORT, async () => { - payload.logger.info(`Next.js App URL: ${process.env.PAYLOAD_PUBLIC_SERVER_URL}`) - }) - }) -} - -start() diff --git a/src/app/_utilities/canUseDOM.ts b/src/utilities/canUseDOM.ts similarity index 100% rename from src/app/_utilities/canUseDOM.ts rename to src/utilities/canUseDOM.ts diff --git a/src/utilities/cn.ts b/src/utilities/cn.ts new file mode 100644 index 0000000..d32b0fe --- /dev/null +++ b/src/utilities/cn.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from 'clsx' +import { twMerge } from 'tailwind-merge' + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/src/payload/utilities/deepMerge.ts b/src/utilities/deepMerge.ts similarity index 94% rename from src/payload/utilities/deepMerge.ts rename to src/utilities/deepMerge.ts index 7dd1ecb..e0e9352 100644 --- a/src/payload/utilities/deepMerge.ts +++ b/src/utilities/deepMerge.ts @@ -17,7 +17,7 @@ export function isObject(item: unknown): boolean { export default function deepMerge<T, R>(target: T, source: R): T { const output = { ...target } if (isObject(target) && isObject(source)) { - Object.keys(source).forEach(key => { + Object.keys(source).forEach((key) => { if (isObject(source[key])) { if (!(key in target)) { Object.assign(output, { [key]: source[key] }) diff --git a/src/utilities/formatDateTime.ts b/src/utilities/formatDateTime.ts new file mode 100644 index 0000000..ea68488 --- /dev/null +++ b/src/utilities/formatDateTime.ts @@ -0,0 +1,20 @@ +export const formatDateTime = (timestamp: string): string => { + const now = new Date() + let date = now + if (timestamp) date = new Date(timestamp) + const months = date.getMonth() + const days = date.getDate() + // const hours = date.getHours(); + // const minutes = date.getMinutes(); + // const seconds = date.getSeconds(); + + const MM = months + 1 < 10 ? `0${months + 1}` : months + 1 + const DD = days < 10 ? `0${days}` : days + const YYYY = date.getFullYear() + // const AMPM = hours < 12 ? 'AM' : 'PM'; + // const HH = hours > 12 ? hours - 12 : hours; + // const MinMin = (minutes < 10) ? `0${minutes}` : minutes; + // const SS = (seconds < 10) ? `0${seconds}` : seconds; + + return `${MM}/${DD}/${YYYY}` +} diff --git a/src/utilities/generateMeta.ts b/src/utilities/generateMeta.ts new file mode 100644 index 0000000..81aa201 --- /dev/null +++ b/src/utilities/generateMeta.ts @@ -0,0 +1,36 @@ +import type { Metadata } from 'next' + +import type { Page, Post } from '../payload-types' + +import { mergeOpenGraph } from './mergeOpenGraph' + +export const generateMeta = async (args: { doc: Page | Post }): Promise<Metadata> => { + const { doc } = args || {} + + const ogImage = + typeof doc?.meta?.image === 'object' && + doc.meta.image !== null && + 'url' in doc.meta.image && + `${process.env.NEXT_PUBLIC_SERVER_URL}${doc.meta.image.url}` + + const title = doc?.meta?.title + ? doc?.meta?.title + ' | Payload Website Template' + : 'Payload Website Template' + + return { + description: doc?.meta?.description, + openGraph: mergeOpenGraph({ + description: doc?.meta?.description || '', + images: ogImage + ? [ + { + url: ogImage, + }, + ] + : undefined, + title, + url: Array.isArray(doc?.slug) ? doc?.slug.join('/') : '/', + }), + title, + } +} diff --git a/src/utilities/generatePreviewPath.ts b/src/utilities/generatePreviewPath.ts new file mode 100644 index 0000000..cae80d1 --- /dev/null +++ b/src/utilities/generatePreviewPath.ts @@ -0,0 +1,29 @@ +import { CollectionSlug } from 'payload' + +const collectionPrefixMap: Partial<Record<CollectionSlug, string>> = { + posts: '/posts', + pages: '', +} + +type Props = { + collection: keyof typeof collectionPrefixMap + slug: string +} + +export const generatePreviewPath = ({ collection, slug }: Props) => { + const path = `${collectionPrefixMap[collection]}/${slug}` + + const params = { + slug, + collection, + path, + } + + const encodedParams = new URLSearchParams() + + Object.entries(params).forEach(([key, value]) => { + encodedParams.append(key, value) + }) + + return `/next/preview?${encodedParams.toString()}` +} diff --git a/src/utilities/getDocument.ts b/src/utilities/getDocument.ts new file mode 100644 index 0000000..aa7b522 --- /dev/null +++ b/src/utilities/getDocument.ts @@ -0,0 +1,31 @@ +import type { Config } from 'src/payload-types' + +import configPromise from '@payload-config' +import { getPayloadHMR } from '@payloadcms/next/utilities' +import { unstable_cache } from 'next/cache' + +type Collection = keyof Config['collections'] + +async function getDocument(collection: Collection, slug: string, depth = 0) { + const payload = await getPayloadHMR({ config: configPromise }) + + const page = await payload.find({ + collection, + depth, + where: { + slug: { + equals: slug, + }, + }, + }) + + return page.docs[0] +} + +/** + * Returns a unstable_cache function mapped with the cache tag for the slug + */ +export const getCachedDocument = (collection: Collection, slug: string) => + unstable_cache(async () => getDocument(collection, slug), [collection, slug], { + tags: [`${collection}_${slug}`], + }) diff --git a/src/utilities/getGlobals.ts b/src/utilities/getGlobals.ts new file mode 100644 index 0000000..873c152 --- /dev/null +++ b/src/utilities/getGlobals.ts @@ -0,0 +1,26 @@ +import type { Config } from 'src/payload-types' + +import configPromise from '@payload-config' +import { getPayloadHMR } from '@payloadcms/next/utilities' +import { unstable_cache } from 'next/cache' + +type Global = keyof Config['globals'] + +async function getGlobal(slug: Global, depth = 0) { + const payload = await getPayloadHMR({ config: configPromise }) + + const global = await payload.findGlobal({ + slug, + depth, + }) + + return global +} + +/** + * Returns a unstable_cache function mapped with the cache tag for the slug + */ +export const getCachedGlobal = (slug: Global, depth = 0) => + unstable_cache(async () => getGlobal(slug, depth), [slug], { + tags: [`global_${slug}`], + }) diff --git a/src/app/_utilities/getMeUser.ts b/src/utilities/getMeUser.ts similarity index 81% rename from src/app/_utilities/getMeUser.ts rename to src/utilities/getMeUser.ts index 48a0ae8..a899596 100644 --- a/src/app/_utilities/getMeUser.ts +++ b/src/utilities/getMeUser.ts @@ -1,17 +1,17 @@ import { cookies } from 'next/headers' import { redirect } from 'next/navigation' -import type { User } from '../../payload/payload-types' +import type { User } from '../payload-types' export const getMeUser = async (args?: { nullUserRedirect?: string validUserRedirect?: string }): Promise<{ - user: User token: string + user: User }> => { const { nullUserRedirect, validUserRedirect } = args || {} - const cookieStore = cookies() + const cookieStore = await cookies() const token = cookieStore.get('payload-token')?.value const meUserReq = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/me`, { @@ -34,8 +34,9 @@ export const getMeUser = async (args?: { redirect(nullUserRedirect) } + // Token will exist here because if it doesn't the user will be redirected return { + token: token!, user, - token, } } diff --git a/src/utilities/getRedirects.ts b/src/utilities/getRedirects.ts new file mode 100644 index 0000000..111f2fa --- /dev/null +++ b/src/utilities/getRedirects.ts @@ -0,0 +1,26 @@ +import configPromise from '@payload-config' +import { getPayloadHMR } from '@payloadcms/next/utilities' +import { unstable_cache } from 'next/cache' + +export async function getRedirects(depth = 1) { + const payload = await getPayloadHMR({ config: configPromise }) + + const { docs: redirects } = await payload.find({ + collection: 'redirects', + depth, + limit: 0, + pagination: false, + }) + + return redirects +} + +/** + * Returns a unstable_cache function mapped with the cache tag for 'redirects'. + * + * Cache all redirects together to avoid multiple fetches. + */ +export const getCachedRedirects = () => + unstable_cache(async () => getRedirects(), ['redirects'], { + tags: ['redirects'], + }) diff --git a/src/utilities/mergeOpenGraph.ts b/src/utilities/mergeOpenGraph.ts new file mode 100644 index 0000000..9580f13 --- /dev/null +++ b/src/utilities/mergeOpenGraph.ts @@ -0,0 +1,23 @@ +import type { Metadata } from 'next' + +const defaultOpenGraph: Metadata['openGraph'] = { + type: 'website', + description: 'An open-source website built with Payload and Next.js.', + images: [ + { + url: process.env.NEXT_PUBLIC_SERVER_URL + ? `${process.env.NEXT_PUBLIC_SERVER_URL}/website-template-OG.webp` + : '/website-template-OG.webp', + }, + ], + siteName: 'Payload Website Template', + title: 'Payload Website Template', +} + +export const mergeOpenGraph = (og?: Metadata['openGraph']): Metadata['openGraph'] => { + return { + ...defaultOpenGraph, + ...og, + images: og?.images ? og.images : defaultOpenGraph.images, + } +} diff --git a/src/utilities/toKebabCase.ts b/src/utilities/toKebabCase.ts new file mode 100644 index 0000000..228865f --- /dev/null +++ b/src/utilities/toKebabCase.ts @@ -0,0 +1,5 @@ +export const toKebabCase = (string: string): string => + string + ?.replace(/([a-z])([A-Z])/g, '$1-$2') + .replace(/\s+/g, '-') + .toLowerCase() diff --git a/src/utilities/useClickableCard.ts b/src/utilities/useClickableCard.ts new file mode 100644 index 0000000..fa70c26 --- /dev/null +++ b/src/utilities/useClickableCard.ts @@ -0,0 +1,107 @@ +'use client' +import type { RefObject } from 'react' + +import { useRouter } from 'next/navigation' +import { useCallback, useEffect, useRef } from 'react' + +type UseClickableCardType<T extends HTMLElement> = { + card: { + ref: RefObject<T | null> + } + link: { + ref: RefObject<HTMLAnchorElement | null> + } +} + +interface Props { + external?: boolean + newTab?: boolean + scroll?: boolean +} + +function useClickableCard<T extends HTMLElement>({ + external = false, + newTab = false, + scroll = true, +}: Props): UseClickableCardType<T> { + const router = useRouter() + const card = useRef<T>(null) + const link = useRef<HTMLAnchorElement>(null) + const timeDown = useRef<number>(0) + const hasActiveParent = useRef<boolean>(false) + const pressedButton = useRef<number>(0) + + const handleMouseDown = useCallback( + (e: MouseEvent) => { + if (e.target) { + const target = e.target as Element + + const timeNow = +new Date() + const parent = target?.closest('a') + + pressedButton.current = e.button + + if (!parent) { + hasActiveParent.current = false + timeDown.current = timeNow + } else { + hasActiveParent.current = true + } + } + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [router, card, link, timeDown], + ) + + const handleMouseUp = useCallback( + (e: MouseEvent) => { + if (link.current?.href) { + const timeNow = +new Date() + const difference = timeNow - timeDown.current + + if (link.current?.href && difference <= 250) { + if (!hasActiveParent.current && pressedButton.current === 0 && !e.ctrlKey) { + if (external) { + const target = newTab ? '_blank' : '_self' + window.open(link.current.href, target) + } else { + router.push(link.current.href, { scroll }) + } + } + } + } + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [router, card, link, timeDown], + ) + + useEffect(() => { + const cardNode = card.current + + if (cardNode) { + cardNode.addEventListener('mousedown', handleMouseDown) + cardNode.addEventListener('mouseup', handleMouseUp) + } + + return () => { + if (cardNode) { + if (cardNode) { + cardNode?.removeEventListener('mousedown', handleMouseDown) + cardNode?.removeEventListener('mouseup', handleMouseUp) + } + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [card, link, router]) + + return { + card: { + ref: card, + }, + link: { + ref: link, + }, + } +} + +export default useClickableCard diff --git a/src/utilities/useDebounce.ts b/src/utilities/useDebounce.ts new file mode 100644 index 0000000..db97afd --- /dev/null +++ b/src/utilities/useDebounce.ts @@ -0,0 +1,17 @@ +import { useState, useEffect } from 'react' + +export function useDebounce<T>(value: T, delay = 200): T { + const [debouncedValue, setDebouncedValue] = useState<T>(value) + + useEffect(() => { + const handler = setTimeout(() => { + setDebouncedValue(value) + }, delay) + + return () => { + clearTimeout(handler) + } + }, [value, delay]) + + return debouncedValue +} diff --git a/tsconfig.json b/tsconfig.json index 0a33731..cfd48a2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,8 @@ { "compilerOptions": { + "baseUrl": ".", "esModuleInterop": true, - "target": "es2019", + "target": "es6", "lib": [ "dom", "dom.iterable", @@ -10,12 +11,13 @@ "allowJs": true, "skipLibCheck": true, "strict": false, + "strictNullChecks": true, "forceConsistentCasingInFileNames": true, "noEmit": true, "incremental": true, "jsx": "preserve", - "module": "CommonJS", - "moduleResolution": "node", + "module": "esnext", + "moduleResolution": "bundler", "resolveJsonModule": true, "sourceMap": true, "isolatedModules": true, @@ -25,20 +27,25 @@ } ], "paths": { - "react": ["./node_modules/@types/react"], - "@/*": ["./src/*"] + "@payload-config": [ + "./src/payload.config.ts" + ], + "react": [ + "./node_modules/@types/react" + ], + "@/*": [ + "./src/*" + ], } }, "include": [ "**/*.ts", "**/*.tsx", - ".next/types/**/*.ts" + ".next/types/**/*.ts", + "redirects.js", + "next.config.js" ], "exclude": [ "node_modules" - ], - "ts-node": { - "transpileOnly": true, - "swc": true - } + ] } diff --git a/tsconfig.server.json b/tsconfig.server.json deleted file mode 100644 index e11cd2a..0000000 --- a/tsconfig.server.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "module": "commonjs", - "outDir": "dist", - "noEmit": false, - "jsx": "react", - "sourceMap": true - }, - "include": [ - "src/server.ts", - "src/payload/payload.config.ts", - ] -} diff --git a/yarn.lock b/yarn.lock index 258c7f3..7f3a925 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + "@apidevtools/json-schema-ref-parser@^11.5.5": version "11.7.0" resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.7.0.tgz#228d72018a0e7cbee744b677eaa01a8968f302d9" @@ -97,7 +102,7 @@ "@smithy/util-utf8" "^2.0.0" tslib "^2.6.2" -"@aws-sdk/client-cognito-identity@3.645.0", "@aws-sdk/client-cognito-identity@^3.289.0": +"@aws-sdk/client-cognito-identity@3.645.0": version "3.645.0" resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.645.0.tgz#865fe14479f3e9c4e2116ba678f427c800906711" integrity sha512-nBfWDzWBQI1NCHYqBAmiifhdnLRxQYozaq6OjTuRcALjYJbOdFV7t0w9FWGISOq1OnM7r8UdCXlr2bzdyU0tJA== @@ -144,68 +149,115 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-s3@^3.142.0": - version "3.645.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.645.0.tgz#a0d201248ee711e79f3e515d870b02547a652102" - integrity sha512-RjT/mfNv4yr1uv/+aEXgSIxC5EB+yHPSU7hH0KZOZrvZEFASLl0i4FeoHzbMEOH5KdKGAi0uu3zRP3D1y45sKg== +"@aws-sdk/client-cognito-identity@3.667.0", "@aws-sdk/client-cognito-identity@^3.614.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.667.0.tgz#ed58c886ef6fa37fa49f4a5a6512909eee87db58" + integrity sha512-VHkXM4SKa4wE1YwLTrfODesffg5/QJI1s3lrOwzMXQ3JDaPSEeeSnGn+dVZVnSG6Tg/bkKm45JMXIJmW1zG6Tw== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.667.0" + "@aws-sdk/client-sts" "3.667.0" + "@aws-sdk/core" "3.667.0" + "@aws-sdk/credential-provider-node" "3.667.0" + "@aws-sdk/middleware-host-header" "3.667.0" + "@aws-sdk/middleware-logger" "3.667.0" + "@aws-sdk/middleware-recursion-detection" "3.667.0" + "@aws-sdk/middleware-user-agent" "3.667.0" + "@aws-sdk/region-config-resolver" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@aws-sdk/util-endpoints" "3.667.0" + "@aws-sdk/util-user-agent-browser" "3.667.0" + "@aws-sdk/util-user-agent-node" "3.667.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.8" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.23" + "@smithy/util-defaults-mode-node" "^3.0.23" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-s3@^3.614.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.667.0.tgz#06fb8ba8d171c6fdc292fd8544f9b7f9f83d4974" + integrity sha512-WKkjRJe93epfIWZa+PUgvMvDQ7IObr4poxqx/3YIsl8FXMSgJP5Woc1kdjeRrfpPWHGTm9O1Bi7XFulzEzUwQA== dependencies: "@aws-crypto/sha1-browser" "5.2.0" "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.645.0" - "@aws-sdk/client-sts" "3.645.0" - "@aws-sdk/core" "3.635.0" - "@aws-sdk/credential-provider-node" "3.645.0" - "@aws-sdk/middleware-bucket-endpoint" "3.620.0" - "@aws-sdk/middleware-expect-continue" "3.620.0" - "@aws-sdk/middleware-flexible-checksums" "3.620.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-location-constraint" "3.609.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-sdk-s3" "3.635.0" - "@aws-sdk/middleware-ssec" "3.609.0" - "@aws-sdk/middleware-user-agent" "3.645.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/signature-v4-multi-region" "3.635.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.645.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@aws-sdk/xml-builder" "3.609.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.4.0" - "@smithy/eventstream-serde-browser" "^3.0.6" - "@smithy/eventstream-serde-config-resolver" "^3.0.3" - "@smithy/eventstream-serde-node" "^3.0.5" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-blob-browser" "^3.1.2" - "@smithy/hash-node" "^3.0.3" - "@smithy/hash-stream-node" "^3.1.2" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/md5-js" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.15" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.2.0" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.667.0" + "@aws-sdk/client-sts" "3.667.0" + "@aws-sdk/core" "3.667.0" + "@aws-sdk/credential-provider-node" "3.667.0" + "@aws-sdk/middleware-bucket-endpoint" "3.667.0" + "@aws-sdk/middleware-expect-continue" "3.667.0" + "@aws-sdk/middleware-flexible-checksums" "3.667.0" + "@aws-sdk/middleware-host-header" "3.667.0" + "@aws-sdk/middleware-location-constraint" "3.667.0" + "@aws-sdk/middleware-logger" "3.667.0" + "@aws-sdk/middleware-recursion-detection" "3.667.0" + "@aws-sdk/middleware-sdk-s3" "3.667.0" + "@aws-sdk/middleware-ssec" "3.667.0" + "@aws-sdk/middleware-user-agent" "3.667.0" + "@aws-sdk/region-config-resolver" "3.667.0" + "@aws-sdk/signature-v4-multi-region" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@aws-sdk/util-endpoints" "3.667.0" + "@aws-sdk/util-user-agent-browser" "3.667.0" + "@aws-sdk/util-user-agent-node" "3.667.0" + "@aws-sdk/xml-builder" "3.662.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.8" + "@smithy/eventstream-serde-browser" "^3.0.10" + "@smithy/eventstream-serde-config-resolver" "^3.0.7" + "@smithy/eventstream-serde-node" "^3.0.9" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-blob-browser" "^3.1.6" + "@smithy/hash-node" "^3.0.7" + "@smithy/hash-stream-node" "^3.1.6" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/md5-js" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.15" - "@smithy/util-defaults-mode-node" "^3.0.15" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-stream" "^3.1.3" + "@smithy/util-defaults-mode-browser" "^3.0.23" + "@smithy/util-defaults-mode-node" "^3.0.23" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" + "@smithy/util-stream" "^3.1.9" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" + "@smithy/util-waiter" "^3.1.6" tslib "^2.6.2" "@aws-sdk/client-sso-oidc@3.645.0": @@ -253,6 +305,96 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/client-sso-oidc@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.667.0.tgz#36b6e602f2c9b5f0fbbf3630fbd88908d883256f" + integrity sha512-ThLLR0Zn15Rk8Y6rzzVtHREZU4NAsNj9oCiQcXj4/vlBl+J0MbiTCDUJTc559O+DIMekrjusLaPIKfTZmXXuhA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.667.0" + "@aws-sdk/credential-provider-node" "3.667.0" + "@aws-sdk/middleware-host-header" "3.667.0" + "@aws-sdk/middleware-logger" "3.667.0" + "@aws-sdk/middleware-recursion-detection" "3.667.0" + "@aws-sdk/middleware-user-agent" "3.667.0" + "@aws-sdk/region-config-resolver" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@aws-sdk/util-endpoints" "3.667.0" + "@aws-sdk/util-user-agent-browser" "3.667.0" + "@aws-sdk/util-user-agent-node" "3.667.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.8" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.23" + "@smithy/util-defaults-mode-node" "^3.0.23" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sso-oidc@^3.667.0": + version "3.668.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.668.0.tgz#022c3fd68a0c7be1bd4df79b5c64a63de09e934e" + integrity sha512-b1Ib/92tcjOPXWYILfNuOOd2CYxmlr9lUfoZZBy/uwZCMObI6gtcpdUjfefyJohWfR+rk1WtsXi/sIXKxAhl/g== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.667.0" + "@aws-sdk/credential-provider-node" "3.668.0" + "@aws-sdk/middleware-host-header" "3.667.0" + "@aws-sdk/middleware-logger" "3.667.0" + "@aws-sdk/middleware-recursion-detection" "3.667.0" + "@aws-sdk/middleware-user-agent" "3.668.0" + "@aws-sdk/region-config-resolver" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@aws-sdk/util-endpoints" "3.667.0" + "@aws-sdk/util-user-agent-browser" "3.667.0" + "@aws-sdk/util-user-agent-node" "3.668.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.8" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.23" + "@smithy/util-defaults-mode-node" "^3.0.23" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/client-sso@3.645.0": version "3.645.0" resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.645.0.tgz#5e598ce4216ee8e014af8530b7b1c87db06a57aa" @@ -297,6 +439,94 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/client-sso@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.667.0.tgz#87c3388ee0ed10a6d67fc48c92ff2dfdc73b1adf" + integrity sha512-69nl3BXcAfn/zUdxpxC/5Bi4K46sMgTRFVKHkyiRFO8OQpNJDRzl6eGltESLqtf65rjWfswTDwfYrMd2+tnlDQ== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.667.0" + "@aws-sdk/middleware-host-header" "3.667.0" + "@aws-sdk/middleware-logger" "3.667.0" + "@aws-sdk/middleware-recursion-detection" "3.667.0" + "@aws-sdk/middleware-user-agent" "3.667.0" + "@aws-sdk/region-config-resolver" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@aws-sdk/util-endpoints" "3.667.0" + "@aws-sdk/util-user-agent-browser" "3.667.0" + "@aws-sdk/util-user-agent-node" "3.667.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.8" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.23" + "@smithy/util-defaults-mode-node" "^3.0.23" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sso@3.668.0": + version "3.668.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.668.0.tgz#97b392372c80217ef949f4307e324f65f11b4673" + integrity sha512-21YehzNmlaVbB6f4gAg9CTl6djExE7yxuWaRgbFugCtFhqZbmNhrh826B6cGvPVc5Dxx2rdMdI/SxTujtTJvag== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.667.0" + "@aws-sdk/middleware-host-header" "3.667.0" + "@aws-sdk/middleware-logger" "3.667.0" + "@aws-sdk/middleware-recursion-detection" "3.667.0" + "@aws-sdk/middleware-user-agent" "3.668.0" + "@aws-sdk/region-config-resolver" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@aws-sdk/util-endpoints" "3.667.0" + "@aws-sdk/util-user-agent-browser" "3.667.0" + "@aws-sdk/util-user-agent-node" "3.668.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.8" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.23" + "@smithy/util-defaults-mode-node" "^3.0.23" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/client-sts@3.645.0": version "3.645.0" resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.645.0.tgz#0cd5b022c7ec360b3bc4134c8ce545322c2d09d7" @@ -343,6 +573,52 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/client-sts@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.667.0.tgz#c9e62336449b5f290de62afdbb437531fee777e1" + integrity sha512-SnvkDDuOAwXOxzhGfvvxK8JFFVApVvXrM6+nVmSYwuHjWdI+HwNcsRC6rxZ8uHQEz2fR0a810ckUwFVfpvtIoA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.667.0" + "@aws-sdk/core" "3.667.0" + "@aws-sdk/credential-provider-node" "3.667.0" + "@aws-sdk/middleware-host-header" "3.667.0" + "@aws-sdk/middleware-logger" "3.667.0" + "@aws-sdk/middleware-recursion-detection" "3.667.0" + "@aws-sdk/middleware-user-agent" "3.667.0" + "@aws-sdk/region-config-resolver" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@aws-sdk/util-endpoints" "3.667.0" + "@aws-sdk/util-user-agent-browser" "3.667.0" + "@aws-sdk/util-user-agent-node" "3.667.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.8" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.23" + "@smithy/util-defaults-mode-node" "^3.0.23" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/core@3.635.0": version "3.635.0" resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.635.0.tgz#74b7d0d7fa3aa39f87ea5cf4e6c97d4d84f4ef14" @@ -359,6 +635,23 @@ fast-xml-parser "4.4.1" tslib "^2.6.2" +"@aws-sdk/core@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.667.0.tgz#ecf93bf8e3ebea3bd972576a67b87dd291d7a90a" + integrity sha512-pMcDVI7Tmdsc8R3sDv0Omj/4iRParGY+uJtAfF669WnZfDfaBQaix2Mq7+Mu08vdjqO9K3gicFvjk9S1VLmOKA== + dependencies: + "@aws-sdk/types" "3.667.0" + "@smithy/core" "^2.4.8" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/signature-v4" "^4.2.0" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/util-middleware" "^3.0.7" + fast-xml-parser "4.4.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-cognito-identity@3.645.0": version "3.645.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.645.0.tgz#d0abf405ba0a328d925e3187fd926c29d05b8ae9" @@ -370,6 +663,17 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@aws-sdk/credential-provider-cognito-identity@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.667.0.tgz#66f543bff544d121682545063d1185508b64512c" + integrity sha512-+aE/LZXAdCGpMKREus959oJNwXYx2igSP4VCiQMWr245497SbvzSep4ZRtq6GpG71aACviN2BwCyh+1u60Yb/A== + dependencies: + "@aws-sdk/client-cognito-identity" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@aws-sdk/credential-provider-env@3.620.1": version "3.620.1" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz#d4692c49a65ebc11dae3f7f8b053fee9268a953c" @@ -380,6 +684,17 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@aws-sdk/credential-provider-env@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.667.0.tgz#1b3a4b049fc164a3a3eb3617f7448fed3cb3a2db" + integrity sha512-zZbrkkaPc54WXm+QAnpuv0LPNfsts0HPPd+oCECGs7IQRaFsGj187cwvPg9RMWDFZqpm64MdBDoA8OQHsqzYCw== + dependencies: + "@aws-sdk/core" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@aws-sdk/credential-provider-http@3.635.0": version "3.635.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.635.0.tgz#083439af1336693049958e4b61695e4712b30fd4" @@ -395,6 +710,22 @@ "@smithy/util-stream" "^3.1.3" tslib "^2.6.2" +"@aws-sdk/credential-provider-http@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.667.0.tgz#ff78b7f76715a7456976930bff6221dfac70afbc" + integrity sha512-sjtybFfERZWiqTY7fswBxKQLvUkiCucOWyqh3IaPo/4nE1PXRnaZCVG0+kRBPrYIxWqiVwytvZzMJy8sVZcG0A== + dependencies: + "@aws-sdk/core" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/util-stream" "^3.1.9" + tslib "^2.6.2" + "@aws-sdk/credential-provider-ini@3.645.0": version "3.645.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.645.0.tgz#1226348cc4e3e5a9ab2ceb5357d6539b5598d29f" @@ -412,6 +743,42 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@aws-sdk/credential-provider-ini@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.667.0.tgz#2b267ca38e8e049889e70eaa99b621a00e0568f6" + integrity sha512-NiEC2Sjut57ajbWEXLFtA8YWA06ulfuaSHOP4YxoQEsL3BjMOkKS1/5eVW2o6XkKVbwt0zbDYSTlIxU5klHpbQ== + dependencies: + "@aws-sdk/core" "3.667.0" + "@aws-sdk/credential-provider-env" "3.667.0" + "@aws-sdk/credential-provider-http" "3.667.0" + "@aws-sdk/credential-provider-process" "3.667.0" + "@aws-sdk/credential-provider-sso" "3.667.0" + "@aws-sdk/credential-provider-web-identity" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-ini@3.668.0": + version "3.668.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.668.0.tgz#5156c03e52f7509687ae3d1cc48ccadd1cb979c5" + integrity sha512-npu7qBM8Qu+BzRh+omBvcnA9Hxt/5HZ6ifACtLUqqkPLhCgINSpVruVqDXJHinl6DrcmTL12XM+60VW90fq2uA== + dependencies: + "@aws-sdk/core" "3.667.0" + "@aws-sdk/credential-provider-env" "3.667.0" + "@aws-sdk/credential-provider-http" "3.667.0" + "@aws-sdk/credential-provider-process" "3.667.0" + "@aws-sdk/credential-provider-sso" "3.668.0" + "@aws-sdk/credential-provider-web-identity" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@aws-sdk/credential-provider-node@3.645.0": version "3.645.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.645.0.tgz#1d8df057040ab8529dacb8f1fc6b210a441e6680" @@ -430,6 +797,42 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@aws-sdk/credential-provider-node@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.667.0.tgz#e73a8d992763c41bb52768a981dff7309cd9b044" + integrity sha512-+2oNexDvbQD9o5Xdtu1mGE25Nf2/C9KgMnkZzenbgCegw0P0YRdGrJklDF5Aag6lmb80a2vjoViuvm1ORzRAzw== + dependencies: + "@aws-sdk/credential-provider-env" "3.667.0" + "@aws-sdk/credential-provider-http" "3.667.0" + "@aws-sdk/credential-provider-ini" "3.667.0" + "@aws-sdk/credential-provider-process" "3.667.0" + "@aws-sdk/credential-provider-sso" "3.667.0" + "@aws-sdk/credential-provider-web-identity" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-node@3.668.0": + version "3.668.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.668.0.tgz#bbf799a9e858bfa3346c0b7c21c02ed89805154a" + integrity sha512-QHD6Y6xurKsHGQ7U2Az0UHu3R31mq7uokuMrWU9IIWB4Qa5t/Pkt4Od8TYXL/V4uAOthsLdchgfeCFSleOZMEA== + dependencies: + "@aws-sdk/credential-provider-env" "3.667.0" + "@aws-sdk/credential-provider-http" "3.667.0" + "@aws-sdk/credential-provider-ini" "3.668.0" + "@aws-sdk/credential-provider-process" "3.667.0" + "@aws-sdk/credential-provider-sso" "3.668.0" + "@aws-sdk/credential-provider-web-identity" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@aws-sdk/credential-provider-process@3.620.1": version "3.620.1" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz#10387cf85400420bb4bbda9cc56937dcc6d6d0ee" @@ -441,6 +844,18 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@aws-sdk/credential-provider-process@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.667.0.tgz#fa721b1b5b0024156c3852a9fc92c0ed9935959f" + integrity sha512-HZHnvop32fKgsNHkdhVaul7UzQ25sEc0j9yqA4bjhtbk0ECl42kj3f1pJ+ZU/YD9ut8lMJs/vVqiOdNThVdeBw== + dependencies: + "@aws-sdk/core" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@aws-sdk/credential-provider-sso@3.645.0": version "3.645.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.645.0.tgz#09933f31a43bfc80de1faca522fc1090721eea95" @@ -454,6 +869,34 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@aws-sdk/credential-provider-sso@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.667.0.tgz#c1154b30c07279b01e56ed5bd787bce84bb68afd" + integrity sha512-GylJquSQVWlziaEmrX38KzQTWcFL5NKht4OAj7rdo75MssC0qNVSGT+ReFrXZzKQ65eIuRVCMdsp83oNH4nzbQ== + dependencies: + "@aws-sdk/client-sso" "3.667.0" + "@aws-sdk/core" "3.667.0" + "@aws-sdk/token-providers" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-sso@3.668.0": + version "3.668.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.668.0.tgz#a3fe0a49b75bd1c88e08a186d7d97933a54ba07d" + integrity sha512-cO14tsL7Lmyq4HfRHBBjEmcBDhlXv4eVgY8DQ9e/ujPFU+b99xiZiV80JSkJ8Kz99+woFl6pFo9PYp36YaI+Pw== + dependencies: + "@aws-sdk/client-sso" "3.668.0" + "@aws-sdk/core" "3.667.0" + "@aws-sdk/token-providers" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@aws-sdk/credential-provider-web-identity@3.621.0": version "3.621.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz#b25878c0a05dad60cd5f91e7e5a31a145c2f14be" @@ -464,7 +907,18 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/credential-providers@^3.186.0", "@aws-sdk/credential-providers@^3.289.0": +"@aws-sdk/credential-provider-web-identity@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.667.0.tgz#439e3aa2fc9a081de53186f6d8aa78a8a6913769" + integrity sha512-t8CFlZMD/1p/8Cli3rvRiTJpjr/8BO64gw166AHgFZYSN2h95L2l1tcW0jpsc3PprA32nLg1iQVKYt4WGM4ugw== + dependencies: + "@aws-sdk/core" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@aws-sdk/credential-providers@^3.186.0": version "3.645.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.645.0.tgz#554de72aff59734dbf6bd12b30eae5f593b6ad48" integrity sha512-6g9qMngrMCvHNsxmh/1urnWKrvaa2fv55b3bYwPxwJCYAvg/xc7bV8YHL7GS2rJpACG707k9G86DTW+Hab8bJA== @@ -486,53 +940,79 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/lib-storage@^3.267.0": - version "3.645.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.645.0.tgz#f4de7349d5998cfaae2b77f27ea0b5ff0b7c6a86" - integrity sha512-9DTtmWgGBiXSb9XIJVFL26tv20vuvHesYCnQKk/ILNPFS40pMUlJBCWFi3HBAtYZU6jk5XKd696/kFyKLYsAAQ== +"@aws-sdk/credential-providers@^3.614.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.667.0.tgz#dc9bdcd93619bd87e50f11cbc616acdb2c6a8806" + integrity sha512-paoSF3GPJ7oAkRzDlgicykrIZvgmB62E3qJWIUFyC/dkK3QkipbFjzFgoPeV46oNqXevFfGdCnu8lCSKNmdSFg== + dependencies: + "@aws-sdk/client-cognito-identity" "3.667.0" + "@aws-sdk/client-sso" "3.667.0" + "@aws-sdk/client-sts" "3.667.0" + "@aws-sdk/core" "3.667.0" + "@aws-sdk/credential-provider-cognito-identity" "3.667.0" + "@aws-sdk/credential-provider-env" "3.667.0" + "@aws-sdk/credential-provider-http" "3.667.0" + "@aws-sdk/credential-provider-ini" "3.667.0" + "@aws-sdk/credential-provider-node" "3.667.0" + "@aws-sdk/credential-provider-process" "3.667.0" + "@aws-sdk/credential-provider-sso" "3.667.0" + "@aws-sdk/credential-provider-web-identity" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@aws-sdk/lib-storage@^3.614.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.667.0.tgz#5e28a47373076a8c53dbd336fec433b42766a410" + integrity sha512-92zA66bRfmnt0cvXkwNXoXS6k/5H816D5+9wtugVwWMdFFcfN0tgSORkihiumVjxZERVnpEmuHNVfU4UYmbdQw== dependencies: - "@smithy/abort-controller" "^3.1.1" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/smithy-client" "^3.2.0" + "@smithy/abort-controller" "^3.1.5" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/smithy-client" "^3.4.0" buffer "5.6.0" events "3.3.0" stream-browserify "3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-bucket-endpoint@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz#c5dc0e98b6209a91479cad6c2c74fbc5a3429fab" - integrity sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg== +"@aws-sdk/middleware-bucket-endpoint@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.667.0.tgz#bd0a0a24f71d3709debf6e48f4e503547398e7eb" + integrity sha512-XGz4jMAkDoTyFdtLz7ZF+C05IAhCTC1PllpvTBaj821z/L0ilhbqVhrT/f2Buw8Id/K5A390csGXgusXyrFFjA== dependencies: - "@aws-sdk/types" "3.609.0" + "@aws-sdk/types" "3.667.0" "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" "@smithy/util-config-provider" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-expect-continue@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz#6a362c0f0696dc6749108a33de9998e0fa6b50ec" - integrity sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A== +"@aws-sdk/middleware-expect-continue@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.667.0.tgz#d1b9e4871c8bde3402bdd0f73e740f5f5bf190d7" + integrity sha512-0TiSL9S5DSG95NHGIz6qTMuV7GDKVn8tvvGSrSSZu/wXO3JaYSH0AElVpYfc4PtPRqVpEyNA7nnc7W56mMCLWQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.667.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-flexible-checksums@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz#42cd48cdc0ad9639545be000bf537969210ce8c5" - integrity sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA== +"@aws-sdk/middleware-flexible-checksums@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.667.0.tgz#bbcbb211e844493d6e1cf0b4263b2ddfe876f44a" + integrity sha512-+5B2JuN+/CGZk5HRD9GeeNyTy9ooVFxdnuIAHkDyokJ028/isWw02tcM0rIcI/zK/maV3Z1WXDtkvWKTfB2IqQ== dependencies: "@aws-crypto/crc32" "5.2.0" "@aws-crypto/crc32c" "5.2.0" - "@aws-sdk/types" "3.609.0" + "@aws-sdk/core" "3.667.0" + "@aws-sdk/types" "3.667.0" "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + "@smithy/util-middleware" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -546,13 +1026,23 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/middleware-location-constraint@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz#7ed82d71e5ddcd50683ef2bbde10d1cc2492057e" - integrity sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A== +"@aws-sdk/middleware-host-header@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.667.0.tgz#d255aa6e73aec9a2d1a241de737679b6d2723c3f" + integrity sha512-Z7fIAMQnPegs7JjAQvlOeWXwpMRfegh5eCoIP6VLJIeR6DLfYKbP35JBtt98R6DXslrN2RsbTogjbxPEDQfw1w== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.667.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-location-constraint@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.667.0.tgz#e5da0580656a1a385fd5783bb93ea320b4baeb1b" + integrity sha512-ob85H3HhT3/u5O+x0o557xGZ78vSNeSSwMaSitxdsfs2hOuoUl1uk+OeLpi1hkuJnL41FPpokV7TVII2XrFfmg== + dependencies: + "@aws-sdk/types" "3.667.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@aws-sdk/middleware-logger@3.609.0": @@ -564,6 +1054,15 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@aws-sdk/middleware-logger@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.667.0.tgz#bf072a1aa5b03239e20d75f9b525d8a990caf29f" + integrity sha512-PtTRNpNm/5c746jRgZCNg4X9xEJIwggkGJrF0GP9AB1ANg4pc/sF2Fvn1NtqPe9wtQ2stunJprnm5WkCHN7QiA== + dependencies: + "@aws-sdk/types" "3.667.0" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@aws-sdk/middleware-recursion-detection@3.620.0": version "3.620.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz#f8270dfff843fd756be971e5673f89c6a24c6513" @@ -574,33 +1073,43 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/middleware-sdk-s3@3.635.0": - version "3.635.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.635.0.tgz#be7f61c6033a803cde59ec5a29db266b42fdbc01" - integrity sha512-RLdYJPEV4JL/7NBoFUs7VlP90X++5FlJdxHz0DzCjmiD3qCviKy+Cym3qg1gBgHwucs5XisuClxDrGokhAdTQw== +"@aws-sdk/middleware-recursion-detection@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.667.0.tgz#e3f158d5b5ea1b1d73ab280c0cbe5ef077ed3fdc" + integrity sha512-U5glWD3ehFohzpUpopLtmqAlDurGWo2wRGPNgi4SwhWU7UDt6LS7E/UvJjqC0CUrjlzOw+my2A+Ncf+fisMhxQ== dependencies: - "@aws-sdk/core" "3.635.0" - "@aws-sdk/types" "3.609.0" + "@aws-sdk/types" "3.667.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-sdk-s3@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.667.0.tgz#269abce2bad4025201470413a070907dca065359" + integrity sha512-31SqWDEH340kwRyql6II4wgVTNa2GJypIry5bmEzuSR30tsuWnVQg8y7zgUCDanph2GnlIFp6U+vqC9R8kDRmw== + dependencies: + "@aws-sdk/core" "3.667.0" + "@aws-sdk/types" "3.667.0" "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/core" "^2.4.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.2.0" - "@smithy/types" "^3.3.0" + "@smithy/core" "^2.4.8" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/signature-v4" "^4.2.0" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-stream" "^3.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-stream" "^3.1.9" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-ssec@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz#b87a8bc6133f3f6bdc6801183d0f9dad3f93cf9f" - integrity sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg== +"@aws-sdk/middleware-ssec@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.667.0.tgz#19d510e4882c170eff33a5ced558781eee0ee716" + integrity sha512-1wuAUZIkmZIvOmGg5qNQU821CGFHhkuKioxXgNh0DpUxZ9+AeiV7yorJr+bqkb2KBFv1i1TnzGRecvKf/KvZIQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.667.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@aws-sdk/middleware-user-agent@3.645.0": @@ -614,6 +1123,32 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@aws-sdk/middleware-user-agent@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.667.0.tgz#7bc4478d1b9d7a33e20eaa20378df751da8526bc" + integrity sha512-NJoPMV+9hpN90iZ2SgOpFmY6MJW71gGyT28kt0C68B0tBadYpT/J6WW8J7gxwdLA7d2CBwHbFGphTPWXXl+jzw== + dependencies: + "@aws-sdk/core" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@aws-sdk/util-endpoints" "3.667.0" + "@smithy/core" "^2.4.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-user-agent@3.668.0": + version "3.668.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.668.0.tgz#1a56f143488549ba6fbd23942cf93e88fc1a678a" + integrity sha512-6WSCeN9AZZM/bM1kXJluLPFptd6z+tMBEZw3J7m1EvJSBTKEoSHiBrZBjc3gi83l/EKHCswITm2c8NcdgXAnLw== + dependencies: + "@aws-sdk/core" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@aws-sdk/util-endpoints" "3.667.0" + "@smithy/core" "^2.4.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@aws-sdk/region-config-resolver@3.614.0": version "3.614.0" resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz#9cebb31a5bcfea2a41891fff7f28d0164cde179a" @@ -626,16 +1161,28 @@ "@smithy/util-middleware" "^3.0.3" tslib "^2.6.2" -"@aws-sdk/signature-v4-multi-region@3.635.0": - version "3.635.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.635.0.tgz#76e8eb66bfd9b661b4f9768b18aca2e04dd781a2" - integrity sha512-J6QY4/invOkpogCHjSaDON1hF03viPpOnsrzVuCvJMmclS/iG62R4EY0wq1alYll0YmSdmKlpJwHMWwGtqK63Q== +"@aws-sdk/region-config-resolver@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.667.0.tgz#1804103246e6b6c7586edc57d26801647d2972d8" + integrity sha512-iNr+JhhA902JMKHG9IwT9YdaEx6KGl6vjAL5BRNeOjfj4cZYMog6Lz/IlfOAltMtT0w88DAHDEFrBd2uO0l2eg== dependencies: - "@aws-sdk/middleware-sdk-s3" "3.635.0" - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.667.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.7" + tslib "^2.6.2" + +"@aws-sdk/signature-v4-multi-region@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.667.0.tgz#4510327a9504d1e6e3d6af5ed69878f8023b8e1f" + integrity sha512-9HBgapQOvrb3qvZfPcIY41D3YRNfcOuyIKqZ3h9FYbM06qOZXmIN7Y8bYL31ANGR3Mce6yu3mcnaqvrC/j1Q1w== + dependencies: + "@aws-sdk/middleware-sdk-s3" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/signature-v4" "^4.2.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@aws-sdk/token-providers@3.614.0": @@ -649,6 +1196,17 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@aws-sdk/token-providers@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.667.0.tgz#ea990ef364d6bd75f0ebcf19a22f9ccd0edb3c41" + integrity sha512-ZecJlG8p6D4UTYlBHwOWX6nknVtw/OBJ3yPXTSajBjhUlj9lE2xvejI8gl4rqkyLXk7z3bki+KR4tATbMaM9yg== + dependencies: + "@aws-sdk/types" "3.667.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@aws-sdk/types@3.609.0", "@aws-sdk/types@^3.1.0", "@aws-sdk/types@^3.222.0": version "3.609.0" resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.609.0.tgz#06b39d799c9f197a7b43670243e8e78a3bf7d6a5" @@ -657,6 +1215,14 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@aws-sdk/types@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.667.0.tgz#1b307c5af5a029ea1893f799fcfa122988f9d025" + integrity sha512-gYq0xCsqFfQaSL/yT1Gl1vIUjtsg7d7RhnUfsXaHt8xTxOKRTdH9GjbesBjXOzgOvB0W0vfssfreSNGFlOOMJg== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@aws-sdk/util-arn-parser@3.568.0": version "3.568.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz#6a19a8c6bbaa520b6be1c278b2b8c17875b91527" @@ -674,6 +1240,16 @@ "@smithy/util-endpoints" "^2.0.5" tslib "^2.6.2" +"@aws-sdk/util-endpoints@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.667.0.tgz#c880fbc3bda5a11eec81e4ac5f95a256f8dbb24e" + integrity sha512-X22SYDAuQJWnkF1/q17pkX3nGw5XMD9YEUbmt87vUnRq7iyJ3JOpl6UKOBeUBaL838wA5yzdbinmCITJ/VZ1QA== + dependencies: + "@aws-sdk/types" "3.667.0" + "@smithy/types" "^3.5.0" + "@smithy/util-endpoints" "^2.1.3" + tslib "^2.6.2" + "@aws-sdk/util-locate-window@^3.0.0": version "3.568.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz#2acc4b2236af0d7494f7e517401ba6b3c4af11ff" @@ -691,6 +1267,16 @@ bowser "^2.11.0" tslib "^2.6.2" +"@aws-sdk/util-user-agent-browser@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.667.0.tgz#4c7e14e7f044e9533a6cdd459a3a7ab90e12ccff" + integrity sha512-y1pKlNzNpxzddM0QSnfIfIbi3Z9LTag1VDjYyZRbEGGSVip2J00qKsET+979nRezWMyJgw5GPBQR3Y+rN+jh0Q== + dependencies: + "@aws-sdk/types" "3.667.0" + "@smithy/types" "^3.5.0" + bowser "^2.11.0" + tslib "^2.6.2" + "@aws-sdk/util-user-agent-node@3.614.0": version "3.614.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz#1e3f49a80f841a3f21647baed2adce01aac5beb5" @@ -701,6 +1287,28 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@aws-sdk/util-user-agent-node@3.667.0": + version "3.667.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.667.0.tgz#db0c28a56453c3a14bda4abd63dc54f13c698640" + integrity sha512-4OcWyWUAYRLwXMxqUqnDb/3LoassXvEJcwjiIKEa7p0JvtSa9VjCL6B8Vjw8C/N6YoqrlFEEvcN7SlwBEy74pA== + dependencies: + "@aws-sdk/middleware-user-agent" "3.667.0" + "@aws-sdk/types" "3.667.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-node@3.668.0": + version "3.668.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.668.0.tgz#ac3f4ccac98fafc550bfa69baeca20f043e43d5e" + integrity sha512-A27U+G/R5ekZhf6L2yVOX6/YQqmAxOiV61M+a9Jy1eG6YDOXueYUYXaHUkLWy15sNB0TPJNdsApn1rJdvHI0AQ== + dependencies: + "@aws-sdk/middleware-user-agent" "3.668.0" + "@aws-sdk/types" "3.667.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@aws-sdk/util-utf8-browser@^3.0.0": version "3.259.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" @@ -708,12 +1316,12 @@ dependencies: tslib "^2.3.1" -"@aws-sdk/xml-builder@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz#eeb3d5cde000a23cfeeefe0354b6193440dc7d87" - integrity sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA== +"@aws-sdk/xml-builder@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.662.0.tgz#6cbe5aea6205fd2280ec043189985240628d1cb2" + integrity sha512-ikLkXn0igUpnJu2mCZjklvmcDGWT9OaLRv3JyC/cRkTaaSrblPjPM7KKsltxdMTLQ+v7fjCN0TsJpxphMfaOPA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.24.7": @@ -769,13 +1377,20 @@ dependencies: "@babel/types" "^7.25.6" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.20.6", "@babel/runtime@^7.21.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": version "7.25.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.6.tgz#9afc3289f7184d8d7f98b099884c26317b9264d2" integrity sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ== dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.16.3", "@babel/runtime@^7.20.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6" + integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" @@ -807,341 +1422,60 @@ "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== +"@dnd-kit/accessibility@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@dnd-kit/accessibility/-/accessibility-3.1.0.tgz#1054e19be276b5f1154ced7947fc0cb5d99192e0" + integrity sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ== dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@csstools/cascade-layer-name-parser@^1.0.13": - version "1.0.13" - resolved "https://registry.yarnpkg.com/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.13.tgz#6900157489bc53da1f6a66eaccd432025f6cd6fb" - integrity sha512-MX0yLTwtZzr82sQ0zOjqimpZbzjMaK/h2pmlrLK7DCzlmiZLYFpoO94WmN1akRVo6ll/TdpHb53vihHLUMyvng== - -"@csstools/color-helpers@^4.1.0", "@csstools/color-helpers@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-4.2.1.tgz#da573554220ccb59757f12de62bf70c6b15645d4" - integrity sha512-CEypeeykO9AN7JWkr1OEOQb0HRzZlPWGwV0Ya6DuVgFdDi6g3ma/cPZ5ZPZM4AWQikDpq/0llnGGlIL+j8afzw== - -"@csstools/css-calc@^1.2.0", "@csstools/css-calc@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-1.2.4.tgz#9d9fb0dca33666cf97659f8f2c343ed0210e0e73" - integrity sha512-tfOuvUQeo7Hz+FcuOd3LfXVp+342pnWUJ7D2y8NUpu1Ww6xnTbHLpz018/y6rtbHifJ3iIEf9ttxXd8KG7nL0Q== + tslib "^2.0.0" -"@csstools/css-color-parser@^1.2.0": - version "1.6.3" - resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-1.6.3.tgz#813948662e3010672990f2366b94f6174ddba285" - integrity sha512-pQPUPo32HW3/NuZxrwr3VJHE+vGqSTVI5gK4jGbuJ7eOFUrsTmZikXcVdInCVWOvuxK5xbCzwDWoTlZUCAKN+A== +"@dnd-kit/core@6.0.8": + version "6.0.8" + resolved "https://registry.yarnpkg.com/@dnd-kit/core/-/core-6.0.8.tgz#040ae13fea9787ee078e5f0361f3b49b07f3f005" + integrity sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA== dependencies: - "@csstools/color-helpers" "^4.1.0" - "@csstools/css-calc" "^1.2.0" + "@dnd-kit/accessibility" "^3.0.0" + "@dnd-kit/utilities" "^3.2.1" + tslib "^2.0.0" -"@csstools/css-color-parser@^2.0.4": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-2.0.5.tgz#ce1fe52f23f35f37bea2cf61ac865115aa17880a" - integrity sha512-lRZSmtl+DSjok3u9hTWpmkxFZnz7stkbZxzKc08aDUsdrWwhSgWo8yq9rq9DaFUtbAyAq2xnH92fj01S+pwIww== +"@dnd-kit/sortable@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@dnd-kit/sortable/-/sortable-7.0.2.tgz#791d550872457f3f3c843e00d159b640f982011c" + integrity sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA== dependencies: - "@csstools/color-helpers" "^4.2.1" - "@csstools/css-calc" "^1.2.4" - -"@csstools/css-parser-algorithms@^2.1.1", "@csstools/css-parser-algorithms@^2.7.1": - version "2.7.1" - resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz#6d93a8f7d8aeb7cd9ed0868f946e46f021b6aa70" - integrity sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw== - -"@csstools/css-tokenizer@^2.1.1", "@csstools/css-tokenizer@^2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz#1d8b2e200197cf5f35ceb07ca2dade31f3a00ae8" - integrity sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg== - -"@csstools/media-query-list-parser@^2.1.13": - version "2.1.13" - resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz#f00be93f6bede07c14ddf51a168ad2748e4fe9e5" - integrity sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA== + "@dnd-kit/utilities" "^3.2.0" + tslib "^2.0.0" -"@csstools/postcss-cascade-layers@^4.0.0": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-4.0.6.tgz#5a421cd2d5792d1eb8c28e682dc5f2c3b85cb045" - integrity sha512-Xt00qGAQyqAODFiFEJNkTpSUz5VfYqnDLECdlA/Vv17nl/OIV5QfTRHGAXrBGG5YcJyHpJ+GF9gF/RZvOQz4oA== +"@dnd-kit/utilities@^3.2.0", "@dnd-kit/utilities@^3.2.1": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@dnd-kit/utilities/-/utilities-3.2.2.tgz#5a32b6af356dc5f74d61b37d6f7129a4040ced7b" + integrity sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg== dependencies: - "@csstools/selector-specificity" "^3.1.1" - postcss-selector-parser "^6.0.13" + tslib "^2.0.0" -"@csstools/postcss-color-function@^2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-2.2.3.tgz#c15546c3cc6041293024cdaa7d7998a340f88c39" - integrity sha512-b1ptNkr1UWP96EEHqKBWWaV5m/0hgYGctgA/RVZhONeP1L3T/8hwoqDm9bB23yVCfOgE9U93KI9j06+pEkJTvw== +"@emnapi/runtime@^1.2.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.3.0.tgz#63ebb77b9212ef7334f19ab8842ff76039c4f953" + integrity sha512-XMBySMuNZs3DM96xcJmLW4EfGnf+uGmFNjzpehMjuX5PLB5j87ar2Zc4e3PVeZ3I5g3tYtAqskB28manlF69Zw== dependencies: - "@csstools/css-color-parser" "^1.2.0" - "@csstools/css-parser-algorithms" "^2.1.1" - "@csstools/css-tokenizer" "^2.1.1" - "@csstools/postcss-progressive-custom-properties" "^2.3.0" + tslib "^2.4.0" -"@csstools/postcss-color-mix-function@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-1.0.3.tgz#3755894bd8a04f82739327717700497a3f2f6f73" - integrity sha512-QGXjGugTluqFZWzVf+S3wCiRiI0ukXlYqCi7OnpDotP/zaVTyl/aqZujLFzTOXy24BoWnu89frGMc79ohY5eog== +"@emotion/babel-plugin@^11.12.0": + version "11.12.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz#7b43debb250c313101b3f885eba634f1d723fcc2" + integrity sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw== dependencies: - "@csstools/css-color-parser" "^1.2.0" - "@csstools/css-parser-algorithms" "^2.1.1" - "@csstools/css-tokenizer" "^2.1.1" - "@csstools/postcss-progressive-custom-properties" "^2.3.0" - -"@csstools/postcss-font-format-keywords@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-3.0.2.tgz#b504cfc60588ac39fa5d1c67ef3da802b1bd7701" - integrity sha512-E0xz2sjm4AMCkXLCFvI/lyl4XO6aN1NCSMMVEOngFDJ+k2rDwfr6NDjWljk1li42jiLNChVX+YFnmfGCigZKXw== - dependencies: - "@csstools/utilities" "^1.0.0" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-gradients-interpolation-method@^4.0.0": - version "4.0.20" - resolved "https://registry.yarnpkg.com/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-4.0.20.tgz#e2a165719798cd8b503865297d8095c857eba77f" - integrity sha512-ZFl2JBHano6R20KB5ZrB8KdPM2pVK0u+/3cGQ2T8VubJq982I2LSOvQ4/VtxkAXjkPkk1rXt4AD1ni7UjTZ1Og== - dependencies: - "@csstools/css-color-parser" "^2.0.4" - "@csstools/css-parser-algorithms" "^2.7.1" - "@csstools/css-tokenizer" "^2.4.1" - "@csstools/postcss-progressive-custom-properties" "^3.3.0" - "@csstools/utilities" "^1.0.0" - -"@csstools/postcss-hwb-function@^3.0.0": - version "3.0.18" - resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-3.0.18.tgz#267dc59c97033b1108e377c98c45c35b713ea66b" - integrity sha512-3ifnLltR5C7zrJ+g18caxkvSRnu9jBBXCYgnBznRjxm6gQJGnnCO9H6toHfywNdNr/qkiVf2dymERPQLDnjLRQ== - dependencies: - "@csstools/css-color-parser" "^2.0.4" - "@csstools/css-parser-algorithms" "^2.7.1" - "@csstools/css-tokenizer" "^2.4.1" - "@csstools/postcss-progressive-custom-properties" "^3.3.0" - "@csstools/utilities" "^1.0.0" - -"@csstools/postcss-ic-unit@^3.0.0": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-3.0.7.tgz#2a4428c0d19bd456b4bfd60dcbe9e7c4974dfcef" - integrity sha512-YoaNHH2wNZD+c+rHV02l4xQuDpfR8MaL7hD45iJyr+USwvr0LOheeytJ6rq8FN6hXBmEeoJBeXXgGmM8fkhH4g== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^3.3.0" - "@csstools/utilities" "^1.0.0" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-is-pseudo-class@^4.0.0": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-4.0.8.tgz#d2bcc6c2d86d9653c333926a9ea488c2fc221a7f" - integrity sha512-0aj591yGlq5Qac+plaWCbn5cpjs5Sh0daovYUKJUOMjIp70prGH/XPLp7QjxtbFXz3CTvb0H9a35dpEuIuUi3Q== - dependencies: - "@csstools/selector-specificity" "^3.1.1" - postcss-selector-parser "^6.0.13" - -"@csstools/postcss-logical-float-and-clear@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-2.0.1.tgz#c70ed8293cc376b1572bf56794219f54dc58c54d" - integrity sha512-SsrWUNaXKr+e/Uo4R/uIsqJYt3DaggIh/jyZdhy/q8fECoJSKsSMr7nObSLdvoULB69Zb6Bs+sefEIoMG/YfOA== - -"@csstools/postcss-logical-resize@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-resize/-/postcss-logical-resize-2.0.1.tgz#a46c1b51055db96fb63af3bfe58909c773aea377" - integrity sha512-W5Gtwz7oIuFcKa5SmBjQ2uxr8ZoL7M2bkoIf0T1WeNqljMkBrfw1DDA8/J83k57NQ1kcweJEjkJ04pUkmyee3A== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-logical-viewport-units@^2.0.0": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-2.0.11.tgz#f87fcaecd33403e19cb4d77a19e62ede8ed4ec13" - integrity sha512-ElITMOGcjQtvouxjd90WmJRIw1J7KMP+M+O87HaVtlgOOlDt1uEPeTeii8qKGe2AiedEp0XOGIo9lidbiU2Ogg== - dependencies: - "@csstools/css-tokenizer" "^2.4.1" - "@csstools/utilities" "^1.0.0" - -"@csstools/postcss-media-minmax@^1.0.5": - version "1.1.8" - resolved "https://registry.yarnpkg.com/@csstools/postcss-media-minmax/-/postcss-media-minmax-1.1.8.tgz#a90b576805312b1bea7bda7d1726402b7f5ef430" - integrity sha512-KYQCal2i7XPNtHAUxCECdrC7tuxIWQCW+s8eMYs5r5PaAiVTeKwlrkRS096PFgojdNCmHeG0Cb7njtuNswNf+w== - dependencies: - "@csstools/css-calc" "^1.2.4" - "@csstools/css-parser-algorithms" "^2.7.1" - "@csstools/css-tokenizer" "^2.4.1" - "@csstools/media-query-list-parser" "^2.1.13" - -"@csstools/postcss-media-queries-aspect-ratio-number-values@^2.0.0": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-2.0.11.tgz#bb93203839521e99101b6adbab72dc9d9b57c9bc" - integrity sha512-YD6jrib20GRGQcnOu49VJjoAnQ/4249liuz7vTpy/JfgqQ1Dlc5eD4HPUMNLOw9CWey9E6Etxwf/xc/ZF8fECA== - dependencies: - "@csstools/css-parser-algorithms" "^2.7.1" - "@csstools/css-tokenizer" "^2.4.1" - "@csstools/media-query-list-parser" "^2.1.13" - -"@csstools/postcss-nested-calc@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-3.0.2.tgz#72ae4d087987ab5596397f5c2e5db4403b81c4a9" - integrity sha512-ySUmPyawiHSmBW/VI44+IObcKH0v88LqFe0d09Sb3w4B1qjkaROc6d5IA3ll9kjD46IIX/dbO5bwFN/swyoyZA== - dependencies: - "@csstools/utilities" "^1.0.0" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-normalize-display-values@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-3.0.2.tgz#9013e6ade2fbd4cd725438c9ff0b1000062cf20d" - integrity sha512-fCapyyT/dUdyPtrelQSIV+d5HqtTgnNP/BEG9IuhgXHt93Wc4CfC1bQ55GzKAjWrZbgakMQ7MLfCXEf3rlZJOw== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-oklab-function@^3.0.0": - version "3.0.19" - resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-3.0.19.tgz#3bd0719914780fb53558af11958d0f4e6d2f952e" - integrity sha512-e3JxXmxjU3jpU7TzZrsNqSX4OHByRC3XjItV3Ieo/JEQmLg5rdOL4lkv/1vp27gXemzfNt44F42k/pn0FpE21Q== - dependencies: - "@csstools/css-color-parser" "^2.0.4" - "@csstools/css-parser-algorithms" "^2.7.1" - "@csstools/css-tokenizer" "^2.4.1" - "@csstools/postcss-progressive-custom-properties" "^3.3.0" - "@csstools/utilities" "^1.0.0" - -"@csstools/postcss-progressive-custom-properties@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-2.3.0.tgz#c16ad5fd9893136efc844e867e80f4becdb223d9" - integrity sha512-Zd8ojyMlsL919TBExQ1I0CTpBDdyCpH/yOdqatZpuC3sd22K4SwC7+Yez3Q/vmXMWSAl+shjNeFZ7JMyxMjK+Q== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-progressive-custom-properties@^3.0.0", "@csstools/postcss-progressive-custom-properties@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-3.3.0.tgz#20177d3fc61d8f170c4ee1686f3d2ab6eec27bbb" - integrity sha512-W2oV01phnILaRGYPmGFlL2MT/OgYjQDrL9sFlbdikMFi6oQkFki9B86XqEWR7HCsTZFVq7dbzr/o71B75TKkGg== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-relative-color-syntax@^2.0.0": - version "2.0.19" - resolved "https://registry.yarnpkg.com/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-2.0.19.tgz#246b3a782e88df58184943c2471209c3d2085d65" - integrity sha512-MxUMSNvio1WwuS6WRLlQuv6nNPXwIWUFzBBAvL/tBdWfiKjiJnAa6eSSN5gtaacSqUkQ/Ce5Z1OzLRfeaWhADA== - dependencies: - "@csstools/css-color-parser" "^2.0.4" - "@csstools/css-parser-algorithms" "^2.7.1" - "@csstools/css-tokenizer" "^2.4.1" - "@csstools/postcss-progressive-custom-properties" "^3.3.0" - "@csstools/utilities" "^1.0.0" - -"@csstools/postcss-scope-pseudo-class@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-3.0.1.tgz#c5454ea2fb3cf9beaf212d3a631a5c18cd4fbc14" - integrity sha512-3ZFonK2gfgqg29gUJ2w7xVw2wFJ1eNWVDONjbzGkm73gJHVCYK5fnCqlLr+N+KbEfv2XbWAO0AaOJCFB6Fer6A== - dependencies: - postcss-selector-parser "^6.0.13" - -"@csstools/postcss-stepped-value-functions@^3.0.0": - version "3.0.10" - resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-3.0.10.tgz#41cf7b2fc6abc9216b453137a35aeeeb056d70d9" - integrity sha512-MZwo0D0TYrQhT5FQzMqfy/nGZ28D1iFtpN7Su1ck5BPHS95+/Y5O9S4kEvo76f2YOsqwYcT8ZGehSI1TnzuX2g== - dependencies: - "@csstools/css-calc" "^1.2.4" - "@csstools/css-parser-algorithms" "^2.7.1" - "@csstools/css-tokenizer" "^2.4.1" - -"@csstools/postcss-text-decoration-shorthand@^3.0.0": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-3.0.7.tgz#58dc60bb0718f6ec7d0a41d4124cf45a6813aeaa" - integrity sha512-+cptcsM5r45jntU6VjotnkC9GteFR7BQBfZ5oW7inLCxj7AfLGAzMbZ60hKTP13AULVZBdxky0P8um0IBfLHVA== - dependencies: - "@csstools/color-helpers" "^4.2.1" - postcss-value-parser "^4.2.0" - -"@csstools/postcss-trigonometric-functions@^3.0.0": - version "3.0.10" - resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-3.0.10.tgz#0ad99b0a2a77cdd9c957b6e6e83221acf9b6afd8" - integrity sha512-G9G8moTc2wiad61nY5HfvxLiM/myX0aYK4s1x8MQlPH29WDPxHQM7ghGgvv2qf2xH+rrXhztOmjGHJj4jsEqXw== - dependencies: - "@csstools/css-calc" "^1.2.4" - "@csstools/css-parser-algorithms" "^2.7.1" - "@csstools/css-tokenizer" "^2.4.1" - -"@csstools/postcss-unset-value@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-3.0.1.tgz#598a25630fd9ab0edf066d235916f7441404942a" - integrity sha512-dbDnZ2ja2U8mbPP0Hvmt2RMEGBiF1H7oY6HYSpjteXJGihYwgxgTr6KRbbJ/V6c+4wd51M+9980qG4gKVn5ttg== - -"@csstools/selector-resolve-nested@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@csstools/selector-resolve-nested/-/selector-resolve-nested-1.1.0.tgz#d872f2da402d3ce8bd0cf16ea5f9fba76b18e430" - integrity sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg== - -"@csstools/selector-specificity@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz#63085d2995ca0f0e55aa8b8a07d69bfd48b844fe" - integrity sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA== - -"@csstools/utilities@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/utilities/-/utilities-1.0.0.tgz#42f3c213f2fb929324d465684ab9f46a0febd4bb" - integrity sha512-tAgvZQe/t2mlvpNosA4+CkMiZ2azISW5WPAcdSalZlEjQvUfghHxfQcrCiK/7/CrfAWVxyM88kGFYO82heIGDg== - -"@date-io/core@^2.16.0": - version "2.17.0" - resolved "https://registry.yarnpkg.com/@date-io/core/-/core-2.17.0.tgz#360a4d0641f069776ed22e457876e8a8a58c205e" - integrity sha512-+EQE8xZhRM/hsY0CDTVyayMDDY5ihc4MqXCrPxooKw19yAzUIC6uUqsZeaOFNL9YKTNxYKrJP5DFgE8o5xRCOw== - -"@date-io/date-fns@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@date-io/date-fns/-/date-fns-2.16.0.tgz#bd5e09b6ecb47ee55e593fc3a87e7b2caaa3da40" - integrity sha512-bfm5FJjucqlrnQcXDVU5RD+nlGmL3iWgkHTq3uAZWVIuBu6dDmGa3m8a6zo2VQQpu8ambq9H22UyUpn7590joA== - dependencies: - "@date-io/core" "^2.16.0" - -"@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.0": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== - -"@dnd-kit/accessibility@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@dnd-kit/accessibility/-/accessibility-3.1.0.tgz#1054e19be276b5f1154ced7947fc0cb5d99192e0" - integrity sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ== - dependencies: - tslib "^2.0.0" - -"@dnd-kit/core@6.0.8": - version "6.0.8" - resolved "https://registry.yarnpkg.com/@dnd-kit/core/-/core-6.0.8.tgz#040ae13fea9787ee078e5f0361f3b49b07f3f005" - integrity sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA== - dependencies: - "@dnd-kit/accessibility" "^3.0.0" - "@dnd-kit/utilities" "^3.2.1" - tslib "^2.0.0" - -"@dnd-kit/sortable@7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@dnd-kit/sortable/-/sortable-7.0.2.tgz#791d550872457f3f3c843e00d159b640f982011c" - integrity sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA== - dependencies: - "@dnd-kit/utilities" "^3.2.0" - tslib "^2.0.0" - -"@dnd-kit/utilities@^3.2.0", "@dnd-kit/utilities@^3.2.1": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@dnd-kit/utilities/-/utilities-3.2.2.tgz#5a32b6af356dc5f74d61b37d6f7129a4040ced7b" - integrity sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg== - dependencies: - tslib "^2.0.0" - -"@emotion/babel-plugin@^11.12.0": - version "11.12.0" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz#7b43debb250c313101b3f885eba634f1d723fcc2" - integrity sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/runtime" "^7.18.3" - "@emotion/hash" "^0.9.2" - "@emotion/memoize" "^0.9.0" - "@emotion/serialize" "^1.2.0" - babel-plugin-macros "^3.1.0" - convert-source-map "^1.5.0" - escape-string-regexp "^4.0.0" - find-root "^1.1.0" - source-map "^0.5.7" - stylis "4.2.0" + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/serialize" "^1.2.0" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.2.0" "@emotion/cache@^11.13.0", "@emotion/cache@^11.4.0": version "11.13.1" @@ -1225,19 +1559,144 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== -"@eslint-community/eslint-utils@^4.2.0": +"@esbuild/aix-ppc64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz#51299374de171dbd80bb7d838e1cfce9af36f353" + integrity sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ== + +"@esbuild/android-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz#58565291a1fe548638adb9c584237449e5e14018" + integrity sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw== + +"@esbuild/android-arm@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.1.tgz#5eb8c652d4c82a2421e3395b808e6d9c42c862ee" + integrity sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ== + +"@esbuild/android-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.1.tgz#ae19d665d2f06f0f48a6ac9a224b3f672e65d517" + integrity sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg== + +"@esbuild/darwin-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16" + integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q== + +"@esbuild/darwin-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz#c58353b982f4e04f0d022284b8ba2733f5ff0931" + integrity sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw== + +"@esbuild/freebsd-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz#f9220dc65f80f03635e1ef96cfad5da1f446f3bc" + integrity sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA== + +"@esbuild/freebsd-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz#69bd8511fa013b59f0226d1609ac43f7ce489730" + integrity sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g== + +"@esbuild/linux-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz#8050af6d51ddb388c75653ef9871f5ccd8f12383" + integrity sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g== + +"@esbuild/linux-arm@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz#ecaabd1c23b701070484990db9a82f382f99e771" + integrity sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ== + +"@esbuild/linux-ia32@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz#3ed2273214178109741c09bd0687098a0243b333" + integrity sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ== + +"@esbuild/linux-loong64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz#a0fdf440b5485c81b0fbb316b08933d217f5d3ac" + integrity sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw== + +"@esbuild/linux-mips64el@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz#e11a2806346db8375b18f5e104c5a9d4e81807f6" + integrity sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q== + +"@esbuild/linux-ppc64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz#06a2744c5eaf562b1a90937855b4d6cf7c75ec96" + integrity sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw== + +"@esbuild/linux-riscv64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz#65b46a2892fc0d1af4ba342af3fe0fa4a8fe08e7" + integrity sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA== + +"@esbuild/linux-s390x@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz#e71ea18c70c3f604e241d16e4e5ab193a9785d6f" + integrity sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw== + +"@esbuild/linux-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24" + integrity sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ== + +"@esbuild/netbsd-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz#44e743c9778d57a8ace4b72f3c6b839a3b74a653" + integrity sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA== + +"@esbuild/openbsd-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz#05c5a1faf67b9881834758c69f3e51b7dee015d7" + integrity sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q== + +"@esbuild/openbsd-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz#2e58ae511bacf67d19f9f2dcd9e8c5a93f00c273" + integrity sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA== + +"@esbuild/sunos-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz#adb022b959d18d3389ac70769cef5a03d3abd403" + integrity sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA== + +"@esbuild/win32-arm64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz#84906f50c212b72ec360f48461d43202f4c8b9a2" + integrity sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A== + +"@esbuild/win32-ia32@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz#5e3eacc515820ff729e90d0cb463183128e82fac" + integrity sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ== + +"@esbuild/win32-x64@0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699" + integrity sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.5.0", "@eslint-community/regexpp@^4.5.1": + version "4.11.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" + integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== + "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": version "4.11.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== -"@eslint/eslintrc@^2.1.4": +"@eslint/eslintrc@^2.1.2", "@eslint/eslintrc@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== @@ -1252,30 +1711,34 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@8.48.0": + version "8.48.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb" + integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw== -"@faceless-ui/modal@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@faceless-ui/modal/-/modal-2.0.1.tgz#8a47299442eff450c09432cfaef35c5471becad6" - integrity sha512-z1PaaLxwuX+1In4vhUxODZndGKdCY+WIqzvtnas3CaYGGCVJBSJ4jfv9UEEGZzcahmSy+71bEL89cUT6d36j1Q== +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + +"@faceless-ui/modal@3.0.0-beta.2": + version "3.0.0-beta.2" + resolved "https://registry.yarnpkg.com/@faceless-ui/modal/-/modal-3.0.0-beta.2.tgz#67ea3ab9814715fabea4a3fbe338e25ff3656f96" + integrity sha512-UmXvz7Iw3KMO4Pm3llZczU4uc5pPQDb6rdqwoBvYDFgWvkraOAHKx0HxSZgwqQvqOhn8joEFBfFp6/Do2562ow== dependencies: - body-scroll-lock "^3.1.5" - focus-trap "^6.9.2" - qs "^6.9.1" - react-transition-group "^4.4.2" + body-scroll-lock "4.0.0-beta.0" + focus-trap "7.5.4" + react-transition-group "4.4.5" -"@faceless-ui/scroll-info@1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@faceless-ui/scroll-info/-/scroll-info-1.3.0.tgz#4d9f76afa4c004018697424f77f8bc362ccaae08" - integrity sha512-X+doJMzQqyVGpwV/YgXUAalNWepP2W8ThgZspKZLFG43zTYLVTU17BYCjjY+ggKuA3b0W3JyXZ2M8f247AdmHw== +"@faceless-ui/scroll-info@2.0.0-beta.0": + version "2.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@faceless-ui/scroll-info/-/scroll-info-2.0.0-beta.0.tgz#ac2d86a8b221f7a8d75452b9f0024da94e1d18bf" + integrity sha512-pUBhQP8vduA7rVndNsjhaCcds1BykA/Q4iV23JWijU6ZFL/M3Fm9P3ypDS+0VVxolqemNhw8S3FXPwZGgjH4Rw== -"@faceless-ui/window-info@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@faceless-ui/window-info/-/window-info-2.1.1.tgz#ed1474a60ab794295bca4c29e295b1e11a584d22" - integrity sha512-gMAgda7beR4CNpBIXjgRVn97ek0LG3PAj9lxmoYdg574IEzLFZAh3eAYtTaS2XLKgb4+IHhsuBzlGmHbeOo2Aw== +"@faceless-ui/window-info@3.0.0-beta.0": + version "3.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@faceless-ui/window-info/-/window-info-3.0.0-beta.0.tgz#628c2c46b2fdddd17916153ca41c4dbe1340c1cf" + integrity sha512-Qs8xRA+fl4sU2aFVe9xawxfi5TVZ9VTPuhdQpx9aSv7U5a2F0AXwT61lJfnaJ9Flm8tOcxzq67p8cVZsXNCVeQ== "@floating-ui/core@^1.6.0": version "1.6.7" @@ -1284,6 +1747,14 @@ dependencies: "@floating-ui/utils" "^0.2.7" +"@floating-ui/dom@^1.0.0": + version "1.6.11" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.11.tgz#8631857838d34ee5712339eb7cbdfb8ad34da723" + integrity sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ== + dependencies: + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.8" + "@floating-ui/dom@^1.0.1": version "1.6.10" resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.10.tgz#b74c32f34a50336c86dcf1f1c845cf3a39e26d6f" @@ -1292,24 +1763,33 @@ "@floating-ui/core" "^1.6.0" "@floating-ui/utils" "^0.2.7" +"@floating-ui/react-dom@^2.0.0", "@floating-ui/react-dom@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31" + integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A== + dependencies: + "@floating-ui/dom" "^1.0.0" + +"@floating-ui/react@^0.26.2": + version "0.26.24" + resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.24.tgz#072b9dfeca4e79ef4e3000ef1c28e0ffc86f4ed4" + integrity sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw== + dependencies: + "@floating-ui/react-dom" "^2.1.2" + "@floating-ui/utils" "^0.2.8" + tabbable "^6.0.0" + "@floating-ui/utils@^0.2.7": version "0.2.7" resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.7.tgz#d0ece53ce99ab5a8e37ebdfe5e32452a2bfc073e" integrity sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA== -"@hapi/hoek@^9.0.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== +"@floating-ui/utils@^0.2.8": + version "0.2.8" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62" + integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig== -"@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@humanwhocodes/config-array@^0.11.14": +"@humanwhocodes/config-array@^0.11.10": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== @@ -1318,16 +1798,138 @@ debug "^4.3.1" minimatch "^3.0.5" +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.2": +"@humanwhocodes/object-schema@^2.0.2", "@humanwhocodes/object-schema@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@img/sharp-darwin-arm64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz#ef5b5a07862805f1e8145a377c8ba6e98813ca08" + integrity sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ== + optionalDependencies: + "@img/sharp-libvips-darwin-arm64" "1.0.4" + +"@img/sharp-darwin-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz#e03d3451cd9e664faa72948cc70a403ea4063d61" + integrity sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q== + optionalDependencies: + "@img/sharp-libvips-darwin-x64" "1.0.4" + +"@img/sharp-libvips-darwin-arm64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz#447c5026700c01a993c7804eb8af5f6e9868c07f" + integrity sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg== + +"@img/sharp-libvips-darwin-x64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz#e0456f8f7c623f9dbfbdc77383caa72281d86062" + integrity sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ== + +"@img/sharp-libvips-linux-arm64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz#979b1c66c9a91f7ff2893556ef267f90ebe51704" + integrity sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA== + +"@img/sharp-libvips-linux-arm@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz#99f922d4e15216ec205dcb6891b721bfd2884197" + integrity sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g== + +"@img/sharp-libvips-linux-s390x@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz#f8a5eb1f374a082f72b3f45e2fb25b8118a8a5ce" + integrity sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA== + +"@img/sharp-libvips-linux-x64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz#d4c4619cdd157774906e15770ee119931c7ef5e0" + integrity sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw== + +"@img/sharp-libvips-linuxmusl-arm64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz#166778da0f48dd2bded1fa3033cee6b588f0d5d5" + integrity sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA== + +"@img/sharp-libvips-linuxmusl-x64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz#93794e4d7720b077fcad3e02982f2f1c246751ff" + integrity sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw== + +"@img/sharp-linux-arm64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz#edb0697e7a8279c9fc829a60fc35644c4839bb22" + integrity sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA== + optionalDependencies: + "@img/sharp-libvips-linux-arm64" "1.0.4" + +"@img/sharp-linux-arm@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz#422c1a352e7b5832842577dc51602bcd5b6f5eff" + integrity sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ== + optionalDependencies: + "@img/sharp-libvips-linux-arm" "1.0.5" + +"@img/sharp-linux-s390x@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz#f5c077926b48e97e4a04d004dfaf175972059667" + integrity sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q== + optionalDependencies: + "@img/sharp-libvips-linux-s390x" "1.0.4" + +"@img/sharp-linux-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz#d806e0afd71ae6775cc87f0da8f2d03a7c2209cb" + integrity sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA== + optionalDependencies: + "@img/sharp-libvips-linux-x64" "1.0.4" + +"@img/sharp-linuxmusl-arm64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz#252975b915894fb315af5deea174651e208d3d6b" + integrity sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" + +"@img/sharp-linuxmusl-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz#3f4609ac5d8ef8ec7dadee80b560961a60fd4f48" + integrity sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64" "1.0.4" + +"@img/sharp-wasm32@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz#6f44f3283069d935bb5ca5813153572f3e6f61a1" + integrity sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg== + dependencies: + "@emnapi/runtime" "^1.2.0" + +"@img/sharp-win32-ia32@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz#1a0c839a40c5351e9885628c85f2e5dfd02b52a9" + integrity sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ== + +"@img/sharp-win32-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz#56f00962ff0c4e0eb93d34a047d29fa995e3e342" + integrity sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1340,7 +1942,19 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@jridgewell/gen-mapping@^0.3.5": +"@isaacs/fs-minipass@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32" + integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w== + dependencies: + minipass "^7.0.4" + +"@isaacs/string-locale-compare@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== + +"@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== @@ -1349,7 +1963,7 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.24" -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": +"@jridgewell/resolve-uri@^3.1.0": version "3.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== @@ -1359,28 +1973,12 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== -"@jridgewell/source-map@^0.3.3": - version "0.3.6" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" - integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.5.0" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -1393,184 +1991,229 @@ resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== -"@juggle/resize-observer@^3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60" - integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA== - -"@lexical/clipboard@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/clipboard/-/clipboard-0.13.1.tgz#ca132306129974ea2c9e51d6a8637f8fcffcdb3d" - integrity sha512-gMSbVeqb7S+XAi/EMMlwl+FCurLPugN2jAXcp5k5ZaUd7be8B+iupbYdoKkjt4qBhxmvmfe9k46GoC0QOPl/nw== +"@lexical/clipboard@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/clipboard/-/clipboard-0.18.0.tgz#584ac4188461d1048717d854cb75ed14813b38f3" + integrity sha512-ybc+hx14wj0n2ZjdOkLcZ02MRB3UprXjpLDXlByFIuVcZpUxVcp3NzA0UBPOKXYKvdt0bmgjnAsFWM5OSbwS0w== dependencies: - "@lexical/html" "0.13.1" - "@lexical/list" "0.13.1" - "@lexical/selection" "0.13.1" - "@lexical/utils" "0.13.1" + "@lexical/html" "0.18.0" + "@lexical/list" "0.18.0" + "@lexical/selection" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" -"@lexical/code@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/code/-/code-0.13.1.tgz#e13688390582a4b63a639daff1f16bcb82aa854d" - integrity sha512-QK77r3QgEtJy96ahYXNgpve8EY64BQgBSnPDOuqVrLdl92nPzjqzlsko2OZldlrt7gjXcfl9nqfhZ/CAhStfOg== +"@lexical/code@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/code/-/code-0.18.0.tgz#990156c059ee78ad4359ae17df03a0840a0f0d27" + integrity sha512-VB8fRHIrB8QTqyZUvGBMVWP2tpKe3ArOjPdWAqgrS8MVFldqUhuTHcW+XJFkVxcEBYCXynNT29YRYtQhfQ+vDQ== dependencies: - "@lexical/utils" "0.13.1" + "@lexical/utils" "0.18.0" + lexical "0.18.0" prismjs "^1.27.0" -"@lexical/dragon@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/dragon/-/dragon-0.13.1.tgz#32ba02bff4d8f02a6317d874671ee0b0a2dcdc53" - integrity sha512-aNlqfif4//jW7gOxbBgdrbDovU6m3EwQrUw+Y/vqRkY+sWmloyAUeNwCPH1QP3Q5cvfolzOeN5igfBljsFr+1g== - -"@lexical/hashtag@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/hashtag/-/hashtag-0.13.1.tgz#eb273c199a0115ec0f0191c2449e97f512360f2e" - integrity sha512-Dl0dUG4ZXNjYYuAUR0GMGpLGsA+cps2/ln3xEmy28bZR0sKkjXugsu2QOIxZjYIPBewDrXzPcvK8md45cMYoSg== - dependencies: - "@lexical/utils" "0.13.1" - -"@lexical/headless@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/headless/-/headless-0.13.1.tgz#61e475495de49a4c5732e383e1d5f75fc5e39664" - integrity sha512-W2mLUuWPrsyf2n73NWM8nKiBI11lEpVVzKE0OzMsjTskv5+AAMaeu1wQ7M1508vKdCcUZwA6AOh3To/hstLEpw== - -"@lexical/history@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/history/-/history-0.13.1.tgz#3bb54716dc69779d3b35894bd72637a7fc2ed284" - integrity sha512-cZXt30MalEEiRaflE9tHeGYnwT1xSDjXLsf9M409DSU9POJyZ1fsULJrG1tWv2uFQOhwal33rve9+MatUlITrg== - dependencies: - "@lexical/utils" "0.13.1" - -"@lexical/html@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/html/-/html-0.13.1.tgz#e56035d0c6528ffb932390e0d3d357c82f69253a" - integrity sha512-XkZrnCSHIUavtpMol6aG8YsJ5KqC9hMxEhAENf3HTGi3ocysCByyXOyt1EhEYpjJvgDG4wRqt25xGDbLjj1/sA== - dependencies: - "@lexical/selection" "0.13.1" - "@lexical/utils" "0.13.1" - -"@lexical/link@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/link/-/link-0.13.1.tgz#f1c4c12c828c0251e5d7fb4fb336f2d62380fc57" - integrity sha512-7E3B2juL2UoMj2n+CiyFZ7tlpsdViAoIE7MpegXwfe/VQ66wFwk/VxGTa/69ng2EoF7E0kh+SldvGQDrWAWb1g== - dependencies: - "@lexical/utils" "0.13.1" - -"@lexical/list@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/list/-/list-0.13.1.tgz#461cb989157bdf4a43eaa8596fdb09df60d114ee" - integrity sha512-6U1pmNZcKLuOWiWRML8Raf9zSEuUCMlsOye82niyF6I0rpPgYo5UFghAAbGISDsyqzM1B2L4BgJ6XrCk/dJptg== - dependencies: - "@lexical/utils" "0.13.1" - -"@lexical/mark@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/mark/-/mark-0.13.1.tgz#084bb49a8bc1c5c5a4ed5c5d4a20c98ea85ec8b1" - integrity sha512-dW27PW8wWDOKFqXTBUuUfV+umU0KfwvXGkPUAxRJrvwUWk5RKaS48LhgbNlQ5BfT84Q8dSiQzvbaa6T40t9a3A== - dependencies: - "@lexical/utils" "0.13.1" - -"@lexical/markdown@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/markdown/-/markdown-0.13.1.tgz#1fd2efcacff4ce733682a8161a3f3d78dba37503" - integrity sha512-6tbdme2h5Zy/M88loVQVH5G0Nt7VMR9UUkyiSaicyBRDOU2OHacaXEp+KSS/XuF+d7TA+v/SzyDq8HS77cO1wA== - dependencies: - "@lexical/code" "0.13.1" - "@lexical/link" "0.13.1" - "@lexical/list" "0.13.1" - "@lexical/rich-text" "0.13.1" - "@lexical/text" "0.13.1" - "@lexical/utils" "0.13.1" - -"@lexical/offset@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/offset/-/offset-0.13.1.tgz#f37417822aef3dc81580d4abb96e43ba9d547225" - integrity sha512-j/RZcztJ7dyTrfA2+C3yXDzWDXV+XmMpD5BYeQCEApaHvlo20PHt1BISk7RcrnQW8PdzGvpKblRWf//c08LS9w== - -"@lexical/overflow@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/overflow/-/overflow-0.13.1.tgz#42c036dc3ad3eb929fda5aa0a00a725b74f72669" - integrity sha512-Uw34j+qG2UJRCIR+bykfFMduFk7Pc4r/kNt8N1rjxGuGXAsreTVch1iOhu7Ev6tJgkURsduKuaJCAi7iHnKl7g== - -"@lexical/plain-text@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/plain-text/-/plain-text-0.13.1.tgz#e7e713029443c30facce27b34836bf604cf92c0f" - integrity sha512-4j5KAsMKUvJ8LhVDSS4zczbYXzdfmgYSAVhmqpSnJtud425Nk0TAfpUBLFoivxZB7KMoT1LGWQZvd47IvJPvtA== - -"@lexical/react@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/react/-/react-0.13.1.tgz#6c35bf43e24560d2ca3aa2c6ff607ef37de87bac" - integrity sha512-Sy6EL230KAb0RZsZf1dZrRrc3+rvCDQWltcd8C/cqBUYlxsLYCW9s4f3RB2werngD/PtLYbBB48SYXNkIALITA== - dependencies: - "@lexical/clipboard" "0.13.1" - "@lexical/code" "0.13.1" - "@lexical/dragon" "0.13.1" - "@lexical/hashtag" "0.13.1" - "@lexical/history" "0.13.1" - "@lexical/link" "0.13.1" - "@lexical/list" "0.13.1" - "@lexical/mark" "0.13.1" - "@lexical/markdown" "0.13.1" - "@lexical/overflow" "0.13.1" - "@lexical/plain-text" "0.13.1" - "@lexical/rich-text" "0.13.1" - "@lexical/selection" "0.13.1" - "@lexical/table" "0.13.1" - "@lexical/text" "0.13.1" - "@lexical/utils" "0.13.1" - "@lexical/yjs" "0.13.1" +"@lexical/devtools-core@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/devtools-core/-/devtools-core-0.18.0.tgz#436fb1a7489de63114f7c8ee639aa40b5becca3a" + integrity sha512-gVgtEkLwGjz1frOmDpFJzDPFxPgAcC9n5ZaaZWHo5GLcptnQmkuLm1t+UInQWujXhFmcyJzfiqDaMJ8EIcb2Ww== + dependencies: + "@lexical/html" "0.18.0" + "@lexical/link" "0.18.0" + "@lexical/mark" "0.18.0" + "@lexical/table" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" + +"@lexical/dragon@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/dragon/-/dragon-0.18.0.tgz#bec3d6742eff4ac9e70bc448f438cab30bd61081" + integrity sha512-toD/y2/TgtG+eFVKXf65kDk/Mv02FwgmcGH18nyAabZnO1TLBaMYPkGFdTTZ8hVmQxqIu9nZuLWUbdIBMs8UWw== + dependencies: + lexical "0.18.0" + +"@lexical/hashtag@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/hashtag/-/hashtag-0.18.0.tgz#40e14a44f7d333be08db32814a30bbb0251bf441" + integrity sha512-bm+Sv7keguVYbUY0ngd+iAv2Owd3dePzdVkzkmw9Al8GPXkE5ll8fjq6Xjw2u3OVhf+9pTnesIo/AS7H+h0exw== + dependencies: + "@lexical/utils" "0.18.0" + lexical "0.18.0" + +"@lexical/headless@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/headless/-/headless-0.18.0.tgz#544bba3a0261b72c722d5e6013c8d5f547792763" + integrity sha512-GPUL7rTSYer+/g37blFbJ5MXDPCgMf1wT87Wr+IF7PdUb1D68NwePQxFBBTWMlT/wjm4YU1Qzcv5Izxldif5YQ== + dependencies: + lexical "0.18.0" + +"@lexical/history@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/history/-/history-0.18.0.tgz#b0eadd62d4f61907e28093a3eef32823deb910ea" + integrity sha512-c87J4ke1Sae03coElJay2Ikac/4OcA2OmhtNbt2gAi/XBtcsP4mPuz1yZfZf9XIe+weekObgjinvZekQ2AFw0g== + dependencies: + "@lexical/utils" "0.18.0" + lexical "0.18.0" + +"@lexical/html@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/html/-/html-0.18.0.tgz#a4019a4692da23e6f810c21a7202bae5a45428a4" + integrity sha512-8lhba1DFnnobXgYm4Rk5Gr2tZedD4Gl6A/NKCt7whO/CET63vT3UnK2ggcVVgtIJG530Cv0bdZoJbJu5DauI5w== + dependencies: + "@lexical/selection" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" + +"@lexical/link@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/link/-/link-0.18.0.tgz#e0b36321e420ae385578bfb2a682b8407b34f2db" + integrity sha512-GCYcbNTSTwJk0lr+GMc8nn6Meq44BZs3QL2d1B0skpZAspd8yI53sRS6HDy5P+jW5P0dzyZr/XJAU4U+7zsEEg== + dependencies: + "@lexical/utils" "0.18.0" + lexical "0.18.0" + +"@lexical/list@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/list/-/list-0.18.0.tgz#4aece48efa8fde89c25cbd3e27184e73ed130e40" + integrity sha512-DEWs9Scbg3+STZeE2O0OoG8SWnKnxQccObBzyeHRjn4GAN6JA7lgcAzfrdgp0fNWTbMM/ku876MmXKGnqhvg9Q== + dependencies: + "@lexical/utils" "0.18.0" + lexical "0.18.0" + +"@lexical/mark@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/mark/-/mark-0.18.0.tgz#9aa4c7bbaf261141332a12e642942095f76230b4" + integrity sha512-QA4YWfTP5WWnCnoH/RmfcsSZyhhd7oeFWDpfP7S8Bbmhz6kiPwGcsVr+uRQBBT56AqEX167xX2rX8JR6FiYZqA== + dependencies: + "@lexical/utils" "0.18.0" + lexical "0.18.0" + +"@lexical/markdown@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/markdown/-/markdown-0.18.0.tgz#612c2324fbf6294ef956d8a840a4eae677ef8476" + integrity sha512-uSWwcK8eJw5C+waEhU5WoX8W+JxNZbKuFnZwsn5nsp+iQgqMj4qY6g0yJub4sq8vvh6jjl4vVXhXTq2up9aykw== + dependencies: + "@lexical/code" "0.18.0" + "@lexical/link" "0.18.0" + "@lexical/list" "0.18.0" + "@lexical/rich-text" "0.18.0" + "@lexical/text" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" + +"@lexical/offset@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/offset/-/offset-0.18.0.tgz#1d12df8dcdeb0f43447d3109f72fb188e7662a65" + integrity sha512-KGlboyLSxQAH5PMOlJmyvHlbYXZneVnKiHpfyBV5IUX5kuyB/eZbQEYcJP9saekfQ5Xb1FWXWmsZEo+sWtrrZA== + dependencies: + lexical "0.18.0" + +"@lexical/overflow@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/overflow/-/overflow-0.18.0.tgz#18ede63a4f5041778bc21902b08d188620ef6c0a" + integrity sha512-3ATTwttVgZtVLq60ZUWbpbXBbpuMa3PZD5CxSP3nulviL+2I4phvacV4WUN+8wMeq+PGmuarl+cYfrFL02ii3g== + dependencies: + lexical "0.18.0" + +"@lexical/plain-text@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/plain-text/-/plain-text-0.18.0.tgz#f77860bc086c0ab64b691c27a064ec1f38c9edb7" + integrity sha512-L6yQpiwW0ZacY1oNwvRBxSuW2TZaUcveZLheJc8JzGcZoVxzII/CAbLZG8691VbNuKsbOURiNXZIsgwujKmo4Q== + dependencies: + "@lexical/clipboard" "0.18.0" + "@lexical/selection" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" + +"@lexical/react@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/react/-/react-0.18.0.tgz#3d857dacda06969ff7e189383a53ec3767b14fb1" + integrity sha512-DLvIbTsjvFIFqm+9zvAjEwuZHAbSxzZf1AGqf1lLctlL/Ran0f+8EZOv5jttELTe7xISZ2+xSXTLRfyxhNwGXQ== + dependencies: + "@lexical/clipboard" "0.18.0" + "@lexical/code" "0.18.0" + "@lexical/devtools-core" "0.18.0" + "@lexical/dragon" "0.18.0" + "@lexical/hashtag" "0.18.0" + "@lexical/history" "0.18.0" + "@lexical/link" "0.18.0" + "@lexical/list" "0.18.0" + "@lexical/mark" "0.18.0" + "@lexical/markdown" "0.18.0" + "@lexical/overflow" "0.18.0" + "@lexical/plain-text" "0.18.0" + "@lexical/rich-text" "0.18.0" + "@lexical/selection" "0.18.0" + "@lexical/table" "0.18.0" + "@lexical/text" "0.18.0" + "@lexical/utils" "0.18.0" + "@lexical/yjs" "0.18.0" + lexical "0.18.0" react-error-boundary "^3.1.4" -"@lexical/rich-text@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/rich-text/-/rich-text-0.13.1.tgz#8251e81a3985a4d76bef027cf6c0dc90c661e4ec" - integrity sha512-HliB9Ync06mv9DBg/5j0lIsTJp+exLHlaLJe+n8Zq1QNTzZzu2LsIT/Crquk50In7K/cjtlaQ/d5RB0LkjMHYg== +"@lexical/rich-text@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/rich-text/-/rich-text-0.18.0.tgz#09a3baaeb497131f50ef1d3e1d808c312a2c48c2" + integrity sha512-xMANCB7WueMsmWK8qxik5FZN4ApyaHWHQILS9r4FTbdv/DlNepsR7Pt8kg2317xZ56NAueQLIdyyKYXG1nBrHw== + dependencies: + "@lexical/clipboard" "0.18.0" + "@lexical/selection" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" -"@lexical/selection@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/selection/-/selection-0.13.1.tgz#466d7cd0ee1b04680bd949112f1f5cb6a6618efa" - integrity sha512-Kt9eSwjxPznj7yzIYipu9yYEgmRJhHiq3DNxHRxInYcZJWWNNHum2xKyxwwcN8QYBBzgfPegfM/geqQEJSV1lQ== +"@lexical/selection@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/selection/-/selection-0.18.0.tgz#5c9660c52b39b5338eb2e847f81b9d43dcb50c4a" + integrity sha512-mJoMhmxeZLfM9K2JMYETs9u179IkHQUlgtYG5GZJHjKx2iUn+9KvJ9RVssq+Lusi7C/N42wWPGNHDPdUvFtxXg== + dependencies: + lexical "0.18.0" -"@lexical/table@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/table/-/table-0.13.1.tgz#814d3b8a2afb821aff151c92cce831809f9d67a1" - integrity sha512-VQzgkfkEmnvn6C64O/kvl0HI3bFoBh3WA/U67ALw+DS11Mb5CKjbt0Gzm/258/reIxNMpshjjicpWMv9Miwauw== +"@lexical/table@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/table/-/table-0.18.0.tgz#ece206da2352b54f81e53defa0ac4f96ea30c70a" + integrity sha512-TeTAnuFAAgVjm1QE8adRB3GFWN+DUUiS4vzGq+ynPRCtNdpmW27NmTkRMyxKsetUtt7nIFfj4DvLvor4RwqIpA== dependencies: - "@lexical/utils" "0.13.1" + "@lexical/clipboard" "0.18.0" + "@lexical/utils" "0.18.0" + lexical "0.18.0" -"@lexical/text@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/text/-/text-0.13.1.tgz#12104d42da7a707a19853679f3a88e8ed6ce8084" - integrity sha512-NYy3TZKt3qzReDwN2Rr5RxyFlg84JjXP2JQGMrXSSN7wYe73ysQIU6PqdVrz4iZkP+w34F3pl55dJ24ei3An9w== +"@lexical/text@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/text/-/text-0.18.0.tgz#909f4ca08f06f323ff77e76514fcd432f47bb29f" + integrity sha512-MTHSBeq3K0+lqSsP5oysBMnY4tPVhB8kAa2xBnEc3dYgXFxEEvJwZahbHNX93EPObtJkxXfUuI63Al4G3lYK8A== + dependencies: + lexical "0.18.0" -"@lexical/utils@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/utils/-/utils-0.13.1.tgz#f2a72f71c859933781294830b38b25b5b33122a9" - integrity sha512-AtQQKzYymkbOaQxaBXjRBS8IPxF9zWQnqwHTUTrJqJ4hX71aIQd/thqZbfQETAFJfC8pNBZw5zpxN6yPHk23dQ== +"@lexical/utils@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/utils/-/utils-0.18.0.tgz#7e99feb99ef5ce88f2f16d522cc4501bfbf9165d" + integrity sha512-4s9dVpBZjqIaA/1q2GtfWFjKsv2Wqhjer0Zw2mcl1TIVN0zreXxcTKN316QppAWmSQJxVGvkWHjjaZJwl6/TSw== dependencies: - "@lexical/list" "0.13.1" - "@lexical/selection" "0.13.1" - "@lexical/table" "0.13.1" + "@lexical/list" "0.18.0" + "@lexical/selection" "0.18.0" + "@lexical/table" "0.18.0" + lexical "0.18.0" -"@lexical/yjs@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@lexical/yjs/-/yjs-0.13.1.tgz#2a71ae3c4b3cc5c660bbe66d537eb0cbf3c7c1b6" - integrity sha512-4GbqQM+PwNTV59AZoNrfTe/0rLjs+cX6Y6yAdZSRPBwr5L3JzYeU1TTcFCVQTtsE7KF8ddVP8sD7w9pi8rOWLA== +"@lexical/yjs@0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@lexical/yjs/-/yjs-0.18.0.tgz#ca35614425b8dc7d162438c0c2b65b6e7788aba4" + integrity sha512-rl7Rl9XIb3ygQEEHOFtACdXs3BE+UUUmdyNqB6kK9A6IRGz+w4Azp+qzt8It/t+c0oaSYHpAtcLNXg1amJz+kA== dependencies: - "@lexical/offset" "0.13.1" + "@lexical/offset" "0.18.0" + "@lexical/selection" "0.18.0" + lexical "0.18.0" -"@monaco-editor/loader@^1.3.3": +"@monaco-editor/loader@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.4.0.tgz#f08227057331ec890fa1e903912a5b711a2ad558" integrity sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg== dependencies: state-local "^1.0.6" -"@monaco-editor/react@4.5.1": - version "4.5.1" - resolved "https://registry.yarnpkg.com/@monaco-editor/react/-/react-4.5.1.tgz#fbc76c692aee9a33b9ab24ae0c5f219b8f002fdb" - integrity sha512-NNDFdP+2HojtNhCkRfE6/D6ro6pBNihaOzMbGK84lNWzRu+CfBjwzGt4jmnqimLuqp5yE5viHS2vi+QOAnD5FQ== +"@monaco-editor/react@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@monaco-editor/react/-/react-4.6.0.tgz#bcc68671e358a21c3814566b865a54b191e24119" + integrity sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw== dependencies: - "@monaco-editor/loader" "^1.3.3" + "@monaco-editor/loader" "^1.4.0" "@mongodb-js/saslprep@^1.1.0": version "1.1.9" @@ -1579,10 +2222,22 @@ dependencies: sparse-bitfield "^3.0.3" -"@next/env@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/env/-/env-13.5.2.tgz#1c09e6cf1df8b1edf3cf0ca9c0e0119a49802a5d" - integrity sha512-dUseBIQVax+XtdJPzhwww4GetTjlkRSsXeQnisIJWBaHsnxYcN2RGzsPHi58D6qnkATjnhuAtQTJmR1hKYQQPg== +"@next/env@15.0.0-canary.173": + version "15.0.0-canary.173" + resolved "https://registry.yarnpkg.com/@next/env/-/env-15.0.0-canary.173.tgz#9a8f6bb66170bd1c0fe764ac150ef2ff00e17df3" + integrity sha512-ly6s88DqV1BSu4dthaU9/eTjyZDUeEC7KpXwnH0u4w2hu10ickyEFv52s7MXItoiiurtUorpg8h5nlK98UNQiQ== + +"@next/env@^15.0.0-canary.173": + version "15.0.0-rc.0" + resolved "https://registry.yarnpkg.com/@next/env/-/env-15.0.0-rc.0.tgz#c772c9261dad10b1a1e72693c7dadfe2e35e6c5a" + integrity sha512-6W0ndQvHR9sXcqcKeR/inD2UTRCs9+VkSK3lfaGmEuZs7EjwwXMO2BPYjz9oBrtfPL3xuTjtXsHKSsalYQ5l1Q== + +"@next/eslint-plugin-next@15.0.0-canary.173": + version "15.0.0-canary.173" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-15.0.0-canary.173.tgz#e6407c9d20cb50b62092d92fb7caffb2e4697760" + integrity sha512-4nYoVrqN1HwXH3k+r79jxRWNyqBNYioarBwyY9RkFIJkduGAP0us0y9C4DFY+3SdZql4WtyRZMgn6WfwHeE7sA== + dependencies: + fast-glob "3.3.1" "@next/eslint-plugin-next@^13.1.6": version "13.5.6" @@ -1591,50 +2246,50 @@ dependencies: glob "7.1.7" -"@next/swc-darwin-arm64@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.2.tgz#f099a36fdd06b1949eb4e190aee95a52b97d3885" - integrity sha512-7eAyunAWq6yFwdSQliWMmGhObPpHTesiKxMw4DWVxhm5yLotBj8FCR4PXGkpRP2tf8QhaWuVba+/fyAYggqfQg== - -"@next/swc-darwin-x64@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.2.tgz#b8950fbe150db6f82961619e31fc6e9232fce8f4" - integrity sha512-WxXYWE7zF1ch8rrNh5xbIWzhMVas6Vbw+9BCSyZvu7gZC5EEiyZNJsafsC89qlaSA7BnmsDXVWQmc+s1feSYbQ== - -"@next/swc-linux-arm64-gnu@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.2.tgz#8134d31fa9ad6848561b6969d27a8c07ab090974" - integrity sha512-URSwhRYrbj/4MSBjLlefPTK3/tvg95TTm6mRaiZWBB6Za3hpHKi8vSdnCMw5D2aP6k0sQQIEG6Pzcfwm+C5vrg== - -"@next/swc-linux-arm64-musl@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.2.tgz#56233fe5140ed437c638194f0a01a3f89821ca89" - integrity sha512-HefiwAdIygFyNmyVsQeiJp+j8vPKpIRYDlmTlF9/tLdcd3qEL/UEBswa1M7cvO8nHcr27ZTKXz5m7dkd56/Esg== - -"@next/swc-linux-x64-gnu@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.2.tgz#1947a9dc603e6d5d5a8e99db7d42e2240c78e713" - integrity sha512-htGVVroW0tdHgMYwKWkxWvVoG2RlAdDXRO1RQxYDvOBQsaV0nZsgKkw0EJJJ3urTYnwKskn/MXm305cOgRxD2w== - -"@next/swc-linux-x64-musl@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.2.tgz#83eea3985eed84fbbbb1004a555d2f093d4ed245" - integrity sha512-UBD333GxbHVGi7VDJPPDD1bKnx30gn2clifNJbla7vo5nmBV+x5adyARg05RiT9amIpda6yzAEEUu+s774ldkw== - -"@next/swc-win32-arm64-msvc@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.2.tgz#c3734235e85458b76ec170dd0d6c13c2fdfac5ed" - integrity sha512-Em9ApaSFIQnWXRT3K6iFnr9uBXymixLc65Xw4eNt7glgH0eiXpg+QhjmgI2BFyc7k4ZIjglfukt9saNpEyolWA== - -"@next/swc-win32-ia32-msvc@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.2.tgz#cf16184af9be8b8f7750833a441c116b7a76b273" - integrity sha512-TBACBvvNYU+87X0yklSuAseqdpua8m/P79P0SG1fWUvWDDA14jASIg7kr86AuY5qix47nZLEJ5WWS0L20jAUNw== - -"@next/swc-win32-x64-msvc@13.5.2": - version "13.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.2.tgz#cf8db00763d9219567655b90853b7d484f3fcad6" - integrity sha512-LfTHt+hTL8w7F9hnB3H4nRasCzLD/fP+h4/GUVBTxrkMJOnh/7OZ0XbYDKO/uuWwryJS9kZjhxcruBiYwc5UDw== +"@next/swc-darwin-arm64@15.0.0-canary.173": + version "15.0.0-canary.173" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.0-canary.173.tgz#fcda1198b21af8d176da5d42dc80d22702602068" + integrity sha512-peEFAtJDrSpnVL0VKqmbvBzbgxuOdwT+Y86PGMNkh6zEctodQ0Ka5YBlsu5Tjzkzkbn1xMpIpxurbqnsMwHeOQ== + +"@next/swc-darwin-x64@15.0.0-canary.173": + version "15.0.0-canary.173" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.0-canary.173.tgz#ab794f5815b5d06a9ffab9e0f642724243c5fa1d" + integrity sha512-mXrx5JDB8lSSBRrzGOVrvt3155c4B5ctn8hBuWdsHaMpnbwg6zQtSESp2z8pcMyXFAWaJqpYJ+ImH3M0VdYzyw== + +"@next/swc-linux-arm64-gnu@15.0.0-canary.173": + version "15.0.0-canary.173" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.0-canary.173.tgz#6cc383c3b226a8cadc57816212c3bd92f705090a" + integrity sha512-1rUBlXBKPQYe12+bddrD5GHG0sS7KD0aKDUoLAxXJ4iCPThdhOmT8PexJDBOE6D9JL1Lp5L4G01ntbRf360Jgw== + +"@next/swc-linux-arm64-musl@15.0.0-canary.173": + version "15.0.0-canary.173" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.0-canary.173.tgz#4514d18b463b1e14f85192c98ed0cdf173052593" + integrity sha512-6LjAq3zrmc8Dz8sao+ZtbjdUe9dkTMpv7MazHy6lAB33+mg9SwYuyvsg/YFRKlS2NetB8Gy1Fd+85YX6wYYiSQ== + +"@next/swc-linux-x64-gnu@15.0.0-canary.173": + version "15.0.0-canary.173" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.0-canary.173.tgz#1dcead435d0a75a7da95888f0c75abbe536ac2d5" + integrity sha512-x72YkJvmqH/1PzMyQ2VUnL/Bsbn+aDodr/KNhj42uEhhxUEXOkfJT8k8iwjbN7rhP+Oid7qWmd7w3FPkL9pOvg== + +"@next/swc-linux-x64-musl@15.0.0-canary.173": + version "15.0.0-canary.173" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.0-canary.173.tgz#ae47b2b46fd74c8612005d4b32c062722fb528c0" + integrity sha512-DYOLKH97iTQRVatqJpxgCgUKdkgwtiza2mmLAC3roPSc/vPltwTvGDPtKKKiZ7Rn18VGe4GMb5j1DVUgnAzKMA== + +"@next/swc-win32-arm64-msvc@15.0.0-canary.173": + version "15.0.0-canary.173" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.0-canary.173.tgz#b37bfae1d8bf7a680bed1437b900b58724aadba6" + integrity sha512-wpOF0WMiiGeTbTvdaS20FhjyQl2qUsawN9oUNx/SKcOtHzjt2kBZiwtZmLNSdu9lSW3LPBpRxMA4EPf9ukjAxw== + +"@next/swc-win32-ia32-msvc@15.0.0-canary.173": + version "15.0.0-canary.173" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-15.0.0-canary.173.tgz#092ebafe85960485d8d636d68e9fbe87a7d21f3d" + integrity sha512-VSOMf/GbBYHkuly/hSGbam5AQfkdgTPZOdcrFalHd03Q1mEL4GCJBRRqu/ejGBHTI1CNsFekEyVBJ0GpZQkFTg== + +"@next/swc-win32-x64-msvc@15.0.0-canary.173": + version "15.0.0-canary.173" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.0-canary.173.tgz#0394850400a3600c8b8d3079adab27d4a2b3c137" + integrity sha512-JBwVQkiebNPVxk70TCbbxcG/JpIAnd/XKKt0LDeQf51HDdyGfu6MN3OZC3uqm2h1vb1FGDPOX1u9Klf5yek+nA== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1657,155 +2312,703 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@payloadcms/bundler-webpack@^1.0.0": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@payloadcms/bundler-webpack/-/bundler-webpack-1.0.7.tgz#c15e767b70aeb6af604861017e08ac95f8a1b3bc" - integrity sha512-2ARLDX+2JkUeslkELTxzJmcHbQeyPnjIKAVUCNAu7/gVo0eSlKaiNMUmKWfuXVfbNlcvQEcjH7b7uTqkbrrWZA== - dependencies: - ajv "8.14.0" - compression "1.7.4" - connect-history-api-fallback "1.6.0" - css-loader "5.2.7" - file-loader "6.2.0" - find-node-modules "^2.1.3" - html-webpack-plugin "^5.5.0" - md5 "2.3.0" - mini-css-extract-plugin "1.6.2" - path-browserify "1.0.1" - postcss "8.4.31" - postcss-loader "6.2.1" - postcss-preset-env "9.0.0" - process "0.11.10" - sass-loader "12.6.0" - style-loader "^2.0.0" - swc-loader "^0.2.3" - swc-minify-webpack-plugin "^2.1.0" - terser-webpack-plugin "^5.3.6" - url-loader "4.1.1" - webpack "^5.78.0" - webpack-bundle-analyzer "^4.8.0" - webpack-cli "^4.10.0" - webpack-dev-middleware "6.1.2" - webpack-hot-middleware "^2.25.3" - -"@payloadcms/db-mongodb@^1.0.0": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@payloadcms/db-mongodb/-/db-mongodb-1.7.2.tgz#5b0c836d5736c0586a0e40dbec92c7d35a867455" - integrity sha512-C2qlhDE7EBgr+2dZvjj6aqdIBWDWdKb508O7+RQEXijNHYSUxC3VXxI21WBhRcFehBXU5WpYrFBxtU3CPJEmAw== +"@nolyfill/is-core-module@1.0.39": + version "1.0.39" + resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e" + integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA== + +"@npmcli/agent@^2.0.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5" + integrity sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og== + dependencies: + agent-base "^7.1.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.1" + lru-cache "^10.0.1" + socks-proxy-agent "^8.0.3" + +"@npmcli/agent@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-3.0.0.tgz#1685b1fbd4a1b7bb4f930cbb68ce801edfe7aa44" + integrity sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q== + dependencies: + agent-base "^7.1.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.1" + lru-cache "^10.0.1" + socks-proxy-agent "^8.0.3" + +"@npmcli/arborist@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-8.0.0.tgz#681af823ac8ca067404dee57e0f91a3d27d6ef0a" + integrity sha512-APDXxtXGSftyXibl0dZ3CuZYmmVnkiN3+gkqwXshY4GKC2rof2+Lg0sGuj6H1p2YfBAKd7PRwuMVhu6Pf/nQ/A== + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/fs" "^4.0.0" + "@npmcli/installed-package-contents" "^3.0.0" + "@npmcli/map-workspaces" "^4.0.1" + "@npmcli/metavuln-calculator" "^8.0.0" + "@npmcli/name-from-folder" "^3.0.0" + "@npmcli/node-gyp" "^4.0.0" + "@npmcli/package-json" "^6.0.1" + "@npmcli/query" "^4.0.0" + "@npmcli/redact" "^3.0.0" + "@npmcli/run-script" "^9.0.1" + bin-links "^5.0.0" + cacache "^19.0.1" + common-ancestor-path "^1.0.1" + hosted-git-info "^8.0.0" + json-parse-even-better-errors "^4.0.0" + json-stringify-nice "^1.1.4" + lru-cache "^10.2.2" + minimatch "^9.0.4" + nopt "^8.0.0" + npm-install-checks "^7.1.0" + npm-package-arg "^12.0.0" + npm-pick-manifest "^10.0.0" + npm-registry-fetch "^18.0.1" + pacote "^19.0.0" + parse-conflict-json "^4.0.0" + proc-log "^5.0.0" + proggy "^3.0.0" + promise-all-reject-late "^1.0.0" + promise-call-limit "^3.0.1" + read-package-json-fast "^4.0.0" + semver "^7.3.7" + ssri "^12.0.0" + treeverse "^3.0.0" + walk-up-path "^3.0.1" + +"@npmcli/config@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-9.0.0.tgz#bd810a1e9e23fcfad800e40d6c2c8b8f4f4318e1" + integrity sha512-P5Vi16Y+c8E0prGIzX112ug7XxqfaPFUVW/oXAV+2VsxplKZEnJozqZ0xnK8V8w/SEsBf+TXhUihrEIAU4CA5Q== + dependencies: + "@npmcli/map-workspaces" "^4.0.1" + "@npmcli/package-json" "^6.0.1" + ci-info "^4.0.0" + ini "^5.0.0" + nopt "^8.0.0" + proc-log "^5.0.0" + semver "^7.3.5" + walk-up-path "^3.0.1" + +"@npmcli/fs@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" + integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== + dependencies: + semver "^7.3.5" + +"@npmcli/fs@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-4.0.0.tgz#a1eb1aeddefd2a4a347eca0fab30bc62c0e1c0f2" + integrity sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q== + dependencies: + semver "^7.3.5" + +"@npmcli/git@^6.0.0", "@npmcli/git@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-6.0.1.tgz#9ee894a35c2082d0b41883e267ff140aece457d5" + integrity sha512-BBWMMxeQzalmKadyimwb2/VVQyJB01PH0HhVSNLHNBDZN/M/h/02P6f8fxedIiFhpMj11SO9Ep5tKTBE7zL2nw== + dependencies: + "@npmcli/promise-spawn" "^8.0.0" + ini "^5.0.0" + lru-cache "^10.0.1" + npm-pick-manifest "^10.0.0" + proc-log "^5.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^5.0.0" + +"@npmcli/installed-package-contents@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz#2c1170ff4f70f68af125e2842e1853a93223e4d1" + integrity sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q== + dependencies: + npm-bundled "^4.0.0" + npm-normalize-package-bin "^4.0.0" + +"@npmcli/map-workspaces@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-4.0.1.tgz#ff1a7d6f643264617c0769ac0f36e507743d5a81" + integrity sha512-g5H8ljH7Z+4T1ASsfcL09gZl4YGw6M4GbjzPt6HgE+pCRSKC4nlNc4nY75zshi88eEHcdoh3Q8XgWFkGKoVOPw== + dependencies: + "@npmcli/name-from-folder" "^3.0.0" + "@npmcli/package-json" "^6.0.0" + glob "^10.2.2" + minimatch "^9.0.0" + +"@npmcli/metavuln-calculator@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-8.0.0.tgz#70d465ed5d7dc1ccad182ab8ebdbe5363ba0fde8" + integrity sha512-zR2TGfhR8fH1u4VRz9fuC7r1nI9dweViRDsFnMH8J89OA90lJNwF6idTttEzYSWaOTW4NVoAIB6+ujV+/wI+kg== + dependencies: + cacache "^19.0.0" + json-parse-even-better-errors "^4.0.0" + pacote "^19.0.0" + proc-log "^5.0.0" + semver "^7.3.5" + +"@npmcli/name-from-folder@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-3.0.0.tgz#ed49b18d16b954149f31240e16630cfec511cd57" + integrity sha512-61cDL8LUc9y80fXn+lir+iVt8IS0xHqEKwPu/5jCjxQTVoSCmkXvw4vbMrzAMtmghz3/AkiBjhHkDKUH+kf7kA== + +"@npmcli/node-gyp@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz#01f900bae62f0f27f9a5a127b40d443ddfb9d4c6" + integrity sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA== + +"@npmcli/package-json@^6.0.0", "@npmcli/package-json@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-6.0.1.tgz#550a8eb3e0ae9ad8577cb7a3f2d677a04a3bcee9" + integrity sha512-YW6PZ99sc1Q4DINEY2td5z9Z3rwbbsx7CyCnOc7UXUUdePXh5gPi1UeaoQVmKQMVbIU7aOwX2l1OG5ZfjgGi5g== + dependencies: + "@npmcli/git" "^6.0.0" + glob "^10.2.2" + hosted-git-info "^8.0.0" + json-parse-even-better-errors "^4.0.0" + normalize-package-data "^7.0.0" + proc-log "^5.0.0" + semver "^7.5.3" + +"@npmcli/promise-spawn@^8.0.0", "@npmcli/promise-spawn@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-8.0.1.tgz#c2e25a632be72e66a2e7bc1d55aa74f51ca1f87e" + integrity sha512-ZscqKtJqy7oj6MgXEJcHQ1om4utU0Q84QtC28UVuiO6ALSO9sDPanXdu6Wd1oYhItW8fx2u96zRFUE8BuPlAjA== + dependencies: + which "^5.0.0" + +"@npmcli/query@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-4.0.0.tgz#7a2470254f5a12a1499d2296a7343043c7847568" + integrity sha512-3pPbese0fbCiFJ/7/X1GBgxAKYFE8sxBddA7GtuRmOgNseH4YbGsXJ807Ig3AEwNITjDUISHglvy89cyDJnAwA== + dependencies: + postcss-selector-parser "^6.1.2" + +"@npmcli/redact@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/redact/-/redact-3.0.0.tgz#ab3b6413355be7f3c02e87c36c2b0c2f9773fce4" + integrity sha512-/1uFzjVcfzqrgCeGW7+SZ4hv0qLWmKXVzFahZGJ6QuJBj6Myt9s17+JL86i76NV9YSnJRcGXJYQbAU0rn1YTCQ== + +"@npmcli/run-script@^9.0.0", "@npmcli/run-script@^9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-9.0.1.tgz#f90a0cf4f4e8f42d66669d3af568c5036859b654" + integrity sha512-q9C0uHrb6B6cm3qXVM32UmpqTKuFGbtP23O2K5sLvPMz2hilKd0ptqGXSpuunOuOmPQb/aT5F/kCXFc1P2gO/A== + dependencies: + "@npmcli/node-gyp" "^4.0.0" + "@npmcli/package-json" "^6.0.0" + "@npmcli/promise-spawn" "^8.0.0" + node-gyp "^10.0.0" + proc-log "^5.0.0" + which "^5.0.0" + +"@one-ini/wasm@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323" + integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw== + +"@payloadcms/db-mongodb@beta": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/db-mongodb/-/db-mongodb-3.0.0-beta.111.tgz#715436953fd63bc3bd52e6f189deba6168a4bf0c" + integrity sha512-4zPZ4cgkoxFjquj5PpVorYYjdxrWbonbEja0sNTEd43jYyQn8iT/d28luA+OG7ETmwKc6C3hqZc9oiieOXMgrg== dependencies: bson-objectid "2.0.4" - deepmerge "4.3.1" - get-port "5.1.1" http-status "1.6.2" mongoose "6.12.3" mongoose-aggregate-paginate-v2 "1.0.6" mongoose-paginate-v2 "1.7.22" prompts "2.4.2" - uuid "9.0.0" + uuid "10.0.0" -"@payloadcms/eslint-config@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@payloadcms/eslint-config/-/eslint-config-0.0.1.tgz#4324702ddef6c773b3f3033795a13e6b50c95a92" - integrity sha512-Il59+0C4E/bI6uM2hont3I+oABWkJZbfbItubje5SGMrXkymUq8jT/UZRk0eCt918bB7gihxDXx8guFnR/aNIw== +"@payloadcms/email-nodemailer@3.0.0-beta.111": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/email-nodemailer/-/email-nodemailer-3.0.0-beta.111.tgz#9e83a7d3074109a108e9ee06e818bb39f9a63681" + integrity sha512-7HHc8ZjE2Utj7ApFxokML4e1U328fQzpOCUQTp6/srHOAR3iPrJMIcHKfML0d/MREB4RzA2GPQjA16V0t3ZzzQ== + dependencies: + nodemailer "6.9.10" -"@payloadcms/plugin-cloud@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@payloadcms/plugin-cloud/-/plugin-cloud-3.0.2.tgz#75ed7cc7fe8f5e1c056c59f7bf809bdabecf141b" - integrity sha512-qMbXEDiafaw8s49U1SZ3jLd5sOsrZ3aoKOfSLf1fXV22Ndlojev/Sd7LVqnxbSOsoIRwY+pmmM8q/aXlIwvGCg== +"@payloadcms/eslint-config@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@payloadcms/eslint-config/-/eslint-config-1.1.1.tgz#bff617b9b7073ac2016f3ebf484b36890c772ecb" + integrity sha512-LSf9oEPb6aMEMqdTFqj1v+7p/bdrJWG6hp7748xjVO3RL3yQESTKLK/NbjsMYITN4tKFXjfPWDUtcwHv0hS6/A== + dependencies: + "@types/eslint" "8.44.2" + "@typescript-eslint/eslint-plugin" "6.6.0" + "@typescript-eslint/parser" "6.6.0" + eslint "8.48.0" + eslint-config-prettier "9.0.0" + eslint-plugin-import "2.28.1" + eslint-plugin-jest "27.2.3" + eslint-plugin-jest-dom "5.1.0" + eslint-plugin-jsx-a11y "6.7.1" + eslint-plugin-node "11.1.0" + eslint-plugin-perfectionist "2.0.0" + eslint-plugin-playwright "0.16.0" + eslint-plugin-react "7.33.2" + eslint-plugin-react-hooks "4.6.0" + eslint-plugin-regexp "1.15.0" + +"@payloadcms/graphql@3.0.0-beta.111": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/graphql/-/graphql-3.0.0-beta.111.tgz#14fe2ad9f2ec33af06125771451573f71dcaf328" + integrity sha512-lPp30OnApJvNePiJYUSm7uyuYX1zauVeEo7bg1EdkDNDi+jCfYLbivrIDAbH2+KAGzby+139n47YplLlv+y9lg== dependencies: - "@aws-sdk/client-cognito-identity" "^3.289.0" - "@aws-sdk/client-s3" "^3.142.0" - "@aws-sdk/credential-providers" "^3.289.0" - "@aws-sdk/lib-storage" "^3.267.0" - amazon-cognito-identity-js "^6.1.2" - nodemailer "6.9.9" + graphql-scalars "1.22.2" + pluralize "8.0.0" + ts-essentials "10.0.2" + tsx "4.19.1" -"@payloadcms/plugin-nested-docs@^1.0.8": - version "1.0.12" - resolved "https://registry.yarnpkg.com/@payloadcms/plugin-nested-docs/-/plugin-nested-docs-1.0.12.tgz#57723fdd1eec3c26a69f0662ee9b05d2ca0269c7" - integrity sha512-CZcfGjN3nUtlAHHlbjgnmiB+lPCw3X7CNN2t2IL5+n94OH98Kwfnu+qhPV/ALm1JAWMY0sQ46kRIwWHij016Nw== +"@payloadcms/live-preview-react@beta": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/live-preview-react/-/live-preview-react-3.0.0-beta.111.tgz#32c73215c0e05520b61fc66e29ae21bf2d6c8e0e" + integrity sha512-zTesBLRVAYH6OCzR4TdcWwEV02HS6tAe+WRVf5toWTsU5bXJuKkK7loEzCtPt/VaEfYEps3JY0npogZuxo3r4Q== + dependencies: + "@payloadcms/live-preview" "3.0.0-beta.111" -"@payloadcms/plugin-redirects@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@payloadcms/plugin-redirects/-/plugin-redirects-1.0.2.tgz#dbecbf9e76b98f50aa9ba3f739faa64e61961f91" - integrity sha512-6tvXHd41L1xJr1IUKZfNMEdvYSDDxi9ciREyi3dUde2xrPTp2fS+hXq/secelaeLSWo72qKptK0DHMWWAA7qiQ== +"@payloadcms/live-preview@3.0.0-beta.111": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/live-preview/-/live-preview-3.0.0-beta.111.tgz#fdd3e37c45bd3cd348c0a5f100c863d8d10459c1" + integrity sha512-ayYknmEIO7CEo3fF46tZWhLKxDyxc1UTt4yHO9Sv4R7b+666GY3mXMgQV8RFnFWqnceUuJFTK3sfXJvxwlOCtQ== -"@payloadcms/plugin-seo@^1.0.10": - version "1.0.15" - resolved "https://registry.yarnpkg.com/@payloadcms/plugin-seo/-/plugin-seo-1.0.15.tgz#ca794897d1e8c3291a8dd74339b7f28f10bba815" - integrity sha512-7nU0DD3UZOOHsV2UIkOWL2JNCX+u1WNbEvZOiGpO6lB6YekuVIMqxHKbTdVR73UeW44lApvS9LTgif3XLQ5HDA== - -"@payloadcms/richtext-lexical@^0.11.3": - version "0.11.3" - resolved "https://registry.yarnpkg.com/@payloadcms/richtext-lexical/-/richtext-lexical-0.11.3.tgz#0897023a6465f7281e77cce4990c8f073da6a0d4" - integrity sha512-Y1FXtPQKO+6Prkh7PimptERhM02zWgrIcpFEsRHSyldebK3fv51YnuuaBhDtAqtifAXYAxgrSg5dliEZqmaCjw== - dependencies: - "@faceless-ui/modal" "2.0.1" - "@lexical/headless" "0.13.1" - "@lexical/link" "0.13.1" - "@lexical/list" "0.13.1" - "@lexical/mark" "0.13.1" - "@lexical/markdown" "0.13.1" - "@lexical/react" "0.13.1" - "@lexical/rich-text" "0.13.1" - "@lexical/selection" "0.13.1" - "@lexical/utils" "0.13.1" +"@payloadcms/next@beta": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/next/-/next-3.0.0-beta.111.tgz#39c57320c31892d58e2177333d04dabb43494d47" + integrity sha512-8yeDEnc4prXxo+v/VN67u2BR1cs3gpoYQIFlglje6n1JqFvQuLLlxgfs7wuNQpruEPoA5rfLm3MxPoALk6kv2w== + dependencies: + "@dnd-kit/core" "6.0.8" + "@payloadcms/graphql" "3.0.0-beta.111" + "@payloadcms/translations" "3.0.0-beta.111" + "@payloadcms/ui" "3.0.0-beta.111" + busboy "^1.6.0" + file-type "19.3.0" + graphql-http "^1.22.0" + graphql-playground-html "1.6.30" + http-status "1.6.2" + path-to-regexp "^6.2.1" + qs-esm "7.0.2" + react-diff-viewer-continued "3.2.6" + sass "1.77.4" + sonner "^1.5.0" + uuid "10.0.0" + ws "^8.16.0" + +"@payloadcms/plugin-cloud@beta": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/plugin-cloud/-/plugin-cloud-3.0.0-beta.111.tgz#1080788fa258e7ac242d64dedb40da6a9723ef86" + integrity sha512-cAUW9f38U6cdSMsWtu3SIzuoIOcozbCo6LQoN18kC1sEYwviCyySzz3/AxhlB1YgRlJalHW9F8wyb7TGMTiIWA== + dependencies: + "@aws-sdk/client-cognito-identity" "^3.614.0" + "@aws-sdk/client-s3" "^3.614.0" + "@aws-sdk/credential-providers" "^3.614.0" + "@aws-sdk/lib-storage" "^3.614.0" + "@payloadcms/email-nodemailer" "3.0.0-beta.111" + amazon-cognito-identity-js "^6.1.2" + nodemailer "6.9.10" + resend "^0.17.2" + +"@payloadcms/plugin-form-builder@beta": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/plugin-form-builder/-/plugin-form-builder-3.0.0-beta.111.tgz#bb9338db29642c89fdb2f03572402e45a817acd7" + integrity sha512-DeY2SiiqABLNQJD/XjadblTzr90zTJEL3zqx4FQBi3BFc81b+jHE2DSJWe1Wd7o2i/fXz5o0DDvyOmofGgwBjw== + dependencies: + "@payloadcms/ui" "3.0.0-beta.111" + escape-html "^1.0.3" + +"@payloadcms/plugin-nested-docs@beta": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/plugin-nested-docs/-/plugin-nested-docs-3.0.0-beta.111.tgz#ae2dee04709e49f8319dca8210daa91286c1ae29" + integrity sha512-eRHXQlG9098d7P3cPHPBHi9BMJOF2Roc2Ncb/Jz56aISoF3rZ/tRUZKQCWN/T4YXjdtKMgIjZclIwWsBMJg5xw== + +"@payloadcms/plugin-redirects@beta": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/plugin-redirects/-/plugin-redirects-3.0.0-beta.111.tgz#9f1a3223ba31f35c2c4c8ddf79c23c00cc09d0e0" + integrity sha512-Cb7JpwdkxDfI6X7fmq/WXWt+OngvoqhzzIZJszMjq11M65YtAXlUE691qfcNiNNdPObWj3RFe6ep/lcDQaSZiA== + +"@payloadcms/plugin-search@beta": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/plugin-search/-/plugin-search-3.0.0-beta.111.tgz#3579e8ed76e7ff3abb05f23b484434beda1587d5" + integrity sha512-QsPlrx4Cc11AVYoMVcrse4luihD8w/ZHESRLH7Ci9dD01RNAxCYizvBHYAz+/FJdOWlKMuTlXQl3F2X2ysi6ZQ== + dependencies: + "@payloadcms/ui" "3.0.0-beta.111" + +"@payloadcms/plugin-seo@beta": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/plugin-seo/-/plugin-seo-3.0.0-beta.111.tgz#610247990f6c06d7d39370825ee66d2245e9d69c" + integrity sha512-4Wm6Il08xAWzYBGIZTAtTvKieCYHrOxnNeHqyO4xCgfiLOUO/RLxr+Mwkm9703JY8b7HZxtVvI+SNZCJQRm9CQ== + dependencies: + "@payloadcms/translations" "3.0.0-beta.111" + "@payloadcms/ui" "3.0.0-beta.111" + +"@payloadcms/richtext-lexical@beta": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/richtext-lexical/-/richtext-lexical-3.0.0-beta.111.tgz#70b90112afffbb80b547c0ab377216b1d8e33a8b" + integrity sha512-7Q4lM6mpEm04YLzZ6FCjzK1juPo9j4nS/teGpZqhjNR7Q17xcmrUWMWu7Yn/QeUe7GSJrc+PYR6quJrhlcQJgg== + dependencies: + "@lexical/headless" "0.18.0" + "@lexical/link" "0.18.0" + "@lexical/list" "0.18.0" + "@lexical/mark" "0.18.0" + "@lexical/markdown" "0.18.0" + "@lexical/react" "0.18.0" + "@lexical/rich-text" "0.18.0" + "@lexical/selection" "0.18.0" + "@lexical/utils" "0.18.0" + "@payloadcms/translations" "3.0.0-beta.111" + "@payloadcms/ui" "3.0.0-beta.111" + "@types/uuid" "10.0.0" bson-objectid "2.0.4" - classnames "^2.3.2" - deep-equal "2.2.3" - i18next "22.5.1" - json-schema "^0.4.0" - lexical "0.13.1" - lodash "4.17.21" - react-error-boundary "4.0.12" - react-i18next "11.18.6" - ts-essentials "7.0.3" - -"@payloadcms/richtext-slate@^1.0.0": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@payloadcms/richtext-slate/-/richtext-slate-1.5.2.tgz#3611923b7a1d62882a10b2df3508f98cb8a11dbf" - integrity sha512-0rq9zgOhpPHO5kcFlajld3h5beww6jjYwHZH5sxgtuen3bz6pepIr3agg650R/aE1+sfez0NdpwoB0gb7FX03g== - dependencies: - "@faceless-ui/modal" "2.0.1" - i18next "22.5.1" - is-hotkey "0.2.0" - react-i18next "11.18.6" - slate "0.91.4" - slate-history "0.86.0" - slate-hyperscript "0.81.3" - slate-react "0.92.0" + dequal "2.0.3" + escape-html "1.0.3" + lexical "0.18.0" + react-error-boundary "4.0.13" + uuid "10.0.0" + +"@payloadcms/translations@3.0.0-beta.111": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/translations/-/translations-3.0.0-beta.111.tgz#875a321c6a7fdddef9ac5985b2b82e1a51d6bd7f" + integrity sha512-r2U+mENipAHmh+UnT4vlWIe8OsexW/ix8ylmgGOp2xtbgZM+ZP44XlK8qPwThJAR493moDQK81cAR97ogMYLew== + dependencies: + date-fns "3.3.1" + +"@payloadcms/ui@3.0.0-beta.111", "@payloadcms/ui@beta": + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/@payloadcms/ui/-/ui-3.0.0-beta.111.tgz#40cf465f4285b82e6ee77dea8a903109a88c09a1" + integrity sha512-Fo14javnyEXjXhg3L88S1wHkiXY8lKVGPGn7yE/z6X198jA6pvBYm5u9iiQVrULYVAA8vMFefCl+XFn24MoYtg== + dependencies: + "@dnd-kit/core" "6.0.8" + "@dnd-kit/sortable" "7.0.2" + "@faceless-ui/modal" "3.0.0-beta.2" + "@faceless-ui/scroll-info" "2.0.0-beta.0" + "@faceless-ui/window-info" "3.0.0-beta.0" + "@monaco-editor/react" "4.6.0" + "@payloadcms/translations" "3.0.0-beta.111" + body-scroll-lock "4.0.0-beta.0" + bson-objectid "2.0.4" + date-fns "3.3.1" + dequal "2.0.3" + md5 "2.3.0" + object-to-formdata "4.5.1" + qs-esm "7.0.2" + react-animate-height "2.1.2" + react-datepicker "6.9.0" + react-image-crop "10.1.8" + react-select "5.8.0" + scheduler "0.0.0-experimental-3edc000d-20240926" + sonner "^1.5.0" + ts-essentials "10.0.2" + use-context-selector "2.0.0" + uuid "10.0.0" "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@polka/url@^1.0.0-next.24": - version "1.0.0-next.25" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817" - integrity sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== +"@radix-ui/number@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.1.0.tgz#1e95610461a09cdf8bb05c152e76ca1278d5da46" + integrity sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ== -"@popperjs/core@^2.11.8": - version "2.11.8" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" - integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== +"@radix-ui/primitive@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.0.tgz#42ef83b3b56dccad5d703ae8c42919a68798bbe2" + integrity sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA== -"@sideway/address@^4.1.3": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" - integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== +"@radix-ui/react-arrow@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz#744f388182d360b86285217e43b6c63633f39e7a" + integrity sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw== dependencies: - "@hapi/hoek" "^9.0.0" + "@radix-ui/react-primitive" "2.0.0" -"@sideway/formula@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" - integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== +"@radix-ui/react-checkbox@^1.0.4": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-checkbox/-/react-checkbox-1.1.2.tgz#6465b800420923ecc39cbeaa8f357b5f09dbfd52" + integrity sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-presence" "1.1.1" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-use-previous" "1.1.0" + "@radix-ui/react-use-size" "1.1.0" + +"@radix-ui/react-collection@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.1.0.tgz#f18af78e46454a2360d103c2251773028b7724ed" + integrity sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + +"@radix-ui/react-compose-refs@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz#656432461fc8283d7b591dcf0d79152fae9ecc74" + integrity sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw== + +"@radix-ui/react-context@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.0.tgz#6df8d983546cfd1999c8512f3a8ad85a6e7fcee8" + integrity sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A== + +"@radix-ui/react-context@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.1.tgz#82074aa83a472353bb22e86f11bcbd1c61c4c71a" + integrity sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q== -"@sideway/pinpoint@^2.0.0": +"@radix-ui/react-direction@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.1.0.tgz#a7d39855f4d077adc2a1922f9c353c5977a09cdc" + integrity sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg== + +"@radix-ui/react-dismissable-layer@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz#cbdcb739c5403382bdde5f9243042ba643883396" + integrity sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-escape-keydown" "1.1.0" + +"@radix-ui/react-focus-guards@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz#8635edd346304f8b42cae86b05912b61aef27afe" + integrity sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg== + +"@radix-ui/react-focus-scope@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz#ebe2891a298e0a33ad34daab2aad8dea31caf0b2" + integrity sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + +"@radix-ui/react-id@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.1.0.tgz#de47339656594ad722eb87f94a6b25f9cffae0ed" + integrity sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA== + dependencies: + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/react-label@^2.0.2": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-label/-/react-label-2.1.0.tgz#3aa2418d70bb242be37c51ff5e51a2adcbc372e3" + integrity sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + +"@radix-ui/react-popper@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.2.0.tgz#a3e500193d144fe2d8f5d5e60e393d64111f2a7a" + integrity sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg== + dependencies: + "@floating-ui/react-dom" "^2.0.0" + "@radix-ui/react-arrow" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-use-rect" "1.1.0" + "@radix-ui/react-use-size" "1.1.0" + "@radix-ui/rect" "1.1.0" + +"@radix-ui/react-portal@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.2.tgz#51eb46dae7505074b306ebcb985bf65cc547d74e" + integrity sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/react-presence@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.1.tgz#98aba423dba5e0c687a782c0669dcd99de17f9b1" + integrity sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/react-primitive@2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz#fe05715faa9203a223ccc0be15dc44b9f9822884" + integrity sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw== + dependencies: + "@radix-ui/react-slot" "1.1.0" + +"@radix-ui/react-select@^2.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.1.2.tgz#2346e118966db793940f6a866fd4cc5db2cc275e" + integrity sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA== + dependencies: + "@radix-ui/number" "1.1.0" + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-collection" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-direction" "1.1.0" + "@radix-ui/react-dismissable-layer" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" + "@radix-ui/react-focus-scope" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-popper" "1.2.0" + "@radix-ui/react-portal" "1.1.2" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-use-previous" "1.1.0" + "@radix-ui/react-visually-hidden" "1.1.0" + aria-hidden "^1.1.1" + react-remove-scroll "2.6.0" + +"@radix-ui/react-slot@1.1.0", "@radix-ui/react-slot@^1.0.2": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.1.0.tgz#7c5e48c36ef5496d97b08f1357bb26ed7c714b84" + integrity sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + +"@radix-ui/react-use-callback-ref@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz#bce938ca413675bc937944b0d01ef6f4a6dc5bf1" + integrity sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw== + +"@radix-ui/react-use-controllable-state@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz#1321446857bb786917df54c0d4d084877aab04b0" + integrity sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw== + dependencies: + "@radix-ui/react-use-callback-ref" "1.1.0" + +"@radix-ui/react-use-escape-keydown@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz#31a5b87c3b726504b74e05dac1edce7437b98754" + integrity sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw== + dependencies: + "@radix-ui/react-use-callback-ref" "1.1.0" + +"@radix-ui/react-use-layout-effect@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz#3c2c8ce04827b26a39e442ff4888d9212268bd27" + integrity sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w== + +"@radix-ui/react-use-previous@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz#d4dd37b05520f1d996a384eb469320c2ada8377c" + integrity sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og== + +"@radix-ui/react-use-rect@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz#13b25b913bd3e3987cc9b073a1a164bb1cf47b88" + integrity sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ== + dependencies: + "@radix-ui/rect" "1.1.0" + +"@radix-ui/react-use-size@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz#b4dba7fbd3882ee09e8d2a44a3eed3a7e555246b" + integrity sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw== + dependencies: + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/react-visually-hidden@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz#ad47a8572580f7034b3807c8e6740cd41038a5a2" + integrity sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + +"@radix-ui/rect@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.0.tgz#f817d1d3265ac5415dadc67edab30ae196696438" + integrity sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg== + +"@react-email/render@0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@react-email/render/-/render-0.0.7.tgz#92a14e03a59160c39bceeff50517c7058721ab6f" + integrity sha512-hMMhxk6TpOcDC5qnKzXPVJoVGEwfm+U5bGOPH+MyTTlx0F02RLQygcATBKsbP7aI/mvkmBAZoFbgPIHop7ovug== + dependencies: + html-to-text "9.0.3" + pretty "2.0.0" + react "18.2.0" + react-dom "18.2.0" + +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== + +"@rushstack/eslint-patch@^1.3.3": + version "1.10.4" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz#427d5549943a9c6fce808e39ea64dbe60d4047f1" + integrity sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA== + +"@selderee/plugin-htmlparser2@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.10.0.tgz#8a304d18df907e086f3cfc71ea0ced52d6524430" + integrity sha512-gW69MEamZ4wk1OsOq1nG1jcyhXIQcnrsX5JwixVw/9xaiav8TCyjESAruu1Rz9yyInhgBXxkNwMeygKnN2uxNA== + dependencies: + domhandler "^5.0.3" + selderee "^0.10.0" + +"@sigstore/bundle@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-2.3.2.tgz#ad4dbb95d665405fd4a7a02c8a073dbd01e4e95e" + integrity sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA== + dependencies: + "@sigstore/protobuf-specs" "^0.3.2" + +"@sigstore/core@^1.0.0", "@sigstore/core@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@sigstore/core/-/core-1.1.0.tgz#5583d8f7ffe599fa0a89f2bf289301a5af262380" + integrity sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg== + +"@sigstore/protobuf-specs@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz#5becf88e494a920f548d0163e2978f81b44b7d6f" + integrity sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw== + +"@sigstore/sign@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-2.3.2.tgz#d3d01e56d03af96fd5c3a9b9897516b1233fc1c4" + integrity sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.2" + make-fetch-happen "^13.0.1" + proc-log "^4.2.0" + promise-retry "^2.0.1" + +"@sigstore/tuf@^2.3.4": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-2.3.4.tgz#da1d2a20144f3b87c0172920cbc8dcc7851ca27c" + integrity sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw== + dependencies: + "@sigstore/protobuf-specs" "^0.3.2" + tuf-js "^2.2.1" + +"@sigstore/verify@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@sigstore/verify/-/verify-1.2.1.tgz#c7e60241b432890dcb8bd8322427f6062ef819e1" + integrity sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.1.0" + "@sigstore/protobuf-specs" "^0.3.2" "@smithy/abort-controller@^3.1.1": version "3.1.1" @@ -1815,6 +3018,14 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/abort-controller@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.5.tgz#ca7a86a3c6b20fabe59667143f58d9e198616d14" + integrity sha512-DhNPnqTqPoG8aZ5dWkFOgsuY+i0GQ3CI6hMmvCoduNsnU9gUZWZBwGfDQsTTB7NvFPkom1df7jMIJWU90kuXXg== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/chunked-blob-reader-native@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz#f1104b30030f76f9aadcbd3cdca4377bd1ba2695" @@ -1841,6 +3052,17 @@ "@smithy/util-middleware" "^3.0.3" tslib "^2.6.2" +"@smithy/config-resolver@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.9.tgz#dcf4b7747ca481866f9bfac21469ebe2031a599e" + integrity sha512-5d9oBf40qC7n2xUoHmntKLdqsyTMMo/r49+eqSIjJ73eDfEtljAxEhzIQ3bkgXJtR3xiv7YzMT/3FF3ORkjWdg== + dependencies: + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.7" + tslib "^2.6.2" + "@smithy/core@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.4.0.tgz#56e917b6ab2dffeba681a05395c40a757d681147" @@ -1857,6 +3079,22 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" +"@smithy/core@^2.4.8": + version "2.4.8" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.4.8.tgz#397ac17dfa8ad658b77f96f19484f0eeaf22d397" + integrity sha512-x4qWk7p/a4dcf7Vxb2MODIf4OIcqNbK182WxRvZ/3oKPrf/6Fdic5sSElhO1UtXpWKBazWfqg0ZEK9xN1DsuHA== + dependencies: + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@smithy/credential-provider-imds@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz#0e0e7ddaff1a8633cb927aee1056c0ab506b7ecf" @@ -1868,49 +3106,60 @@ "@smithy/url-parser" "^3.0.3" tslib "^2.6.2" -"@smithy/eventstream-codec@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz#4a1c72b34400631b829241151984a1ad8c4f963c" - integrity sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw== +"@smithy/credential-provider-imds@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.4.tgz#e1a2bfc8a0066f673756ad8735247cf284b9735c" + integrity sha512-S9bb0EIokfYEuar4kEbLta+ivlKCWOCFsLZuilkNy9i0uEUEHSi47IFLPaxqqCl+0ftKmcOTHayY5nQhAuq7+w== + dependencies: + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + tslib "^2.6.2" + +"@smithy/eventstream-codec@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.6.tgz#70ca95aad82d5140522eb883fbc140f1f22dcb27" + integrity sha512-SBiOYPBH+5wOyPS7lfI150ePfGLhnp/eTu5RnV9xvhGvRiKfnl6HzRK9wehBph+il8FxS9KTeadx7Rcmf1GLPQ== dependencies: "@aws-crypto/crc32" "5.2.0" - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" "@smithy/util-hex-encoding" "^3.0.0" tslib "^2.6.2" -"@smithy/eventstream-serde-browser@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.6.tgz#a4ab4f7cfbd137bcaa54c375276f9214e568fd8f" - integrity sha512-2hM54UWQUOrki4BtsUI1WzmD13/SeaqT/AB3EUJKbcver/WgKNaiJ5y5F5XXuVe6UekffVzuUDrBZVAA3AWRpQ== +"@smithy/eventstream-serde-browser@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.10.tgz#ffca366a4edee5097be5a710f87627a5b2da5dec" + integrity sha512-1i9aMY6Pl/SmA6NjvidxnfBLHMPzhKu2BP148pEt5VwhMdmXn36PE2kWKGa9Hj8b0XGtCTRucpCncylevCtI7g== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.5" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-serde-universal" "^3.0.9" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/eventstream-serde-config-resolver@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz#f852e096d0ad112363b4685e1d441088d1fce67a" - integrity sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ== +"@smithy/eventstream-serde-config-resolver@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.7.tgz#1f352f384665f322e024a1396a7a2cca52fce9e3" + integrity sha512-eVzhGQBPEqXXYHvIUku0jMTxd4gDvenRzUQPTmKVWdRvp9JUCKrbAXGQRYiGxUYq9+cqQckRm0wq3kTWnNtDhw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/eventstream-serde-node@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.5.tgz#2bbf5c9312a28f23bc55ae284efa9499f8b8f982" - integrity sha512-+upXvnHNyZP095s11jF5dhGw/Ihzqwl5G+/KtMnoQOpdfC3B5HYCcDVG9EmgkhJMXJlM64PyN5gjJl0uXFQehQ== +"@smithy/eventstream-serde-node@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.9.tgz#e985340093c2ca6587ae2fdd0663e6845fbe9463" + integrity sha512-JE0Guqvt0xsmfQ5y1EI342/qtJqznBv8cJqkHZV10PwC8GWGU5KNgFbQnsVCcX+xF+qIqwwfRmeWoJCjuOLmng== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.5" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-serde-universal" "^3.0.9" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/eventstream-serde-universal@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.5.tgz#e1cc2f71f4d174a03e00ce4b563395a81dd17bec" - integrity sha512-5u/nXbyoh1s4QxrvNre9V6vfyoLWuiVvvd5TlZjGThIikc3G+uNiG9uOTCWweSRjv1asdDIWK7nOmN7le4RYHQ== +"@smithy/eventstream-serde-universal@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.9.tgz#1832b190a3018204e33487ba1f7f0f6e2fb0da34" + integrity sha512-bydfgSisfepCufw9kCEnWRxqxJFzX/o8ysXWv+W9F2FIyiaEwZ/D8bBKINbh4ONz3i05QJ1xE7A5OKYvgJsXaw== dependencies: - "@smithy/eventstream-codec" "^3.1.2" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-codec" "^3.1.6" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@smithy/fetch-http-handler@^3.2.4": @@ -1924,14 +3173,25 @@ "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-blob-browser@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz#90281c1f183d93686fb4f26107f1819644d68829" - integrity sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg== +"@smithy/fetch-http-handler@^3.2.9": + version "3.2.9" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz#8d5199c162a37caa37a8b6848eefa9ca58221a0b" + integrity sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A== + dependencies: + "@smithy/protocol-http" "^4.1.4" + "@smithy/querystring-builder" "^3.0.7" + "@smithy/types" "^3.5.0" + "@smithy/util-base64" "^3.0.0" + tslib "^2.6.2" + +"@smithy/hash-blob-browser@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.6.tgz#d61de344aa3cef0bc83e3ab8166558256262dfcd" + integrity sha512-BKNcMIaeZ9lB67sgo88iCF4YB35KT8X2dNJ8DqrtZNTgN6tUDYBKThzfGtos/mnZkGkW91AYHisESHmSiYQmKw== dependencies: "@smithy/chunked-blob-reader" "^3.0.0" "@smithy/chunked-blob-reader-native" "^3.0.0" - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@smithy/hash-node@^3.0.3": @@ -1944,12 +3204,22 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-stream-node@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz#89f0290ae44b113863878e75b10c484ff48af71c" - integrity sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g== +"@smithy/hash-node@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.7.tgz#03b5a382fb588b8c2bac11b4fe7300aaf1661c88" + integrity sha512-SAGHN+QkrwcHFjfWzs/czX94ZEjPJ0CrWJS3M43WswDXVEuP4AVy9gJ3+AF6JQHZD13bojmuf/Ap/ItDeZ+Qfw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/hash-stream-node@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.6.tgz#854ad354a865a1334baa2abc2f2247f2723de688" + integrity sha512-sFSSt7cmCpFWZPfVx7k80Bgb1K2VJ27VmMxH8X+dDhp7Wv8IBgID4K2VK5ehMJROF8hQgcj4WywnkHIwX/xlwQ== + dependencies: + "@smithy/types" "^3.5.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -1961,6 +3231,14 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/invalid-dependency@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.7.tgz#b36f258d94498f3c72ab6020091a66fc7cc16eda" + integrity sha512-Bq00GsAhHeYSuZX8Kpu4sbI9agH2BNYnqUmmbTGWOhki9NVsWn2jFr896vvoTMH8KAjNX/ErC/8t5QHuEXG+IA== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/is-array-buffer@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111" @@ -1975,12 +3253,12 @@ dependencies: tslib "^2.6.2" -"@smithy/md5-js@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.3.tgz#55ee40aa24075b096c39f7910590c18ff7660c98" - integrity sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q== +"@smithy/md5-js@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.7.tgz#0a645dd9c139254353fd6e6a6b65154baeab7d2e" + integrity sha512-+wco9IN9uOW4tNGkZIqTR6IXyfO7Z8A+IOq82QCRn/f/xcmt7H1fXwmQVbfDSvbeFwfNnhv7s+u0G9PzPG6o2w== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -1993,6 +3271,15 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/middleware-content-length@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.9.tgz#fb613d1a6b8c91e828d11c0d7a0a8576dba89b8b" + integrity sha512-t97PidoGElF9hTtLCrof32wfWMqC5g2SEJNxaVH3NjlatuNGsdxXRYO/t+RPnxA15RpYiS0f+zG7FuE2DeGgjA== + dependencies: + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/middleware-endpoint@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz#9b8a496d87a68ec43f3f1a0139868d6765a88119" @@ -2006,6 +3293,19 @@ "@smithy/util-middleware" "^3.0.3" tslib "^2.6.2" +"@smithy/middleware-endpoint@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.4.tgz#222c9fa49c8af6ebf8bea8ab220d92d9b8c90d3d" + integrity sha512-/ChcVHekAyzUbyPRI8CzPPLj6y8QRAfJngWcLMgsWxKVzw/RzBV69mSOzJYDD3pRwushA1+5tHtPF8fjmzBnrQ== + dependencies: + "@smithy/middleware-serde" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + "@smithy/util-middleware" "^3.0.7" + tslib "^2.6.2" + "@smithy/middleware-retry@^3.0.15": version "3.0.15" resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.15.tgz#9b96900cde70d8aafd267e13f4e79241be90e0c7" @@ -2021,6 +3321,21 @@ tslib "^2.6.2" uuid "^9.0.1" +"@smithy/middleware-retry@^3.0.23": + version "3.0.23" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.23.tgz#ce5574e278dd14a7995afd5a4ed2a6c9891da8ed" + integrity sha512-x9PbGXxkcXIpm6L26qRSCC+eaYcHwybRmqU8LO/WM2RRlW0g8lz6FIiKbKgGvHuoK3dLZRiQVSQJveiCzwnA5A== + dependencies: + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/service-error-classification" "^3.0.7" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" + tslib "^2.6.2" + uuid "^9.0.1" + "@smithy/middleware-serde@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz#74d974460f74d99f38c861e6862984543a880a66" @@ -2029,6 +3344,14 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/middleware-serde@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.7.tgz#03f0dda75edffc4cc90ea422349cbfb82368efa7" + integrity sha512-VytaagsQqtH2OugzVTq4qvjkLNbWehHfGcGr0JLJmlDRrNCeZoWkWsSOw1nhS/4hyUUWF/TLGGml4X/OnEep5g== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/middleware-stack@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz#91845c7e61e6f137fa912b623b6def719a4f6ce7" @@ -2037,6 +3360,14 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/middleware-stack@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.7.tgz#813fa7b47895ce0d085eac89c056d21b1e46e771" + integrity sha512-EyTbMCdqS1DoeQsO4gI7z2Gzq1MoRFAeS8GkFYIwbedB7Lp5zlLHJdg+56tllIIG5Hnf9ZWX48YKSHlsKvugGA== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/node-config-provider@^3.1.4": version "3.1.4" resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz#05647bed666aa8036a1ad72323c1942e5d421be1" @@ -2047,6 +3378,16 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/node-config-provider@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.8.tgz#2c1092040b4062eae0f7c9e121cc00ac6a77efee" + integrity sha512-E0rU0DglpeJn5ge64mk8wTGEXcQwmpUTY5Zr7IzTpDLmHKiIamINERNZYrPQjg58Ck236sEKSwRSHA4CwshU6Q== + dependencies: + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/node-http-handler@^3.1.4": version "3.1.4" resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz#be4195e45639e690d522cd5f11513ea822ff9d5f" @@ -2058,6 +3399,17 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/node-http-handler@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.2.4.tgz#3c57c40d082c3bacac1e49955bd1240e8ccc40b2" + integrity sha512-49reY3+JgLMFNm7uTAKBWiKCA6XSvkNp9FqhVmusm2jpVnHORYFeFZ704LShtqWfjZW/nhX+7Iexyb6zQfXYIQ== + dependencies: + "@smithy/abort-controller" "^3.1.5" + "@smithy/protocol-http" "^4.1.4" + "@smithy/querystring-builder" "^3.0.7" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/property-provider@^3.1.3": version "3.1.3" resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.3.tgz#afd57ea82a3f6c79fbda95e3cb85c0ee0a79f39a" @@ -2066,6 +3418,14 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/property-provider@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.7.tgz#8a304a4b9110a067a93c784e4c11e175f82da379" + integrity sha512-QfzLi1GPMisY7bAM5hOUqBdGYnY5S2JAlr201pghksrQv139f8iiiMalXtjczIP5f6owxFn3MINLNUNvUkgtPw== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/protocol-http@^4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.0.tgz#23519d8f45bf4f33960ea5415847bc2b620a010b" @@ -2074,6 +3434,14 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/protocol-http@^4.1.4": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.4.tgz#6940d652b1825bda2422163ec9baab552669a338" + integrity sha512-MlWK8eqj0JlpZBnWmjQLqmFp71Ug00P+m72/1xQB3YByXD4zZ+y9N4hYrR0EDmrUCZIkyATWHOXFgtavwGDTzQ== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/querystring-builder@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz#6b0e566f885bb84938d077c69e8f8555f686af13" @@ -2083,6 +3451,15 @@ "@smithy/util-uri-escape" "^3.0.0" tslib "^2.6.2" +"@smithy/querystring-builder@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.7.tgz#8c443c65f4249ff1637088db1166d18411d41555" + integrity sha512-65RXGZZ20rzqqxTsChdqSpbhA6tdt5IFNgG6o7e1lnPVLCe6TNWQq4rTl4N87hTDD8mV4IxJJnvyE7brbnRkQw== + dependencies: + "@smithy/types" "^3.5.0" + "@smithy/util-uri-escape" "^3.0.0" + tslib "^2.6.2" + "@smithy/querystring-parser@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz#272a6b83f88dfcbbec8283d72a6bde850cc00091" @@ -2091,6 +3468,14 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/querystring-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.7.tgz#936206d1e6da9d862384dae730b4bad042d6a948" + integrity sha512-Fouw4KJVWqqUVIu1gZW8BH2HakwLz6dvdrAhXeXfeymOBrZw+hcqaWs+cS1AZPVp4nlbeIujYrKA921ZW2WMPA== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/service-error-classification@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz#73484255060a094aa9372f6cd972dcaf97e3ce80" @@ -2098,6 +3483,13 @@ dependencies: "@smithy/types" "^3.3.0" +"@smithy/service-error-classification@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.7.tgz#5bab4ad802d30bd3fa52b8134f6c171582358226" + integrity sha512-91PRkTfiBf9hxkIchhRKJfl1rsplRDyBnmyFca3y0Z3x/q0JJN480S83LBd8R6sBCkm2bBbqw2FHp0Mbh+ecSA== + dependencies: + "@smithy/types" "^3.5.0" + "@smithy/shared-ini-file-loader@^3.1.4": version "3.1.4" resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz#7dceaf5a5307a2ee347ace8aba17312a1a3ede15" @@ -2106,6 +3498,14 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/shared-ini-file-loader@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.8.tgz#7a0bf5f20cfe8e0c4a36d8dcab8194d0d2ee958e" + integrity sha512-0NHdQiSkeGl0ICQKcJQ2lCOKH23Nb0EaAa7RDRId6ZqwXkw4LJyIyZ0t3iusD4bnKYDPLGy2/5e2rfUhrt0Acw== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/signature-v4@^4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.0.tgz#251ff43dc1f4ad66776122732fea9e56efc56443" @@ -2120,6 +3520,20 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" +"@smithy/signature-v4@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.2.0.tgz#291f5a0e756cc251377e1e8af2a1f494e6173029" + integrity sha512-LafbclHNKnsorMgUkKm7Tk7oJ7xizsZ1VwqhGKqoCIrXh4fqDDp73fK99HOEEgcsQbtemmeY/BPv0vTVYYUNEQ== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-uri-escape" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@smithy/smithy-client@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.2.0.tgz#6db94024e4bdaefa079ac68dbea23dafbea230c8" @@ -2132,6 +3546,18 @@ "@smithy/util-stream" "^3.1.3" tslib "^2.6.2" +"@smithy/smithy-client@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.4.0.tgz#ceffb92108a4ad60cbede3baf44ed224dc70b333" + integrity sha512-nOfJ1nVQsxiP6srKt43r2My0Gp5PLWCW2ASqUioxIiGmu6d32v4Nekidiv5qOmmtzIrmaD+ADX5SKHUuhReeBQ== + dependencies: + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + "@smithy/util-stream" "^3.1.9" + tslib "^2.6.2" + "@smithy/types@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.3.0.tgz#fae037c733d09bc758946a01a3de0ef6e210b16b" @@ -2139,6 +3565,13 @@ dependencies: tslib "^2.6.2" +"@smithy/types@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.5.0.tgz#9589e154c50d9c5d00feb7d818112ef8fc285d6e" + integrity sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q== + dependencies: + tslib "^2.6.2" + "@smithy/url-parser@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.3.tgz#e8a060d9810b24b1870385fc2b02485b8a6c5955" @@ -2148,6 +3581,15 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/url-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.7.tgz#9d7d7e4e38514bf75ade6e8a30d2300f3db17d1b" + integrity sha512-70UbSSR8J97c1rHZOWhl+VKiZDqHWxs/iW8ZHrHp5fCCPLSBE7GcUlUvKSle3Ca+J9LLbYCj/A79BxztBvAfpA== + dependencies: + "@smithy/querystring-parser" "^3.0.7" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/util-base64@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-3.0.0.tgz#f7a9a82adf34e27a72d0719395713edf0e493017" @@ -2205,6 +3647,17 @@ bowser "^2.11.0" tslib "^2.6.2" +"@smithy/util-defaults-mode-browser@^3.0.23": + version "3.0.23" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.23.tgz#6920b473126ae8857a04dd6941793bbda12adc8b" + integrity sha512-Y07qslyRtXDP/C5aWKqxTPBl4YxplEELG3xRrz2dnAQ6Lq/FgNrcKWmV561nNaZmFH+EzeGOX3ZRMbU8p1T6Nw== + dependencies: + "@smithy/property-provider" "^3.1.7" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + bowser "^2.11.0" + tslib "^2.6.2" + "@smithy/util-defaults-mode-node@^3.0.15": version "3.0.15" resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.15.tgz#d52476e1f2e66525d918b51f8d5a9b0972bf518e" @@ -2218,6 +3671,19 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/util-defaults-mode-node@^3.0.23": + version "3.0.23" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.23.tgz#d03d21816e8b2f586ccf4a87cd0b1cc55b4d75e0" + integrity sha512-9Y4WH7f0vnDGuHUa4lGX9e2p+sMwODibsceSV6rfkZOvMC+BY3StB2LdO1NHafpsyHJLpwAgChxQ38tFyd6vkg== + dependencies: + "@smithy/config-resolver" "^3.0.9" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/util-endpoints@^2.0.5": version "2.0.5" resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz#e3a7a4d1c41250bfd2b2d890d591273a7d8934be" @@ -2227,6 +3693,15 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/util-endpoints@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.3.tgz#7498151e9dc714bdd0c6339314dd2350fa4d250a" + integrity sha512-34eACeKov6jZdHqS5hxBMJ4KyWKztTMulhuQ2UdOoP6vVxMLrOKUqIXAwJe/wiWMhXhydLW664B02CNpQBQ4Aw== + dependencies: + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/util-hex-encoding@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz#32938b33d5bf2a15796cd3f178a55b4155c535e6" @@ -2242,6 +3717,14 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/util-middleware@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.7.tgz#770d09749b6d170a1641384a2e961487447446fa" + integrity sha512-OVA6fv/3o7TMJTpTgOi1H5OTwnuUa8hzRzhSFDtZyNxi6OZ70L/FHattSmhE212I7b6WSOJAAmbYnvcjTHOJCA== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/util-retry@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.3.tgz#9b2ac0dbb1c81f69812a8affa4d772bebfc0e049" @@ -2251,6 +3734,15 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/util-retry@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.7.tgz#694e0667574ffe9772f620b35d3c7286aced35e9" + integrity sha512-nh1ZO1vTeo2YX1plFPSe/OXaHkLAHza5jpokNiiKX2M5YpNUv6RxGJZhpfmiR4jSvVHCjIDmILjrxKmP+/Ghug== + dependencies: + "@smithy/service-error-classification" "^3.0.7" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@smithy/util-stream@^3.1.3": version "3.1.3" resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.3.tgz#699ee2397cc1d474e46d2034039d5263812dca64" @@ -2265,6 +3757,20 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" +"@smithy/util-stream@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.9.tgz#d39656eae27696bdc5a3ec7c2f6b89c32dccd1ca" + integrity sha512-7YAR0Ub3MwTMjDfjnup4qa6W8gygZMxikBhFMPESi6ASsl/rZJhwLpF/0k9TuezScCojsM0FryGdz4LZtjKPPQ== + dependencies: + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/types" "^3.5.0" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@smithy/util-uri-escape@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz#e43358a78bf45d50bb736770077f0f09195b6f54" @@ -2288,149 +3794,59 @@ "@smithy/util-buffer-from" "^3.0.0" tslib "^2.6.2" -"@smithy/util-waiter@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.2.tgz#2d40c3312f3537feee763459a19acafab4c75cf3" - integrity sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw== +"@smithy/util-waiter@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.6.tgz#c65870d0c802e33b96112fac5c4471b3bf2eeecb" + integrity sha512-xs/KAwWOeCklq8aMlnpk25LgxEYHKOEodfjfKclDMLcBJEVEKzDLxZxBQyztcuPJ7F54213NJS8PxoiHNMdItQ== dependencies: - "@smithy/abort-controller" "^3.1.1" - "@smithy/types" "^3.3.0" + "@smithy/abort-controller" "^3.1.5" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@swc/core-darwin-arm64@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.6.1.tgz#72d861fb7094b7a0004f4f300e2c5d4ea1549d9e" - integrity sha512-u6GdwOXsOEdNAdSI6nWq6G2BQw5HiSNIZVcBaH1iSvBnxZvWbnIKyDiZKaYnDwTLHLzig2GuUjjE2NaCJPy4jg== - -"@swc/core-darwin-x64@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.6.1.tgz#8b7070fcee4a4570d0af245c4614ca4e492dfd5b" - integrity sha512-/tXwQibkDNLVbAtr7PUQI0iQjoB708fjhDDDfJ6WILSBVZ3+qs/LHjJ7jHwumEYxVq1XA7Fv2Q7SE/ZSQoWHcQ== - -"@swc/core-linux-arm-gnueabihf@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.6.1.tgz#bea6d2e75127bbc65a664284f012ffa90c8325d5" - integrity sha512-aDgipxhJTms8iH78emHVutFR2c16LNhO+NTRCdYi+X4PyIn58/DyYTH6VDZ0AeEcS5f132ZFldU5AEgExwihXA== - -"@swc/core-linux-arm64-gnu@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.6.1.tgz#5c84d804ec23cf54b31c0bc0b4bdd30ec5d43ce8" - integrity sha512-XkJ+eO4zUKG5g458RyhmKPyBGxI0FwfWFgpfIj5eDybxYJ6s4HBT5MoxyBLorB5kMlZ0XoY/usUMobPVY3nL0g== - -"@swc/core-linux-arm64-musl@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.6.1.tgz#e167a350bec12caebc97304068c3ffbad6c398ce" - integrity sha512-dr6YbLBg/SsNxs1hDqJhxdcrS8dGMlOXJwXIrUvACiA8jAd6S5BxYCaqsCefLYXtaOmu0bbx1FB/evfodqB70Q== - -"@swc/core-linux-x64-gnu@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.6.1.tgz#fdd4e1d63b3e53d195e2ddcb9cb5ad9f31995796" - integrity sha512-A0b/3V+yFy4LXh3O9umIE7LXPC7NBWdjl6AQYqymSMcMu0EOb1/iygA6s6uWhz9y3e172Hpb9b/CGsuD8Px/bg== - -"@swc/core-linux-x64-musl@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.6.1.tgz#81a312dd9e62da5f4c48e3cd23b6c6d28a31ac42" - integrity sha512-5dJjlzZXhC87nZZZWbpiDP8kBIO0ibis893F/rtPIQBI5poH+iJuA32EU3wN4/WFHeK4et8z6SGSVghPtWyk4g== - -"@swc/core-win32-arm64-msvc@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.6.1.tgz#e131f579a69c5d807013e54ccb311e10caa27bcb" - integrity sha512-HBi1ZlwvfcUibLtT3g/lP57FaDPC799AD6InolB2KSgkqyBbZJ9wAXM8/CcH67GLIP0tZ7FqblrJTzGXxetTJQ== - -"@swc/core-win32-ia32-msvc@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.6.1.tgz#9f3d88cf0e826aa8222a695177a065ed2899eb21" - integrity sha512-AKqHohlWERclexar5y6ux4sQ8yaMejEXNxeKXm7xPhXrp13/1p4/I3E5bPVX/jMnvpm4HpcKSP0ee2WsqmhhPw== - -"@swc/core-win32-x64-msvc@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.6.1.tgz#b2082710bc46c484a2c9f2e33a15973806e5031d" - integrity sha512-0dLdTLd+ONve8kgC5T6VQ2Y5G+OZ7y0ujjapnK66wpvCBM6BKYGdT/OKhZKZydrC5gUKaxFN6Y5oOt9JOFUrOQ== - -"@swc/core@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.6.1.tgz#a899a205cfaa8e23f805451ef4787987e03b8920" - integrity sha512-Yz5uj5hNZpS5brLtBvKY0L4s2tBAbQ4TjmW8xF1EC3YLFxQRrUjMP49Zm1kp/KYyYvTkSaG48Ffj2YWLu9nChw== - dependencies: - "@swc/counter" "^0.1.3" - "@swc/types" "^0.1.8" - optionalDependencies: - "@swc/core-darwin-arm64" "1.6.1" - "@swc/core-darwin-x64" "1.6.1" - "@swc/core-linux-arm-gnueabihf" "1.6.1" - "@swc/core-linux-arm64-gnu" "1.6.1" - "@swc/core-linux-arm64-musl" "1.6.1" - "@swc/core-linux-x64-gnu" "1.6.1" - "@swc/core-linux-x64-musl" "1.6.1" - "@swc/core-win32-arm64-msvc" "1.6.1" - "@swc/core-win32-ia32-msvc" "1.6.1" - "@swc/core-win32-x64-msvc" "1.6.1" - -"@swc/counter@^0.1.3": +"@swc/counter@0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== -"@swc/helpers@0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.2.tgz#85ea0c76450b61ad7d10a37050289eded783c27d" - integrity sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw== +"@swc/helpers@0.5.13": + version "0.5.13" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c" + integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w== dependencies: tslib "^2.4.0" -"@swc/register@0.1.10": - version "0.1.10" - resolved "https://registry.yarnpkg.com/@swc/register/-/register-0.1.10.tgz#74a20b7559669e03479b05e9e5c6d1524d4d92a2" - integrity sha512-6STwH/q4dc3pitXLVkV7sP0Hiy+zBsU2wOF1aXpXR95pnH3RYHKIsDC+gvesfyB7jxNT9OOZgcqOp9RPxVTx9A== - dependencies: - lodash.clonedeep "^4.5.0" - pirates "^4.0.1" - source-map-support "^0.5.13" - -"@swc/types@^0.1.8": - version "0.1.12" - resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.12.tgz#7f632c06ab4092ce0ebd046ed77ff7557442282f" - integrity sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA== +"@tailwindcss/typography@^0.5.13": + version "0.5.15" + resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.15.tgz#007ab9870c86082a1c76e5b3feda9392c7c8d648" + integrity sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA== dependencies: - "@swc/counter" "^0.1.3" + lodash.castarray "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.merge "^4.6.2" + postcss-selector-parser "6.0.10" "@tokenizer/token@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== +"@tufjs/canonical-json@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" + integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== -"@types/body-parser@*": - version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" - integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== +"@tufjs/models@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-2.0.1.tgz#e429714e753b6c2469af3212e7f320a6973c2812" + integrity sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg== dependencies: - "@types/connect" "*" - "@types/node" "*" + "@tufjs/canonical-json" "2.0.0" + minimatch "^9.0.4" -"@types/connect@*": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== +"@types/busboy@1.5.4": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/busboy/-/busboy-1.5.4.tgz#0038c31102ca90f2a7f0d8bc27ee5ebf1088e230" + integrity sha512-kG7WrUuAKK0NoyxfQHsVE6j1m01s6kMma64E+OZenQABMQyTJop1DumUWcLwAQ2JzpefU7PDYoRDKl8uZosFjw== dependencies: "@types/node" "*" @@ -2446,47 +3862,20 @@ resolved "https://registry.yarnpkg.com/@types/escape-html/-/escape-html-1.0.4.tgz#dc7c166b76c7b03b27e32f80edf01d91eb5d9af2" integrity sha512-qZ72SFTgUAZ5a7Tj6kf2SHLetiH5S6f8G5frB2SPQ3EyF02kxdyBFf4Tz4banE3xCgGnKgWLt//a6VuYHKYJTg== -"@types/estree@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - -"@types/express-serve-static-core@^4.17.33": - version "4.19.5" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" - integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@^4.17.9": - version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" - integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== +"@types/eslint@8.44.2": + version "8.44.2" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.2.tgz#0d21c505f98a89b8dd4d37fa162b09da6089199a" + integrity sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg== dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== - -"@types/http-errors@*": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" - integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + "@types/estree" "*" + "@types/json-schema" "*" -"@types/is-hotkey@^0.1.1": - version "0.1.10" - resolved "https://registry.yarnpkg.com/@types/is-hotkey/-/is-hotkey-0.1.10.tgz#cf440fab9bf75ffba4e1a16e8df28938de0778c9" - integrity sha512-RvC8KMw5BCac1NvRRyaHgMMEtBaZ6wh0pyPTBu7izn4Sj/AX9Y4aXU5c7rX8PnM/knsuUpC1IeoBkANtxBypsQ== +"@types/estree@*": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== -"@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -2496,47 +3885,41 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/lodash@^4.14.149", "@types/lodash@^4.17.0": - version "4.17.7" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.7.tgz#2f776bcb53adc9e13b2c0dfd493dfcbd7de43612" - integrity sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA== - -"@types/mime@^1": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" - integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== +"@types/jsonwebtoken@^9.0.6": + version "9.0.7" + resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz#e49b96c2b29356ed462e9708fc73b833014727d2" + integrity sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg== + dependencies: + "@types/node" "*" -"@types/node@*": +"@types/node@*", "@types/node@22.5.4": version "22.5.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.4.tgz#83f7d1f65bc2ed223bdbf57c7884f1d5a4fa84e8" integrity sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg== dependencies: undici-types "~6.19.2" -"@types/node@18.11.3": - version "18.11.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.3.tgz#78a6d7ec962b596fc2d2ec102c4dd3ef073fea6a" - integrity sha512-fNjDQzzOsZeKZu5NATgXUPsaFaTxeRgFXoosrHivTl8RGeV733OLawXsGfEk9a8/tySyZUyiZ6E8LcjPFZ2y1A== - "@types/parse-json@^4.0.0": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== +"@types/prismjs@^1.26.0": + version "1.26.4" + resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.4.tgz#1a9e1074619ce1d7322669e5b46fbe823925103a" + integrity sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg== + "@types/prop-types@*": version "15.7.12" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== -"@types/qs@*", "@types/qs@^6.9.8": - version "6.9.15" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" - integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== - -"@types/range-parser@*": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" - integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== +"@types/react-dom@npm:types-react-dom@19.0.0-rc.1": + version "19.0.0-rc.1" + resolved "https://registry.yarnpkg.com/types-react-dom/-/types-react-dom-19.0.0-rc.1.tgz#1d544d02c5df2a82d87c2eff979afa2e21a8317a" + integrity sha512-VSLZJl8VXCD0fAWp7DUTFUDCcZ8DVXOQmjhJMD03odgeFmu14ZQJHCXeETm3BEAhJqfgJaFkLnGkQv88sRx0fQ== + dependencies: + "@types/react" "*" "@types/react-transition-group@^4.4.0": version "4.4.11" @@ -2553,47 +3936,28 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/react@18.0.21": - version "18.0.21" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.21.tgz#b8209e9626bb00a34c76f55482697edd2b43cc67" - integrity sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA== +"@types/react@npm:types-react@19.0.0-rc.1": + version "19.0.0-rc.1" + resolved "https://registry.yarnpkg.com/types-react/-/types-react-19.0.0-rc.1.tgz#576d1a702f6d0cc5b24813a293913e5cbfeaa647" + integrity sha512-RshndUfqTW6K3STLPis8BtAYCGOkMbtvYsi90gmVNDZBXUyUc5juf2PE9LfS/JmOlUIRO8cWTS/1MTnmhjDqyQ== dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" csstype "^3.0.2" -"@types/scheduler@*": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.23.0.tgz#0a6655b3e2708eaabca00b7372fafd7a792a7b09" - integrity sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw== - -"@types/semver@^7.3.12": +"@types/semver@^7.3.12", "@types/semver@^7.5.0": version "7.5.8" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== -"@types/send@*": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" - integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-static@*": - version "1.15.7" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" - integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== - dependencies: - "@types/http-errors" "*" - "@types/node" "*" - "@types/send" "*" - "@types/trusted-types@*": version "2.0.7" resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== +"@types/uuid@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d" + integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ== + "@types/webidl-conversions@*": version "7.0.3" resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz#1306dbfa53768bcbcfc95a1c8cde367975581859" @@ -2607,30 +3971,58 @@ "@types/node" "*" "@types/webidl-conversions" "*" -"@typescript-eslint/eslint-plugin@^5.51.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" - integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== +"@typescript-eslint/eslint-plugin@6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.6.0.tgz#19ba09aa34fd504696445100262e5a9e1b1d7024" + integrity sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA== dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/type-utils" "5.62.0" - "@typescript-eslint/utils" "5.62.0" + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.6.0" + "@typescript-eslint/type-utils" "6.6.0" + "@typescript-eslint/utils" "6.6.0" + "@typescript-eslint/visitor-keys" "6.6.0" debug "^4.3.4" graphemer "^1.4.0" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": + version "8.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.1.tgz#9364b756d4d78bcbdf6fd3e9345e6924c68ad371" + integrity sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.8.1" + "@typescript-eslint/type-utils" "8.8.1" + "@typescript-eslint/utils" "8.8.1" + "@typescript-eslint/visitor-keys" "8.8.1" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^5.51.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" - integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== +"@typescript-eslint/parser@6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.6.0.tgz#fe323a7b4eafb6d5ea82b96216561810394a739e" + integrity sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w== dependencies: - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/scope-manager" "6.6.0" + "@typescript-eslint/types" "6.6.0" + "@typescript-eslint/typescript-estree" "6.6.0" + "@typescript-eslint/visitor-keys" "6.6.0" + debug "^4.3.4" + +"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": + version "8.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.8.1.tgz#5952ba2a83bd52024b872f3fdc8ed2d3636073b8" + integrity sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow== + dependencies: + "@typescript-eslint/scope-manager" "8.8.1" + "@typescript-eslint/types" "8.8.1" + "@typescript-eslint/typescript-estree" "8.8.1" + "@typescript-eslint/visitor-keys" "8.8.1" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -2641,21 +4033,70 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/type-utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" - integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== +"@typescript-eslint/scope-manager@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" + integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + +"@typescript-eslint/scope-manager@6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.6.0.tgz#57105d4419d6de971f7d2c30a2ff4ac40003f61a" + integrity sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw== + dependencies: + "@typescript-eslint/types" "6.6.0" + "@typescript-eslint/visitor-keys" "6.6.0" + +"@typescript-eslint/scope-manager@8.8.1": + version "8.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.8.1.tgz#b4bea1c0785aaebfe3c4ab059edaea1c4977e7ff" + integrity sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA== + dependencies: + "@typescript-eslint/types" "8.8.1" + "@typescript-eslint/visitor-keys" "8.8.1" + +"@typescript-eslint/type-utils@6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.6.0.tgz#14f651d13b884915c4fca0d27adeb652a4499e86" + integrity sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg== + dependencies: + "@typescript-eslint/typescript-estree" "6.6.0" + "@typescript-eslint/utils" "6.6.0" debug "^4.3.4" - tsutils "^3.21.0" + ts-api-utils "^1.0.1" + +"@typescript-eslint/type-utils@8.8.1": + version "8.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.8.1.tgz#31f59ec46e93a02b409fb4d406a368a59fad306e" + integrity sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA== + dependencies: + "@typescript-eslint/typescript-estree" "8.8.1" + "@typescript-eslint/utils" "8.8.1" + debug "^4.3.4" + ts-api-utils "^1.3.0" "@typescript-eslint/types@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== +"@typescript-eslint/types@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" + integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== + +"@typescript-eslint/types@6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.6.0.tgz#95e7ea650a2b28bc5af5ea8907114a48f54618c2" + integrity sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg== + +"@typescript-eslint/types@8.8.1": + version "8.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.8.1.tgz#ebe85e0fa4a8e32a24a56adadf060103bef13bd1" + integrity sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q== + "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" @@ -2669,7 +4110,71 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.62.0": +"@typescript-eslint/typescript-estree@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" + integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/typescript-estree@6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.6.0.tgz#373c420d2e12c28220f4a83352280a04823a91b7" + integrity sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA== + dependencies: + "@typescript-eslint/types" "6.6.0" + "@typescript-eslint/visitor-keys" "6.6.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/typescript-estree@8.8.1": + version "8.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.1.tgz#34649f4e28d32ee49152193bc7dedc0e78e5d1ec" + integrity sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg== + dependencies: + "@typescript-eslint/types" "8.8.1" + "@typescript-eslint/visitor-keys" "8.8.1" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/utils@6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.6.0.tgz#2d686c0f0786da6362d909e27a9de1c13ba2e7dc" + integrity sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.6.0" + "@typescript-eslint/types" "6.6.0" + "@typescript-eslint/typescript-estree" "6.6.0" + semver "^7.5.4" + +"@typescript-eslint/utils@8.8.1": + version "8.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.8.1.tgz#9e29480fbfa264c26946253daa72181f9f053c9d" + integrity sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.8.1" + "@typescript-eslint/types" "8.8.1" + "@typescript-eslint/typescript-estree" "8.8.1" + +"@typescript-eslint/utils@^5.10.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== @@ -2683,6 +4188,19 @@ eslint-scope "^5.1.1" semver "^7.3.7" +"@typescript-eslint/utils@^6.6.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" + integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + semver "^7.5.4" + "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" @@ -2691,158 +4209,44 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" + integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== + dependencies: + "@typescript-eslint/types" "6.21.0" + eslint-visitor-keys "^3.4.1" + +"@typescript-eslint/visitor-keys@6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.6.0.tgz#1109088b4346c8b2446f3845db526374d9a3bafc" + integrity sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ== + dependencies: + "@typescript-eslint/types" "6.6.0" + eslint-visitor-keys "^3.4.1" + +"@typescript-eslint/visitor-keys@8.8.1": + version "8.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.1.tgz#0fb1280f381149fc345dfde29f7542ff4e587fc5" + integrity sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag== + dependencies: + "@typescript-eslint/types" "8.8.1" + eslint-visitor-keys "^3.4.3" + "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" - integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - -"@webassemblyjs/helper-buffer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" - integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== - -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== - -"@webassemblyjs/helper-wasm-section@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" - integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.12.1" - -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" - integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-opt" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - "@webassemblyjs/wast-printer" "1.12.1" - -"@webassemblyjs/wasm-gen@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" - integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" - integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" - integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" - integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@xtuc/long" "4.2.2" - -"@webpack-cli/configtest@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" - integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== - -"@webpack-cli/info@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" - integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== - dependencies: - envinfo "^7.7.3" - -"@webpack-cli/serve@^1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" - integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +abbrev@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-3.0.0.tgz#c29a6337e167ac61a84b41b80461b29c5c271a27" + integrity sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA== abort-controller@^3.0.0: version "3.0.0" @@ -2851,73 +4255,42 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" -accepts@~1.3.5, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-import-attributes@^1.9.5: - version "1.9.5" - resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" - integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.0.0, acorn-walk@^8.1.1: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" - -acorn@^8.0.4, acorn@^8.11.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.9.0: version "8.12.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== -agent-base@^7.0.2, agent-base@^7.1.0: +agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== dependencies: debug "^4.3.4" -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: - fast-deep-equal "^3.1.3" + clean-stack "^2.0.0" + indent-string "^4.0.0" -ajv@8.14.0: - version "8.14.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.14.0.tgz#f514ddfd4756abb200e1704414963620a625ebbb" - integrity sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA== +ajv@8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== dependencies: fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" - uri-js "^4.4.1" -ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2927,16 +4300,6 @@ ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.6.3, ajv@^8.9.0: - version "8.17.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" - integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== - dependencies: - fast-deep-equal "^3.1.3" - fast-uri "^3.0.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - amazon-cognito-identity-js@^6.1.2: version "6.3.12" resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.12.tgz#af73df033094ad4c679c19cf6122b90058021619" @@ -2948,11 +4311,6 @@ amazon-cognito-identity-js@^6.1.2: isomorphic-unfetch "^3.0.0" js-cookie "^2.2.1" -ansi-html-community@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -2995,16 +4353,45 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== +aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +archy@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-hidden@^1.1.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.4.tgz#b78e383fdbc04d05762c78b4a25a501e736c4522" + integrity sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A== + dependencies: + tslib "^2.0.0" + +aria-query@^5.1.3: + version "5.3.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" + integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== + +aria-query@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" @@ -3013,12 +4400,7 @@ array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: call-bind "^1.0.5" is-array-buffer "^3.0.4" -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-includes@^3.1.4: +array-includes@^3.1.6, array-includes@^3.1.8: version "3.1.8" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== @@ -3035,7 +4417,31 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.flat@^1.2.5: +array.prototype.findlast@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" + integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.findlastindex@^1.2.2, array.prototype.findlastindex@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" + integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== @@ -3045,6 +4451,27 @@ array.prototype.flat@^1.2.5: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" +array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.1, array.prototype.tosorted@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" + integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + es-errors "^1.3.0" + es-shim-unscopables "^1.0.2" + arraybuffer.prototype.slice@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" @@ -3059,6 +4486,16 @@ arraybuffer.prototype.slice@^1.0.3: is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== + +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -3069,12 +4506,7 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== -atomically@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/atomically/-/atomically-1.7.0.tgz#c07a0458432ea6dbc9a3506fffa424b48bccaafe" - integrity sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w== - -autoprefixer@^10.4.14: +autoprefixer@^10.4.19: version "10.4.20" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== @@ -3093,6 +4525,30 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +axe-core@^4.10.0, axe-core@^4.6.2: + version "4.10.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.0.tgz#d9e56ab0147278272739a000880196cdfe113b59" + integrity sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g== + +axios@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" + integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +axobject-query@^3.1.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.4.tgz#6dfba930294ea14d7d2fc68b9d007211baedb94c" + integrity sha512-aPTElBrbifBU1krmZxGZOlBkslORe7Ll7+BDnI50Wy4LgOt69luMgevkDfTq1O/ZgprooPCtWpjCwKSZw/iZ4A== + +axobject-query@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.1.0.tgz#28768c76d0e3cff21bc62a9e2d0b6ac30042a1ee" + integrity sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ== + b4a@^1.6.4, b4a@^1.6.6: version "1.6.6" resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.6.tgz#a4cc349a3851987c3c4ac2d7785c18744f6da9ba" @@ -3151,12 +4607,18 @@ base64-js@^1.0.2, base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bin-links@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-5.0.0.tgz#2b0605b62dd5e1ddab3b92a3c4e24221cae06cca" + integrity sha512-sdleLVfCjBtgO5cNjA2HVRvWBJAHs4zwenaCPMNJAJU0yNxpzj80IpjOIimkpkr+mhlA+how5poQtt53PygbHA== + dependencies: + cmd-shim "^7.0.0" + npm-normalize-package-bin "^4.0.0" + proc-log "^5.0.0" + read-cmd-shim "^5.0.0" + write-file-atomic "^6.0.0" -binary-extensions@^2.0.0: +binary-extensions@^2.0.0, binary-extensions@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== @@ -3170,57 +4632,11 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - body-scroll-lock@4.0.0-beta.0: version "4.0.0-beta.0" resolved "https://registry.yarnpkg.com/body-scroll-lock/-/body-scroll-lock-4.0.0-beta.0.tgz#4f78789d10e6388115c0460cd6d7d4dd2bbc4f7e" integrity sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ== -body-scroll-lock@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz#c1392d9217ed2c3e237fee1e910f6cdd80b7aaec" - integrity sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg== - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - bowser@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" @@ -3248,7 +4664,7 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.21.10, browserslist@^4.21.9, browserslist@^4.23.3: +browserslist@^4.23.3: version "4.23.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== @@ -3275,11 +4691,6 @@ buffer-equal-constant-time@1.0.1: resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - buffer@4.9.2: version "4.9.2" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" @@ -3320,15 +4731,41 @@ busboy@1.6.0, busboy@^1.6.0: dependencies: streamsearch "^1.1.0" -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +cacache@^18.0.0: + version "18.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.4.tgz#4601d7578dadb59c66044e157d02a3314682d6a5" + integrity sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^10.0.1" + minipass "^7.0.3" + minipass-collect "^2.0.1" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + +cacache@^19.0.0, cacache@^19.0.1: + version "19.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-19.0.1.tgz#3370cc28a758434c85c2585008bd5bdcff17d6cd" + integrity sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ== + dependencies: + "@npmcli/fs" "^4.0.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^10.0.1" + minipass "^7.0.3" + minipass-collect "^2.0.1" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^7.0.2" + ssri "^12.0.0" + tar "^7.4.3" + unique-filename "^4.0.0" call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" @@ -3346,15 +4783,17 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +caniuse-lite@^1.0.30001579: + version "1.0.30001667" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz#99fc5ea0d9c6e96897a104a8352604378377f949" + integrity sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw== -caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001646: +caniuse-lite@^1.0.30001646: version "1.0.30001659" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001659.tgz#f370c311ffbc19c4965d8ec0064a3625c8aaa7af" integrity sha512-Qxxyfv3RdHAfJcXelgf0hU4DFUVXBGTjqrBUZLUh8AtlGnsDo+CnncYtTd95+ZKfnANUOzxyIQCuU/UeBZBYoA== @@ -3376,12 +4815,17 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + charenc@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -3401,33 +4845,52 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -chrome-trace-event@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" - integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chownr@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4" + integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g== + +ci-info@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.0.0.tgz#65466f8b280fc019b9f50a5388115d17a63a44f2" + integrity sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg== -classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2: +cidr-regex@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-4.1.1.tgz#acbe7ba9f10d658710bddd25baa900509e90125a" + integrity sha512-ekKcVp+iRB9zlKFXyx7io7nINgb0oRjgRdXNEodp1OuxRui8FXr/CA40Tz1voWUp9DPPrMyQKy01vJhDo4N1lw== + dependencies: + ip-regex "^5.0.0" + +class-variance-authority@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/class-variance-authority/-/class-variance-authority-0.7.0.tgz#1c3134d634d80271b1837452b06d821915954522" + integrity sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A== + dependencies: + clsx "2.0.0" + +classnames@^2.2.5, classnames@^2.3.1, classnames@^2.3.2: version "2.5.1" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== -clean-css@^5.2.2: - version "5.3.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" - integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== - dependencies: - source-map "~0.6.0" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-color@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.4.tgz#d658080290968816b322248b7306fad2346fb2c8" - integrity sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA== +cli-columns@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-4.0.0.tgz#9fe4d65975238d55218c41bd2ed296a7fa555646" + integrity sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ== dependencies: - d "^1.0.1" - es5-ext "^0.10.64" - es6-iterator "^2.0.3" - memoizee "^0.4.15" - timers-ext "^0.1.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" client-only@0.0.1: version "0.0.1" @@ -3443,20 +4906,21 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" +clsx@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" + integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== -clsx@^2.1.0, clsx@^2.1.1: +clsx@^2.0.0, clsx@^2.1.0, clsx@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== +cmd-shim@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-7.0.0.tgz#23bcbf69fff52172f7e7c02374e18fb215826d95" + integrity sha512-rtpaCbr164TPPh+zFdkWpCyZuKkjpAzODfaZCf/SVJZzJN+4bHQb/LP3Jzq5/+84um3XXY8r548XiWKSborwVw== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -3497,7 +4961,7 @@ color@^4.2.3: color-convert "^2.0.1" color-string "^1.9.0" -colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.7: +colorette@^2.0.7: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -3509,71 +4973,52 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@^2.20.0, commander@^2.20.3: +commander@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^7.0.0, commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -compression@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" +comment-parser@^1.1.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.4.1.tgz#bdafead37961ac079be11eb7ec65c4d021eaf9cc" + integrity sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg== -compute-scroll-into-view@^1.0.20: - version "1.0.20" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz#1768b5522d1172754f5d0c9b02de3af6be506a43" - integrity sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg== +common-ancestor-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -conf@10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/conf/-/conf-10.2.0.tgz#838e757be963f1a2386dfe048a98f8f69f7b55d6" - integrity sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg== - dependencies: - ajv "^8.6.3" - ajv-formats "^2.1.1" - atomically "^1.7.0" - debounce-fn "^4.0.0" - dot-prop "^6.0.1" - env-paths "^2.2.1" - json-schema-typed "^7.0.3" - onetime "^5.1.2" - pkg-up "^3.1.0" - semver "^7.3.5" +condense-newlines@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" + integrity sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg== + dependencies: + extend-shallow "^2.0.1" + is-whitespace "^0.3.0" + kind-of "^3.0.2" -connect-history-api-fallback@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== +config-chain@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" console-table-printer@2.11.2: version "2.11.2" @@ -3582,38 +5027,11 @@ console-table-printer@2.11.2: dependencies: simple-wcswidth "^1.0.1" -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - convert-source-map@^1.5.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== - copyfiles@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" @@ -3643,11 +5061,6 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - cross-env@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" @@ -3655,7 +5068,7 @@ cross-env@^7.0.3: dependencies: cross-spawn "^7.0.1" -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -3669,64 +5082,6 @@ crypt@0.0.2: resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== -css-blank-pseudo@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-6.0.2.tgz#50db072d4fb5b40c2df9ffe5ca5fbb9b19c77fc8" - integrity sha512-J/6m+lsqpKPqWHOifAFtKFeGLOzw3jR92rxQcwRUfA/eTuZzKfKlxOmYDx2+tqOPQAueNvBiY8WhAeHu5qNmTg== - dependencies: - postcss-selector-parser "^6.0.13" - -css-has-pseudo@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-6.0.5.tgz#372e7293ef9bb901ec0bdce85a6fc1365012fa2c" - integrity sha512-ZTv6RlvJJZKp32jPYnAJVhowDCrRrHUTAxsYSuUPBEDJjzws6neMnzkRblxtgmv1RgcV5dhH2gn7E3wA9Wt6lw== - dependencies: - "@csstools/selector-specificity" "^3.1.1" - postcss-selector-parser "^6.0.13" - postcss-value-parser "^4.2.0" - -css-loader@5.2.7: - version "5.2.7" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae" - integrity sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg== - dependencies: - icss-utils "^5.1.0" - loader-utils "^2.0.0" - postcss "^8.2.15" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.1.0" - schema-utils "^3.0.0" - semver "^7.3.5" - -css-prefers-color-scheme@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-9.0.1.tgz#30fcb94cc38b639b66fb99e1882ffd97f741feaa" - integrity sha512-iFit06ochwCKPRiWagbTa1OAWCvWWVdEnIFd8BaRrgO8YrrNh4RAWUQTFcYX5tdFZgFl1DJ3iiULchZyEbnF4g== - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -cssdb@^7.6.0: - version "7.11.2" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.11.2.tgz#127a2f5b946ee653361a5af5333ea85a39df5ae5" - integrity sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A== - cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -3737,7 +5092,7 @@ cssfilter@0.0.10: resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== -cssstyle@^4.0.1: +cssstyle@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-4.1.0.tgz#161faee382af1bafadb6d3867a92a19bcb4aea70" integrity sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA== @@ -3749,18 +5104,10 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -d@1, d@^1.0.1, d@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" - integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== - dependencies: - es5-ext "^0.10.64" - type "^2.7.2" - -data-uri-to-buffer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" - integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== data-urls@^5.0.0: version "5.0.0" @@ -3802,52 +5149,36 @@ dataloader@2.2.2: resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0" integrity sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g== -date-fns@2.30.0, date-fns@^2.30.0: - version "2.30.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" - integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== - dependencies: - "@babel/runtime" "^7.21.0" +date-fns@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.3.1.tgz#7581daca0892d139736697717a168afbb908cfed" + integrity sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw== + +date-fns@^3.3.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.6.0.tgz#f20ca4fe94f8b754951b24240676e8618c0206bf" + integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww== dateformat@^4.6.3: version "4.6.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== -debounce-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-4.0.0.tgz#ed76d206d8a50e60de0dd66d494d82835ffe61c7" - integrity sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ== +debug@4, debug@4.x, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== dependencies: - mimic-fn "^3.0.0" - -debounce@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + ms "^2.1.3" -debug@2, debug@2.6.9, debug@^2.1.3, debug@^2.6.9: +debug@^2.1.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@4, debug@4.x, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" - integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== - dependencies: - ms "^2.1.3" - -debug@^3.2.6, debug@^3.2.7: +debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -3866,31 +5197,7 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" -deep-equal@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.2.tgz#9b2635da569a13ba8e1cc159c2f744071b115daa" - integrity sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - es-get-iterator "^1.1.3" - get-intrinsic "^1.2.1" - is-arguments "^1.1.1" - is-array-buffer "^3.0.2" - is-date-object "^1.0.5" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - isarray "^2.0.5" - object-is "^1.1.5" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" - side-channel "^1.0.4" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" - -deep-equal@2.2.3: +deep-equal@^2.0.5: version "2.2.3" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== @@ -3924,7 +5231,7 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@4.3.1, deepmerge@^4.0.0: +deepmerge@4.3.1, deepmerge@^4.2.2: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -3938,7 +5245,7 @@ define-data-property@^1.0.1, define-data-property@^1.1.4: es-errors "^1.3.0" gopd "^1.0.1" -define-properties@^1.2.0, define-properties@^1.2.1: +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -3952,30 +5259,25 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q== +dequal@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== -detect-libc@^2.0.0, detect-libc@^2.0.2: +detect-libc@^2.0.0, detect-libc@^2.0.2, detect-libc@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +detect-node-es@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" + integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== diff@^5.1.0: version "5.2.0" @@ -3989,10 +5291,10 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -direction@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/direction/-/direction-1.0.4.tgz#2b86fb686967e987088caf8b89059370d4837442" - integrity sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ== +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== doctrine@^2.1.0: version "2.1.0" @@ -4008,13 +5310,6 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - dom-helpers@^5.0.1: version "5.2.1" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" @@ -4023,65 +5318,40 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -dompurify@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.1.6.tgz#43c714a94c6a7b8801850f82e756685300a027e2" - integrity sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ== - -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: - no-case "^3.0.4" - tslib "^2.0.3" + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: - is-obj "^2.0.0" + domelementtype "^2.3.0" -dotenv@8.6.0, dotenv@^8.2.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" - integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== +dompurify@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.1.7.tgz#711a8c96479fb6ced93453732c160c3c72418a6a" + integrity sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ== -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" eastasianwidth@^0.2.0: version "0.2.0" @@ -4095,10 +5365,15 @@ ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer "^5.0.1" -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== +editorconfig@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-1.0.4.tgz#040c9a8e9a6c5288388b87c2db07028aa89f53a3" + integrity sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q== + dependencies: + "@one-ini/wasm" "0.1.1" + commander "^10.0.0" + minimatch "9.0.1" + semver "^7.5.3" electron-to-chromium@^1.5.4: version "1.5.18" @@ -4115,15 +5390,12 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" @@ -4132,7 +5404,7 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enhanced-resolve@^5.17.1: +enhanced-resolve@^5.15.0: version "5.17.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== @@ -4140,25 +5412,20 @@ enhanced-resolve@^5.17.1: graceful-fs "^4.2.4" tapable "^2.2.0" -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^4.4.0: +entities@^4.2.0, entities@^4.4.0: version "4.5.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== -env-paths@^2.2.1: +env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -envinfo@^7.7.3: - version "7.13.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" - integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== error-ex@^1.3.1: version "1.3.2" @@ -4167,7 +5434,7 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: +es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: version "1.23.3" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== @@ -4246,10 +5513,25 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" -es-module-lexer@^1.2.1: - version "1.5.4" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78" - integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== +es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.19: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz#f6d745d342aea214fe09497e7152170dc333a7a6" + integrity sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.3" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + globalthis "^1.0.4" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + internal-slot "^1.0.7" + iterator.prototype "^1.1.3" + safe-array-concat "^1.1.2" es-object-atoms@^1.0.0: version "1.0.0" @@ -4267,7 +5549,7 @@ es-set-tostringtag@^2.0.3: has-tostringtag "^1.0.2" hasown "^2.0.1" -es-shim-unscopables@^1.0.0: +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== @@ -4283,49 +5565,42 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14, es5-ext@~0.10.2: - version "0.10.64" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" - integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - esniff "^2.0.1" - next-tick "^1.1.0" - -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" - integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== - dependencies: - d "^1.0.2" - ext "^1.7.0" - -es6-weak-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" +esbuild@~0.23.0: + version "0.23.1" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8" + integrity sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.23.1" + "@esbuild/android-arm" "0.23.1" + "@esbuild/android-arm64" "0.23.1" + "@esbuild/android-x64" "0.23.1" + "@esbuild/darwin-arm64" "0.23.1" + "@esbuild/darwin-x64" "0.23.1" + "@esbuild/freebsd-arm64" "0.23.1" + "@esbuild/freebsd-x64" "0.23.1" + "@esbuild/linux-arm" "0.23.1" + "@esbuild/linux-arm64" "0.23.1" + "@esbuild/linux-ia32" "0.23.1" + "@esbuild/linux-loong64" "0.23.1" + "@esbuild/linux-mips64el" "0.23.1" + "@esbuild/linux-ppc64" "0.23.1" + "@esbuild/linux-riscv64" "0.23.1" + "@esbuild/linux-s390x" "0.23.1" + "@esbuild/linux-x64" "0.23.1" + "@esbuild/netbsd-x64" "0.23.1" + "@esbuild/openbsd-arm64" "0.23.1" + "@esbuild/openbsd-x64" "0.23.1" + "@esbuild/sunos-x64" "0.23.1" + "@esbuild/win32-arm64" "0.23.1" + "@esbuild/win32-ia32" "0.23.1" + "@esbuild/win32-x64" "0.23.1" escalade@^3.1.1, escalade@^3.1.2: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== -escape-html@^1.0.3, escape-html@~1.0.3: +escape-html@1.0.3, escape-html@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== @@ -4340,17 +5615,28 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-prettier@^8.5.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" - integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== +eslint-config-next@15.0.0-canary.173: + version "15.0.0-canary.173" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-15.0.0-canary.173.tgz#a0b728d04734b570b808f36b402e1fc8a8ca605e" + integrity sha512-/P3bxedUm1VqdwAq7/1jtOH/V4ii3HTGzsNFBvbaDU+ZcMQ3XOILOn1KmJJCRJiO1vg6wnTvFseQfwZgb1pP2w== + dependencies: + "@next/eslint-plugin-next" "15.0.0-canary.173" + "@rushstack/eslint-patch" "^1.3.3" + "@typescript-eslint/eslint-plugin" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" + eslint-import-resolver-node "^0.3.6" + eslint-import-resolver-typescript "^3.5.2" + eslint-plugin-import "^2.28.1" + eslint-plugin-jsx-a11y "^6.7.1" + eslint-plugin-react "^7.33.2" + eslint-plugin-react-hooks "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" -eslint-import-resolver-alias@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-alias/-/eslint-import-resolver-alias-1.1.2.tgz#297062890e31e4d6651eb5eba9534e1f6e68fc97" - integrity sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w== +eslint-config-prettier@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" + integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== -eslint-import-resolver-node@^0.3.6: +eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.7, eslint-import-resolver-node@^0.3.9: version "0.3.9" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== @@ -4359,60 +5645,239 @@ eslint-import-resolver-node@^0.3.6: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-module-utils@^2.7.2: - version "2.11.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz#b99b211ca4318243f09661fae088f373ad5243c4" - integrity sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ== +eslint-import-resolver-typescript@^3.5.2: + version "3.6.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz#bb8e388f6afc0f940ce5d2c5fd4a3d147f038d9e" + integrity sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA== + dependencies: + "@nolyfill/is-core-module" "1.0.39" + debug "^4.3.5" + enhanced-resolve "^5.15.0" + eslint-module-utils "^2.8.1" + fast-glob "^3.3.2" + get-tsconfig "^4.7.5" + is-bun-module "^1.0.2" + is-glob "^4.0.3" + +eslint-module-utils@^2.12.0, eslint-module-utils@^2.8.0, eslint-module-utils@^2.8.1: + version "2.12.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" + integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== dependencies: debug "^3.2.7" -eslint-plugin-filenames@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-filenames/-/eslint-plugin-filenames-1.3.2.tgz#7094f00d7aefdd6999e3ac19f72cea058e590cf7" - integrity sha512-tqxJTiEM5a0JmRCUYQmxw23vtTxrb2+a3Q2mMOPhFxvt7ZQQJmdiuMby9B/vUAuVMghyP7oET+nIf6EO6CBd/w== - dependencies: - lodash.camelcase "4.3.0" - lodash.kebabcase "4.1.1" - lodash.snakecase "4.1.1" - lodash.upperfirst "4.3.1" - -eslint-plugin-import@2.25.4: - version "2.25.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" - integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@2.28.1: + version "2.28.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" + integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== + dependencies: + array-includes "^3.1.6" + array.prototype.findlastindex "^1.2.2" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.2" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.8.0" has "^1.0.3" - is-core-module "^2.8.0" + is-core-module "^2.13.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.6" + object.groupby "^1.0.0" + object.values "^1.1.6" + semver "^6.3.1" + tsconfig-paths "^3.14.2" + +eslint-plugin-import@^2.28.1: + version "2.31.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== + dependencies: + "@rtsao/scc" "^1.1.0" + array-includes "^3.1.8" + array.prototype.findlastindex "^1.2.5" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.12.0" + hasown "^2.0.2" + is-core-module "^2.15.1" is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.8" + object.groupby "^1.0.3" + object.values "^1.2.0" + semver "^6.3.1" + string.prototype.trimend "^1.0.8" + tsconfig-paths "^3.15.0" + +eslint-plugin-jest-dom@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-5.1.0.tgz#b285cd1cc71c084c8ee897f0f85599758d7cb933" + integrity sha512-JIXZp+E/h/aGlP/rQc4tuOejiHlZXg65qw8JAJMIJA5VsdjOkss/SYcRSqBrQuEOytEM8JvngUjcz31d1RrCrA== + dependencies: + "@babel/runtime" "^7.16.3" + requireindex "^1.2.0" + +eslint-plugin-jest@27.2.3: + version "27.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.2.3.tgz#6f8a4bb2ca82c0c5d481d1b3be256ab001f5a3ec" + integrity sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ== + dependencies: + "@typescript-eslint/utils" "^5.10.0" + +eslint-plugin-jsx-a11y@6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" + integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== + dependencies: + "@babel/runtime" "^7.20.7" + aria-query "^5.1.3" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + ast-types-flow "^0.0.7" + axe-core "^4.6.2" + axobject-query "^3.1.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.3.3" + language-tags "=1.0.5" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + semver "^6.3.0" + +eslint-plugin-jsx-a11y@^6.7.1: + version "6.10.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz#36fb9dead91cafd085ddbe3829602fb10ef28339" + integrity sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg== + dependencies: + aria-query "~5.1.3" + array-includes "^3.1.8" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "^4.10.0" + axobject-query "^4.1.0" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + es-iterator-helpers "^1.0.19" + hasown "^2.0.2" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" + minimatch "^3.1.2" + object.fromentries "^2.0.8" + safe-regex-test "^1.0.3" + string.prototype.includes "^2.0.0" + +eslint-plugin-node@11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" minimatch "^3.0.4" - object.values "^1.1.5" - resolve "^1.20.0" - tsconfig-paths "^3.12.0" + resolve "^1.10.1" + semver "^6.1.0" -eslint-plugin-prettier@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== +eslint-plugin-perfectionist@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-2.0.0.tgz#0f85308f537a0e1f40b672fc16fa5896c0f1f2f4" + integrity sha512-VqUk5WR7Dj8L0gNPqn7bl7NTHFYB8l5um4wo7hkMp0Dl+k8RHDAsOef4pPrty6G8vjnzvb3xIZNNshmDJI8SdA== dependencies: - prettier-linter-helpers "^1.0.0" + "@typescript-eslint/utils" "^6.6.0" + minimatch "^9.0.3" + natural-compare-lite "^1.4.0" -eslint-plugin-react-hooks@^4.6.0: +eslint-plugin-playwright@0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-playwright/-/eslint-plugin-playwright-0.16.0.tgz#083c601a0704a7615509e63ac475bf7f0052d226" + integrity sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw== + +eslint-plugin-react-hooks@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +"eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": version "4.6.2" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== -eslint-plugin-simple-import-sort@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz#cc4ceaa81ba73252427062705b64321946f61351" - integrity sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw== +eslint-plugin-react@7.33.2: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" + +eslint-plugin-react@^7.33.2: + version "7.37.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz#56493d7d69174d0d828bc83afeffe96903fdadbd" + integrity sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg== + dependencies: + array-includes "^3.1.8" + array.prototype.findlast "^1.2.5" + array.prototype.flatmap "^1.3.2" + array.prototype.tosorted "^1.1.4" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.19" + estraverse "^5.3.0" + hasown "^2.0.2" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.8" + object.fromentries "^2.0.8" + object.values "^1.2.0" + prop-types "^15.8.1" + resolve "^2.0.0-next.5" + semver "^6.3.1" + string.prototype.matchall "^4.0.11" + string.prototype.repeat "^1.0.0" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-plugin-regexp@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-regexp/-/eslint-plugin-regexp-1.15.0.tgz#2717cd4867418287b36d9569c72fca7d242c59b3" + integrity sha512-YEtQPfdudafU7RBIFci81R/Q1yErm0mVh3BkGnXD2Dk8DLwTFdc2ITYH1wCnHKim2gnHfPFgrkh+b2ozyyU7ag== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + comment-parser "^1.1.2" + grapheme-splitter "^1.0.4" + jsdoctypeparser "^9.0.0" + refa "^0.11.0" + regexp-ast-analysis "^0.6.0" + scslre "^0.2.0" + +eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -4428,24 +5893,35 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.19.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== +eslint@8.48.0: + version "8.48.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155" + integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.48.0" + "@humanwhocodes/config-array" "^0.11.10" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -4477,15 +5953,49 @@ eslint@^8.19.0: strip-ansi "^6.0.1" text-table "^0.2.0" -esniff@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" - integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== +eslint@^8: + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== dependencies: - d "^1.0.1" - es5-ext "^0.10.62" - event-emitter "^0.3.5" - type "^2.7.2" + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" espree@^9.6.0, espree@^9.6.1: version "9.6.1" @@ -4515,7 +6025,7 @@ estraverse@^4.1.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0, estraverse@^5.2.0: +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -4525,25 +6035,12 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== - dependencies: - d "1" - es5-ext "~0.10.14" - event-target-shim@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -events@3.3.0, events@^3.2.0, events@^3.3.0: +events@3.3.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -4553,112 +6050,24 @@ expand-template@^2.0.3: resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== - dependencies: - homedir-polyfill "^1.0.1" +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== -express-fileupload@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/express-fileupload/-/express-fileupload-1.4.0.tgz#be9d70a881d6c2b1ce668df86e4f89ddbf238ec7" - integrity sha512-RjzLCHxkv3umDeZKeFeMg8w7qe0V09w3B7oGZprr/oO2H/ISCgNzuqzn7gV3HRWb37GjRk429CCpSLS2KNTqMQ== +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: - busboy "^1.6.0" - -express-rate-limit@5.5.1: - version "5.5.1" - resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-5.5.1.tgz#110c23f6a65dfa96ab468eda95e71697bc6987a2" - integrity sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg== - -express@4.18.2: - version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.1" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -express@^4.19.2: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.2" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.6.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -ext@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" - integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== - dependencies: - type "^2.7.2" + is-extendable "^0.1.0" fast-base64-decode@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418" integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q== -fast-copy@^3.0.0: +fast-copy@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.2.tgz#59c68f59ccbcac82050ba992e0d5c389097c9d35" integrity sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ== @@ -4668,17 +6077,23 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - fast-fifo@^1.2.0, fast-fifo@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== -fast-glob@^3.2.9: +fast-glob@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -4721,7 +6136,7 @@ fast-xml-parser@4.4.1: dependencies: strnum "^1.0.5" -fastest-levenshtein@^1.0.12: +fastest-levenshtein@^1.0.16: version "1.0.16" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== @@ -4733,14 +6148,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fetch-blob@^3.1.2, fetch-blob@^3.1.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" - integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== - dependencies: - node-domexception "^1.0.0" - web-streams-polyfill "^3.0.3" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -4748,22 +6155,14 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-loader@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -file-type@16.5.4: - version "16.5.4" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd" - integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== +file-type@19.3.0: + version "19.3.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-19.3.0.tgz#7b5989c4af05e4b02c553f29a6acca0508e9ea9b" + integrity sha512-mROwiKLZf/Kwa/2Rol+OOZQn1eyTkPB3ZTwC0ExY6OLFCbgxHYZvBm7xI77NvfZFMKBsmuXfmLJnD4eEftEhrA== dependencies: - readable-web-to-node-stream "^3.0.0" - strtok3 "^6.2.4" - token-types "^4.1.1" + strtok3 "^8.0.0" + token-types "^6.0.0" + uint8array-extras "^1.3.0" fill-range@^7.1.1: version "7.1.1" @@ -4772,47 +6171,11 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-node-modules@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-2.1.3.tgz#3c976cff2ca29ee94b4f9eafc613987fc4c0ee44" - integrity sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg== - dependencies: - findup-sync "^4.0.0" - merge "^2.1.1" - find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -find-up@4.1.0, find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -4821,16 +6184,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -findup-sync@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-4.0.0.tgz#956c9cdde804052b881b428512905c4a5f2cdef0" - integrity sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^4.0.2" - resolve-dir "^1.0.1" - flat-cache@^3.0.4: version "3.2.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" @@ -4840,22 +6193,22 @@ flat-cache@^3.0.4: keyv "^4.5.3" rimraf "^3.0.2" -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - flatted@^3.2.9: version "3.3.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -focus-trap@^6.9.2: - version "6.9.4" - resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-6.9.4.tgz#436da1a1d935c48b97da63cd8f361c6f3aa16444" - integrity sha512-v2NTsZe2FF59Y+sDykKY+XjqZ0cPfhq/hikWVL88BqLivnNiEffAsac6rP6H45ff9wG9LL5ToiDqrLEP9GX9mw== +focus-trap@7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-7.5.4.tgz#6c4e342fe1dae6add9c2aa332a6e7a0bbd495ba2" + integrity sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w== dependencies: - tabbable "^5.3.3" + tabbable "^6.2.0" + +follow-redirects@^1.15.0: + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== for-each@^0.3.3: version "0.3.3" @@ -4881,53 +6234,36 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -formdata-polyfill@^4.0.10: - version "4.0.10" - resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" - integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== - dependencies: - fetch-blob "^3.1.2" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - fraction.js@^4.3.7: version "4.3.7" resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" + minipass "^3.0.0" -fs-monkey@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2" - integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg== +fs-minipass@^3.0.0, fs-minipass@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: +fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -4952,6 +6288,11 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +geist@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/geist/-/geist-1.3.1.tgz#bbd95db23b2a00baf6020e3b1b63a5752f4787d2" + integrity sha512-Q4gC1pBVPN+D579pBaz0TRRnGA4p9UK6elDY/xizXdFk/g4EKR5g0I+4p/Kj6gM0SajDBZ/0FvDV9ey9ud7BWw== + get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -4968,10 +6309,10 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" -get-port@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" - integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== +get-nonce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" + integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== get-symbol-description@^1.0.2: version "1.0.2" @@ -4982,10 +6323,10 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" -get-tsconfig@4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.6.2.tgz#831879a5e6c2aa24fe79b60340e2233a1e0f472e" - integrity sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg== +get-tsconfig@^4.7.2, get-tsconfig@^4.7.5: + version "4.8.1" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471" + integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg== dependencies: resolve-pkg-maps "^1.0.0" @@ -5008,11 +6349,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - glob@7.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -5025,7 +6361,7 @@ glob@7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^10.3.12: +glob@^10.2.2, glob@^10.3.10, glob@^10.3.12, glob@^10.3.3, glob@^10.3.7, glob@^10.4.5: version "10.4.5" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== @@ -5049,26 +6385,6 @@ glob@^7.0.5, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg== - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -5081,7 +6397,7 @@ globals@^13.19.0: dependencies: type-fest "^0.20.2" -globalthis@^1.0.3: +globalthis@^1.0.3, globalthis@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== @@ -5108,42 +6424,33 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4: +graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + graphemer@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -graphql-http@1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/graphql-http/-/graphql-http-1.21.0.tgz#04d1606e663acd3f422e86e2e85f4ae7a8b0881b" - integrity sha512-yrItPfHj5WeT4n7iusbVin+vGSQjXFAX6U/GnYytdCJRXVad1TWGtYFDZ2ROjCKpXQzIwvfbiWCEwfuXgR3B6A== +graphql-http@^1.22.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/graphql-http/-/graphql-http-1.22.1.tgz#3857ac75366e55db189cfe09ade9cc4c4f2cfd09" + integrity sha512-4Jor+LRbA7SfSaw7dfDUs2UBzvWg3cKrykfHRgKsOIvQaLuf+QOcG2t3Mx5N9GzSNJcuqMqJWz0ta5+BryEmXg== -graphql-playground-html@^1.6.30: +graphql-playground-html@1.6.30: version "1.6.30" resolved "https://registry.yarnpkg.com/graphql-playground-html/-/graphql-playground-html-1.6.30.tgz#14c2a8eb7fc17bfeb1a746bbb28a11e34bf0b391" integrity sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw== dependencies: xss "^1.0.6" -graphql-playground-middleware-express@1.7.23: - version "1.7.23" - resolved "https://registry.yarnpkg.com/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.23.tgz#95aba44d801ff3c08b2246917d2901d2e7c35d3d" - integrity sha512-M/zbTyC1rkgiQjFSgmzAv6umMHOphYLNWZp6Ye5QrD77WfGOOoSqDsVmGUczc2pDkEPEzzGB/bvBO5rdzaTRgw== - dependencies: - graphql-playground-html "^1.6.30" - -graphql-query-complexity@0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/graphql-query-complexity/-/graphql-query-complexity-0.12.0.tgz#5f636ccc54da82225f31e898e7f27192fe074b4c" - integrity sha512-fWEyuSL6g/+nSiIRgIipfI6UXTI7bAxrpPlCY1c0+V3pAEUo1ybaKmSBgNr1ed2r+agm1plJww8Loig9y6s2dw== - dependencies: - lodash.get "^4.4.2" - graphql-scalars@1.22.2: version "1.22.2" resolved "https://registry.yarnpkg.com/graphql-scalars/-/graphql-scalars-1.22.2.tgz#6326e6fe2d0ad4228a9fea72a977e2bf26b86362" @@ -5151,22 +6458,10 @@ graphql-scalars@1.22.2: dependencies: tslib "^2.5.0" -graphql-type-json@0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.3.2.tgz#f53a851dbfe07bd1c8157d24150064baab41e115" - integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== - -graphql@16.8.1: - version "16.8.1" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07" - integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" +graphql@^16.8.2: + version "16.9.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.9.0.tgz#1c310e63f16a49ce1fbb230bd0a000e99f6f115f" + integrity sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw== has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" @@ -5219,41 +6514,24 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - help-me@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" integrity sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg== -history@^4.9.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" - integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== - dependencies: - "@babel/runtime" "^7.1.2" - loose-envify "^1.2.0" - resolve-pathname "^3.0.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - value-equal "^1.0.1" - -hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.1: +hoist-non-react-statics@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: react-is "^16.7.0" -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== +hosted-git-info@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-8.0.0.tgz#b20f1d55d492eb18d70a252d456a2158aab9f244" + integrity sha512-4nw3vOVR+vHUOT8+U4giwe2tcGv+R3pwwRidUe67DoMBTjhrfr6rZYJVVwdkBE+Um050SG+X9tf0Jo4fOpn01w== dependencies: - parse-passwd "^1.0.0" + lru-cache "^10.0.1" html-encoding-sniffer@^4.0.0: version "4.0.0" @@ -5262,80 +6540,33 @@ html-encoding-sniffer@^4.0.0: dependencies: whatwg-encoding "^3.1.1" -html-entities@^2.1.0: - version "2.5.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" - integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== - -html-escaper@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" - integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== - dependencies: - camel-case "^4.1.2" - clean-css "^5.2.2" - commander "^8.3.0" - he "^1.2.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.10.0" - -html-parse-stringify@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" - integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== - dependencies: - void-elements "3.1.0" - -html-webpack-plugin@5.5.3: - version "5.5.3" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e" - integrity sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg== - dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" - -html-webpack-plugin@^5.5.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" - integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== +html-to-text@9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/html-to-text/-/html-to-text-9.0.3.tgz#331368f32fcb270c59dbd3a7fdb32813d2a490bc" + integrity sha512-hxDF1kVCF2uw4VUJ3vr2doc91pXf2D5ngKcNviSitNkhP9OMOaJkDrFIFL6RMvko7NisWTEiqGpQ9LAxcVok1w== dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" + "@selderee/plugin-htmlparser2" "^0.10.0" + deepmerge "^4.2.2" + dom-serializer "^2.0.0" + htmlparser2 "^8.0.1" + selderee "^0.10.0" -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== +htmlparser2@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" + integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + entities "^4.4.0" -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" +http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== -http-proxy-agent@^7.0.2: +http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== @@ -5348,71 +6579,44 @@ http-status@1.6.2: resolved "https://registry.yarnpkg.com/http-status/-/http-status-1.6.2.tgz#6dc05188a9856d67d96e48e8b4fd645c719ce82a" integrity sha512-oUExvfNckrpTpDazph7kNG8sQi5au3BeTo0idaZFXEhTaJKu7GNJCLHI0rYY2wljm548MSTM+Ljj/c6anqu2zQ== -https-proxy-agent@^7.0.5: +https-proxy-agent@^7.0.1, https-proxy-agent@^7.0.5: version "7.0.5" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" - integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== - dependencies: - agent-base "^7.0.2" - debug "4" - -i18next-browser-languagedetector@6.1.8: - version "6.1.8" - resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.8.tgz#8e9c61b32a4dfe9b959b38bc9d2a8b95f799b27c" - integrity sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA== - dependencies: - "@babel/runtime" "^7.19.0" - -i18next-http-middleware@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/i18next-http-middleware/-/i18next-http-middleware-3.3.2.tgz#6a24fee6bde44952a5af24364d43fa32f6c1b9b6" - integrity sha512-PSeLXQXr9Qiv9Q3GCWCoIJenKVbxCcVsXb7VMp/mOprV4gu+AMJT7VHw4+QEf6oYW6GU31QSLnfDpLNoSMtx3g== - -i18next@22.5.1: - version "22.5.1" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.5.1.tgz#99df0b318741a506000c243429a7352e5f44d424" - integrity sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA== - dependencies: - "@babel/runtime" "^7.20.6" - -iconv-lite@0.4.24, iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== dependencies: - safer-buffer ">= 2.1.2 < 3" + agent-base "^7.0.2" + debug "4" -iconv-lite@0.6.3: +iconv-lite@0.6.3, iconv-lite@^0.6.2: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== +ignore-walk@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-7.0.0.tgz#8350e475cf4375969c12eb49618b3fd9cca6704f" + integrity sha512-T4gbf83A4NH95zvhVYZc+qWocBBGlpzUXLPGurJggw/WIOwicfXJChLDP/iBZnN5WqROSu5Bm3hhle4z8a8YGQ== + dependencies: + minimatch "^9.0.0" -ignore@^5.2.0: +ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -immer@^9.0.6: - version "9.0.21" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" - integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== +image-size@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.1.1.tgz#ddd67d4dc340e52ac29ce5f546a09f4e29e840ac" + integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== + dependencies: + queue "6.0.2" immutable@^4.0.0: version "4.3.7" @@ -5427,19 +6631,16 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@^3.0.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" - integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -5448,7 +6649,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5458,6 +6659,29 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +ini@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-5.0.0.tgz#a7a4615339843d9a8ccc2d85c9d81cf93ffbc638" + integrity sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw== + +init-package-json@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-7.0.1.tgz#8f4580bbf427f015348727f215a39f42547ee208" + integrity sha512-8KZtk/53ReI2T2f6z2hl5ql6xKLjDexNw7DUqTdR8f+Mo8WZmBjjkH6DrTfBjmW0j3Tqx+j3t8creN0O890+0A== + dependencies: + "@npmcli/package-json" "^6.0.0" + npm-package-arg "^12.0.0" + promzard "^2.0.0" + read "^4.0.0" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^6.0.0" + +install@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/install/-/install-0.13.0.tgz#6af6e9da9dd0987de2ab420f78e60d9c17260776" + integrity sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA== + internal-slot@^1.0.4, internal-slot@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" @@ -5467,10 +6691,12 @@ internal-slot@^1.0.4, internal-slot@^1.0.7: hasown "^2.0.0" side-channel "^1.0.4" -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" ip-address@^9.0.5: version "9.0.5" @@ -5480,10 +6706,10 @@ ip-address@^9.0.5: jsbn "1.1.0" sprintf-js "^1.1.3" -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +ip-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-5.0.0.tgz#cd313b2ae9c80c07bd3851e12bf4fa4dc5480632" + integrity sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw== is-arguments@^1.1.1: version "1.1.1" @@ -5511,6 +6737,13 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -5533,22 +6766,31 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - -is-buffer@~1.1.6: +is-buffer@^1.1.5, is-buffer@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-bun-module@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-bun-module/-/is-bun-module-1.2.1.tgz#495e706f42e29f086fd5fe1ac3c51f106062b9fc" + integrity sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q== + dependencies: + semver "^7.6.3" + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.13.0, is-core-module@^2.8.0: +is-cidr@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-5.1.0.tgz#36f2d059f43f9b14f132745a2eec18c996df2f35" + integrity sha512-OkVS+Ht2ssF27d48gZdB+ho1yND1VbkJRKKS6Pc1/Cw7uqkd9IOJg8/bTwBDQL6tfBhSdguPRnlGiE8pU/X5NQ== + dependencies: + cidr-regex "^4.1.1" + +is-core-module@^2.13.0, is-core-module@^2.15.1: version "2.15.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== @@ -5569,16 +6811,35 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -5586,15 +6847,10 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-hotkey@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.2.0.tgz#1835a68171a91e5c9460869d96336947c8340cef" - integrity sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw== - -is-hotkey@^0.1.6: - version "0.1.8" - resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.1.8.tgz#6b1f4b2d0e5639934e20c05ed24d623a21d36d25" - integrity sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ== +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== is-map@^2.0.2, is-map@^2.0.3: version "2.0.3" @@ -5618,38 +6874,16 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-plain-object@5.0.0, is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-promise@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -5711,10 +6945,10 @@ is-weakset@^2.0.3: call-bind "^1.0.7" get-intrinsic "^1.2.4" -is-windows@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-whitespace@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" + integrity sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg== isarray@0.0.1: version "0.0.1" @@ -5736,27 +6970,19 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== -isomorphic-dompurify@^2.15.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/isomorphic-dompurify/-/isomorphic-dompurify-2.15.0.tgz#d3d35fe8cab700c4cf3c065da3dc86d508161502" - integrity sha512-RDHlyeVmwEDAPZuX1VaaBzSn9RrsfvswxH7faEQK9cTHC1dXeNuK6ElUeSr7locFyeLguut8ASfhQWxHB4Ttug== +isomorphic-dompurify@^2.16.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/isomorphic-dompurify/-/isomorphic-dompurify-2.16.0.tgz#c46ec33ae6bde43648bd6163925625949113a696" + integrity sha512-cXhX2owp8rPxafCr0ywqy2CGI/4ceLNgWkWBEvUz64KTbtg3oRL2ZRqq/zW0pzt4YtDjkHLbwcp/lozpKzAQjg== dependencies: "@types/dompurify" "^3.0.5" - dompurify "^3.1.6" - jsdom "^25.0.0" - -isomorphic-fetch@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" - integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== - dependencies: - node-fetch "^2.6.1" - whatwg-fetch "^3.4.1" + dompurify "^3.1.7" + jsdom "^25.0.1" isomorphic-unfetch@^3.0.0: version "3.1.0" @@ -5766,6 +6992,22 @@ isomorphic-unfetch@^3.0.0: node-fetch "^2.6.1" unfetch "^4.2.0" +isomorphic.js@^0.2.4: + version "0.2.5" + resolved "https://registry.yarnpkg.com/isomorphic.js/-/isomorphic.js-0.2.5.tgz#13eecf36f2dba53e85d355e11bf9d4208c6f7f88" + integrity sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw== + +iterator.prototype@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.3.tgz#016c2abe0be3bbdb8319852884f60908ac62bf9c" + integrity sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + jackspeak@^3.1.2: version "3.4.3" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" @@ -5775,36 +7017,37 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -joi@17.9.2: - version "17.9.2" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.2.tgz#8b2e4724188369f55451aebd1d0b1d9482470690" - integrity sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.1" - "@sideway/pinpoint" "^2.0.0" +jiti@^1.21.0: + version "1.21.6" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== joycon@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== +js-beautify@^1.6.12: + version "1.15.1" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.15.1.tgz#4695afb508c324e1084ee0b952a102023fc65b64" + integrity sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA== + dependencies: + config-chain "^1.1.13" + editorconfig "^1.0.4" + glob "^10.3.3" + js-cookie "^3.0.5" + nopt "^7.2.0" + js-cookie@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== +js-cookie@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" + integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5822,12 +7065,17 @@ jsbn@1.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== -jsdom@^25.0.0: - version "25.0.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-25.0.0.tgz#d1612b4ddab85af56821b2f731e15faae135f4e1" - integrity sha512-OhoFVT59T7aEq75TVw9xxEfkXgacpqAhQaYgP9y/fDqWQCMB/b1H66RfmPm/MaeaAIU9nDwMOVTlPN51+ao6CQ== +jsdoctypeparser@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz#8c97e2fb69315eb274b0f01377eaa5c940bd7b26" + integrity sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw== + +jsdom@^25.0.1: + version "25.0.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-25.0.1.tgz#536ec685c288fc8a5773a65f82d8b44badcc73ef" + integrity sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw== dependencies: - cssstyle "^4.0.1" + cssstyle "^4.1.0" data-urls "^5.0.0" decimal.js "^10.4.3" form-data "^4.0.0" @@ -5840,7 +7088,7 @@ jsdom@^25.0.0: rrweb-cssom "^0.7.1" saxes "^6.0.0" symbol-tree "^3.2.4" - tough-cookie "^4.1.4" + tough-cookie "^5.0.0" w3c-xmlserializer "^5.0.0" webidl-conversions "^7.0.0" whatwg-encoding "^3.1.1" @@ -5859,28 +7107,28 @@ json-buffer@3.0.1: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -json-schema-to-typescript@14.0.5: - version "14.0.5" - resolved "https://registry.yarnpkg.com/json-schema-to-typescript/-/json-schema-to-typescript-14.0.5.tgz#e7793a1da6b3bd76844cef836074bfaf32a29844" - integrity sha512-JmHsbgY0KKo8Pw0HRXpGzAlZYxlu+M5kFhSzhNkUSrVJ4sCXPdAGIdSpzva5ev2/Kybz10S6AfnNdF4o3Pzt3A== +json-parse-even-better-errors@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz#d3f67bd5925e81d3e31aa466acc821c8375cec43" + integrity sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA== + +json-schema-to-typescript@15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/json-schema-to-typescript/-/json-schema-to-typescript-15.0.1.tgz#646829fd3dae1909d697dc48c5decf903b811884" + integrity sha512-gSSg20skxv+ZQqR8Y8itZt+2iYFGNgneuTgf/Va0TBw+zo6JsykDG1bqhkhMs5g/vIdqmZx55oQJLbgOEuxPJw== dependencies: "@apidevtools/json-schema-ref-parser" "^11.5.5" "@types/json-schema" "^7.0.15" - "@types/lodash" "^4.17.0" - cli-color "^2.0.4" glob "^10.3.12" is-glob "^4.0.3" js-yaml "^4.1.0" lodash "^4.17.21" minimist "^1.2.8" - mkdirp "^3.0.1" - mz "^2.7.0" - node-fetch "^3.3.2" prettier "^3.2.5" json-schema-traverse@^0.4.1: @@ -5893,21 +7141,16 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema-typed@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-7.0.3.tgz#23ff481b8b4eebcd2ca123b4fa0409e66469a2d9" - integrity sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A== - -json-schema@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +json-stringify-nice@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== + json5@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" @@ -5915,20 +7158,6 @@ json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.1.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - jsonp@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/jsonp/-/jsonp-0.2.1.tgz#a65b4fa0f10bda719a05441ea7b94c55f3e15bae" @@ -5936,17 +7165,12 @@ jsonp@^0.2.1: dependencies: debug "^2.1.3" -jsonwebtoken@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz#81d8c901c112c24e497a55daf6b2be1225b40145" - integrity sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg== - dependencies: - jws "^3.2.2" - lodash "^4.17.21" - ms "^2.1.1" - semver "^7.3.8" +jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== -jsonwebtoken@^9.0.0: +jsonwebtoken@9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== @@ -5962,6 +7186,26 @@ jsonwebtoken@^9.0.0: ms "^2.1.1" semver "^7.5.4" +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3, jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + +just-diff-apply@^5.2.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" + integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== + +just-diff@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" + integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== + jwa@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" @@ -5979,11 +7223,6 @@ jws@^3.2.2: jwa "^1.4.1" safe-buffer "^5.0.1" -jwt-decode@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" - integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== - kareem@2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.5.1.tgz#7b8203e11819a8e77a34b3517d3ead206764d15d" @@ -5996,20 +7235,41 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -klona@^2.0.4, klona@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" - integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== +language-subtag-registry@^0.3.20, language-subtag-registry@~0.3.2: + version "0.3.23" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" + integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== + +language-tags@=1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== + dependencies: + language-subtag-registry "~0.3.2" + +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== + dependencies: + language-subtag-registry "^0.3.20" + +leac@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/leac/-/leac-0.6.0.tgz#dcf136e382e666bd2475f44a1096061b70dc0912" + integrity sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg== levn@^0.4.1: version "0.4.1" @@ -6019,44 +7279,143 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -lexical@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/lexical/-/lexical-0.13.1.tgz#0abffe9bc05a7a9da8a6128ea478bf08c11654db" - integrity sha512-jaqRYzVEfBKbX4FwYpd/g+MyOjRaraAel0iQsTrwvx3hyN0bswUZuzb6H6nGlFSjcdrc77wKpyKwoWj4aUd+Bw== +lexical@0.18.0, lexical@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/lexical/-/lexical-0.18.0.tgz#70dc89d8baf348b623d223c564616916a86118ce" + integrity sha512-3K/B0RpzjoW+Wj2E455wWXxkqxqK8UgdIiuqkOqdOsoSSo5mCkHOU6eVw7Nlmlr1MFvAMzGmz4RPn8NZaLQ2Mw== -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +lib0@^0.2.86: + version "0.2.98" + resolved "https://registry.yarnpkg.com/lib0/-/lib0-0.2.98.tgz#fe55203b8586512c1837248d5f309d7dfd566f5d" + integrity sha512-XteTiNO0qEXqqweWx+b21p/fBnNHUA1NwAtJNJek1oPrewEZs2uiT4gWivHKr9GqCjDPAhchz0UQO8NwU3bBNA== + dependencies: + isomorphic.js "^0.2.4" -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== +libnpmaccess@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-9.0.0.tgz#47ac12dcd358c2c2f2c9ecb0f081a65ef2cc68bc" + integrity sha512-mTCFoxyevNgXRrvgdOhghKJnCWByBc9yp7zX4u9RBsmZjwOYdUDEBfL5DdgD1/8gahsYnauqIWFbq0iK6tO6CQ== + dependencies: + npm-package-arg "^12.0.0" + npm-registry-fetch "^18.0.1" -loader-utils@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== +libnpmdiff@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/libnpmdiff/-/libnpmdiff-7.0.0.tgz#808893a36d673e46c927e4a0a836b3742191d307" + integrity sha512-MjvsBJL1AT4ofsSsBRse5clxv7gfPbdgzT0VE+xmVTxE8M92T22laeX9vqFhaQKInSeKiZ2L9w/FVhoCCGPdUg== dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" + "@npmcli/arborist" "^8.0.0" + "@npmcli/installed-package-contents" "^3.0.0" + binary-extensions "^2.3.0" + diff "^5.1.0" + minimatch "^9.0.4" + npm-package-arg "^12.0.0" + pacote "^19.0.0" + tar "^6.2.1" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== +libnpmexec@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/libnpmexec/-/libnpmexec-9.0.0.tgz#4bb43ec4ba88bd33750480fcf73935837af061bf" + integrity sha512-5dOwgvt0srgrOkwsjNWokx23BvQXEaUo87HWIY+9lymvAto2VSunNS+Ih7WXVwvkJk7cZ0jhS2H3rNK8G9Anxw== + dependencies: + "@npmcli/arborist" "^8.0.0" + "@npmcli/run-script" "^9.0.1" + ci-info "^4.0.0" + npm-package-arg "^12.0.0" + pacote "^19.0.0" + proc-log "^5.0.0" + read "^4.0.0" + read-package-json-fast "^4.0.0" + semver "^7.3.7" + walk-up-path "^3.0.1" + +libnpmfund@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/libnpmfund/-/libnpmfund-6.0.0.tgz#5f324e9b9fb440af9c197f3f147943362758b49b" + integrity sha512-+7ZTxPyJ0O/Y0xKoEd1CxPCUQ4ldn6EZ2qUMI/E1gJkfzcwb3AdFlSWk1WEXaGBu2+EqMrPf4Xu5lXFWw2Jd3w== dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" + "@npmcli/arborist" "^8.0.0" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== +libnpmhook@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-11.0.0.tgz#b8caf6fe31666d7b18cbf61ce8b722dca1600943" + integrity sha512-Xc18rD9NFbRwZbYCQ+UCF5imPsiHSyuQA8RaCA2KmOUo8q4kmBX4JjGWzmZnxZCT8s6vwzmY1BvHNqBGdg9oBQ== + dependencies: + aproba "^2.0.0" + npm-registry-fetch "^18.0.1" + +libnpmorg@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-7.0.0.tgz#055dfdba32ac5e8757dd4b264f805b64cbd6980b" + integrity sha512-DcTodX31gDEiFrlIHurBQiBlBO6Var2KCqMVCk+HqZhfQXqUfhKGmFOp0UHr6HR1lkTVM0MzXOOYtUObk0r6Dg== + dependencies: + aproba "^2.0.0" + npm-registry-fetch "^18.0.1" + +libnpmpack@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/libnpmpack/-/libnpmpack-8.0.0.tgz#83cb6333861f8a0fe991420feaf0aa48a67d94bf" + integrity sha512-Z5zqR+j8PNOki97D4XnKlekLQjqJYkqCFZeac07XCJYA3aq6O7wYIpn7RqLcNfFm+u3ZsdblY2VQENMoiHA+FQ== + dependencies: + "@npmcli/arborist" "^8.0.0" + "@npmcli/run-script" "^9.0.1" + npm-package-arg "^12.0.0" + pacote "^19.0.0" + +libnpmpublish@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-10.0.0.tgz#328fafc94fc0a735c9581207db57dbec590d594c" + integrity sha512-keixAKMGMegm9HHY0stnNtjPHI7J79sMLlRQf0V1n1iFrWspLTGmoA5VMyzX27L3gC8prl+wLizwNWOZlGpcWw== + dependencies: + ci-info "^4.0.0" + normalize-package-data "^7.0.0" + npm-package-arg "^12.0.0" + npm-registry-fetch "^18.0.1" + proc-log "^5.0.0" + semver "^7.3.7" + sigstore "^2.2.0" + ssri "^12.0.0" + +libnpmsearch@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-8.0.0.tgz#ce2e28ad05a152c736d5ae86356aedd5a52406a5" + integrity sha512-W8FWB78RS3Nkl1gPSHOlF024qQvcoU/e3m9BGDuBfVZGfL4MJ91GXXb04w3zJCGOW9dRQUyWVEqupFjCrgltDg== dependencies: - p-locate "^4.1.0" + npm-registry-fetch "^18.0.1" + +libnpmteam@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-7.0.0.tgz#e8f40c4bc543b720da2cdd4385e2fafcd06c92c0" + integrity sha512-PKLOoVukN34qyJjgEm5DEOnDwZkeVMUHRx8NhcKDiCNJGPl7G/pF1cfBw8yicMwRlHaHkld1FdujOzKzy4AlwA== + dependencies: + aproba "^2.0.0" + npm-registry-fetch "^18.0.1" + +libnpmversion@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/libnpmversion/-/libnpmversion-7.0.0.tgz#b264a07662b31b78822ba870171088eca6466f38" + integrity sha512-0xle91R6F8r/Q/4tHOnyKko+ZSquEXNdxwRdKCPv4kC1cOVBMFXRsKKrVtRKtXcFn362U8ZlJefk4Apu00424g== + dependencies: + "@npmcli/git" "^6.0.1" + "@npmcli/run-script" "^9.0.1" + json-parse-even-better-errors "^4.0.0" + proc-log "^5.0.0" + semver "^7.3.7" + +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.2.tgz#e4a7c3cb549e3a606c8dcc32e5ae1005e62c05cb" + integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== locate-path@^6.0.0: version "6.0.0" @@ -6065,20 +7424,10 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.camelcase@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== +lodash.castarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115" + integrity sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q== lodash.includes@^4.3.0: version "4.3.0" @@ -6110,11 +7459,6 @@ lodash.isstring@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== -lodash.kebabcase@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -6125,51 +7469,62 @@ lodash.once@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== -lodash.snakecase@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" - integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== - -lodash.upperfirst@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" - integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== - -lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: +lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^10.2.0: +lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.2.2: version "10.4.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== -lru-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== - dependencies: - es5-ext "~0.10.2" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +lucide-react@^0.378.0: + version "0.378.0" + resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.378.0.tgz#232acb99c6baedfa90959a2c0dd11327b058bde8" + integrity sha512-u6EPU8juLUk9ytRcyapkWI18epAv3RU+6+TC23ivjR0e+glWKBobFeSgRwOIJihzktILQuy6E0E80P2jVTDR5g== + +make-fetch-happen@^13.0.0, make-fetch-happen@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz#273ba2f78f45e1f3a6dca91cede87d9fa4821e36" + integrity sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA== + dependencies: + "@npmcli/agent" "^2.0.0" + cacache "^18.0.0" + http-cache-semantics "^4.1.1" + is-lambda "^1.0.1" + minipass "^7.0.2" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + proc-log "^4.2.0" + promise-retry "^2.0.1" + ssri "^10.0.0" + +make-fetch-happen@^14.0.0, make-fetch-happen@^14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-14.0.1.tgz#5b2d4e1f6d89d2cc2d4bb97995e250ed9dadba1b" + integrity sha512-Z1ndm71UQdcK362F5Wg4IFRBZq4MGeCz+uor5iPROkSjEWEoc1Zn7OSKPvmg01S9XOI8mr+GlRr+W4ABz4ZgdA== + dependencies: + "@npmcli/agent" "^3.0.0" + cacache "^19.0.1" + http-cache-semantics "^4.1.1" + minipass "^7.0.2" + minipass-fetch "^4.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + proc-log "^5.0.0" + promise-retry "^2.0.1" + ssri "^12.0.0" md5@2.3.0: version "2.3.0" @@ -6180,78 +7535,22 @@ md5@2.3.0: crypt "0.0.2" is-buffer "~1.1.6" -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memfs@^3.4.12: - version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== - dependencies: - fs-monkey "^1.0.4" - memoize-one@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== -memoizee@^0.4.15: - version "0.4.17" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.17.tgz#942a5f8acee281fa6fb9c620bddc57e3b7382949" - integrity sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA== - dependencies: - d "^1.0.2" - es5-ext "^0.10.64" - es6-weak-map "^2.0.3" - event-emitter "^0.3.5" - is-promise "^2.2.2" - lru-queue "^0.1.0" - next-tick "^1.1.0" - timers-ext "^0.1.7" - memory-pager@^1.0.2: version "1.5.0" resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -merge@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/merge/-/merge-2.1.1.tgz#59ef4bf7e0b3e879186436e8481c06a6c162ca98" - integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== - -method-override@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/method-override/-/method-override-3.0.0.tgz#6ab0d5d574e3208f15b0c9cf45ab52000468d7a2" - integrity sha512-IJ2NNN/mSl9w3kzWB92rcdHpz+HjkxhDJWNDBqSlas+zQdP8wBiJzITPg08M/k2uVvMow7Sk41atndNtt/PHSA== - dependencies: - debug "3.1.0" - methods "~1.1.2" - parseurl "~1.3.2" - vary "~1.1.2" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromatch@^4.0.2, micromatch@^4.0.4: +micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -6264,46 +7563,31 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -"mime-db@>= 1.43.0 < 2": - version "1.53.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447" - integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg== - -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-fn@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" - integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== - mimic-response@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -mini-css-extract-plugin@1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz#83172b4fd812f8fc4a09d6f6d16f924f53990ca8" - integrity sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q== +minimatch@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" + integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== + dependencies: + brace-expansion "^2.0.1" + +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - webpack-sources "^1.1.0" + brace-expansion "^2.0.1" minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" @@ -6312,7 +7596,7 @@ minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatc dependencies: brace-expansion "^1.1.7" -minimatch@^9.0.4: +minimatch@^9.0.0, minimatch@^9.0.3, minimatch@^9.0.4, minimatch@^9.0.5: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -6324,17 +7608,95 @@ minimist@1.2.8, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6, minimist@^1.2 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== +minipass-collect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" + integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== + dependencies: + minipass "^7.0.3" + +minipass-fetch@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" + integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== + dependencies: + minipass "^7.0.3" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-fetch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-4.0.0.tgz#b8ea716464747aeafb7edf2e110114c38089a09c" + integrity sha512-2v6aXUXwLP1Epd/gc32HAMIWoczx+fZwEPRHm/VwtrJzRGwR1qGZXEYV3Zp8ZjjbwaZhMrM6uHV4KVkk+XCc2w== + dependencies: + minipass "^7.0.3" + minipass-sized "^1.0.3" + minizlib "^3.0.1" + optionalDependencies: + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.0.4, minipass@^7.1.1, minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +minizlib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.0.1.tgz#46d5329d1eb3c83924eff1d3b858ca0a31581012" + integrity sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg== + dependencies: + minipass "^7.0.4" + rimraf "^5.0.5" mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@1.0.4, mkdirp@^1.0.4: +mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -6344,10 +7706,10 @@ mkdirp@^3.0.1: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== -monaco-editor@0.38.0: - version "0.38.0" - resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.38.0.tgz#7b3cd16f89b1b8867fcd3c96e67fccee791ff05c" - integrity sha512-11Fkh6yzEmwx7O0YoLxeae0qEGFwmyPRlVxpg7oF9czOOCB/iCjdJrG5I67da5WiXK3YJCxoz9TJFE8Tfq/v9A== +monaco-editor@^0.25.0: + version "0.25.2" + resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.25.2.tgz#119e2b15bbd968a1a99c03cac9c329316d7c37e9" + integrity sha512-5iylzSJevCnzJn9UVsW8yOZ3yHjmAs4TfvH3zsbftKiFKmHG0xirGN6DK9Kk04VSWxYCZZAIafYJoNJJMAU1KA== mongodb-connection-string-url@^2.6.0: version "2.6.0" @@ -6404,21 +7766,21 @@ mquery@4.0.3: dependencies: debug "4.x" -mrmime@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" - integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -ms@2.1.3, ms@^2.1.1, ms@^2.1.3: +ms@2.1.3, ms@^2.1.1, ms@^2.1.2, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +mute-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b" + integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== + mz@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" @@ -6428,7 +7790,7 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.3.4, nanoid@^3.3.6, nanoid@^3.3.7: +nanoid@^3.3.6, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== @@ -6448,61 +7810,34 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -needle@^2.5.2: - version "2.9.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" - integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.3: +negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - -next@13.5.2: - version "13.5.2" - resolved "https://registry.yarnpkg.com/next/-/next-13.5.2.tgz#809dd84e481049e298fe79d28b1d66b587483fca" - integrity sha512-vog4UhUaMYAzeqfiAAmgB/QWLW7p01/sg+2vn6bqc/CxHFYizMzLv6gjxKzl31EVFkfl/F+GbxlKizlkTE9RdA== +next@15.0.0-canary.173: + version "15.0.0-canary.173" + resolved "https://registry.yarnpkg.com/next/-/next-15.0.0-canary.173.tgz#f2f4e9cf7739f07de56f55635ddaad34a2561fcb" + integrity sha512-wD6+sidDZAao/rJ4D/9agqLDTlc/DzlREAnC/+pQSgmpmL8rn41h9Empke6POBxJ4kQWm61dpNDEmz882DknOA== dependencies: - "@next/env" "13.5.2" - "@swc/helpers" "0.5.2" + "@next/env" "15.0.0-canary.173" + "@swc/counter" "0.1.3" + "@swc/helpers" "0.5.13" busboy "1.6.0" - caniuse-lite "^1.0.30001406" - postcss "8.4.14" - styled-jsx "5.1.1" - watchpack "2.4.0" - zod "3.21.4" + caniuse-lite "^1.0.30001579" + postcss "8.4.31" + styled-jsx "5.1.6" optionalDependencies: - "@next/swc-darwin-arm64" "13.5.2" - "@next/swc-darwin-x64" "13.5.2" - "@next/swc-linux-arm64-gnu" "13.5.2" - "@next/swc-linux-arm64-musl" "13.5.2" - "@next/swc-linux-x64-gnu" "13.5.2" - "@next/swc-linux-x64-musl" "13.5.2" - "@next/swc-win32-arm64-msvc" "13.5.2" - "@next/swc-win32-ia32-msvc" "13.5.2" - "@next/swc-win32-x64-msvc" "13.5.2" - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" + "@next/swc-darwin-arm64" "15.0.0-canary.173" + "@next/swc-darwin-x64" "15.0.0-canary.173" + "@next/swc-linux-arm64-gnu" "15.0.0-canary.173" + "@next/swc-linux-arm64-musl" "15.0.0-canary.173" + "@next/swc-linux-x64-gnu" "15.0.0-canary.173" + "@next/swc-linux-x64-musl" "15.0.0-canary.173" + "@next/swc-win32-arm64-msvc" "15.0.0-canary.173" + "@next/swc-win32-ia32-msvc" "15.0.0-canary.173" + "@next/swc-win32-x64-msvc" "15.0.0-canary.173" + sharp "^0.33.5" node-abi@^3.3.0: version "3.67.0" @@ -6516,11 +7851,6 @@ node-addon-api@^6.1.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== -node-domexception@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" - integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== - node-fetch@^2.6.1: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -6528,45 +7858,31 @@ node-fetch@^2.6.1: dependencies: whatwg-url "^5.0.0" -node-fetch@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" - integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== - dependencies: - data-uri-to-buffer "^4.0.0" - fetch-blob "^3.1.4" - formdata-polyfill "^4.0.10" +node-gyp@^10.0.0, node-gyp@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-10.2.0.tgz#80101c4aa4f7ab225f13fcc8daaaac4eb1a8dd86" + integrity sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^10.3.10" + graceful-fs "^4.2.6" + make-fetch-happen "^13.0.0" + nopt "^7.0.0" + proc-log "^4.1.0" + semver "^7.3.5" + tar "^6.2.1" + which "^4.0.0" node-releases@^2.0.18: version "2.0.18" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== -nodemailer@6.9.8: - version "6.9.8" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.8.tgz#29601e80440f2af7aa62b32758fdac7c6b784143" - integrity sha512-cfrYUk16e67Ks051i4CntM9kshRYei1/o/Gi8K1d+R34OIs21xdFnW7Pt7EucmVKA0LKtqUGNcjMZ7ehjl49mQ== - -nodemailer@6.9.9: - version "6.9.9" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.9.tgz#4549bfbf710cc6addec5064dd0f19874d24248d9" - integrity sha512-dexTll8zqQoVJEZPwQAKzxxtFn0qTnjdQTchoU6Re9BUUGBJiOy3YMn/0ShTW6J5M0dfQ1NeDeRTTl4oIWgQMA== - -nodemon@^2.0.6: - version "2.0.22" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.22.tgz#182c45c3a78da486f673d6c1702e00728daf5258" - integrity sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ== - dependencies: - chokidar "^3.5.2" - debug "^3.2.7" - ignore-by-default "^1.0.1" - minimatch "^3.1.2" - pstree.remy "^1.1.8" - semver "^5.7.1" - simple-update-notifier "^1.0.7" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" +nodemailer@6.9.10: + version "6.9.10" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.10.tgz#54cc1e062f20726606d3289fcf38ee731aff0d9d" + integrity sha512-qtoKfGFhvIFW5kLfrkw2R6Nm6Ur4LNUMykyqu6n9BRKJuyQrqEGwdXXUAbwWEKt33dlWUGXb7rzmJP/p4+O+CA== noms@0.0.0: version "0.0.0" @@ -6576,6 +7892,29 @@ noms@0.0.0: inherits "^2.0.1" readable-stream "~1.0.31" +nopt@^7.0.0, nopt@^7.2.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" + integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== + dependencies: + abbrev "^2.0.0" + +nopt@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-8.0.0.tgz#644f1e78da564b70e3606ab8db4836b0e32e198a" + integrity sha512-1L/fTJ4UmV/lUxT2Uf006pfZKTvAgCF+chz+0OgBHO8u2Z67pE7AaAUUj7CJy0lXqHmymUvGFt6NE9R3HER0yw== + dependencies: + abbrev "^2.0.0" + +normalize-package-data@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-7.0.0.tgz#ab4f49d02f2e25108d3f4326f3c13f0de6fa6a0a" + integrity sha512-k6U0gKRIuNCTkwHGZqblCfLfBRh+w1vI6tBo+IeJwq2M8FUiOqhX7GH+GArQGScA7azd1WfyRCvxoXDO3hQDIA== + dependencies: + hosted-git-info "^8.0.0" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -6586,23 +7925,173 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== +npm-audit-report@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-6.0.0.tgz#0262e5e2b674fabf0ea47e900fc7384b83de0fbb" + integrity sha512-Ag6Y1irw/+CdSLqEEAn69T8JBgBThj5mw0vuFIKeP7hATYuQuS5jkMjK6xmVB8pr7U4g5Audbun0lHhBDMIBRA== + +npm-bundled@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-4.0.0.tgz#f5b983f053fe7c61566cf07241fab2d4e9d513d3" + integrity sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA== + dependencies: + npm-normalize-package-bin "^4.0.0" + +npm-install-checks@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-7.1.0.tgz#e365040c95d59571aaed3d6ebb83f7d9ddd347b8" + integrity sha512-bkTildVlofeMX7wiOaWk3PlW7YcBXAuEc7TWpOxwUgalG5ZvgT/ms+6OX9zt7iGLv4+VhKbRZhpOfgQJzk1YAw== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz#df79e70cd0a113b77c02d1fe243c96b8e618acb1" + integrity sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w== + +npm-package-arg@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-12.0.0.tgz#c2a6631c09d244c6bc35a46c38cbd94d53e9829a" + integrity sha512-ZTE0hbwSdTNL+Stx2zxSqdu2KZfNDcrtrLdIk7XGnQFYBWYDho/ORvXtn5XEePcL3tFpGjHCV3X3xrtDh7eZ+A== dependencies: - boolbase "^1.0.0" + hosted-git-info "^8.0.0" + proc-log "^5.0.0" + semver "^7.3.5" + validate-npm-package-name "^6.0.0" + +npm-packlist@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-9.0.0.tgz#8e9b061bab940de639dd93d65adc95c34412c7d0" + integrity sha512-8qSayfmHJQTx3nJWYbbUmflpyarbLMBc6LCAjYsiGtXxDB68HaZpb8re6zeaLGxZzDuMdhsg70jryJe+RrItVQ== + dependencies: + ignore-walk "^7.0.0" + +npm-pick-manifest@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-10.0.0.tgz#6cc120c6473ceea56dfead500f00735b2b892851" + integrity sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ== + dependencies: + npm-install-checks "^7.1.0" + npm-normalize-package-bin "^4.0.0" + npm-package-arg "^12.0.0" + semver "^7.3.5" + +npm-profile@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-11.0.1.tgz#6ffac43f3d186316d37e80986d84aef2470269a2" + integrity sha512-HP5Cw9WHwFS9vb4fxVlkNAQBUhVL5BmW6rAR+/JWkpwqcFJid7TihKUdYDWqHl0NDfLd0mpucheGySqo8ysyfw== + dependencies: + npm-registry-fetch "^18.0.0" + proc-log "^5.0.0" + +npm-registry-fetch@^18.0.0, npm-registry-fetch@^18.0.1: + version "18.0.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-18.0.1.tgz#03e77945977bb42f1c8c7225f63f935883c229ac" + integrity sha512-5XKlWmVtfTTmnU6rKBjjQDMdnFOVAH9t7D4DG1ZcsIDwkGYBTUl0fMnbzsVSM0t/HZRpyE1VMLZv9O0Bvkj3UA== + dependencies: + "@npmcli/redact" "^3.0.0" + jsonparse "^1.3.1" + make-fetch-happen "^14.0.0" + minipass "^7.0.2" + minipass-fetch "^4.0.0" + minizlib "^3.0.1" + npm-package-arg "^12.0.0" + proc-log "^5.0.0" + +npm-user-validate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-3.0.0.tgz#9b1410796bf1f1d78297a8096328c55d3083f233" + integrity sha512-9xi0RdSmJ4mPYTC393VJPz1Sp8LyCx9cUnm/L9Qcb3cFO8gjT4mN20P9FAsea8qDHdQ7LtcN8VLh2UT47SdKCw== + +npm@^10.9.0: + version "10.9.0" + resolved "https://registry.yarnpkg.com/npm/-/npm-10.9.0.tgz#46903bc06cb8a5fd51372647920fe4b830efb8d8" + integrity sha512-ZanDioFylI9helNhl2LNd+ErmVD+H5I53ry41ixlLyCBgkuYb+58CvbAp99hW+zr5L9W4X7CchSoeqKdngOLSw== + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/arborist" "^8.0.0" + "@npmcli/config" "^9.0.0" + "@npmcli/fs" "^4.0.0" + "@npmcli/map-workspaces" "^4.0.1" + "@npmcli/package-json" "^6.0.1" + "@npmcli/promise-spawn" "^8.0.1" + "@npmcli/redact" "^3.0.0" + "@npmcli/run-script" "^9.0.1" + "@sigstore/tuf" "^2.3.4" + abbrev "^3.0.0" + archy "~1.0.0" + cacache "^19.0.1" + chalk "^5.3.0" + ci-info "^4.0.0" + cli-columns "^4.0.0" + fastest-levenshtein "^1.0.16" + fs-minipass "^3.0.3" + glob "^10.4.5" + graceful-fs "^4.2.11" + hosted-git-info "^8.0.0" + ini "^5.0.0" + init-package-json "^7.0.1" + is-cidr "^5.1.0" + json-parse-even-better-errors "^4.0.0" + libnpmaccess "^9.0.0" + libnpmdiff "^7.0.0" + libnpmexec "^9.0.0" + libnpmfund "^6.0.0" + libnpmhook "^11.0.0" + libnpmorg "^7.0.0" + libnpmpack "^8.0.0" + libnpmpublish "^10.0.0" + libnpmsearch "^8.0.0" + libnpmteam "^7.0.0" + libnpmversion "^7.0.0" + make-fetch-happen "^14.0.1" + minimatch "^9.0.5" + minipass "^7.1.1" + minipass-pipeline "^1.2.4" + ms "^2.1.2" + node-gyp "^10.2.0" + nopt "^8.0.0" + normalize-package-data "^7.0.0" + npm-audit-report "^6.0.0" + npm-install-checks "^7.1.0" + npm-package-arg "^12.0.0" + npm-pick-manifest "^10.0.0" + npm-profile "^11.0.1" + npm-registry-fetch "^18.0.1" + npm-user-validate "^3.0.0" + p-map "^4.0.0" + pacote "^19.0.0" + parse-conflict-json "^4.0.0" + proc-log "^5.0.0" + qrcode-terminal "^0.12.0" + read "^4.0.0" + semver "^7.6.3" + spdx-expression-parse "^4.0.0" + ssri "^12.0.0" + supports-color "^9.4.0" + tar "^6.2.1" + text-table "~0.2.0" + tiny-relative-date "^1.3.0" + treeverse "^3.0.0" + validate-npm-package-name "^6.0.0" + which "^5.0.0" + write-file-atomic "^6.0.0" nwsapi@^2.2.12: - version "2.2.12" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.12.tgz#fb6af5c0ec35b27b4581eb3bbad34ec9e5c696f8" - integrity sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w== + version "2.2.13" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.13.tgz#e56b4e98960e7a040e5474536587e599c4ff4655" + integrity sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ== object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + object-inspect@^1.13.1: version "1.13.2" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" @@ -6636,7 +8125,44 @@ object.assign@^4.1.4, object.assign@^4.1.5: has-symbols "^1.0.3" object-keys "^1.1.1" -object.values@^1.1.5: +object.entries@^1.1.6, object.entries@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" + integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +object.fromentries@^2.0.6, object.fromentries@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.groupby@^1.0.0, object.groupby@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + +object.hasown@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" + integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== + dependencies: + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.values@^1.1.6, object.values@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== @@ -6650,18 +8176,6 @@ on-exit-leak-free@^2.1.0: resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -6669,18 +8183,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -opener@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" @@ -6693,13 +8195,6 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" @@ -6707,20 +8202,6 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" @@ -6728,23 +8209,45 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-map@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-7.0.2.tgz#7c5119fada4755660f70199a66aa3fe2f85a1fe8" + integrity sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q== package-json-from-dist@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" +pacote@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-19.0.0.tgz#df8da743a6086ef878ee5a797af2527647bf6b2b" + integrity sha512-953pUJqILTeaRvKFcQ78unsNc3Nl4PyVHTTsAUmvSmJ0NXs0LTWKAl5tMF2CXPRXA16RdCMYI9EKlV4CCi2T5g== + dependencies: + "@npmcli/git" "^6.0.0" + "@npmcli/installed-package-contents" "^3.0.0" + "@npmcli/package-json" "^6.0.0" + "@npmcli/promise-spawn" "^8.0.0" + "@npmcli/run-script" "^9.0.0" + cacache "^19.0.0" + fs-minipass "^3.0.0" + minipass "^7.0.2" + npm-package-arg "^12.0.0" + npm-packlist "^9.0.0" + npm-pick-manifest "^10.0.0" + npm-registry-fetch "^18.0.0" + proc-log "^5.0.0" + promise-retry "^2.0.1" + sigstore "^2.2.0" + ssri "^12.0.0" + tar "^6.1.11" parent-module@^1.0.0: version "1.0.1" @@ -6753,6 +8256,15 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-conflict-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-4.0.0.tgz#996b1edfc0c727583b56c7644dbb3258fc9e9e4b" + integrity sha512-37CN2VtcuvKgHUs8+0b1uJeEsbGn61GRHz469C94P5xiOoqpDYJYwjg4RY9Vmz39WyZAVkR5++nbJwLMIgOCnQ== + dependencies: + json-parse-even-better-errors "^4.0.0" + just-diff "^6.0.0" + just-diff-apply "^5.2.0" + parse-json@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -6763,11 +8275,6 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== - parse5@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" @@ -6775,72 +8282,13 @@ parse5@^7.1.2: dependencies: entities "^4.4.0" -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -passport-anonymous@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/passport-anonymous/-/passport-anonymous-1.0.1.tgz#241e37274ec44dfb7f6cad234b41c438386bc117" - integrity sha512-Mk2dls97nLTzHpsWCYQ54IVGucWaiWSHHr3+IhWYAebg4dRgRQIfyoeYrixoxB2z2z4+EM7p9yjC+a3yMB5z5A== - dependencies: - passport-strategy "1.x.x" - -passport-headerapikey@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/passport-headerapikey/-/passport-headerapikey-1.2.2.tgz#b71960523999c9864151b8535c919e3ff5ba75ce" - integrity sha512-4BvVJRrWsNJPrd3UoZfcnnl4zvUWYKEtfYkoDsaOKBsrWHYmzTApCjs7qUbncOLexE9ul0IRiYBFfBG0y9IVQA== - dependencies: - lodash "^4.17.15" - passport-strategy "^1.0.0" - -passport-jwt@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/passport-jwt/-/passport-jwt-4.0.1.tgz#c443795eff322c38d173faa0a3c481479646ec3d" - integrity sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ== - dependencies: - jsonwebtoken "^9.0.0" - passport-strategy "^1.0.0" - -passport-local@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/passport-local/-/passport-local-1.0.0.tgz#1fe63268c92e75606626437e3b906662c15ba6ee" - integrity sha512-9wCE6qKznvf9mQYYbgJ3sVOHmCWoUNMVFoZzNoznmISbhnNNPhN9xfY3sLmScHMetEJeoY7CXwfhCe7argfQow== - dependencies: - passport-strategy "1.x.x" - -passport-strategy@1.x.x, passport-strategy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" - integrity sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA== - -passport@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/passport/-/passport-0.6.0.tgz#e869579fab465b5c0b291e841e6cc95c005fac9d" - integrity sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug== +parseley@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/parseley/-/parseley-0.11.0.tgz#1ff817c829a02fcc214c9cc0d96b126d772ee814" + integrity sha512-VfcwXlBWgTF+unPcr7yu3HSSA6QUdDaDnrHcytVfj5Z8azAyKBDrYnSIfeSxlrEayndNcLmrXzg+Vxbo6DWRXQ== dependencies: - passport-strategy "1.x.x" - pause "0.0.1" - utils-merge "^1.0.1" - -path-browserify@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + leac "^0.6.0" + peberminta "^0.8.0" path-exists@^4.0.0: version "4.0.0" @@ -6870,524 +8318,182 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" +path-to-regexp@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" + integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pause@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" - integrity sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg== - payload-admin-bar@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/payload-admin-bar/-/payload-admin-bar-1.0.6.tgz#ca25e369a4f319c3d61ff3db4021c1c2fd9d0148" integrity sha512-hpQdOiPq4LpWTkbuAnvxDf5wQ2ysMp9kQt+X2U+FfvBwD1U6qoxJfmUymG1OjLlaZzCZ93FlOdTl4u4Z0/m/SA== -payload@^2.0.0: - version "2.28.0" - resolved "https://registry.yarnpkg.com/payload/-/payload-2.28.0.tgz#b33b9edba187e97632a0314445e5bbe689987656" - integrity sha512-DzSSUoG1pOiPQXSgoTqYar7naQ121kk6lRoxCPI6xQYv74z2hbGo4elgUSGLN6AHor0nU4egBenjaltZX82ELA== +payload@beta: + version "3.0.0-beta.111" + resolved "https://registry.yarnpkg.com/payload/-/payload-3.0.0-beta.111.tgz#421f069f629f09b20063690dc7f5c6ec1bcf88a0" + integrity sha512-wGyTXSx33BCxvN6afV4hi0yoxAsYSH5R22cGuwU8DcIMzhamQCiRLpOcRMc4Msock6LydEtNjloeyEYqHBeY1w== dependencies: - "@date-io/date-fns" "2.16.0" - "@dnd-kit/core" "6.0.8" - "@dnd-kit/sortable" "7.0.2" - "@faceless-ui/modal" "2.0.1" - "@faceless-ui/scroll-info" "1.3.0" - "@faceless-ui/window-info" "2.1.1" - "@monaco-editor/react" "4.5.1" - "@swc/core" "1.6.1" - "@swc/register" "0.1.10" - body-parser "1.20.2" - body-scroll-lock "4.0.0-beta.0" + "@monaco-editor/react" "4.6.0" + "@next/env" "^15.0.0-canary.173" + "@payloadcms/translations" "3.0.0-beta.111" + "@types/busboy" "1.5.4" + ajv "8.17.1" bson-objectid "2.0.4" - compression "1.7.4" - conf "10.2.0" - connect-history-api-fallback "1.6.0" + ci-info "^4.0.0" console-table-printer "2.11.2" dataloader "2.2.2" - date-fns "2.30.0" - deep-equal "2.2.2" deepmerge "4.3.1" - dotenv "8.6.0" - express "4.18.2" - express-fileupload "1.4.0" - express-rate-limit "5.5.1" - file-type "16.5.4" - find-up "4.1.0" - fs-extra "10.1.0" - get-tsconfig "4.6.2" - graphql "16.8.1" - graphql-http "1.21.0" - graphql-playground-middleware-express "1.7.23" - graphql-query-complexity "0.12.0" - graphql-scalars "1.22.2" - graphql-type-json "0.3.2" - html-webpack-plugin "5.5.3" + file-type "19.3.0" + get-tsconfig "^4.7.2" http-status "1.6.2" - i18next "22.5.1" - i18next-browser-languagedetector "6.1.8" - i18next-http-middleware "3.3.2" - is-buffer "^2.0.5" - is-hotkey "0.2.0" - is-plain-object "5.0.0" - isomorphic-fetch "3.0.0" - joi "17.9.2" - json-schema-to-typescript "14.0.5" - jsonwebtoken "9.0.1" - jwt-decode "3.1.2" - md5 "2.3.0" - method-override "3.0.0" + image-size "^1.1.1" + json-schema-to-typescript "15.0.1" + jsonwebtoken "9.0.2" minimist "1.2.8" - mkdirp "1.0.4" - monaco-editor "0.38.0" - nodemailer "6.9.8" - object-to-formdata "4.5.1" - passport "0.6.0" - passport-anonymous "1.0.1" - passport-headerapikey "1.2.2" - passport-jwt "4.0.1" - passport-local "1.0.0" - pino "8.15.0" - pino-pretty "10.3.1" - pluralize "8.0.0" - probe-image-size "6.0.0" - process "0.11.10" - qs "6.11.2" - qs-middleware "1.0.3" - react "^18.0.0" - react-animate-height "2.1.2" - react-datepicker "4.16.0" - react-diff-viewer-continued "3.2.6" - react-dom "^18.0.0" - react-helmet "6.1.0" - react-i18next "11.18.6" - react-image-crop "10.1.8" - react-router-dom "5.3.4" - react-router-navigation-prompt "1.9.6" - react-select "5.7.4" - react-toastify "10.0.5" - sanitize-filename "1.6.3" - sass "1.69.4" - scheduler "0.23.0" - scmp "2.1.0" - sharp "0.32.6" - swc-loader "0.2.3" - terser-webpack-plugin "5.3.9" - ts-essentials "7.0.3" - use-context-selector "1.4.1" - uuid "9.0.1" - -peek-readable@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" - integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== - -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" - integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pino-abstract-transport@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz#97f9f2631931e242da531b5c66d3079c12c9d1b5" - integrity sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q== - dependencies: - readable-stream "^4.0.0" - split2 "^4.0.0" - -pino-abstract-transport@v1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz#cc0d6955fffcadb91b7b49ef220a6cc111d48bb3" - integrity sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA== - dependencies: - readable-stream "^4.0.0" - split2 "^4.0.0" - -pino-pretty@10.3.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-10.3.1.tgz#e3285a5265211ac6c7cd5988f9e65bf3371a0ca9" - integrity sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g== - dependencies: - colorette "^2.0.7" - dateformat "^4.6.3" - fast-copy "^3.0.0" - fast-safe-stringify "^2.1.1" - help-me "^5.0.0" - joycon "^3.1.1" - minimist "^1.2.6" - on-exit-leak-free "^2.1.0" - pino-abstract-transport "^1.0.0" - pump "^3.0.0" - readable-stream "^4.0.0" - secure-json-parse "^2.4.0" - sonic-boom "^3.0.0" - strip-json-comments "^3.1.1" - -pino-std-serializers@^6.0.0: - version "6.2.2" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz#d9a9b5f2b9a402486a5fc4db0a737570a860aab3" - integrity sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA== - -pino@8.15.0: - version "8.15.0" - resolved "https://registry.yarnpkg.com/pino/-/pino-8.15.0.tgz#67c61d5e397bf297e5a0433976a7f7b8aa6f876b" - integrity sha512-olUADJByk4twxccmAxb1RiGKOSvddHugCV3wkqjyv+3Sooa2KLrmXrKEWOKi0XPCLasRR5jBXxioE1jxUa4KzQ== - dependencies: - atomic-sleep "^1.0.0" - fast-redact "^3.1.1" - on-exit-leak-free "^2.1.0" - pino-abstract-transport v1.0.0 - pino-std-serializers "^6.0.0" - process-warning "^2.0.0" - quick-format-unescaped "^4.0.3" - real-require "^0.2.0" - safe-stable-stringify "^2.3.1" - sonic-boom "^3.1.0" - thread-stream "^2.0.0" - -pirates@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -pluralize@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -possible-typed-array-names@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" - integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== - -postcss-attribute-case-insensitive@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-6.0.3.tgz#d118023911a768dfccfc0b0147f5ff06d8485806" - integrity sha512-KHkmCILThWBRtg+Jn1owTnHPnFit4OkqS+eKiGEOPIGke54DCeYGJ6r0Fx/HjfE9M9kznApCLcU0DvnPchazMQ== - dependencies: - postcss-selector-parser "^6.0.13" - -postcss-clamp@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" - integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-color-functional-notation@^6.0.0: - version "6.0.14" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-6.0.14.tgz#958d8fc434fafbb15ebc7964053f19d366773078" - integrity sha512-dNUX+UH4dAozZ8uMHZ3CtCNYw8fyFAmqqdcyxMr7PEdM9jLXV19YscoYO0F25KqZYhmtWKQ+4tKrIZQrwzwg7A== - dependencies: - "@csstools/css-color-parser" "^2.0.4" - "@csstools/css-parser-algorithms" "^2.7.1" - "@csstools/css-tokenizer" "^2.4.1" - "@csstools/postcss-progressive-custom-properties" "^3.3.0" - "@csstools/utilities" "^1.0.0" - -postcss-color-hex-alpha@^9.0.2: - version "9.0.4" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-9.0.4.tgz#f455902fb222453b2eb9699dfa9fc17a9c056f1e" - integrity sha512-XQZm4q4fNFqVCYMGPiBjcqDhuG7Ey2xrl99AnDJMyr5eDASsAGalndVgHZF8i97VFNy1GQeZc4q2ydagGmhelQ== - dependencies: - "@csstools/utilities" "^1.0.0" - postcss-value-parser "^4.2.0" - -postcss-color-rebeccapurple@^9.0.0: - version "9.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-9.0.3.tgz#63e14d9b9ab196e62e3491606a2b77a9531a6825" - integrity sha512-ruBqzEFDYHrcVq3FnW3XHgwRqVMrtEPLBtD7K2YmsLKVc2jbkxzzNEctJKsPCpDZ+LeMHLKRDoSShVefGc+CkQ== - dependencies: - "@csstools/utilities" "^1.0.0" - postcss-value-parser "^4.2.0" - -postcss-custom-media@^10.0.0: - version "10.0.8" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-10.0.8.tgz#0b84916522eb1e8a4b9e3ecd2bce292844cd7323" - integrity sha512-V1KgPcmvlGdxTel4/CyQtBJEFhMVpEmRGFrnVtgfGIHj5PJX9vO36eFBxKBeJn+aCDTed70cc+98Mz3J/uVdGQ== - dependencies: - "@csstools/cascade-layer-name-parser" "^1.0.13" - "@csstools/css-parser-algorithms" "^2.7.1" - "@csstools/css-tokenizer" "^2.4.1" - "@csstools/media-query-list-parser" "^2.1.13" - -postcss-custom-properties@^13.2.1: - version "13.3.12" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-13.3.12.tgz#e21960c7d13aed960b28236412d4da67f75317b0" - integrity sha512-oPn/OVqONB2ZLNqN185LDyaVByELAA/u3l2CS2TS16x2j2XsmV4kd8U49+TMxmUsEU9d8fB/I10E6U7kB0L1BA== - dependencies: - "@csstools/cascade-layer-name-parser" "^1.0.13" - "@csstools/css-parser-algorithms" "^2.7.1" - "@csstools/css-tokenizer" "^2.4.1" - "@csstools/utilities" "^1.0.0" - postcss-value-parser "^4.2.0" - -postcss-custom-selectors@^7.1.4: - version "7.1.12" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-7.1.12.tgz#4d1bac2469003aad3aa3d73481a1b7a45290852b" - integrity sha512-ctIoprBMJwByYMGjXG0F7IT2iMF2hnamQ+aWZETyBM0aAlyaYdVZTeUkk8RB+9h9wP+NdN3f01lfvKl2ZSqC0g== - dependencies: - "@csstools/cascade-layer-name-parser" "^1.0.13" - "@csstools/css-parser-algorithms" "^2.7.1" - "@csstools/css-tokenizer" "^2.4.1" - postcss-selector-parser "^6.1.0" - -postcss-dir-pseudo-class@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-8.0.1.tgz#b93755f52fb90215301b1d3ecb7c5e6416930a1e" - integrity sha512-uULohfWBBVoFiZXgsQA24JV6FdKIidQ+ZqxOouhWwdE+qJlALbkS5ScB43ZTjPK+xUZZhlaO/NjfCt5h4IKUfw== - dependencies: - postcss-selector-parser "^6.0.13" - -postcss-double-position-gradients@^5.0.0: - version "5.0.7" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-5.0.7.tgz#1a4841daf7ac04e94de4672282e8d02d1b3dd274" - integrity sha512-1xEhjV9u1s4l3iP5lRt1zvMjI/ya8492o9l/ivcxHhkO3nOz16moC4JpMxDUGrOs4R3hX+KWT7gKoV842cwRgg== - dependencies: - "@csstools/postcss-progressive-custom-properties" "^3.3.0" - "@csstools/utilities" "^1.0.0" - postcss-value-parser "^4.2.0" - -postcss-focus-visible@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-9.0.1.tgz#eede1032ce86b3bb2556d93ca5df63c68dfc2559" - integrity sha512-N2VQ5uPz3Z9ZcqI5tmeholn4d+1H14fKXszpjogZIrFbhaq0zNAtq8sAnw6VLiqGbL8YBzsnu7K9bBkTqaRimQ== - dependencies: - postcss-selector-parser "^6.0.13" - -postcss-focus-within@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-8.0.1.tgz#524af4c7eabae35cb1efa220a7903016fcc897fa" - integrity sha512-NFU3xcY/xwNaapVb+1uJ4n23XImoC86JNwkY/uduytSl2s9Ekc2EpzmRR63+ExitnW3Mab3Fba/wRPCT5oDILA== - dependencies: - postcss-selector-parser "^6.0.13" + pino "9.3.1" + pino-pretty "11.2.1" + pluralize "8.0.0" + sanitize-filename "1.6.3" + scmp "2.1.0" + ts-essentials "10.0.2" + tsx "4.19.1" + uuid "10.0.0" -postcss-font-variant@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" - integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== +peberminta@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/peberminta/-/peberminta-0.8.0.tgz#acf7b105f3d13c8ac28cad81f2f5fe4698507590" + integrity sha512-YYEs+eauIjDH5nUEGi18EohWE0nV2QbGTqmxQcqgZ/0g+laPCQmuIqq7EBLVi9uim9zMgfJv0QBZEnQ3uHw/Tw== -postcss-gap-properties@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-5.0.1.tgz#887b64655f42370b43f0ab266cc6dbabf504d276" - integrity sha512-k2z9Cnngc24c0KF4MtMuDdToROYqGMMUQGcE6V0odwjHyOHtaDBlLeRBV70y9/vF7KIbShrTRZ70JjsI1BZyWw== +peek-readable@^5.1.4: + version "5.2.0" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.2.0.tgz#7458f18126217c154938c32a185f5d05f3df3710" + integrity sha512-U94a+eXHzct7vAd19GH3UQ2dH4Satbng0MyYTMaQatL0pvYYL5CTPR25HBhKtecl+4bfu1/i3vC6k0hydO5Vcw== -postcss-image-set-function@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-6.0.3.tgz#84c5e32cc1085198f2cf4a786028dae8a2632bb2" - integrity sha512-i2bXrBYzfbRzFnm+pVuxVePSTCRiNmlfssGI4H0tJQvDue+yywXwUxe68VyzXs7cGtMaH6MCLY6IbCShrSroCw== - dependencies: - "@csstools/utilities" "^1.0.0" - postcss-value-parser "^4.2.0" +picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== -postcss-initial@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" - integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -postcss-lab-function@^6.0.0: - version "6.0.19" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-6.0.19.tgz#09b04c016bfbacd8576988a73dc19c0fdbeae2c4" - integrity sha512-vwln/mgvFrotJuGV8GFhpAOu9iGf3pvTBr6dLPDmUcqVD5OsQpEFyQMAFTxSxWXGEzBj6ld4pZ/9GDfEpXvo0g== - dependencies: - "@csstools/css-color-parser" "^2.0.4" - "@csstools/css-parser-algorithms" "^2.7.1" - "@csstools/css-tokenizer" "^2.4.1" - "@csstools/postcss-progressive-custom-properties" "^3.3.0" - "@csstools/utilities" "^1.0.0" +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -postcss-loader@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" - integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== +pino-abstract-transport@^1.0.0, pino-abstract-transport@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz#97f9f2631931e242da531b5c66d3079c12c9d1b5" + integrity sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q== dependencies: - cosmiconfig "^7.0.0" - klona "^2.0.5" - semver "^7.3.5" + readable-stream "^4.0.0" + split2 "^4.0.0" -postcss-logical@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-7.0.1.tgz#a3121f6510591b195321b16e65fbe13b1cfd3115" - integrity sha512-8GwUQZE0ri0K0HJHkDv87XOLC8DE0msc+HoWLeKdtjDZEwpZ5xuK3QdV6FhmHSQW40LPkg43QzvATRAI3LsRkg== +pino-pretty@11.2.1: + version "11.2.1" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-11.2.1.tgz#de9a42ff8ea7b26da93506bb9e49d0b566c5ae96" + integrity sha512-O05NuD9tkRasFRWVaF/uHLOvoRDFD7tb5VMertr78rbsYFjYp48Vg3477EshVAF5eZaEw+OpDl/tu+B0R5o+7g== dependencies: - postcss-value-parser "^4.2.0" - -postcss-modules-extract-imports@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" - integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== + colorette "^2.0.7" + dateformat "^4.6.3" + fast-copy "^3.0.2" + fast-safe-stringify "^2.1.1" + help-me "^5.0.0" + joycon "^3.1.1" + minimist "^1.2.6" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^1.0.0" + pump "^3.0.0" + readable-stream "^4.0.0" + secure-json-parse "^2.4.0" + sonic-boom "^4.0.1" + strip-json-comments "^3.1.1" -postcss-modules-local-by-default@^4.0.0: - version "4.0.5" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" - integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" +pino-std-serializers@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b" + integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA== -postcss-modules-scope@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" - integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== +pino@9.3.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/pino/-/pino-9.3.1.tgz#1a2720a58ed2dbc41bdf063366dd3dd717d050c8" + integrity sha512-afSfrq/hUiW/MFmQcLEwV9Zh8Ry6MrMTOyBU53o/fc0gEl+1OZ/Fks/xQCM2nOC0C/OfDtQMnT2d8c3kpcfSzA== dependencies: - postcss-selector-parser "^6.0.4" + atomic-sleep "^1.0.0" + fast-redact "^3.1.1" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^1.2.0" + pino-std-serializers "^7.0.0" + process-warning "^3.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.2.0" + safe-stable-stringify "^2.3.1" + sonic-boom "^4.0.1" + thread-stream "^3.0.0" -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== -postcss-nesting@^12.0.0: - version "12.1.5" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-12.1.5.tgz#e5e2dc1d63e6166c194da45aa28c04d4024db98f" - integrity sha512-N1NgI1PDCiAGWPTYrwqm8wpjv0bgDmkYHH72pNsqTCv9CObxjxftdYu6AKtGN+pnJa7FQjMm3v4sp8QJbFsYdQ== - dependencies: - "@csstools/selector-resolve-nested" "^1.1.0" - "@csstools/selector-specificity" "^3.1.1" - postcss-selector-parser "^6.1.0" +pluralize@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -postcss-opacity-percentage@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-2.0.0.tgz#c0a56060cd4586e3f954dbde1efffc2deed53002" - integrity sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== -postcss-overflow-shorthand@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-5.0.1.tgz#c0a124edad4f7ad88109275a60510e1fb07ab833" - integrity sha512-XzjBYKLd1t6vHsaokMV9URBt2EwC9a7nDhpQpjoPk2HRTSQfokPfyAS/Q7AOrzUu6q+vp/GnrDBGuj/FCaRqrQ== +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== dependencies: - postcss-value-parser "^4.2.0" - -postcss-page-break@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" - integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" -postcss-place@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-9.0.1.tgz#c08c46a94e639c1ee3457ac96d50c50a89bd6ac3" - integrity sha512-JfL+paQOgRQRMoYFc2f73pGuG/Aw3tt4vYMR6UA3cWVMxivviPTnMFnFTczUJOA4K2Zga6xgQVE+PcLs64WC8Q== +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== dependencies: - postcss-value-parser "^4.2.0" - -postcss-preset-env@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-9.0.0.tgz#9ca4fc5c0b4a0584d4284008a33ec2d456e2b5a5" - integrity sha512-L0x/Nluq+/FkidIYjU7JtkmRL2/QmXuYkxuM3C5y9VG3iGLljF9PuBHQ7kzKRoVfwnca0VNN0Zb3a/bxVJ12vA== - dependencies: - "@csstools/postcss-cascade-layers" "^4.0.0" - "@csstools/postcss-color-function" "^2.2.3" - "@csstools/postcss-color-mix-function" "^1.0.3" - "@csstools/postcss-font-format-keywords" "^3.0.0" - "@csstools/postcss-gradients-interpolation-method" "^4.0.0" - "@csstools/postcss-hwb-function" "^3.0.0" - "@csstools/postcss-ic-unit" "^3.0.0" - "@csstools/postcss-is-pseudo-class" "^4.0.0" - "@csstools/postcss-logical-float-and-clear" "^2.0.0" - "@csstools/postcss-logical-resize" "^2.0.0" - "@csstools/postcss-logical-viewport-units" "^2.0.0" - "@csstools/postcss-media-minmax" "^1.0.5" - "@csstools/postcss-media-queries-aspect-ratio-number-values" "^2.0.0" - "@csstools/postcss-nested-calc" "^3.0.0" - "@csstools/postcss-normalize-display-values" "^3.0.0" - "@csstools/postcss-oklab-function" "^3.0.0" - "@csstools/postcss-progressive-custom-properties" "^3.0.0" - "@csstools/postcss-relative-color-syntax" "^2.0.0" - "@csstools/postcss-scope-pseudo-class" "^3.0.0" - "@csstools/postcss-stepped-value-functions" "^3.0.0" - "@csstools/postcss-text-decoration-shorthand" "^3.0.0" - "@csstools/postcss-trigonometric-functions" "^3.0.0" - "@csstools/postcss-unset-value" "^3.0.0" - autoprefixer "^10.4.14" - browserslist "^4.21.9" - css-blank-pseudo "^6.0.0" - css-has-pseudo "^6.0.0" - css-prefers-color-scheme "^9.0.0" - cssdb "^7.6.0" - postcss-attribute-case-insensitive "^6.0.2" - postcss-clamp "^4.1.0" - postcss-color-functional-notation "^6.0.0" - postcss-color-hex-alpha "^9.0.2" - postcss-color-rebeccapurple "^9.0.0" - postcss-custom-media "^10.0.0" - postcss-custom-properties "^13.2.1" - postcss-custom-selectors "^7.1.4" - postcss-dir-pseudo-class "^8.0.0" - postcss-double-position-gradients "^5.0.0" - postcss-focus-visible "^9.0.0" - postcss-focus-within "^8.0.0" - postcss-font-variant "^5.0.0" - postcss-gap-properties "^5.0.0" - postcss-image-set-function "^6.0.0" - postcss-initial "^4.0.1" - postcss-lab-function "^6.0.0" - postcss-logical "^7.0.0" - postcss-nesting "^12.0.0" - postcss-opacity-percentage "^2.0.0" - postcss-overflow-shorthand "^5.0.0" - postcss-page-break "^3.0.4" - postcss-place "^9.0.0" - postcss-pseudo-class-any-link "^9.0.0" - postcss-replace-overflow-wrap "^4.0.0" - postcss-selector-not "^7.0.1" - postcss-value-parser "^4.2.0" + camelcase-css "^2.0.1" -postcss-pseudo-class-any-link@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-9.0.2.tgz#e436a7db1421f8a347fff3f19951a27d4e791987" - integrity sha512-HFSsxIqQ9nA27ahyfH37cRWGk3SYyQLpk0LiWw/UGMV4VKT5YG2ONee4Pz/oFesnK0dn2AjcyequDbIjKJgB0g== +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== dependencies: - postcss-selector-parser "^6.0.13" + lilconfig "^3.0.0" + yaml "^2.3.4" -postcss-replace-overflow-wrap@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" - integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== +postcss-nested@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" + integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== + dependencies: + postcss-selector-parser "^6.1.1" -postcss-selector-not@^7.0.1: - version "7.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-7.0.2.tgz#f9184c7770be5dcb4abd7efa3610a15fbd2f0b31" - integrity sha512-/SSxf/90Obye49VZIfc0ls4H0P6i6V1iHv0pzZH8SdgvZOPFkF37ef1r5cyWcMflJSFJ5bfuoluTnFnBBFiuSA== +postcss-selector-parser@6.0.10: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== dependencies: - postcss-selector-parser "^6.0.13" + cssesc "^3.0.0" + util-deprecate "^1.0.2" -postcss-selector-parser@^6.0.13, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.1.0: +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== @@ -7395,20 +8501,11 @@ postcss-selector-parser@^6.0.13, postcss-selector-parser@^6.0.2, postcss-selecto cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.4.14: - version "8.4.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - postcss@8.4.31: version "8.4.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" @@ -7418,14 +8515,14 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.2.15: - version "8.4.45" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.45.tgz#538d13d89a16ef71edbf75d895284ae06b79e603" - integrity sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q== +postcss@^8.4.23, postcss@^8.4.38: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== dependencies: nanoid "^3.3.7" - picocolors "^1.0.1" - source-map-js "^1.2.0" + picocolors "^1.1.0" + source-map-js "^1.2.1" prebuild-install@^7.1.1: version "7.1.2" @@ -7450,60 +8547,86 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.7.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -prettier@^3.2.5: +prettier@^3.0.3, prettier@^3.2.5: version "3.3.3" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== -pretty-error@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== +pretty@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5" + integrity sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w== + dependencies: + condense-newlines "^0.2.1" + extend-shallow "^2.0.1" + js-beautify "^1.6.12" + +prism-react-renderer@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-2.4.0.tgz#c5ea692029c2f8b3fd04f63662d04ffd4eaf10a0" + integrity sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw== dependencies: - lodash "^4.17.20" - renderkid "^3.0.0" + "@types/prismjs" "^1.26.0" + clsx "^2.0.0" prismjs@^1.27.0: version "1.29.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== -probe-image-size@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-6.0.0.tgz#4a85b19d5af4e29a8de7d53a9aa036f6fd02f5f4" - integrity sha512-99PZ5+RU4gqiTfK5ZDMDkZtn6eL4WlKfFyVJV7lFQvH3iGmQ85DqMTOdxorERO26LHkevR2qsxnHp0x/2UDJPA== - dependencies: - deepmerge "^4.0.0" - needle "^2.5.2" - stream-parser "~0.3.1" +proc-log@^4.1.0, proc-log@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" + integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== + +proc-log@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-5.0.0.tgz#e6c93cf37aef33f835c53485f314f50ea906a9d8" + integrity sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ== process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process-warning@^2.0.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-2.3.2.tgz#70d8a3251aab0eafe3a595d8ae2c5d2277f096a5" - integrity sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA== +process-warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-3.0.0.tgz#96e5b88884187a1dce6f5c3166d611132058710b" + integrity sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ== -process@0.11.10, process@^0.11.10: +process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== +proggy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/proggy/-/proggy-3.0.0.tgz#874e91fed27fe00a511758e83216a6b65148bd6c" + integrity sha512-QE8RApCM3IaRRxVzxrjbgNMpQEX6Wu0p0KBeoSiSEw5/bsGwZHsshF4LCxH2jp/r6BU+bqA3LrMDEYNfJnpD8Q== + +promise-all-reject-late@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== + +promise-call-limit@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-3.0.2.tgz#524b7f4b97729ff70417d93d24f46f0265efa4f9" + integrity sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + prompts@2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -7512,6 +8635,13 @@ prompts@2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" +promzard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-2.0.0.tgz#03ad0e4db706544dfdd4f459281f13484fc10c49" + integrity sha512-Ncd0vyS2eXGOjchIRg6PVCYKetJYrW1BSbbIo+bKdig61TB6nH2RQNF2uP+qMpsI73L/jURLWojcw8JNIKZ3gg== + dependencies: + read "^4.0.0" + prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" @@ -7521,23 +8651,15 @@ prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, object-assign "^4.1.1" react-is "^16.13.1" -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -psl@^1.1.33: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== -pstree.remy@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== pump@^3.0.0: version "3.0.0" @@ -7552,43 +8674,15 @@ punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -qs-middleware@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/qs-middleware/-/qs-middleware-1.0.3.tgz#84f3535275ba20fd00c2122efacce6ab01092c19" - integrity sha512-ymlixxD/0Bj3BMY9x1z8ENdQdhkmsIbDNyVvfM8soHn5p/CRFlLPrmtxmE5aG//q1PzHHSGuLi+6QlHezivseg== - dependencies: - qs "~6.4.0" - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@6.11.2: - version "6.11.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" - integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== - dependencies: - side-channel "^1.0.4" - -qs@^6.9.1: - version "6.13.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" - integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== - dependencies: - side-channel "^1.0.6" - -qs@~6.4.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.1.tgz#2bad97710a5b661c366b378b1e3a44a592ff45e6" - integrity sha512-LQy1Q1fcva/UsnP/6Iaa4lVeM49WiOitu2T4hZCyA/elLKu37L99qcBJk4VCCk+rdLvnMzfKyiN3SZTqdAZGSQ== +qrcode-terminal@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" + integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== +qs-esm@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/qs-esm/-/qs-esm-7.0.2.tgz#cdd52c8ddba8270258e0808423e8f28d8a7195c9" + integrity sha512-D8NAthKSD7SGn748v+GLaaO6k08Mvpoqroa35PqIQC4gtUa8/Pb/k+r0m0NnGBVbHDP1gKZ2nVywqfMisRhV5A== queue-microtask@^1.2.2: version "1.2.3" @@ -7600,43 +8694,18 @@ queue-tick@^1.0.1: resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142" integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== +queue@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + quick-format-unescaped@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -7655,17 +8724,16 @@ react-animate-height@2.1.2: classnames "^2.2.5" prop-types "^15.6.1" -react-datepicker@4.16.0: - version "4.16.0" - resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-4.16.0.tgz#b9dd389bb5611a1acc514bba1dd944be21dd877f" - integrity sha512-hNQ0PAg/LQoVbDUO/RWAdm/RYmPhN3cz7LuQ3hqbs24OSp69QCiKOJRrQ4jk1gv1jNR5oYu8SjjgfDh8q6Q1yw== +react-datepicker@6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-6.9.0.tgz#0ad234dad81d567ae64cad79697bbad69c95490b" + integrity sha512-QTxuzeem7BUfVFWv+g5WuvzT0c5BPo+XTCNbMTZKSZQLU+cMMwSUHwspaxuIcDlwNcOH0tiJ+bh1fJ2yxOGYWA== dependencies: - "@popperjs/core" "^2.11.8" - classnames "^2.2.6" - date-fns "^2.30.0" + "@floating-ui/react" "^0.26.2" + clsx "^2.1.0" + date-fns "^3.3.1" prop-types "^15.7.2" - react-onclickoutside "^6.12.2" - react-popper "^2.3.0" + react-onclickoutside "^6.13.0" react-diff-viewer-continued@3.2.6: version "3.2.6" @@ -7678,18 +8746,25 @@ react-diff-viewer-continued@3.2.6: memoize-one "^6.0.0" prop-types "^15.8.1" -react-dom@^18.0.0, react-dom@^18.2.0: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" - integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== +react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== dependencies: loose-envify "^1.1.0" - scheduler "^0.23.2" + scheduler "^0.23.0" + +react-dom@^19.0.0-rc-09111202-20241011: + version "19.0.0-rc-09111202-20241011" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0-rc-09111202-20241011.tgz#e02570e8e6314bf1a7b98d8d7b2f7816c3314174" + integrity sha512-iGX/aJR6YjAHHUtmPNf2YmR8e2pYmlRL28tR/PO6VdIGBqNzzLMNnTEcgjlPPQ0rXBjI0IL7SJnOFYWmk3ZGjw== + dependencies: + scheduler "0.25.0-rc-09111202-20241011" -react-error-boundary@4.0.12: - version "4.0.12" - resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-4.0.12.tgz#59f8f1dbc53bbbb34fc384c8db7cf4082cb63e2c" - integrity sha512-kJdxdEYlb7CPC1A0SeUY38cHpjuu6UkvzKiAmqmOFL21VRfMhOcWxTCBgLVCO0VEMh9JhFNcVaXlV4/BTpiwOA== +react-error-boundary@4.0.13: + version "4.0.13" + resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-4.0.13.tgz#80386b7b27b1131c5fbb7368b8c0d983354c7947" + integrity sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ== dependencies: "@babel/runtime" "^7.12.5" @@ -7700,94 +8775,49 @@ react-error-boundary@^3.1.4: dependencies: "@babel/runtime" "^7.12.5" -react-fast-compare@^3.0.1, react-fast-compare@^3.1.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" - integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== - -react-helmet@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" - integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== - dependencies: - object-assign "^4.1.1" - prop-types "^15.7.2" - react-fast-compare "^3.1.1" - react-side-effect "^2.1.0" - react-hook-form@7.45.4: version "7.45.4" resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.45.4.tgz#73d228b704026ae95d7e5f7b207a681b173ec62a" integrity sha512-HGDV1JOOBPZj10LB3+OZgfDBTn+IeEsNOKiq/cxbQAIbKaiJUe/KV8DBUzsx0Gx/7IG/orWqRRm736JwOfUSWQ== -react-i18next@11.18.6: - version "11.18.6" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.18.6.tgz#e159c2960c718c1314f1e8fcaa282d1c8b167887" - integrity sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA== - dependencies: - "@babel/runtime" "^7.14.5" - html-parse-stringify "^3.0.1" - react-image-crop@10.1.8: version "10.1.8" resolved "https://registry.yarnpkg.com/react-image-crop/-/react-image-crop-10.1.8.tgz#6f7b33d069f6cfb887e66faee16a9fb2e6d31137" integrity sha512-4rb8XtXNx7ZaOZarKKnckgz4xLMvds/YrU6mpJfGhGAsy2Mg4mIw1x+DCCGngVGq2soTBVVOxx2s/C6mTX9+pA== -react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-onclickoutside@^6.12.2: +react-onclickoutside@^6.13.0: version "6.13.1" resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.13.1.tgz#1f5e0241c08784b6e65745d91aca0d700c548a89" integrity sha512-LdrrxK/Yh9zbBQdFbMTXPp3dTSN9B+9YJQucdDu3JNKRrbdU+H+/TVONJoWtOwy4II8Sqf1y/DTI6w/vGPYW0w== -react-popper@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.3.0.tgz#17891c620e1320dce318bad9fede46a5f71c70ba" - integrity sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q== +react-remove-scroll-bar@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" + integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== dependencies: - react-fast-compare "^3.0.1" - warning "^4.0.2" + react-style-singleton "^2.2.1" + tslib "^2.0.0" -react-router-dom@5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6" - integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== +react-remove-scroll@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz#fb03a0845d7768a4f1519a99fdb84983b793dc07" + integrity sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ== dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-router "5.3.4" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-router-navigation-prompt@1.9.6: - version "1.9.6" - resolved "https://registry.yarnpkg.com/react-router-navigation-prompt/-/react-router-navigation-prompt-1.9.6.tgz#a949252dfbae8c40508671beb6d5995f0b089ac4" - integrity sha512-l0sAtbroHK8i1/Eyy29XcrMpBEt0R08BaScgMUt8r5vWWbLz7G0ChOikayTCQm7QgDFsHw8gVnxDJb7TBZCAKg== - -react-router@5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" - integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - hoist-non-react-statics "^3.1.0" - loose-envify "^1.3.1" - path-to-regexp "^1.7.0" - prop-types "^15.6.2" - react-is "^16.6.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" + react-remove-scroll-bar "^2.3.6" + react-style-singleton "^2.2.1" + tslib "^2.1.0" + use-callback-ref "^1.3.0" + use-sidecar "^1.1.2" -react-select@5.7.4: - version "5.7.4" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.7.4.tgz#d8cad96e7bc9d6c8e2709bdda8f4363c5dd7ea7d" - integrity sha512-NhuE56X+p9QDFh4BgeygHFIvJJszO1i1KSkg/JPcIJrbovyRtI+GuOEa4XzFCEpZRAEoEI8u/cAHK+jG/PgUzQ== +react-select@5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.8.0.tgz#bd5c467a4df223f079dd720be9498076a3f085b5" + integrity sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA== dependencies: "@babel/runtime" "^7.12.0" "@emotion/cache" "^11.4.0" @@ -7807,19 +8837,16 @@ react-share@^5.1.0: classnames "^2.3.2" jsonp "^0.2.1" -react-side-effect@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.2.tgz#dc6345b9e8f9906dc2eeb68700b615e0b4fe752a" - integrity sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw== - -react-toastify@10.0.5: - version "10.0.5" - resolved "https://registry.yarnpkg.com/react-toastify/-/react-toastify-10.0.5.tgz#6b8f8386060c5c856239f3036d1e76874ce3bd1e" - integrity sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw== +react-style-singleton@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" + integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== dependencies: - clsx "^2.1.0" + get-nonce "^1.0.0" + invariant "^2.2.4" + tslib "^2.0.0" -react-transition-group@^4.3.0, react-transition-group@^4.4.2: +react-transition-group@4.4.5, react-transition-group@^4.3.0: version "4.4.5" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== @@ -7829,14 +8856,46 @@ react-transition-group@^4.3.0, react-transition-group@^4.4.2: loose-envify "^1.4.0" prop-types "^15.6.2" -react@^18.0.0, react@^18.2.0: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" - integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== +react@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: loose-envify "^1.1.0" -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: +react@^19.0.0-rc-09111202-20241011: + version "19.0.0-rc-09111202-20241011" + resolved "https://registry.yarnpkg.com/react/-/react-19.0.0-rc-09111202-20241011.tgz#bee6e5c313953e54352e9195ab85d542d82d1174" + integrity sha512-kAz5u4PAPQJI2VJzUrYC/p82CoPcl/KD7i1tHe+nu3RezaAvHGCZY339bLFMBzY91jnJoo07JQZ6UsqivtQ2vQ== + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +read-cmd-shim@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-5.0.0.tgz#6e5450492187a0749f6c80dcbef0debc1117acca" + integrity sha512-SEbJV7tohp3DAAILbEMPXavBjAnMN0tVnh4+9G8ihV4Pq3HYF9h8QNez9zkJ1ILkv9G2BjdzwctznGZXgu/HGw== + +read-package-json-fast@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-4.0.0.tgz#8ccbc05740bb9f58264f400acc0b4b4eee8d1b39" + integrity sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg== + dependencies: + json-parse-even-better-errors "^4.0.0" + npm-normalize-package-bin "^4.0.0" + +read@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read/-/read-4.0.0.tgz#46a989a22dfefe4eab2327e40e40b05eca727370" + integrity sha512-nbYGT3cec3J5NPUeJia7l72I3oIzMIB6yeNyDqi8CVHr3WftwjrCUqR0j13daoHEMVaZ/rxCpmHKrbods3hI2g== + dependencies: + mute-stream "^2.0.0" + +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -7879,13 +8938,6 @@ readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-web-to-node-stream@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" - integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== - dependencies: - readable-stream "^3.6.0" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -7898,19 +8950,40 @@ real-require@^0.2.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== -rechoir@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" - integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== +refa@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/refa/-/refa-0.11.0.tgz#07d57a9f5f3ee2dd58e0d145a6a489fda2591ed0" + integrity sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ== + dependencies: + "@eslint-community/regexpp" "^4.5.0" + +reflect.getprototypeof@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" + integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== dependencies: - resolve "^1.9.0" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.1" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" regenerator-runtime@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== -regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: +regexp-ast-analysis@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regexp-ast-analysis/-/regexp-ast-analysis-0.6.0.tgz#c0b648728c85d266a409ce00a6440c01c9834c61" + integrity sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ== + dependencies: + "@eslint-community/regexpp" "^4.5.0" + refa "^0.11.0" + +regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== @@ -7920,21 +8993,10 @@ regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1, regexp.prototype.f es-errors "^1.3.0" set-function-name "^2.0.1" -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" - integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^6.0.1" +regexpp@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== require-directory@^2.1.1: version "2.1.1" @@ -7946,47 +9008,31 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" +requireindex@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" + integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg== +resend@^0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/resend/-/resend-0.17.2.tgz#52ab40cff8e998c2ca621eb298da38b4ab1e3eb3" + integrity sha512-lakm76u4MiIDeMF1s2tCmjtksOhwZOs4WcAXkA7aUTvl+63/h+0h6Q6WnkB8RGtj6GakUhQuUkiZshfXgtIrGw== dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" + "@react-email/render" "0.0.7" + axios "1.4.0" + type-fest "3.13.0" resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - resolve-pkg-maps@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== -resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.4, resolve@^1.9.0: +resolve@^1.1.7, resolve@^1.10.1, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -7995,6 +9041,20 @@ resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.4, resolve@^1.9.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^2.0.0-next.4, resolve@^2.0.0-next.5: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -8007,6 +9067,13 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@^5.0.5: + version "5.0.10" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c" + integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== + dependencies: + glob "^10.3.7" + rrweb-cssom@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz#c73451a484b86dd7cfb1e0b2898df4b703183e4b" @@ -8029,16 +9096,16 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" @@ -8053,7 +9120,7 @@ safe-stable-stringify@^2.3.1: resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": +"safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -8065,28 +9132,15 @@ sanitize-filename@1.6.3: dependencies: truncate-utf8-bytes "^1.0.0" -sass-loader@12.6.0: - version "12.6.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" - integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== - dependencies: - klona "^2.0.4" - neo-async "^2.6.2" - -sass@1.69.4: - version "1.69.4" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.4.tgz#10c735f55e3ea0b7742c6efa940bce30e07fbca2" - integrity sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA== +sass@1.77.4: + version "1.77.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.4.tgz#92059c7bfc56b827c56eb116778d157ec017a5cd" + integrity sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" -sax@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" - integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== - saxes@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" @@ -8094,107 +9148,59 @@ saxes@^6.0.0: dependencies: xmlchars "^2.2.0" -scheduler@0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" +scheduler@0.0.0-experimental-3edc000d-20240926: + version "0.0.0-experimental-3edc000d-20240926" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.0.0-experimental-3edc000d-20240926.tgz#796f4853ca909d7db3f532094270b0dd2919d5cc" + integrity sha512-360BMNajOhMyrirau0pzWVgeakvrfjbfdqHnX2K+tSGTmn6tBN+6K5NhhaebqeXXWyCU3rl5FApjgF2GN0W5JA== -scheduler@^0.23.2: +scheduler@0.25.0-rc-09111202-20241011: + version "0.25.0-rc-09111202-20241011" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0-rc-09111202-20241011.tgz#c90b2cef5c2aa9692c8c9854f1b030e6e5a0554b" + integrity sha512-XIsordE2/I3s52ujwT5PZIxHMQca8L2ca6Gu3o0YHXDVTYucwXQW6m8/2fVKqfzoJRH1ne7/49M7/5Wick8qOA== + +scheduler@^0.23.0: version "0.23.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== dependencies: - loose-envify "^1.1.0" - -schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" - integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" + loose-envify "^1.1.0" scmp@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/scmp/-/scmp-2.1.0.tgz#37b8e197c425bdeb570ab91cc356b311a11f9c9a" integrity sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q== -scroll-into-view-if-needed@^2.2.20: - version "2.2.31" - resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz#d3c482959dc483e37962d1521254e3295d0d1587" - integrity sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA== +scslre@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/scslre/-/scslre-0.2.0.tgz#b604eedbab76f87003738d00de44d7601a78609e" + integrity sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w== dependencies: - compute-scroll-into-view "^1.0.20" + "@eslint-community/regexpp" "^4.5.0" + refa "^0.11.0" + regexp-ast-analysis "^0.6.0" secure-json-parse@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== -semver@^5.7.1: - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== +selderee@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/selderee/-/selderee-0.10.0.tgz#ec83d6044d9026668dc9bd2561acfde99a4e3a1c" + integrity sha512-DEL/RW/f4qLw/NrVg97xKaEBC8IpzIG2fvxnzCp3Z4yk4jQ3MXom+Imav9wApjxX2dfS3eW7x0DXafJr85i39A== + dependencies: + parseley "^0.11.0" + +semver@^6.1.0, semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.4: +semver@^7.1.1, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -semver@~7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - set-function-length@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" @@ -8207,7 +9213,7 @@ set-function-length@^1.2.1: gopd "^1.0.1" has-property-descriptors "^1.0.2" -set-function-name@^2.0.1: +set-function-name@^2.0.1, set-function-name@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== @@ -8217,18 +9223,6 @@ set-function-name@^2.0.1: functions-have-names "^1.2.3" has-property-descriptors "^1.0.2" -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - sharp@0.32.6: version "0.32.6" resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.6.tgz#6ad30c0b7cd910df65d5f355f774aa4fce45732a" @@ -8243,6 +9237,35 @@ sharp@0.32.6: tar-fs "^3.0.4" tunnel-agent "^0.6.0" +sharp@^0.33.5: + version "0.33.5" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.5.tgz#13e0e4130cc309d6a9497596715240b2ec0c594e" + integrity sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw== + dependencies: + color "^4.2.3" + detect-libc "^2.0.3" + semver "^7.6.3" + optionalDependencies: + "@img/sharp-darwin-arm64" "0.33.5" + "@img/sharp-darwin-x64" "0.33.5" + "@img/sharp-libvips-darwin-arm64" "1.0.4" + "@img/sharp-libvips-darwin-x64" "1.0.4" + "@img/sharp-libvips-linux-arm" "1.0.5" + "@img/sharp-libvips-linux-arm64" "1.0.4" + "@img/sharp-libvips-linux-s390x" "1.0.4" + "@img/sharp-libvips-linux-x64" "1.0.4" + "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" + "@img/sharp-libvips-linuxmusl-x64" "1.0.4" + "@img/sharp-linux-arm" "0.33.5" + "@img/sharp-linux-arm64" "0.33.5" + "@img/sharp-linux-s390x" "0.33.5" + "@img/sharp-linux-x64" "0.33.5" + "@img/sharp-linuxmusl-arm64" "0.33.5" + "@img/sharp-linuxmusl-x64" "0.33.5" + "@img/sharp-wasm32" "0.33.5" + "@img/sharp-win32-ia32" "0.33.5" + "@img/sharp-win32-x64" "0.33.5" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -8275,6 +9298,18 @@ signal-exit@^4.0.1: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +sigstore@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-2.3.1.tgz#0755dd2cc4820f2e922506da54d3d628e13bfa39" + integrity sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.2" + "@sigstore/sign" "^2.3.2" + "@sigstore/tuf" "^2.3.4" + "@sigstore/verify" "^1.2.1" + simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -8296,27 +9331,11 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -simple-update-notifier@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" - integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== - dependencies: - semver "~7.0.0" - simple-wcswidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-wcswidth/-/simple-wcswidth-1.0.1.tgz#8ab18ac0ae342f9d9b629604e54d2aa1ecb018b2" integrity sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg== -sirv@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" - integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== - dependencies: - "@polka/url" "^1.0.0-next.24" - mrmime "^2.0.0" - totalist "^3.0.0" - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -8327,50 +9346,21 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slate-history@0.86.0: - version "0.86.0" - resolved "https://registry.yarnpkg.com/slate-history/-/slate-history-0.86.0.tgz#5554612271d2fc1018a7918be3961bb66e620c58" - integrity sha512-OxObL9tbhgwvSlnKSCpGIh7wnuaqvOj5jRExGjEyCU2Ke8ctf22HjT+jw7GEi9ttLzNTUmTEU3YIzqKGeqN+og== - dependencies: - is-plain-object "^5.0.0" - -slate-hyperscript@0.81.3: - version "0.81.3" - resolved "https://registry.yarnpkg.com/slate-hyperscript/-/slate-hyperscript-0.81.3.tgz#0c8f446d6bef717d2fe855239fb86a000ba2d0d2" - integrity sha512-A/jvoLTAgeRcJaUPQCYOikCJxSws6+/jkL7mM+QuZljNd7EA5YqafGA7sVBJRFpcoSsDRUIah1yNiC/7vxZPYg== - dependencies: - is-plain-object "^5.0.0" - -slate-react@0.92.0: - version "0.92.0" - resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.92.0.tgz#eb158ac2a33d962f48c466c4c8cc7bc14c1c6633" - integrity sha512-xEDKu5RKw5f0N95l1UeNQnrB0Pxh4JPjpIZR/BVsMo0ININnLAknR99gLo46bl/Ffql4mr7LeaxQRoXxbFtJOQ== - dependencies: - "@juggle/resize-observer" "^3.4.0" - "@types/is-hotkey" "^0.1.1" - "@types/lodash" "^4.14.149" - direction "^1.0.3" - is-hotkey "^0.1.6" - is-plain-object "^5.0.0" - lodash "^4.17.4" - scroll-into-view-if-needed "^2.2.20" - tiny-invariant "1.0.6" - -slate@0.91.4: - version "0.91.4" - resolved "https://registry.yarnpkg.com/slate/-/slate-0.91.4.tgz#759764d63c8a8a7aff29a29e598e593ed80277f9" - integrity sha512-aUJ3rpjrdi5SbJ5G1Qjr3arytfRkEStTmHjBfWq2A2Q8MybacIzkScSvGJjQkdTk3djCK9C9SEOt39sSeZFwTw== - dependencies: - immer "^9.0.6" - is-plain-object "^5.0.0" - tiny-warning "^1.0.3" - smart-buffer@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -socks@^2.7.1: +socks-proxy-agent@^8.0.3: + version "8.0.4" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz#9071dca17af95f483300316f4b063578fa0db08c" + integrity sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw== + dependencies: + agent-base "^7.1.1" + debug "^4.3.4" + socks "^2.8.3" + +socks@^2.7.1, socks@^2.8.3: version "2.8.3" resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== @@ -8378,41 +9368,28 @@ socks@^2.7.1: ip-address "^9.0.5" smart-buffer "^4.2.0" -sonic-boom@^3.0.0, sonic-boom@^3.1.0: - version "3.8.1" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.8.1.tgz#d5ba8c4e26d6176c9a1d14d549d9ff579a163422" - integrity sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg== +sonic-boom@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.1.0.tgz#4f039663ba191fac5cfe4f1dc330faac079e4342" + integrity sha512-NGipjjRicyJJ03rPiZCJYjwlsuP2d1/5QUviozRXC7S3WdVWNK5e3Ojieb9CCyfhq2UC+3+SRd9nG3I2lPRvUw== dependencies: atomic-sleep "^1.0.0" -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +sonner@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sonner/-/sonner-1.5.0.tgz#af359f817063318415326b33aab54c5d17c747b7" + integrity sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA== -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== -source-map-support@^0.5.13, source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -source-map@^0.6.0, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - sparse-bitfield@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" @@ -8420,6 +9397,40 @@ sparse-bitfield@^3.0.3: dependencies: memory-pager "^1.0.2" +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-expression-parse@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz#a23af9f3132115465dac215c099303e4ceac5794" + integrity sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.20" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz#e44ed19ed318dd1e5888f93325cee800f0f51b89" + integrity sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw== + split2@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" @@ -8430,16 +9441,25 @@ sprintf-js@^1.1.3: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== +ssri@^10.0.0: + version "10.0.6" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" + integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== + dependencies: + minipass "^7.0.3" + +ssri@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-12.0.0.tgz#bcb4258417c702472f8191981d3c8a771fee6832" + integrity sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ== + dependencies: + minipass "^7.0.3" + state-local@^1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/state-local/-/state-local-1.0.7.tgz#da50211d07f05748d53009bee46307a37db386d5" integrity sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w== -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - stop-iteration-iterator@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" @@ -8455,13 +9475,6 @@ stream-browserify@3.0.0: inherits "~2.0.4" readable-stream "^3.5.0" -stream-parser@~0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773" - integrity sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ== - dependencies: - debug "2" - streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" @@ -8487,7 +9500,7 @@ streamx@^2.15.0, streamx@^2.18.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -8505,6 +9518,40 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" +string.prototype.includes@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#8986d57aee66d5460c144620a6d873778ad7289f" + integrity sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.matchall@^4.0.11, string.prototype.matchall@^4.0.8: + version "4.0.11" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" + integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.7" + regexp.prototype.flags "^1.5.2" + set-function-name "^2.0.2" + side-channel "^1.0.6" + +string.prototype.repeat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz#e90872ee0308b29435aa26275f6e1b762daee01a" + integrity sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trim@^1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" @@ -8593,26 +9640,18 @@ strnum@^1.0.5: resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== -strtok3@^6.2.4: - version "6.3.0" - resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" - integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== +strtok3@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-8.1.0.tgz#9234a6f42ee03bf8569c7ae0788d5fd4e67e095b" + integrity sha512-ExzDvHYPj6F6QkSNe/JxSlBxTh3OrI6wrAIz53ulxo1c4hBJ1bT9C/JrAthEKHWG9riVH3Xzg7B03Oxty6S2Lw== dependencies: "@tokenizer/token" "^0.3.0" - peek-readable "^4.1.0" - -style-loader@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" - integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" + peek-readable "^5.1.4" -styled-jsx@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" - integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== +styled-jsx@5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.6.tgz#83b90c077e6c6a80f7f5e8781d0f311b2fe41499" + integrity sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA== dependencies: client-only "0.0.1" @@ -8621,7 +9660,20 @@ stylis@4.2.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== -supports-color@^5.3.0, supports-color@^5.5.0: +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -8635,46 +9687,65 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" +supports-color@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.4.0.tgz#17bfcf686288f531db3dea3215510621ccb55954" + integrity sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw== supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -swc-loader@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.3.tgz#6792f1c2e4c9ae9bf9b933b3e010210e270c186d" - integrity sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A== - -swc-loader@^0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.6.tgz#bf0cba8eeff34bb19620ead81d1277fefaec6bc8" - integrity sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg== - dependencies: - "@swc/counter" "^0.1.3" - -swc-minify-webpack-plugin@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/swc-minify-webpack-plugin/-/swc-minify-webpack-plugin-2.1.3.tgz#45ef7376f65a995bccbce5c6c585f801e2f7ce0d" - integrity sha512-92/2qgTG663L8tHydvr1qevJ40x1qsve2feQoe/W2CD5uh8IagCVsUV2CfN8ik8erN+6IXR+xmOy9W+Z+m6z+w== - symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -tabbable@^5.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-5.3.3.tgz#aac0ff88c73b22d6c3c5a50b1586310006b47fbf" - integrity sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA== +tabbable@^6.0.0, tabbable@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" + integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== + +tailwind-merge@^2.3.0: + version "2.5.3" + resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.5.3.tgz#579546e14ddda24462e0303acd8798c50f5511bb" + integrity sha512-d9ZolCAIzom1nf/5p4LdD5zvjmgSxY0BGgdSvmXIoMYAiPdAW/dSpP7joCDYFY7r/HkEa2qmPtkgsu0xjQeQtw== -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: +tailwindcss-animate@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz#318b692c4c42676cc9e67b19b78775742388bef4" + integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA== + +tailwindcss@^3.4.3: + version "3.4.13" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.13.tgz#3d11e5510660f99df4f1bfb2d78434666cb8f831" + integrity sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.21.0" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" + +tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== @@ -8720,37 +9791,29 @@ tar-stream@^3.1.5: fast-fifo "^1.2.0" streamx "^2.15.0" -terser-webpack-plugin@5.3.9: - version "5.3.9" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" - integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.17" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.16.8" - -terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.6: - version "5.3.10" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" - integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== - dependencies: - "@jridgewell/trace-mapping" "^0.3.20" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.26.0" - -terser@^5.10.0, terser@^5.16.8, terser@^5.26.0: - version "5.32.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.32.0.tgz#ee811c0d2d6b741c1cc34a2bc5bcbfc1b5b1f96c" - integrity sha512-v3Gtw3IzpBJ0ugkxEX8U0W6+TnPKRRCWGh1jC/iM/e3Ki5+qvO1L1EAZ56bZasc64aXHwRHNIQEzm6//i5cemQ== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" +tar@^6.1.11, tar@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +tar@^7.4.3: + version "7.4.3" + resolved "https://registry.yarnpkg.com/tar/-/tar-7.4.3.tgz#88bbe9286a3fcd900e94592cda7a22b192e80571" + integrity sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw== + dependencies: + "@isaacs/fs-minipass" "^4.0.0" + chownr "^3.0.0" + minipass "^7.1.2" + minizlib "^3.0.1" + mkdirp "^3.0.1" + yallist "^5.0.0" text-decoder@^1.1.0: version "1.1.1" @@ -8759,7 +9822,7 @@ text-decoder@^1.1.0: dependencies: b4a "^1.6.4" -text-table@^0.2.0: +text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== @@ -8778,10 +9841,10 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -thread-stream@^2.0.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-2.7.0.tgz#d8a8e1b3fd538a6cca8ce69dbe5d3d097b601e11" - integrity sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw== +thread-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" + integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A== dependencies: real-require "^0.2.0" @@ -8793,28 +9856,22 @@ through2@^2.0.1: readable-stream "~2.3.6" xtend "~4.0.1" -timers-ext@^0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.8.tgz#b4e442f10b7624a29dd2aa42c295e257150cf16c" - integrity sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww== - dependencies: - es5-ext "^0.10.64" - next-tick "^1.1.0" - -tiny-invariant@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.6.tgz#b3f9b38835e36a41c843a3b0907a5a7b3755de73" - integrity sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA== +tiny-relative-date@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" + integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== -tiny-invariant@^1.0.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" - integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== +tldts-core@^6.1.50: + version "6.1.50" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.50.tgz#8f8f87928adde862b8bc8ce6954c463e2dded790" + integrity sha512-na2EcZqmdA2iV9zHV7OHQDxxdciEpxrjbkp+aHmZgnZKHzoElLajP59np5/4+sare9fQBfixgvXKx8ev1d7ytw== -tiny-warning@^1.0.0, tiny-warning@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +tldts@^6.1.32: + version "6.1.50" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.50.tgz#3b259a65bb11978a2a3d1b3c37660e542dbf9896" + integrity sha512-q9GOap6q3KCsLMdOjXhWU5jVZ8/1dIib898JBRLsN+tBhENpBDcAVQbE0epADOjw11FhQQy9AcbqKGBQPUfTQA== + dependencies: + tldts-core "^6.1.50" to-fast-properties@^2.0.0: version "2.0.0" @@ -8828,38 +9885,20 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -token-types@^4.1.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.2.1.tgz#0f897f03665846982806e138977dbe72d44df753" - integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ== +token-types@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-6.0.0.tgz#1ab26be1ef9c434853500c071acfe5c8dd6544a3" + integrity sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA== dependencies: "@tokenizer/token" "^0.3.0" ieee754 "^1.2.1" -totalist@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" - integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== - -touch@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.1.tgz#097a23d7b161476435e5c1344a95c0f75b4a5694" - integrity sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA== - -tough-cookie@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" - integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== +tough-cookie@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-5.0.0.tgz#6b6518e2b5c070cf742d872ee0f4f92d69eac1af" + integrity sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q== dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" + tldts "^6.1.32" tr46@^3.0.0: version "3.0.0" @@ -8880,6 +9919,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +treeverse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" + integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== + truncate-utf8-bytes@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" @@ -8887,31 +9931,22 @@ truncate-utf8-bytes@^1.0.0: dependencies: utf8-byte-length "^1.0.1" -ts-essentials@7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== - -ts-node@10.9.1: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tsconfig-paths@^3.12.0: +ts-api-utils@^1.0.1, ts-api-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + +ts-essentials@10.0.2: + version "10.0.2" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-10.0.2.tgz#8c7aa74ed79580ffe49df5ca28d06cc6bea0ff3c" + integrity sha512-Xwag0TULqriaugXqVdDiGZ5wuZpqABZlpwQ2Ho4GDyiu/R2Xjkp/9+zcFxL7uzeLl/QCPrflnvpVYyS3ouT7Zw== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +tsconfig-paths@^3.14.2, tsconfig-paths@^3.15.0: version "3.15.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== @@ -8926,7 +9961,7 @@ tslib@^1.11.1, tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.2: +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.2: version "2.7.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== @@ -8938,6 +9973,25 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +tsx@4.19.1: + version "4.19.1" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.1.tgz#b7bffdf4b565813e4dea14b90872af279cd0090b" + integrity sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA== + dependencies: + esbuild "~0.23.0" + get-tsconfig "^4.7.5" + optionalDependencies: + fsevents "~2.3.3" + +tuf-js@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-2.2.1.tgz#fdd8794b644af1a75c7aaa2b197ddffeb2911b56" + integrity sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA== + dependencies: + "@tufjs/models" "2.0.1" + debug "^4.3.4" + make-fetch-happen "^13.0.1" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -8952,24 +10006,16 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" +type-fest@3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.0.tgz#b088347ae73779a750c461694b264340c4c8c0d7" + integrity sha512-Gur3yQGM9qiLNs0KPP7LPgeRbio2QTt4xXouobMCarR0/wyW3F+F/+OWwshg3NG0Adon7uQfSZBpB46NfhoF1A== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -type@^2.7.2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/type/-/type-2.7.3.tgz#436981652129285cc3ba94f392886c2637ea0486" - integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ== - typed-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" @@ -9014,10 +10060,15 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" -typescript@^4.8.4: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@5.6.2: + version "5.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0" + integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== + +uint8array-extras@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/uint8array-extras/-/uint8array-extras-1.4.0.tgz#e42a678a6dd335ec2d21661333ed42f44ae7cc74" + integrity sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ== unbox-primitive@^1.0.2: version "1.0.2" @@ -9029,11 +10080,6 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -undefsafe@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" - integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== - undici-types@~6.19.2: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" @@ -9044,20 +10090,33 @@ unfetch@^4.2.0: resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== +unique-filename@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-4.0.0.tgz#a06534d370e7c977a939cd1d11f7f0ab8f1fed13" + integrity sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ== + dependencies: + unique-slug "^5.0.0" -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + +unique-slug@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-5.0.0.tgz#ca72af03ad0dbab4dad8aa683f633878b1accda8" + integrity sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg== + dependencies: + imurmurhash "^0.1.4" untildify@^4.0.0: version "4.0.0" @@ -9072,40 +10131,38 @@ update-browserslist-db@^1.1.0: escalade "^3.1.2" picocolors "^1.0.1" -uri-js@^4.2.2, uri-js@^4.4.1: +uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" -url-loader@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" - integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.27" - schema-utils "^3.0.0" - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== +use-callback-ref@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz#6134c7f6ff76e2be0b56c809b17a650c942b1693" + integrity sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA== dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" + tslib "^2.0.0" -use-context-selector@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/use-context-selector/-/use-context-selector-1.4.1.tgz#eb96279965846b72915d7f899b8e6ef1d768b0ae" - integrity sha512-Io2ArvcRO+6MWIhkdfMFt+WKQX+Vb++W8DS2l03z/Vw/rz3BclKpM0ynr4LYGyU85Eke+Yx5oIhTY++QR0ZDoA== +use-context-selector@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/use-context-selector/-/use-context-selector-2.0.0.tgz#3b5dafec7aa947c152d4f0aa7f250e99a205df3d" + integrity sha512-owfuSmUNd3eNp3J9CdDl0kMgfidV+MkDvHPpvthN5ThqM+ibMccNE0k+Iq7TWC6JPFvGZqanqiGCuQx6DyV24g== use-isomorphic-layout-effect@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== +use-sidecar@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" + integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== + dependencies: + detect-node-es "^1.1.0" + tslib "^2.0.0" + utf8-byte-length@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz#f9f63910d15536ee2b2d5dd4665389715eac5c1e" @@ -9116,45 +10173,28 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== - -utils-merge@1.0.1, utils-merge@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" - integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== +uuid@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" + integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== -uuid@9.0.1, uuid@^9.0.1: +uuid@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -value-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" - integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +validate-npm-package-license@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" -void-elements@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" - integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== +validate-npm-package-name@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-6.0.0.tgz#3add966c853cfe36e0e8e6a762edd72ae6f1d6ac" + integrity sha512-d7KLgL1LD3U3fgnvWEY1cQXoO/q6EQ1BSz48Sa149V/5zVTAbgmZIpyI8TRi6U9/JNyeYLlTKsEMPtLC27RFUg== w3c-xmlserializer@^5.0.0: version "5.0.0" @@ -9163,33 +10203,10 @@ w3c-xmlserializer@^5.0.0: dependencies: xml-name-validator "^5.0.0" -warning@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" - integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== - dependencies: - loose-envify "^1.0.0" - -watchpack@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -watchpack@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" - integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -web-streams-polyfill@^3.0.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" - integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== +walk-up-path@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-3.0.1.tgz#c8d78d5375b4966c717eb17ada73dbd41490e886" + integrity sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA== webidl-conversions@^3.0.0: version "3.0.1" @@ -9201,113 +10218,6 @@ webidl-conversions@^7.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== -webpack-bundle-analyzer@^4.8.0: - version "4.10.2" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd" - integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== - dependencies: - "@discoveryjs/json-ext" "0.5.7" - acorn "^8.0.4" - acorn-walk "^8.0.0" - commander "^7.2.0" - debounce "^1.2.1" - escape-string-regexp "^4.0.0" - gzip-size "^6.0.0" - html-escaper "^2.0.2" - opener "^1.5.2" - picocolors "^1.0.0" - sirv "^2.0.3" - ws "^7.3.1" - -webpack-cli@^4.10.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" - integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== - dependencies: - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.2.0" - "@webpack-cli/info" "^1.5.0" - "@webpack-cli/serve" "^1.7.0" - colorette "^2.0.14" - commander "^7.0.0" - cross-spawn "^7.0.3" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" - webpack-merge "^5.7.3" - -webpack-dev-middleware@6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz#0463232e59b7d7330fa154121528d484d36eb973" - integrity sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ== - dependencies: - colorette "^2.0.10" - memfs "^3.4.12" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-hot-middleware@^2.25.3: - version "2.26.1" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz#87214f1e3f9f3acab9271fef9e6ed7b637d719c0" - integrity sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A== - dependencies: - ansi-html-community "0.0.8" - html-entities "^2.1.0" - strip-ansi "^6.0.0" - -webpack-merge@^5.7.3: - version "5.10.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" - integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.0" - -webpack-sources@^1.1.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack@^5.78.0: - version "5.94.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.94.0.tgz#77a6089c716e7ab90c1c67574a28da518a20970f" - integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg== - dependencies: - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.12.1" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" - acorn "^8.7.1" - acorn-import-attributes "^1.9.5" - browserslist "^4.21.10" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.1" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.1" - webpack-sources "^3.2.3" - whatwg-encoding@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" @@ -9315,11 +10225,6 @@ whatwg-encoding@^3.1.1: dependencies: iconv-lite "0.6.3" -whatwg-fetch@^3.4.1: - version "3.6.20" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" - integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== - whatwg-mimetype@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" @@ -9360,7 +10265,25 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-collection@^1.0.1: +which-builtin-type@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.4.tgz#592796260602fc3514a1b5ee7fa29319b72380c3" + integrity sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w== + dependencies: + function.prototype.name "^1.1.6" + has-tostringtag "^1.0.2" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.2" + which-typed-array "^1.1.15" + +which-collection@^1.0.1, which-collection@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== @@ -9370,7 +10293,7 @@ which-collection@^1.0.1: is-weakmap "^2.0.2" is-weakset "^2.0.3" -which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: +which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15: version "1.1.15" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== @@ -9381,13 +10304,6 @@ which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, gopd "^1.0.1" has-tostringtag "^1.0.2" -which@^1.2.14: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -9395,10 +10311,19 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wildcard@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== +which@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" + integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== + dependencies: + isexe "^3.1.1" + +which@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-5.0.0.tgz#d93f2d93f79834d4363c7d0c23e00d07c466c8d6" + integrity sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ== + dependencies: + isexe "^3.1.1" word-wrap@^1.2.5: version "1.2.5" @@ -9437,12 +10362,15 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@^7.3.1: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== +write-file-atomic@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-6.0.0.tgz#e9c89c8191b3ef0606bc79fb92681aa1aa16fa93" + integrity sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" -ws@^8.18.0: +ws@^8.16.0, ws@^8.18.0: version "8.18.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== @@ -9475,11 +10403,26 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yallist@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533" + integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw== + yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.3.4: + version "2.5.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.1.tgz#c9772aacf62cb7494a95b0c4f1fb065b563db130" + integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q== + yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" @@ -9498,17 +10441,14 @@ yargs@^16.1.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== +yjs@^13.5.22: + version "13.6.19" + resolved "https://registry.yarnpkg.com/yjs/-/yjs-13.6.19.tgz#66999f41254ab65be8c8e71bd767d124ad600909" + integrity sha512-GNKw4mEUn5yWU2QPHRx8jppxmCm9KzbBhB4qJLUJFiiYD0g/tDVgXQ7aPkyh01YO28kbs2J/BEbWBagjuWyejw== + dependencies: + lib0 "^0.2.86" yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zod@3.21.4: - version "3.21.4" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" - integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==