From 05615552764b4bb0e6766679453f93bcf2f01903 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Thu, 8 May 2025 15:12:32 +0700 Subject: [PATCH 01/31] feat: integrate payload cms to landing page --- .env.example | 5 +- apps/landing/next.config.js | 5 +- .../_components/call-to-action.tsx | 0 .../_components/community.tsx | 0 .../{ => (frontend)}/_components/features.tsx | 0 .../{ => (frontend)}/_components/footer.tsx | 0 .../{ => (frontend)}/_components/header.tsx | 0 .../app/{ => (frontend)}/_components/hero.tsx | 0 .../_components/learning-resources.tsx | 0 .../_components/simple-theme-toggle.tsx | 0 .../_components/testimonials.tsx | 0 .../_components/theme-provider.tsx | 0 .../src/app/{ => (frontend)}/layout.tsx | 2 +- .../landing/src/app/{ => (frontend)}/page.tsx | 0 .../admin/[[...segments]]/not-found.tsx | 27 + .../(payload)/admin/[[...segments]]/page.tsx | 27 + .../src/app/(payload)/admin/importMap.js | 1 + .../src/app/(payload)/api/[...slug]/route.ts | 19 + .../(payload)/api/graphql-playground/route.ts | 7 + .../src/app/(payload)/api/graphql/route.ts | 8 + apps/landing/src/app/(payload)/custom.scss | 0 apps/landing/src/app/(payload)/layout.tsx | 35 + apps/landing/src/collections/Media.ts | 16 + apps/landing/src/collections/Users.ts | 13 + apps/landing/src/payload-types.ts | 285 + apps/landing/src/payload.config.ts | 40 + apps/landing/tsconfig.json | 4 + package-lock.json | 5323 ++++++++++++++++- package.json | 8 + 29 files changed, 5593 insertions(+), 232 deletions(-) rename apps/landing/src/app/{ => (frontend)}/_components/call-to-action.tsx (100%) rename apps/landing/src/app/{ => (frontend)}/_components/community.tsx (100%) rename apps/landing/src/app/{ => (frontend)}/_components/features.tsx (100%) rename apps/landing/src/app/{ => (frontend)}/_components/footer.tsx (100%) rename apps/landing/src/app/{ => (frontend)}/_components/header.tsx (100%) rename apps/landing/src/app/{ => (frontend)}/_components/hero.tsx (100%) rename apps/landing/src/app/{ => (frontend)}/_components/learning-resources.tsx (100%) rename apps/landing/src/app/{ => (frontend)}/_components/simple-theme-toggle.tsx (100%) rename apps/landing/src/app/{ => (frontend)}/_components/testimonials.tsx (100%) rename apps/landing/src/app/{ => (frontend)}/_components/theme-provider.tsx (100%) rename apps/landing/src/app/{ => (frontend)}/layout.tsx (95%) rename apps/landing/src/app/{ => (frontend)}/page.tsx (100%) create mode 100644 apps/landing/src/app/(payload)/admin/[[...segments]]/not-found.tsx create mode 100644 apps/landing/src/app/(payload)/admin/[[...segments]]/page.tsx create mode 100644 apps/landing/src/app/(payload)/admin/importMap.js create mode 100644 apps/landing/src/app/(payload)/api/[...slug]/route.ts create mode 100644 apps/landing/src/app/(payload)/api/graphql-playground/route.ts create mode 100644 apps/landing/src/app/(payload)/api/graphql/route.ts create mode 100644 apps/landing/src/app/(payload)/custom.scss create mode 100644 apps/landing/src/app/(payload)/layout.tsx create mode 100644 apps/landing/src/collections/Media.ts create mode 100644 apps/landing/src/collections/Users.ts create mode 100644 apps/landing/src/payload-types.ts create mode 100644 apps/landing/src/payload.config.ts diff --git a/.env.example b/.env.example index 49d9f6e..b6eda3e 100644 --- a/.env.example +++ b/.env.example @@ -1 +1,4 @@ -VITE_API_URL=https://api.example.com +VITE_API_URL= + +CMS_SECRET= +CMS_POSTGRES_URL= diff --git a/apps/landing/next.config.js b/apps/landing/next.config.js index 088553c..b878e60 100644 --- a/apps/landing/next.config.js +++ b/apps/landing/next.config.js @@ -2,6 +2,7 @@ // eslint-disable-next-line @typescript-eslint/no-var-requires const { composePlugins, withNx } = require('@nx/next'); +const { withPayload } = require('@payloadcms/next/withPayload'); /** * @type {import('@nx/next/plugins/with-nx').WithNxOptions} @@ -19,4 +20,6 @@ const plugins = [ withNx, ]; -module.exports = composePlugins(...plugins)(nextConfig); +const configWithNxPlugin = composePlugins(...plugins)(nextConfig); + +module.exports = withPayload(configWithNxPlugin); diff --git a/apps/landing/src/app/_components/call-to-action.tsx b/apps/landing/src/app/(frontend)/_components/call-to-action.tsx similarity index 100% rename from apps/landing/src/app/_components/call-to-action.tsx rename to apps/landing/src/app/(frontend)/_components/call-to-action.tsx diff --git a/apps/landing/src/app/_components/community.tsx b/apps/landing/src/app/(frontend)/_components/community.tsx similarity index 100% rename from apps/landing/src/app/_components/community.tsx rename to apps/landing/src/app/(frontend)/_components/community.tsx diff --git a/apps/landing/src/app/_components/features.tsx b/apps/landing/src/app/(frontend)/_components/features.tsx similarity index 100% rename from apps/landing/src/app/_components/features.tsx rename to apps/landing/src/app/(frontend)/_components/features.tsx diff --git a/apps/landing/src/app/_components/footer.tsx b/apps/landing/src/app/(frontend)/_components/footer.tsx similarity index 100% rename from apps/landing/src/app/_components/footer.tsx rename to apps/landing/src/app/(frontend)/_components/footer.tsx diff --git a/apps/landing/src/app/_components/header.tsx b/apps/landing/src/app/(frontend)/_components/header.tsx similarity index 100% rename from apps/landing/src/app/_components/header.tsx rename to apps/landing/src/app/(frontend)/_components/header.tsx diff --git a/apps/landing/src/app/_components/hero.tsx b/apps/landing/src/app/(frontend)/_components/hero.tsx similarity index 100% rename from apps/landing/src/app/_components/hero.tsx rename to apps/landing/src/app/(frontend)/_components/hero.tsx diff --git a/apps/landing/src/app/_components/learning-resources.tsx b/apps/landing/src/app/(frontend)/_components/learning-resources.tsx similarity index 100% rename from apps/landing/src/app/_components/learning-resources.tsx rename to apps/landing/src/app/(frontend)/_components/learning-resources.tsx diff --git a/apps/landing/src/app/_components/simple-theme-toggle.tsx b/apps/landing/src/app/(frontend)/_components/simple-theme-toggle.tsx similarity index 100% rename from apps/landing/src/app/_components/simple-theme-toggle.tsx rename to apps/landing/src/app/(frontend)/_components/simple-theme-toggle.tsx diff --git a/apps/landing/src/app/_components/testimonials.tsx b/apps/landing/src/app/(frontend)/_components/testimonials.tsx similarity index 100% rename from apps/landing/src/app/_components/testimonials.tsx rename to apps/landing/src/app/(frontend)/_components/testimonials.tsx diff --git a/apps/landing/src/app/_components/theme-provider.tsx b/apps/landing/src/app/(frontend)/_components/theme-provider.tsx similarity index 100% rename from apps/landing/src/app/_components/theme-provider.tsx rename to apps/landing/src/app/(frontend)/_components/theme-provider.tsx diff --git a/apps/landing/src/app/layout.tsx b/apps/landing/src/app/(frontend)/layout.tsx similarity index 95% rename from apps/landing/src/app/layout.tsx rename to apps/landing/src/app/(frontend)/layout.tsx index 8bc43a7..4926ba2 100644 --- a/apps/landing/src/app/layout.tsx +++ b/apps/landing/src/app/(frontend)/layout.tsx @@ -1,6 +1,6 @@ import { type Metadata } from 'next'; import { Inter } from 'next/font/google'; -import '../styles/globals.css'; +import '../../styles/globals.css'; import { ThemeProvider } from './_components/theme-provider'; const inter = Inter({ subsets: ['latin'] }); diff --git a/apps/landing/src/app/page.tsx b/apps/landing/src/app/(frontend)/page.tsx similarity index 100% rename from apps/landing/src/app/page.tsx rename to apps/landing/src/app/(frontend)/page.tsx diff --git a/apps/landing/src/app/(payload)/admin/[[...segments]]/not-found.tsx b/apps/landing/src/app/(payload)/admin/[[...segments]]/not-found.tsx new file mode 100644 index 0000000..91f934d --- /dev/null +++ b/apps/landing/src/app/(payload)/admin/[[...segments]]/not-found.tsx @@ -0,0 +1,27 @@ +/* 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 => + generatePageMetadata({ config, params, searchParams }); + +const NotFound = ({ params, searchParams }: Args) => + NotFoundPage({ config, params, searchParams, importMap }); + +export default NotFound; diff --git a/apps/landing/src/app/(payload)/admin/[[...segments]]/page.tsx b/apps/landing/src/app/(payload)/admin/[[...segments]]/page.tsx new file mode 100644 index 0000000..78d8a55 --- /dev/null +++ b/apps/landing/src/app/(payload)/admin/[[...segments]]/page.tsx @@ -0,0 +1,27 @@ +/* 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 => + generatePageMetadata({ config, params, searchParams }); + +const Page = ({ params, searchParams }: Args) => + RootPage({ config, params, searchParams, importMap }); + +export default Page; diff --git a/apps/landing/src/app/(payload)/admin/importMap.js b/apps/landing/src/app/(payload)/admin/importMap.js new file mode 100644 index 0000000..73849ab --- /dev/null +++ b/apps/landing/src/app/(payload)/admin/importMap.js @@ -0,0 +1 @@ +export const importMap = {}; diff --git a/apps/landing/src/app/(payload)/api/[...slug]/route.ts b/apps/landing/src/app/(payload)/api/[...slug]/route.ts new file mode 100644 index 0000000..42ce02f --- /dev/null +++ b/apps/landing/src/app/(payload)/api/[...slug]/route.ts @@ -0,0 +1,19 @@ +/* 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 '@payloadcms/next/css'; +import { + REST_DELETE, + REST_GET, + REST_OPTIONS, + REST_PATCH, + REST_POST, + REST_PUT, +} 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 PUT = REST_PUT(config); +export const OPTIONS = REST_OPTIONS(config); diff --git a/apps/landing/src/app/(payload)/api/graphql-playground/route.ts b/apps/landing/src/app/(payload)/api/graphql-playground/route.ts new file mode 100644 index 0000000..ef97193 --- /dev/null +++ b/apps/landing/src/app/(payload)/api/graphql-playground/route.ts @@ -0,0 +1,7 @@ +/* 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 '@payloadcms/next/css'; +import { GRAPHQL_PLAYGROUND_GET } from '@payloadcms/next/routes'; + +export const GET = GRAPHQL_PLAYGROUND_GET(config); diff --git a/apps/landing/src/app/(payload)/api/graphql/route.ts b/apps/landing/src/app/(payload)/api/graphql/route.ts new file mode 100644 index 0000000..89f7c29 --- /dev/null +++ b/apps/landing/src/app/(payload)/api/graphql/route.ts @@ -0,0 +1,8 @@ +/* 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, REST_OPTIONS } from '@payloadcms/next/routes'; + +export const POST = GRAPHQL_POST(config); + +export const OPTIONS = REST_OPTIONS(config); diff --git a/apps/landing/src/app/(payload)/custom.scss b/apps/landing/src/app/(payload)/custom.scss new file mode 100644 index 0000000..e69de29 diff --git a/apps/landing/src/app/(payload)/layout.tsx b/apps/landing/src/app/(payload)/layout.tsx new file mode 100644 index 0000000..f596218 --- /dev/null +++ b/apps/landing/src/app/(payload)/layout.tsx @@ -0,0 +1,35 @@ +/* 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 '@payloadcms/next/css'; +import { handleServerFunctions, RootLayout } from '@payloadcms/next/layouts'; +import type { ServerFunctionClient } from 'payload'; +import React from 'react'; + +import { importMap } from './admin/importMap.js'; +import './custom.scss'; + +type Args = { + children: React.ReactNode; +}; + +const serverFunction: ServerFunctionClient = async function (args) { + 'use server'; + return handleServerFunctions({ + ...args, + config, + importMap, + }); +}; + +const Layout = ({ children }: Args) => ( + + {children} + +); + +export default Layout; diff --git a/apps/landing/src/collections/Media.ts b/apps/landing/src/collections/Media.ts new file mode 100644 index 0000000..bb11256 --- /dev/null +++ b/apps/landing/src/collections/Media.ts @@ -0,0 +1,16 @@ +import type { CollectionConfig } from 'payload'; + +export const Media: CollectionConfig = { + slug: 'media', + access: { + read: () => true, + }, + fields: [ + { + name: 'alt', + type: 'text', + required: true, + }, + ], + upload: true, +}; diff --git a/apps/landing/src/collections/Users.ts b/apps/landing/src/collections/Users.ts new file mode 100644 index 0000000..c167856 --- /dev/null +++ b/apps/landing/src/collections/Users.ts @@ -0,0 +1,13 @@ +import type { CollectionConfig } from 'payload'; + +export const Users: CollectionConfig = { + slug: 'users', + admin: { + useAsTitle: 'email', + }, + auth: true, + fields: [ + // Email added by default + // Add more fields as needed + ], +}; diff --git a/apps/landing/src/payload-types.ts b/apps/landing/src/payload-types.ts new file mode 100644 index 0000000..d3cacc9 --- /dev/null +++ b/apps/landing/src/payload-types.ts @@ -0,0 +1,285 @@ +/* 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. + */ + +/** + * Supported timezones in IANA format. + * + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "supportedTimezones". + */ +export type SupportedTimezones = + | 'Pacific/Midway' + | 'Pacific/Niue' + | 'Pacific/Honolulu' + | 'Pacific/Rarotonga' + | 'America/Anchorage' + | 'Pacific/Gambier' + | 'America/Los_Angeles' + | 'America/Tijuana' + | 'America/Denver' + | 'America/Phoenix' + | 'America/Chicago' + | 'America/Guatemala' + | 'America/New_York' + | 'America/Bogota' + | 'America/Caracas' + | 'America/Santiago' + | 'America/Buenos_Aires' + | 'America/Sao_Paulo' + | 'Atlantic/South_Georgia' + | 'Atlantic/Azores' + | 'Atlantic/Cape_Verde' + | 'Europe/London' + | 'Europe/Berlin' + | 'Africa/Lagos' + | 'Europe/Athens' + | 'Africa/Cairo' + | 'Europe/Moscow' + | 'Asia/Riyadh' + | 'Asia/Dubai' + | 'Asia/Baku' + | 'Asia/Karachi' + | 'Asia/Tashkent' + | 'Asia/Calcutta' + | 'Asia/Dhaka' + | 'Asia/Almaty' + | 'Asia/Jakarta' + | 'Asia/Bangkok' + | 'Asia/Shanghai' + | 'Asia/Singapore' + | 'Asia/Tokyo' + | 'Asia/Seoul' + | 'Australia/Brisbane' + | 'Australia/Sydney' + | 'Pacific/Guam' + | 'Pacific/Noumea' + | 'Pacific/Auckland' + | 'Pacific/Fiji'; + +export interface Config { + auth: { + users: UserAuthOperations; + }; + blocks: {}; + collections: { + users: User; + media: Media; + 'payload-locked-documents': PayloadLockedDocument; + 'payload-preferences': PayloadPreference; + 'payload-migrations': PayloadMigration; + }; + collectionsJoins: {}; + collectionsSelect: { + users: UsersSelect | UsersSelect; + media: MediaSelect | MediaSelect; + 'payload-locked-documents': PayloadLockedDocumentsSelect | PayloadLockedDocumentsSelect; + 'payload-preferences': PayloadPreferencesSelect | PayloadPreferencesSelect; + 'payload-migrations': PayloadMigrationsSelect | PayloadMigrationsSelect; + }; + db: { + defaultIDType: number; + }; + globals: {}; + globalsSelect: {}; + locale: null; + user: User & { + collection: 'users'; + }; + jobs: { + tasks: unknown; + workflows: unknown; + }; +} +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` "users". + */ +export interface User { + id: number; + 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` "media". + */ +export interface Media { + id: number; + alt: string; + 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` "payload-locked-documents". + */ +export interface PayloadLockedDocument { + id: number; + document?: + | ({ + relationTo: 'users'; + value: number | User; + } | null) + | ({ + relationTo: 'media'; + value: number | Media; + } | null); + globalSlug?: string | null; + user: { + relationTo: 'users'; + value: number | User; + }; + updatedAt: string; + createdAt: string; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-preferences". + */ +export interface PayloadPreference { + id: number; + user: { + relationTo: 'users'; + value: number | 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: number; + name?: string | null; + batch?: number | null; + updatedAt: string; + createdAt: string; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "users_select". + */ +export interface UsersSelect { + updatedAt?: T; + createdAt?: T; + email?: T; + resetPasswordToken?: T; + resetPasswordExpiration?: T; + salt?: T; + hash?: T; + loginAttempts?: T; + lockUntil?: T; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "media_select". + */ +export interface MediaSelect { + alt?: T; + updatedAt?: T; + createdAt?: T; + url?: T; + thumbnailURL?: T; + filename?: T; + mimeType?: T; + filesize?: T; + width?: T; + height?: T; + focalX?: T; + focalY?: T; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-locked-documents_select". + */ +export interface PayloadLockedDocumentsSelect { + document?: T; + globalSlug?: T; + user?: T; + updatedAt?: T; + createdAt?: T; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-preferences_select". + */ +export interface PayloadPreferencesSelect { + user?: T; + key?: T; + value?: T; + updatedAt?: T; + createdAt?: T; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-migrations_select". + */ +export interface PayloadMigrationsSelect { + name?: T; + batch?: T; + updatedAt?: T; + createdAt?: T; +} +/** + * 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/apps/landing/src/payload.config.ts b/apps/landing/src/payload.config.ts new file mode 100644 index 0000000..de076a1 --- /dev/null +++ b/apps/landing/src/payload.config.ts @@ -0,0 +1,40 @@ +import { postgresAdapter } from '@payloadcms/db-postgres'; +import { lexicalEditor } from '@payloadcms/richtext-lexical'; +import path from 'path'; +import { buildConfig } from 'payload'; +import sharp from 'sharp'; +import { fileURLToPath } from 'url'; + +import { Media } from './collections/Media'; +import { Users } from './collections/Users'; + +const filename = fileURLToPath(import.meta.url); +const dirname = path.dirname(filename); + +export default buildConfig({ + admin: { + user: Users.slug, + importMap: { + importMapFile: path.resolve( + __dirname, + 'app', + '(payload)', + 'admin', + 'importMap.js' + ), + }, + }, + collections: [Users, Media], + editor: lexicalEditor(), + secret: process.env.CMS_SECRET || '', + typescript: { + outputFile: path.resolve(dirname, 'payload-types.ts'), + }, + db: postgresAdapter({ + pool: { + connectionString: process.env.CMS_POSTGRES_URL || '', + }, + }), + sharp, + plugins: [], +}); diff --git a/apps/landing/tsconfig.json b/apps/landing/tsconfig.json index defd005..9bbac47 100644 --- a/apps/landing/tsconfig.json +++ b/apps/landing/tsconfig.json @@ -1,6 +1,10 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { + "baseUrl": ".", + "paths": { + "@payload-config": ["./src/payload.config.ts"] + }, "jsx": "preserve", "strict": true, "noEmit": true, diff --git a/package-lock.json b/package-lock.json index 673f233..4a4f13e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,9 @@ "dependencies": { "@ant-design/icons": "^6.0.0", "@hookform/resolvers": "^5.0.1", + "@payloadcms/db-postgres": "^3.37.0", + "@payloadcms/next": "^3.37.0", + "@payloadcms/richtext-lexical": "^3.37.0", "@radix-ui/react-slot": "^1.2.0", "@tanstack/react-query": "^5.74.4", "@tanstack/react-store": "^0.7.0", @@ -19,14 +22,17 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "framer-motion": "^12.9.2", + "graphql": "^16.11.0", "js-cookie": "^3.0.5", "next": "~15.2.4", "next-themes": "^0.4.6", + "payload": "^3.37.0", "react": "^19.1.0", "react-dom": "^19.1.0", "react-hook-form": "^7.55.0", "react-icons": "^5.5.0", "react-router-dom": "^7.3.0", + "sharp": "^0.34.1", "sonner": "^2.0.3", "tailwind-merge": "^3.0.2", "zod": "^3.24.2" @@ -179,11 +185,27 @@ "integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==", "license": "MIT" }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "11.9.3", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.9.3.tgz", + "integrity": "sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==", + "license": "MIT", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.15", + "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/philsturgeon" + } + }, "node_modules/@babel/code-frame": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", @@ -239,7 +261,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.27.0", @@ -357,7 +378,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.9", @@ -462,7 +482,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -472,7 +491,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -521,7 +539,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.27.0" @@ -2075,7 +2092,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", - "dev": true, "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" @@ -2088,7 +2104,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", @@ -2103,7 +2118,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", @@ -2122,7 +2136,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -2242,6 +2255,71 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@date-fns/tz": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@date-fns/tz/-/tz-1.2.0.tgz", + "integrity": "sha512-LBrd7MiJZ9McsOgxqWX7AaxrDjcFVjWH/tIKJd7pnR7McaslGYOP1QmmiBXdJH/H/yLCT+rcQ7FaPBUxRGUtrg==", + "license": "MIT" + }, + "node_modules/@dnd-kit/accessibility": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.1.1.tgz", + "integrity": "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/core": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.0.8.tgz", + "integrity": "sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA==", + "license": "MIT", + "dependencies": { + "@dnd-kit/accessibility": "^3.0.0", + "@dnd-kit/utilities": "^3.2.1", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/sortable": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-7.0.2.tgz", + "integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==", + "license": "MIT", + "dependencies": { + "@dnd-kit/utilities": "^3.2.0", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@dnd-kit/core": "^6.0.7", + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/utilities": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.2.tgz", + "integrity": "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@drizzle-team/brocli": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@drizzle-team/brocli/-/brocli-0.10.2.tgz", + "integrity": "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==", + "license": "Apache-2.0" + }, "node_modules/@emnapi/core": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", @@ -2273,6 +2351,578 @@ "tslib": "^2.4.0" } }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "license": "MIT", + "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.3.3", + "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" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/css": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.13.5.tgz", + "integrity": "sha512-wQdD0Xhkn3Qy2VNcIzbLP9MR8TafI0MJb7BEAXKp+w4+XqErksWR4OXomuDzPsN4InLdGhVe6EYcn2ZIUCpB8w==", + "license": "MIT", + "dependencies": { + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.13.5", + "@emotion/serialize": "^1.3.3", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" + }, + "node_modules/@esbuild-kit/core-utils": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz", + "integrity": "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==", + "deprecated": "Merged into tsx: https://tsx.is", + "license": "MIT", + "dependencies": { + "esbuild": "~0.18.20", + "source-map-support": "^0.5.21" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@esbuild-kit/core-utils/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@esbuild-kit/esm-loader": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.6.5.tgz", + "integrity": "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==", + "deprecated": "Merged into tsx: https://tsx.is", + "license": "MIT", + "dependencies": { + "@esbuild-kit/core-utils": "^3.3.2", + "get-tsconfig": "^4.7.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.3", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz", @@ -2280,7 +2930,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2297,7 +2946,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2314,7 +2962,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2331,7 +2978,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2348,7 +2994,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2365,7 +3010,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2382,7 +3026,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2399,7 +3042,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2416,7 +3058,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2433,7 +3074,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2450,7 +3090,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2467,7 +3106,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2484,7 +3122,6 @@ "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2501,7 +3138,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2518,7 +3154,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2535,7 +3170,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2552,7 +3186,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2569,7 +3202,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2586,7 +3218,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2603,7 +3234,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2620,7 +3250,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2637,7 +3266,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2654,7 +3282,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2671,7 +3298,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2688,7 +3314,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2885,6 +3510,112 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@faceless-ui/modal": { + "version": "3.0.0-beta.2", + "resolved": "https://registry.npmjs.org/@faceless-ui/modal/-/modal-3.0.0-beta.2.tgz", + "integrity": "sha512-UmXvz7Iw3KMO4Pm3llZczU4uc5pPQDb6rdqwoBvYDFgWvkraOAHKx0HxSZgwqQvqOhn8joEFBfFp6/Do2562ow==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/jacobsfletch" + } + ], + "license": "MIT", + "dependencies": { + "body-scroll-lock": "4.0.0-beta.0", + "focus-trap": "7.5.4", + "react-transition-group": "4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0" + } + }, + "node_modules/@faceless-ui/scroll-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@faceless-ui/scroll-info/-/scroll-info-2.0.0.tgz", + "integrity": "sha512-BkyJ9OQ4bzpKjE3UhI8BhcG36ZgfB4run8TmlaR4oMFUbl59dfyarNfjveyimrxIso9RhFEja/AJ5nQmbcR9hw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/jacobsfletch" + } + ], + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@faceless-ui/window-info": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@faceless-ui/window-info/-/window-info-3.0.1.tgz", + "integrity": "sha512-uPjdJYE/j7hqVNelE9CRUNOeXuXDdPxR4DMe+oz3xwyZi2Y4CxsfpfdPTqqwmNAZa1P33O+ZiCyIkBEeNed0kw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/jacobsfletch" + } + ], + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.0.tgz", + "integrity": "sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.0.tgz", + "integrity": "sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.8.tgz", + "integrity": "sha512-EQJ4Th328y2wyHR3KzOUOoTW2UKjFk53fmyahfwExnFQ8vnsMYqKc+fFPOkeYtj5tcp1DUMiNJ7BFhed7e9ONw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.9", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=17.0.0", + "react-dom": ">=17.0.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", + "license": "MIT" + }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -2981,9 +3712,9 @@ } }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", - "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", + "integrity": "sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==", "cpu": [ "arm64" ], @@ -2999,13 +3730,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" + "@img/sharp-libvips-darwin-arm64": "1.1.0" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", - "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.1.tgz", + "integrity": "sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==", "cpu": [ "x64" ], @@ -3021,13 +3752,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.4" + "@img/sharp-libvips-darwin-x64": "1.1.0" } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", - "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", "cpu": [ "arm64" ], @@ -3041,9 +3772,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", - "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", + "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", "cpu": [ "x64" ], @@ -3057,9 +3788,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", - "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", + "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", "cpu": [ "arm" ], @@ -3073,9 +3804,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", - "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", + "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", "cpu": [ "arm64" ], @@ -3088,10 +3819,26 @@ "url": "https://opencollective.com/libvips" } }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", + "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", - "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", + "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", "cpu": [ "s390x" ], @@ -3105,9 +3852,9 @@ } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", - "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", + "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", "cpu": [ "x64" ], @@ -3121,9 +3868,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", - "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", + "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", "cpu": [ "arm64" ], @@ -3137,9 +3884,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", - "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", + "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", "cpu": [ "x64" ], @@ -3153,9 +3900,9 @@ } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", - "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.1.tgz", + "integrity": "sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==", "cpu": [ "arm" ], @@ -3171,13 +3918,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.5" + "@img/sharp-libvips-linux-arm": "1.1.0" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", - "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.1.tgz", + "integrity": "sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==", "cpu": [ "arm64" ], @@ -3193,13 +3940,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.4" + "@img/sharp-libvips-linux-arm64": "1.1.0" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", - "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.1.tgz", + "integrity": "sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==", "cpu": [ "s390x" ], @@ -3215,13 +3962,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.4" + "@img/sharp-libvips-linux-s390x": "1.1.0" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", - "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.1.tgz", + "integrity": "sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==", "cpu": [ "x64" ], @@ -3237,13 +3984,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.4" + "@img/sharp-libvips-linux-x64": "1.1.0" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", - "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.1.tgz", + "integrity": "sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==", "cpu": [ "arm64" ], @@ -3259,13 +4006,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", - "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.1.tgz", + "integrity": "sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==", "cpu": [ "x64" ], @@ -3281,20 +4028,20 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + "@img/sharp-libvips-linuxmusl-x64": "1.1.0" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", - "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.1.tgz", + "integrity": "sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==", "cpu": [ "wasm32" ], "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { - "@emnapi/runtime": "^1.2.0" + "@emnapi/runtime": "^1.4.0" }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" @@ -3304,9 +4051,9 @@ } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", - "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.1.tgz", + "integrity": "sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==", "cpu": [ "ia32" ], @@ -3323,9 +4070,9 @@ } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", - "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.1.tgz", + "integrity": "sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==", "cpu": [ "x64" ], @@ -3992,7 +4739,6 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -4007,7 +4753,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -4017,7 +4762,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -4038,20 +4782,24 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "license": "MIT" + }, "node_modules/@jsonjoy.com/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", @@ -4116,6 +4864,285 @@ "dev": true, "license": "MIT" }, + "node_modules/@lexical/clipboard": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.28.0.tgz", + "integrity": "sha512-LYqion+kAwFQJStA37JAEMxTL/m1WlZbotDfM/2WuONmlO0yWxiyRDI18oeCwhBD6LQQd9c3Ccxp9HFwUG1AVw==", + "license": "MIT", + "dependencies": { + "@lexical/html": "0.28.0", + "@lexical/list": "0.28.0", + "@lexical/selection": "0.28.0", + "@lexical/utils": "0.28.0", + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/code": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/code/-/code-0.28.0.tgz", + "integrity": "sha512-9LOKSWdRhxqAKRq5yveNC21XKtW4h2rmFNTucwMWZ9vLu9xteOHEwZdO1Qv82PFUmgCpAhg6EntmnZu9xD3K7Q==", + "license": "MIT", + "dependencies": { + "@lexical/utils": "0.28.0", + "lexical": "0.28.0", + "prismjs": "^1.30.0" + } + }, + "node_modules/@lexical/devtools-core": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/devtools-core/-/devtools-core-0.28.0.tgz", + "integrity": "sha512-Fk4itAjZ+MqTYXN84aE5RDf+wQX67N5nyo3JVxQTFZGAghx7Ux1xLWHB25zzD0YfjMtJ0NQROAbE3xdecZzxcQ==", + "license": "MIT", + "dependencies": { + "@lexical/html": "0.28.0", + "@lexical/link": "0.28.0", + "@lexical/mark": "0.28.0", + "@lexical/table": "0.28.0", + "@lexical/utils": "0.28.0", + "lexical": "0.28.0" + }, + "peerDependencies": { + "react": ">=17.x", + "react-dom": ">=17.x" + } + }, + "node_modules/@lexical/dragon": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/dragon/-/dragon-0.28.0.tgz", + "integrity": "sha512-T6T8YaHnhU863ruuqmRHTLUYa8sfg/ArYcrnNGZGfpvvFTfFjpWb/ELOvOWo8N6Y/4fnSLjQ20aXexVW1KcTBQ==", + "license": "MIT", + "dependencies": { + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/hashtag": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/hashtag/-/hashtag-0.28.0.tgz", + "integrity": "sha512-zcqX9Qna4lj96bAUfwSQSVEhYQ0O5erSjrIhOVqEgeQ5ubz0EvqnnMbbwNHIb2n6jzSwAvpD/3UZJZtolh+zVg==", + "license": "MIT", + "dependencies": { + "@lexical/utils": "0.28.0", + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/headless": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/headless/-/headless-0.28.0.tgz", + "integrity": "sha512-btcaTfw9I/xQ/XYom6iKWgsPecmRawGd/5jOhP7QDtLUp7gxgM7/kiCZFYa8jDJO6j20rXuWTkc81ynVpKvjow==", + "license": "MIT", + "dependencies": { + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/history": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/history/-/history-0.28.0.tgz", + "integrity": "sha512-CHzDxaGDn6qCFFhU0YKP1B8sgEb++0Ksqsj6BfDL/6TMxoLNQwRQhP3BUNNXl1kvUhxTQZgk3b9MjJZRaFKG9Q==", + "license": "MIT", + "dependencies": { + "@lexical/utils": "0.28.0", + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/html": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/html/-/html-0.28.0.tgz", + "integrity": "sha512-ayb0FPxr55Ko99/d9ewbfrApul4L0z+KpU2ZG03im7EvUPVLyIGLx4S0QguMDvQh0Vu+eJ7/EESuonDs5BCe3A==", + "license": "MIT", + "dependencies": { + "@lexical/selection": "0.28.0", + "@lexical/utils": "0.28.0", + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/link": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/link/-/link-0.28.0.tgz", + "integrity": "sha512-T5VKxpOnML5DcXv2lW3Le0vjNlcbdohZjS9f6PAvm6eX8EzBKDpLQCopr1/0KGdlLd1QrzQsykQrdU7ieC4LRg==", + "license": "MIT", + "dependencies": { + "@lexical/utils": "0.28.0", + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/list": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/list/-/list-0.28.0.tgz", + "integrity": "sha512-3a8QcZ75n2TLxP+xkSPJ2V15jsysMLMe0YoObG+ew/sioVelIU8GciYsWBo5GgQmwSzJNQJeK5cJ9p1b71z2cg==", + "license": "MIT", + "dependencies": { + "@lexical/selection": "0.28.0", + "@lexical/utils": "0.28.0", + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/mark": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/mark/-/mark-0.28.0.tgz", + "integrity": "sha512-v5PzmTACsJrw3GvNZy2rgPxrNn9InLvLFoKqrSlNhhyvYNIAcuC4KVy00LKLja43Gw/fuB3QwKohYfAtM3yR3g==", + "license": "MIT", + "dependencies": { + "@lexical/utils": "0.28.0", + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/markdown": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/markdown/-/markdown-0.28.0.tgz", + "integrity": "sha512-F3JXClqN4cjmXYLDK0IztxkbZuqkqS/AVbxnhGvnDYHQ9Gp8l7BonczhOiPwmJCDubJrAACP0L9LCqyt0jDRFw==", + "license": "MIT", + "dependencies": { + "@lexical/code": "0.28.0", + "@lexical/link": "0.28.0", + "@lexical/list": "0.28.0", + "@lexical/rich-text": "0.28.0", + "@lexical/text": "0.28.0", + "@lexical/utils": "0.28.0", + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/offset": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/offset/-/offset-0.28.0.tgz", + "integrity": "sha512-/SMDQgBPeWM936t04mtH6UAn3xAjP/meu9q136bcT3S7p7V8ew9JfNp9aznTPTx+2W3brJORAvUow7Xn1fSHmw==", + "license": "MIT", + "dependencies": { + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/overflow": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/overflow/-/overflow-0.28.0.tgz", + "integrity": "sha512-ppmhHXEZVicBm05w9EVflzwFavTVNAe4q0bkabWUeW0IoCT3Vg2A3JT7PC9ypmp+mboUD195foFEr1BBSv1Y8Q==", + "license": "MIT", + "dependencies": { + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/plain-text": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/plain-text/-/plain-text-0.28.0.tgz", + "integrity": "sha512-Jj2dCMDEfRuVetfDKcUes8J5jvAfZrLnILFlHxnu7y+lC+7R/NR403DYb3NJ8H7+lNiH1K15+U2K7ewbjxS6KQ==", + "license": "MIT", + "dependencies": { + "@lexical/clipboard": "0.28.0", + "@lexical/selection": "0.28.0", + "@lexical/utils": "0.28.0", + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/react": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/react/-/react-0.28.0.tgz", + "integrity": "sha512-dWPnxrKrbQFjNqExqnaAsV0UEUgw/5M1ZYRWd5FGBGjHqVTCaX2jNHlKLMA68Od0VPIoOX2Zy1TYZ8ZKtsj5Dg==", + "license": "MIT", + "dependencies": { + "@lexical/devtools-core": "0.28.0", + "@lexical/dragon": "0.28.0", + "@lexical/hashtag": "0.28.0", + "@lexical/history": "0.28.0", + "@lexical/link": "0.28.0", + "@lexical/list": "0.28.0", + "@lexical/mark": "0.28.0", + "@lexical/markdown": "0.28.0", + "@lexical/overflow": "0.28.0", + "@lexical/plain-text": "0.28.0", + "@lexical/rich-text": "0.28.0", + "@lexical/table": "0.28.0", + "@lexical/text": "0.28.0", + "@lexical/utils": "0.28.0", + "@lexical/yjs": "0.28.0", + "lexical": "0.28.0", + "react-error-boundary": "^3.1.4" + }, + "peerDependencies": { + "react": ">=17.x", + "react-dom": ">=17.x" + } + }, + "node_modules/@lexical/react/node_modules/react-error-boundary": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", + "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "react": ">=16.13.1" + } + }, + "node_modules/@lexical/rich-text": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/rich-text/-/rich-text-0.28.0.tgz", + "integrity": "sha512-y+vUWI+9uFupIb9UvssKU/DKcT9dFUZuQBu7utFkLadxCNyXQHeRjxzjzmvFiM3DBV0guPUDGu5VS5TPnIA+OA==", + "license": "MIT", + "dependencies": { + "@lexical/clipboard": "0.28.0", + "@lexical/selection": "0.28.0", + "@lexical/utils": "0.28.0", + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/selection": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.28.0.tgz", + "integrity": "sha512-AJDi67Nsexyejzp4dEQSVoPov4P+FJ0t1v6DxUU+YmcvV56QyJQi6ue0i/xd8unr75ZufzLsAC0cDJJCEI7QDA==", + "license": "MIT", + "dependencies": { + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/table": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/table/-/table-0.28.0.tgz", + "integrity": "sha512-HMPCwXdj0sRWdlDzsHcNWRgbeKbEhn3L8LPhFnTq7q61gZ4YW2umdmuvQFKnIBcKq49drTH8cUwZoIwI8+AEEw==", + "license": "MIT", + "dependencies": { + "@lexical/clipboard": "0.28.0", + "@lexical/utils": "0.28.0", + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/text": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/text/-/text-0.28.0.tgz", + "integrity": "sha512-PT/A2RZv+ktn7SG/tJkOpGlYE6zjOND59VtRHnV/xciZ+jEJVaqAHtWjhbWibAIZQAkv/O7UouuDqzDaNTSGAA==", + "license": "MIT", + "dependencies": { + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/utils": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.28.0.tgz", + "integrity": "sha512-Qw00DjkS1nRK7DLSgqJpJ77Ti2AuiOQ6m5eM38YojoWXkVmoxqKAUMaIbVNVKqjFgrQvKFF46sXxIJPbUQkB0w==", + "license": "MIT", + "dependencies": { + "@lexical/list": "0.28.0", + "@lexical/selection": "0.28.0", + "@lexical/table": "0.28.0", + "lexical": "0.28.0" + } + }, + "node_modules/@lexical/yjs": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@lexical/yjs/-/yjs-0.28.0.tgz", + "integrity": "sha512-rKHpUEd3nrvMY7ghmOC0AeGSYT7YIviba+JViaOzrCX4/Wtv5C/3Sl7Io12Z9k+s1BKmy7C28bOdQHvRWaD7vQ==", + "license": "MIT", + "dependencies": { + "@lexical/offset": "0.28.0", + "@lexical/selection": "0.28.0", + "lexical": "0.28.0" + }, + "peerDependencies": { + "yjs": ">=13.5.22" + } + }, "node_modules/@mdx-js/react": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", @@ -5702,6 +6729,29 @@ "@module-federation/sdk": "0.9.1" } }, + "node_modules/@monaco-editor/loader": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.5.0.tgz", + "integrity": "sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw==", + "license": "MIT", + "dependencies": { + "state-local": "^1.0.6" + } + }, + "node_modules/@monaco-editor/react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.7.0.tgz", + "integrity": "sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==", + "license": "MIT", + "dependencies": { + "@monaco-editor/loader": "^1.5.0" + }, + "peerDependencies": { + "monaco-editor": ">= 0.25.0 < 1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/@napi-rs/nice": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.0.1.tgz", @@ -7487,6 +8537,403 @@ "node": ">=0.10" } }, + "node_modules/@payloadcms/db-postgres": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@payloadcms/db-postgres/-/db-postgres-3.37.0.tgz", + "integrity": "sha512-ffEwoBFLPXlscRuYWL395Z2TyLCcYOPFqKHAuCH0RNrpBN7f0XE6HLOK503+BBNKR2T3DFLt8xu/ygMDrM1VDQ==", + "license": "MIT", + "dependencies": { + "@payloadcms/drizzle": "3.37.0", + "@types/pg": "8.10.2", + "console-table-printer": "2.12.1", + "drizzle-kit": "0.28.0", + "drizzle-orm": "0.36.1", + "pg": "8.11.3", + "prompts": "2.4.2", + "to-snake-case": "1.0.0", + "uuid": "10.0.0" + }, + "peerDependencies": { + "payload": "3.37.0" + } + }, + "node_modules/@payloadcms/db-postgres/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@payloadcms/drizzle": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@payloadcms/drizzle/-/drizzle-3.37.0.tgz", + "integrity": "sha512-HCIqnTSHQILTFaXY2u+bjDwA+UPaNVOku6ZrHo57rdSy8fXQgT9Namf2IPdSeRM9pNBtX+sgHDnRaSowL0YTIA==", + "license": "MIT", + "dependencies": { + "console-table-printer": "2.12.1", + "drizzle-orm": "0.36.1", + "prompts": "2.4.2", + "to-snake-case": "1.0.0", + "uuid": "9.0.0" + }, + "peerDependencies": { + "payload": "3.37.0" + } + }, + "node_modules/@payloadcms/drizzle/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@payloadcms/graphql": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@payloadcms/graphql/-/graphql-3.37.0.tgz", + "integrity": "sha512-Z+fEQR4NoCFGWkR3lTlw+1agsVn2LpxXJyeojORb8ZjZMwI8RlTEMa0llBQF5YeoabQao4Bkg2iG7fC9BZSZSw==", + "license": "MIT", + "dependencies": { + "graphql-scalars": "1.22.2", + "pluralize": "8.0.0", + "ts-essentials": "10.0.3", + "tsx": "4.19.2" + }, + "bin": { + "payload-graphql": "bin.js" + }, + "peerDependencies": { + "graphql": "^16.8.1", + "payload": "3.37.0" + } + }, + "node_modules/@payloadcms/next": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@payloadcms/next/-/next-3.37.0.tgz", + "integrity": "sha512-C8jXKA/+C0DBJgQdL9ZNZ/TLFRwpHx10ne9j0tO1zZZsFkhU+/znZPcYYOpnbOfnuI+l3HNQmZ+Hg6fEJzNtiQ==", + "license": "MIT", + "dependencies": { + "@dnd-kit/core": "6.0.8", + "@payloadcms/graphql": "3.37.0", + "@payloadcms/translations": "3.37.0", + "@payloadcms/ui": "3.37.0", + "busboy": "^1.6.0", + "dequal": "2.0.3", + "file-type": "19.3.0", + "graphql-http": "^1.22.0", + "graphql-playground-html": "1.6.30", + "http-status": "2.1.0", + "path-to-regexp": "6.3.0", + "qs-esm": "7.0.2", + "react-diff-viewer-continued": "4.0.5", + "sass": "1.77.4", + "uuid": "10.0.0" + }, + "engines": { + "node": "^18.20.2 || >=20.9.0" + }, + "peerDependencies": { + "graphql": "^16.8.1", + "next": "^15.2.3", + "payload": "3.37.0" + } + }, + "node_modules/@payloadcms/next/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/@payloadcms/next/node_modules/file-type": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-19.3.0.tgz", + "integrity": "sha512-mROwiKLZf/Kwa/2Rol+OOZQn1eyTkPB3ZTwC0ExY6OLFCbgxHYZvBm7xI77NvfZFMKBsmuXfmLJnD4eEftEhrA==", + "license": "MIT", + "dependencies": { + "strtok3": "^8.0.0", + "token-types": "^6.0.0", + "uint8array-extras": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/@payloadcms/next/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@payloadcms/next/node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "license": "MIT" + }, + "node_modules/@payloadcms/next/node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/@payloadcms/next/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@payloadcms/next/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/@payloadcms/next/node_modules/sass": { + "version": "1.77.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.4.tgz", + "integrity": "sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==", + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@payloadcms/next/node_modules/strtok3": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-8.1.0.tgz", + "integrity": "sha512-ExzDvHYPj6F6QkSNe/JxSlBxTh3OrI6wrAIz53ulxo1c4hBJ1bT9C/JrAthEKHWG9riVH3Xzg7B03Oxty6S2Lw==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.1.4" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@payloadcms/next/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@payloadcms/richtext-lexical": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@payloadcms/richtext-lexical/-/richtext-lexical-3.37.0.tgz", + "integrity": "sha512-AhmrhX29NbBVdiKmzLx4vUyXE9rRcKDOZPJzD4dDN73qGz4lewrLDaUF+A2nyFxCLGBMYXKQNrg3j8YK/3UNaw==", + "license": "MIT", + "dependencies": { + "@lexical/headless": "0.28.0", + "@lexical/html": "0.28.0", + "@lexical/link": "0.28.0", + "@lexical/list": "0.28.0", + "@lexical/mark": "0.28.0", + "@lexical/react": "0.28.0", + "@lexical/rich-text": "0.28.0", + "@lexical/selection": "0.28.0", + "@lexical/table": "0.28.0", + "@lexical/utils": "0.28.0", + "@payloadcms/translations": "3.37.0", + "@payloadcms/ui": "3.37.0", + "@types/uuid": "10.0.0", + "acorn": "8.12.1", + "bson-objectid": "2.0.4", + "dequal": "2.0.3", + "escape-html": "1.0.3", + "jsox": "1.2.121", + "lexical": "0.28.0", + "mdast-util-from-markdown": "2.0.2", + "mdast-util-mdx-jsx": "3.1.3", + "micromark-extension-mdx-jsx": "3.0.1", + "qs-esm": "7.0.2", + "react-error-boundary": "4.1.2", + "ts-essentials": "10.0.3", + "uuid": "10.0.0" + }, + "engines": { + "node": "^18.20.2 || >=20.9.0" + }, + "peerDependencies": { + "@faceless-ui/modal": "3.0.0-beta.2", + "@faceless-ui/scroll-info": "2.0.0", + "@payloadcms/next": "3.37.0", + "payload": "3.37.0", + "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020", + "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020" + } + }, + "node_modules/@payloadcms/richtext-lexical/node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "license": "MIT" + }, + "node_modules/@payloadcms/richtext-lexical/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@payloadcms/richtext-lexical/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@payloadcms/translations": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@payloadcms/translations/-/translations-3.37.0.tgz", + "integrity": "sha512-eFfvyREcyVB8XktSJ8Dazvs57qiKYZCESQcmsTgIwHTKskXwgZNtDXMYMbGQRDlPUgfIGab2uQSRtAnVuM9MaA==", + "license": "MIT", + "dependencies": { + "date-fns": "4.1.0" + } + }, + "node_modules/@payloadcms/ui": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@payloadcms/ui/-/ui-3.37.0.tgz", + "integrity": "sha512-zGHYzY8xqeGTIV9UeoDuHS4jPPeL3bFW3fNICQe9A0xgYyMwkBmEjyKF5n/miBYCzBmX0O7ztDtu8kayIDU3yg==", + "license": "MIT", + "dependencies": { + "@date-fns/tz": "1.2.0", + "@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", + "@faceless-ui/window-info": "3.0.1", + "@monaco-editor/react": "4.7.0", + "@payloadcms/translations": "3.37.0", + "bson-objectid": "2.0.4", + "date-fns": "4.1.0", + "dequal": "2.0.3", + "md5": "2.3.0", + "object-to-formdata": "4.5.1", + "qs-esm": "7.0.2", + "react-datepicker": "7.6.0", + "react-image-crop": "10.1.8", + "react-select": "5.9.0", + "scheduler": "0.25.0", + "sonner": "^1.7.2", + "ts-essentials": "10.0.3", + "use-context-selector": "2.0.0", + "uuid": "10.0.0" + }, + "engines": { + "node": "^18.20.2 || >=20.9.0" + }, + "peerDependencies": { + "next": "^15.2.3", + "payload": "3.37.0", + "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020", + "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020" + } + }, + "node_modules/@payloadcms/ui/node_modules/scheduler": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "license": "MIT" + }, + "node_modules/@payloadcms/ui/node_modules/sonner": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.7.4.tgz", + "integrity": "sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==", + "license": "MIT", + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/@payloadcms/ui/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@phenomnomnominal/tsquery": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", @@ -10325,7 +11772,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "dev": true, "license": "MIT" }, "node_modules/@tootallnate/once": { @@ -10386,6 +11832,15 @@ "tslib": "^2.4.0" } }, + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/@types/argparse": { "version": "1.0.38", "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", @@ -10466,6 +11921,15 @@ "@types/node": "*" } }, + "node_modules/@types/busboy": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/busboy/-/busboy-1.5.4.tgz", + "integrity": "sha512-kG7WrUuAKK0NoyxfQHsVE6j1m01s6kMma64E+OZenQABMQyTJop1DumUWcLwAQ2JzpefU7PDYoRDKl8uZosFjw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", @@ -10487,6 +11951,15 @@ "@types/node": "*" } }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/doctrine": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", @@ -10520,9 +11993,17 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "dev": true, "license": "MIT" }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", @@ -10559,6 +12040,15 @@ "@types/node": "*" } }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", @@ -10688,7 +12178,6 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, "license": "MIT" }, "node_modules/@types/json5": { @@ -10698,6 +12187,21 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/lodash": { + "version": "4.17.16", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz", + "integrity": "sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==", + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/mdx": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", @@ -10712,11 +12216,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, "node_modules/@types/node": { "version": "18.16.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.9.tgz", "integrity": "sha512-IeB32oIV4oGArLrd7znD2rkHQ6EDCM+2Sr76dJnrHwv9OHBTTM6nuDLK9bmikXzPa0ZlWMWtRGo/Uw4mrzQedA==", - "dev": true, "license": "MIT" }, "node_modules/@types/node-forge": { @@ -10733,9 +12242,19 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true, "license": "MIT" }, + "node_modules/@types/pg": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.10.2.tgz", + "integrity": "sha512-MKFs9P6nJ+LAeHLU3V0cODEOgyThJ3OAnmOlsZsxux6sfQs3HRXR5bBn7xG5DjckEFhTAxsXi7k7cd0pCMxpJw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^4.0.1" + } + }, "node_modules/@types/qs": { "version": "6.9.18", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", @@ -10754,7 +12273,6 @@ "version": "19.1.2", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.2.tgz", "integrity": "sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==", - "devOptional": true, "license": "MIT", "dependencies": { "csstype": "^3.0.2" @@ -10770,6 +12288,15 @@ "@types/react": "^19.0.0" } }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + } + }, "node_modules/@types/resolve": { "version": "1.20.6", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", @@ -10841,6 +12368,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, "node_modules/@types/uuid": { "version": "9.0.8", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", @@ -13061,7 +14594,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", @@ -13075,7 +14607,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -13146,7 +14677,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, "license": "Python-2.0" }, "node_modules/aria-query": { @@ -13424,7 +14954,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.0.0" @@ -13881,7 +15410,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", @@ -13897,7 +15425,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", @@ -13914,7 +15441,6 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, "license": "ISC", "engines": { "node": ">= 6" @@ -14171,7 +15697,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14247,6 +15772,12 @@ "dev": true, "license": "MIT" }, + "node_modules/body-scroll-lock": { + "version": "4.0.0-beta.0", + "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-4.0.0-beta.0.tgz", + "integrity": "sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==", + "license": "MIT" + }, "node_modules/bonjour-service": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", @@ -14329,7 +15860,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -14397,6 +15927,12 @@ "node-int64": "^0.4.0" } }, + "node_modules/bson-objectid": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/bson-objectid/-/bson-objectid-2.0.4.tgz", + "integrity": "sha512-vgnKAUzcDoa+AeyYwXCoHyF2q6u/8H46dxu5JN+4/TZeq/Dlinn0K6GvxsCLb3LHUJl0m/TLiEK31kUwtgocMQ==", + "license": "Apache-2.0" + }, "node_modules/btoa": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", @@ -14463,9 +15999,17 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, "license": "MIT" }, + "node_modules/buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/bundle-name": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", @@ -14654,7 +16198,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -14713,6 +16256,16 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chai": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", @@ -14773,6 +16326,55 @@ "node": ">=10" } }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, "node_modules/check-error": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", @@ -15085,7 +16687,6 @@ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", "license": "MIT", - "optional": true, "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" @@ -15098,7 +16699,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15111,7 +16711,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, "license": "MIT" }, "node_modules/color-string": { @@ -15119,7 +16718,6 @@ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", "license": "MIT", - "optional": true, "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -15136,7 +16734,6 @@ "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, "license": "MIT" }, "node_modules/colorjs.io": { @@ -15300,6 +16897,15 @@ "node": ">=0.8" } }, + "node_modules/console-table-printer": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/console-table-printer/-/console-table-printer-2.12.1.tgz", + "integrity": "sha512-wKGOQRRvdnd89pCeH96e2Fn4wkbenSP6LMHfjfyNLMbGuHEFbMqQNuxXqd0oXG9caIOQ1FTvc5Uijp9/4jujnQ==", + "license": "MIT", + "dependencies": { + "simple-wcswidth": "^1.0.1" + } + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -15607,6 +17213,15 @@ "node": ">=12.0.0" } }, + "node_modules/croner": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/croner/-/croner-9.0.0.tgz", + "integrity": "sha512-onMB0OkDjkXunhdW9htFjEhqrD54+M94i6ackoUkjHKbRnXdyEyKRelp4nJ1kAz32+s27jP1FsebpJCVl0BsvA==", + "license": "MIT", + "engines": { + "node": ">=18.0" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -15632,6 +17247,15 @@ "uncrypto": "^0.1.3" } }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, "node_modules/css-declaration-sorter": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", @@ -15937,6 +17561,12 @@ "node": ">=4" } }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", + "license": "MIT" + }, "node_modules/cssnano": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", @@ -16069,7 +17699,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true, "license": "MIT" }, "node_modules/cwd": { @@ -16282,6 +17911,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dataloader": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.3.tgz", + "integrity": "sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==", + "license": "MIT" + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, "node_modules/date-format": { "version": "4.0.14", "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", @@ -16292,6 +17937,15 @@ "node": ">=4.0" } }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/dayjs": { "version": "1.11.13", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", @@ -16310,7 +17964,6 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -16341,6 +17994,19 @@ "dev": true, "license": "MIT" }, + "node_modules/decode-named-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", + "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -16423,7 +18089,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -16581,7 +18246,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -16609,7 +18273,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", - "devOptional": true, "license": "Apache-2.0", "engines": { "node": ">=8" @@ -16650,6 +18313,19 @@ "node": ">= 4.0.0" } }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -16726,6 +18402,16 @@ "dev": true, "license": "MIT" }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -16842,6 +18528,552 @@ "url": "https://dotenvx.com" } }, + "node_modules/drizzle-kit": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.28.0.tgz", + "integrity": "sha512-KqI+CS2Ga9GYIrXpxpCDUJJrH/AT/k4UY0Pb4oRgQEGkgN1EdCnqp664cXgwPWjDr5RBtTsjZipw8+8C//K63A==", + "license": "MIT", + "dependencies": { + "@drizzle-team/brocli": "^0.10.2", + "@esbuild-kit/esm-loader": "^2.5.5", + "esbuild": "^0.19.7", + "esbuild-register": "^3.5.0" + }, + "bin": { + "drizzle-kit": "bin.cjs" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/drizzle-kit/node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/drizzle-orm": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.36.1.tgz", + "integrity": "sha512-F4hbimnMEhyWzDowQB4xEuVJJWXLHZYD7FYwvo8RImY+N7pStGqsbfmT95jDbec1s4qKmQbiuxEDZY90LRrfIw==", + "license": "Apache-2.0", + "peerDependencies": { + "@aws-sdk/client-rds-data": ">=3", + "@cloudflare/workers-types": ">=3", + "@electric-sql/pglite": ">=0.2.0", + "@libsql/client": ">=0.10.0", + "@libsql/client-wasm": ">=0.10.0", + "@neondatabase/serverless": ">=0.1", + "@op-engineering/op-sqlite": ">=2", + "@opentelemetry/api": "^1.4.1", + "@planetscale/database": ">=1", + "@prisma/client": "*", + "@tidbcloud/serverless": "*", + "@types/better-sqlite3": "*", + "@types/pg": "*", + "@types/react": ">=18", + "@types/sql.js": "*", + "@vercel/postgres": ">=0.8.0", + "@xata.io/client": "*", + "better-sqlite3": ">=7", + "bun-types": "*", + "expo-sqlite": ">=13.2.0", + "knex": "*", + "kysely": "*", + "mysql2": ">=2", + "pg": ">=8", + "postgres": ">=3", + "react": ">=18", + "sql.js": ">=1", + "sqlite3": ">=5" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-rds-data": { + "optional": true + }, + "@cloudflare/workers-types": { + "optional": true + }, + "@electric-sql/pglite": { + "optional": true + }, + "@libsql/client": { + "optional": true + }, + "@libsql/client-wasm": { + "optional": true + }, + "@neondatabase/serverless": { + "optional": true + }, + "@op-engineering/op-sqlite": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@prisma/client": { + "optional": true + }, + "@tidbcloud/serverless": { + "optional": true + }, + "@types/better-sqlite3": { + "optional": true + }, + "@types/pg": { + "optional": true + }, + "@types/react": { + "optional": true + }, + "@types/sql.js": { + "optional": true + }, + "@vercel/postgres": { + "optional": true + }, + "@xata.io/client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "bun-types": { + "optional": true + }, + "expo-sqlite": { + "optional": true + }, + "knex": { + "optional": true + }, + "kysely": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "postgres": { + "optional": true + }, + "prisma": { + "optional": true + }, + "react": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + } + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -17021,7 +19253,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -17098,7 +19329,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -17313,7 +19543,6 @@ "version": "0.25.3", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz", "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==", - "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -17354,7 +19583,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", - "dev": true, "license": "MIT", "dependencies": { "debug": "^4.3.4" @@ -17377,14 +19605,12 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true, "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -18000,6 +20226,30 @@ "node": ">=4.0" } }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -18333,11 +20583,16 @@ ], "license": "MIT" }, + "node_modules/fast-copy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, "license": "MIT" }, "node_modules/fast-fifo": { @@ -18395,17 +20650,21 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, "node_modules/fast-uri": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "dev": true, "funding": [ { "type": "github", @@ -18455,7 +20714,6 @@ "version": "6.4.4", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", - "dev": true, "license": "MIT", "peerDependencies": { "picomatch": "^3 || ^4" @@ -18648,7 +20906,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -18778,6 +21035,12 @@ "node": ">=18" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -18842,6 +21105,15 @@ "dev": true, "license": "ISC" }, + "node_modules/focus-trap": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", + "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", + "license": "MIT", + "dependencies": { + "tabbable": "^6.2.0" + } + }, "node_modules/follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", @@ -19264,7 +21536,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -19417,7 +21688,6 @@ "version": "4.10.0", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", - "dev": true, "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -19552,7 +21822,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -19661,6 +21930,54 @@ "dev": true, "license": "MIT" }, + "node_modules/graphql": { + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz", + "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/graphql-http": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/graphql-http/-/graphql-http-1.22.4.tgz", + "integrity": "sha512-OC3ucK988teMf+Ak/O+ZJ0N2ukcgrEurypp8ePyJFWq83VzwRAmHxxr+XxrMpxO/FIwI4a7m/Fzv3tWGJv0wPA==", + "license": "MIT", + "workspaces": [ + "implementations/**/*" + ], + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "graphql": ">=0.11 <=16" + } + }, + "node_modules/graphql-playground-html": { + "version": "1.6.30", + "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.30.tgz", + "integrity": "sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==", + "license": "MIT", + "dependencies": { + "xss": "^1.0.6" + } + }, + "node_modules/graphql-scalars": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/graphql-scalars/-/graphql-scalars-1.22.2.tgz", + "integrity": "sha512-my9FB4GtghqXqi/lWSVAOPiTzTnnEzdOXCsAC2bb5V7EFNQjVjwy3cSSbUvgYOtDuDibd+ZsCDhz+4eykYOlhQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, "node_modules/gunzip-maybe": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz", @@ -19864,6 +22181,27 @@ "he": "bin/he" } }, + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "license": "MIT" + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -20172,6 +22510,15 @@ "node": ">=0.10" } }, + "node_modules/http-status": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-status/-/http-status-2.1.0.tgz", + "integrity": "sha512-O5kPr7AW7wYd/BBiOezTwnVAnmSNFY+J7hlZD2X5IOxVBetjcHAiTXhzj0gMrnojQlwy+UT1/Y3H3vJ3UlmvLA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/http-status-codes": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", @@ -20257,7 +22604,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -20309,7 +22655,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -20443,6 +22788,30 @@ "url": "https://github.com/sponsors/brc-dd" } }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-arguments": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", @@ -20482,7 +22851,6 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, "license": "MIT" }, "node_modules/is-async-function": { @@ -20525,7 +22893,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -20551,6 +22918,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "license": "MIT" + }, "node_modules/is-bun-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", @@ -20591,7 +22964,6 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -20638,6 +23010,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-deflate": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz", @@ -20665,7 +23047,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -20730,7 +23111,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -20749,6 +23129,16 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -20824,7 +23214,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -21136,6 +23525,17 @@ "ws": "*" } }, + "node_modules/isomorphic.js": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", + "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", + "license": "MIT", + "peer": true, + "funding": { + "type": "GitHub Sponsors ❤", + "url": "https://github.com/sponsors/dmonad" + } + }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -22733,6 +25133,24 @@ "@sideway/pinpoint": "^2.0.0" } }, + "node_modules/jose": { + "version": "5.9.6", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.9.6.tgz", + "integrity": "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/js-cookie": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", @@ -22746,14 +25164,12 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -22826,7 +25242,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -22846,7 +25261,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, "license": "MIT" }, "node_modules/json-schema": { @@ -22856,6 +25270,44 @@ "dev": true, "license": "(AFL-2.1 OR BSD-3-Clause)" }, + "node_modules/json-schema-to-typescript": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/json-schema-to-typescript/-/json-schema-to-typescript-15.0.3.tgz", + "integrity": "sha512-iOKdzTUWEVM4nlxpFudFsWyUiu/Jakkga4OZPEt7CGoSEsAsUgdOZqR6pcgx2STBek9Gm4hcarJpXSzIvZ/hKA==", + "license": "MIT", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "^11.5.5", + "@types/json-schema": "^7.0.15", + "@types/lodash": "^4.17.7", + "is-glob": "^4.0.3", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "minimist": "^1.2.8", + "prettier": "^3.2.5", + "tinyglobby": "^0.2.9" + }, + "bin": { + "json2ts": "dist/src/cli.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/json-schema-to-typescript/node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -23005,6 +25457,15 @@ "node": ">=10" } }, + "node_modules/jsox": { + "version": "1.2.121", + "resolved": "https://registry.npmjs.org/jsox/-/jsox-1.2.121.tgz", + "integrity": "sha512-9Ag50tKhpTwS6r5wh3MJSAvpSof0UBr39Pto8OnzFT32Z/pAbxAsKHzyvsyMEHVslELvHyO/4/jaQELHk8wDcw==", + "license": "MIT", + "bin": { + "jsox": "lib/cli.js" + } + }, "node_modules/jsprim": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", @@ -23097,7 +25558,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -23374,6 +25834,34 @@ "node": ">= 0.8.0" } }, + "node_modules/lexical": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.28.0.tgz", + "integrity": "sha512-dLE3O1PZg0TlZxRQo9YDpjCjDUj8zluGyBO9MHdjo21qZmMUNrxQPeCRt8fn2s5l4HKYFQ1YNgl7k1pOJB/vZQ==", + "license": "MIT" + }, + "node_modules/lib0": { + "version": "0.2.107", + "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.107.tgz", + "integrity": "sha512-2xih/AugT0dJSgeSfsW/bqIPILlsqzEtmw8hXzWEnMLrOz12DTK5z9rjNgUT21/HkBjHSznOQBr67bcZdc8Ltg==", + "license": "MIT", + "peer": true, + "dependencies": { + "isomorphic.js": "^0.2.4" + }, + "bin": { + "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js", + "0gentesthtml": "bin/gentesthtml.js", + "0serve": "bin/0serve.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "GitHub Sponsors ❤", + "url": "https://github.com/sponsors/dmonad" + } + }, "node_modules/license-webpack-plugin": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", @@ -23727,7 +26215,6 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, "license": "MIT" }, "node_modules/lodash.clonedeepwith": { @@ -23876,11 +26363,20 @@ "dev": true, "license": "MIT" }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -24050,6 +26546,113 @@ "node": ">= 0.4" } }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "license": "BSD-3-Clause", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", + "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", @@ -24080,6 +26683,12 @@ "node": ">= 4.0.0" } }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, "node_modules/memoizerific": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", @@ -24127,6 +26736,523 @@ "node": ">= 0.6" } }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz", + "integrity": "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==", + "license": "MIT", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -24350,7 +27476,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -24411,6 +27536,13 @@ "pathe": "^2.0.1" } }, + "node_modules/monaco-editor": { + "version": "0.52.2", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz", + "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==", + "license": "MIT", + "peer": true + }, "node_modules/motion-dom": { "version": "12.9.1", "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.9.1.tgz", @@ -24440,7 +27572,6 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, "node_modules/muggle-string": { @@ -24604,6 +27735,367 @@ "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, + "node_modules/next/node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/next/node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/next/node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/next/node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/next/node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/next/node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/next/node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/next/node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/next/node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/next/node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/next/node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/next/node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/next/node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/next/node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/next/node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/next/node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/next/node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/next/node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/next/node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/next/node_modules/@swc/helpers": { "version": "0.5.15", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", @@ -24641,6 +28133,59 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/next/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/next/node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "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" + } + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -24783,7 +28328,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -25415,7 +28959,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -25461,6 +29004,12 @@ "node": ">= 0.4" } }, + "node_modules/object-to-formdata": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/object-to-formdata/-/object-to-formdata-4.5.1.tgz", + "integrity": "sha512-QiM9D0NiU5jV6J6tjE1g7b4Z2tcUnKs1OPUi4iMb2zH+7jwlcUrASghgkFk9GtzqNNq8rTQJtT8AzjBAvLoNMw==", + "license": "MIT" + }, "node_modules/object.assign": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", @@ -25555,14 +29104,12 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true, "license": "MIT" }, "node_modules/on-exit-leak-free": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", - "dev": true, "license": "MIT", "engines": { "node": ">=14.0.0" @@ -25595,7 +29142,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -25826,6 +29372,12 @@ "dev": true, "license": "BlueOak-1.0.0" }, + "node_modules/packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==", + "license": "MIT" + }, "node_modules/pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -25837,7 +29389,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -25846,11 +29397,35 @@ "node": ">=6" } }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -25869,7 +29444,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, "license": "MIT" }, "node_modules/parse-node-version": { @@ -25976,7 +29550,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, "license": "MIT" }, "node_modules/path-scurry": { @@ -26014,7 +29587,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -26037,11 +29609,226 @@ "node": ">= 14.16" } }, + "node_modules/payload": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/payload/-/payload-3.37.0.tgz", + "integrity": "sha512-fihg4c/SyuvCAkOFKCwTblkQ9t5fE77nACJ/3BEZlPr8Ikl4AgfkBfc29yZnf+GFiEuaul1j0KYwI3le0wex/g==", + "license": "MIT", + "dependencies": { + "@next/env": "^15.1.5", + "@payloadcms/translations": "3.37.0", + "@types/busboy": "1.5.4", + "ajv": "8.17.1", + "bson-objectid": "2.0.4", + "busboy": "^1.6.0", + "ci-info": "^4.1.0", + "console-table-printer": "2.12.1", + "croner": "9.0.0", + "dataloader": "2.2.3", + "deepmerge": "4.3.1", + "file-type": "19.3.0", + "get-tsconfig": "4.8.1", + "http-status": "2.1.0", + "image-size": "2.0.2", + "jose": "5.9.6", + "json-schema-to-typescript": "15.0.3", + "minimist": "1.2.8", + "path-to-regexp": "6.3.0", + "pino": "9.5.0", + "pino-pretty": "13.0.0", + "pluralize": "8.0.0", + "qs-esm": "7.0.2", + "sanitize-filename": "1.6.3", + "scmp": "2.1.0", + "ts-essentials": "10.0.3", + "tsx": "4.19.2", + "uuid": "10.0.0", + "ws": "^8.16.0" + }, + "bin": { + "payload": "bin.js" + }, + "engines": { + "node": "^18.20.2 || >=20.9.0" + }, + "peerDependencies": { + "graphql": "^16.8.1" + } + }, + "node_modules/payload/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/payload/node_modules/ci-info": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", + "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/payload/node_modules/file-type": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-19.3.0.tgz", + "integrity": "sha512-mROwiKLZf/Kwa/2Rol+OOZQn1eyTkPB3ZTwC0ExY6OLFCbgxHYZvBm7xI77NvfZFMKBsmuXfmLJnD4eEftEhrA==", + "license": "MIT", + "dependencies": { + "strtok3": "^8.0.0", + "token-types": "^6.0.0", + "uint8array-extras": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/payload/node_modules/get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/payload/node_modules/image-size": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", + "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", + "license": "MIT", + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/payload/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/payload/node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/payload/node_modules/pino": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.5.0.tgz", + "integrity": "sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^4.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" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/payload/node_modules/pino-abstract-transport": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/payload/node_modules/process-warning": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", + "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/payload/node_modules/sonic-boom": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/payload/node_modules/strtok3": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-8.1.0.tgz", + "integrity": "sha512-ExzDvHYPj6F6QkSNe/JxSlBxTh3OrI6wrAIz53ulxo1c4hBJ1bT9C/JrAthEKHWG9riVH3Xzg7B03Oxty6S2Lw==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.1.4" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/payload/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/peek-readable": { "version": "5.4.2", "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.4.2.tgz", "integrity": "sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==", - "dev": true, "license": "MIT", "engines": { "node": ">=14.16" @@ -26077,6 +29864,163 @@ "dev": true, "license": "MIT" }, + "node_modules/pg": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", + "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", + "license": "MIT", + "dependencies": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.6.2", + "pg-pool": "^3.6.1", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.1.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.5.tgz", + "integrity": "sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==", + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.8.5.tgz", + "integrity": "sha512-Ni8FuZ8yAF+sWZzojvtLE2b03cqjO5jNULcHFfM9ZZ0/JXrgom5pBREbtnAw7oxsxJqHw9Nz/XWORUEL3/IFow==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-numeric": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pg-numeric/-/pg-numeric-1.0.2.tgz", + "integrity": "sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/pg-pool": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.9.6.tgz", + "integrity": "sha512-rFen0G7adh1YmgvrmE5IPIqbb+IgEzENUm+tzm6MLLDSlPRoZVhzU1WdML9PV2W5GOdRA9qBKURlbt1OsXOsPw==", + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.9.5.tgz", + "integrity": "sha512-DYTWtWpfd5FOro3UnAfwvhD8jh59r2ig8bPtc9H8Ds7MscE/9NYruUQWFAOuraRl29jwcT2kyMFQ3MxeaVjUhg==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-4.0.2.tgz", + "integrity": "sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "pg-numeric": "1.0.2", + "postgres-array": "~3.0.1", + "postgres-bytea": "~3.0.0", + "postgres-date": "~2.1.0", + "postgres-interval": "^3.0.0", + "postgres-range": "^1.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pg/node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pg/node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pg/node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pg/node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pg/node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -26087,7 +30031,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -26182,11 +30125,62 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/pino-pretty": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.0.0.tgz", + "integrity": "sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA==", + "license": "MIT", + "dependencies": { + "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": "^2.0.0", + "pump": "^3.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^4.0.1", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-pretty/node_modules/pino-abstract-transport": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/pino-pretty/node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pino-pretty/node_modules/sonic-boom": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, "node_modules/pino-std-serializers": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", - "dev": true, "license": "MIT" }, "node_modules/pino/node_modules/pino-abstract-transport": { @@ -26384,6 +30378,15 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/polished": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", @@ -27077,6 +31080,51 @@ "dev": true, "license": "MIT" }, + "node_modules/postgres-array": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.4.tgz", + "integrity": "sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/postgres-bytea": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz", + "integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==", + "license": "MIT", + "dependencies": { + "obuf": "~1.1.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postgres-date": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-2.1.0.tgz", + "integrity": "sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/postgres-interval": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz", + "integrity": "sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/postgres-range": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/postgres-range/-/postgres-range-1.1.4.tgz", + "integrity": "sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==", + "license": "MIT" + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -27131,6 +31179,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", @@ -27182,7 +31239,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, "license": "MIT", "dependencies": { "kleur": "^3.0.3", @@ -27196,7 +31252,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", @@ -27208,7 +31263,6 @@ "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, "license": "MIT" }, "node_modules/proxy-addr": { @@ -27318,6 +31372,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/qs-esm": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/qs-esm/-/qs-esm-7.0.2.tgz", + "integrity": "sha512-D8NAthKSD7SGn748v+GLaaO6k08Mvpoqroa35PqIQC4gtUa8/Pb/k+r0m0NnGBVbHDP1gKZ2nVywqfMisRhV5A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/quansync": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz", @@ -27367,7 +31433,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", - "dev": true, "license": "MIT" }, "node_modules/quick-lru": { @@ -27481,6 +31546,60 @@ "node": ">=0.10.0" } }, + "node_modules/react-datepicker": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-7.6.0.tgz", + "integrity": "sha512-9cQH6Z/qa4LrGhzdc3XoHbhrxNcMi9MKjZmYgF/1MNNaJwvdSjv3Xd+jjvrEEbKEf71ZgCA3n7fQbdwd70qCRw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react": "^0.27.0", + "clsx": "^2.1.1", + "date-fns": "^3.6.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/react-datepicker/node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/react-diff-viewer-continued": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/react-diff-viewer-continued/-/react-diff-viewer-continued-4.0.5.tgz", + "integrity": "sha512-L43gIPdhHgu1MYdip4vNqAt5s2JLICKe2/RyGUr2ohAxfhYaH1+QZ6vBO0qgo4xGBhE3jmvbOA/swq4/gdS/0g==", + "license": "MIT", + "dependencies": { + "@emotion/css": "^11.13.5", + "@emotion/react": "^11.14.0", + "classnames": "^2.5.1", + "diff": "^5.2.0", + "memoize-one": "^6.0.0" + }, + "engines": { + "node": ">= 16" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-diff-viewer-continued/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/react-docgen": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.1.tgz", @@ -27538,6 +31657,18 @@ "react": "^19.1.0" } }, + "node_modules/react-error-boundary": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-4.1.2.tgz", + "integrity": "sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "peerDependencies": { + "react": ">=16.13.1" + } + }, "node_modules/react-hook-form": { "version": "7.56.1", "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.56.1.tgz", @@ -27563,6 +31694,15 @@ "react": "*" } }, + "node_modules/react-image-crop": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/react-image-crop/-/react-image-crop-10.1.8.tgz", + "integrity": "sha512-4rb8XtXNx7ZaOZarKKnckgz4xLMvds/YrU6mpJfGhGAsy2Mg4mIw1x+DCCGngVGq2soTBVVOxx2s/C6mTX9+pA==", + "license": "ISC", + "peerDependencies": { + "react": ">=16.13.1" + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -27628,6 +31768,43 @@ "node": ">=18" } }, + "node_modules/react-select": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.9.0.tgz", + "integrity": "sha512-nwRKGanVHGjdccsnzhFte/PULziueZxGD8LL2WojON78Mvnq7LdAMEtu2frrwld1fr3geixg3iiMBIc/LLAZpw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -27681,7 +31858,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 12.13.0" @@ -27788,7 +31964,6 @@ "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true, "license": "MIT" }, "node_modules/regenerator-transform": { @@ -27924,7 +32099,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -27948,7 +32122,6 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", @@ -28010,7 +32183,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -28020,7 +32192,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" @@ -28316,7 +32487,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -28329,6 +32499,15 @@ "dev": true, "license": "MIT" }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "license": "WTFPL OR ISC", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, "node_modules/sass": { "version": "1.87.0", "resolved": "https://registry.npmjs.org/sass/-/sass-1.87.0.tgz", @@ -28837,6 +33016,12 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/scmp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz", + "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==", + "license": "BSD-3-Clause" + }, "node_modules/secure-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", @@ -28844,6 +33029,12 @@ "dev": true, "license": "MIT" }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "license": "BSD-3-Clause" + }, "node_modules/seek-bzip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-2.0.0.tgz", @@ -29327,16 +33518,15 @@ } }, "node_modules/sharp": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", - "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.1.tgz", + "integrity": "sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==", "hasInstallScript": true, "license": "Apache-2.0", - "optional": true, "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", - "semver": "^7.6.3" + "semver": "^7.7.1" }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" @@ -29345,25 +33535,26 @@ "url": "https://opencollective.com/libvips" }, "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" + "@img/sharp-darwin-arm64": "0.34.1", + "@img/sharp-darwin-x64": "0.34.1", + "@img/sharp-libvips-darwin-arm64": "1.1.0", + "@img/sharp-libvips-darwin-x64": "1.1.0", + "@img/sharp-libvips-linux-arm": "1.1.0", + "@img/sharp-libvips-linux-arm64": "1.1.0", + "@img/sharp-libvips-linux-ppc64": "1.1.0", + "@img/sharp-libvips-linux-s390x": "1.1.0", + "@img/sharp-libvips-linux-x64": "1.1.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", + "@img/sharp-libvips-linuxmusl-x64": "1.1.0", + "@img/sharp-linux-arm": "0.34.1", + "@img/sharp-linux-arm64": "0.34.1", + "@img/sharp-linux-s390x": "0.34.1", + "@img/sharp-linux-x64": "0.34.1", + "@img/sharp-linuxmusl-arm64": "0.34.1", + "@img/sharp-linuxmusl-x64": "0.34.1", + "@img/sharp-wasm32": "0.34.1", + "@img/sharp-win32-ia32": "0.34.1", + "@img/sharp-win32-x64": "0.34.1" } }, "node_modules/sharp/node_modules/semver": { @@ -29371,7 +33562,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", - "optional": true, "bin": { "semver": "bin/semver.js" }, @@ -29510,7 +33700,6 @@ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "license": "MIT", - "optional": true, "dependencies": { "is-arrayish": "^0.3.1" } @@ -29519,8 +33708,13 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "license": "MIT", - "optional": true + "license": "MIT" + }, + "node_modules/simple-wcswidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-wcswidth/-/simple-wcswidth-1.0.1.tgz", + "integrity": "sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==", + "license": "MIT" }, "node_modules/sirv": { "version": "3.0.1", @@ -29541,7 +33735,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, "license": "MIT" }, "node_modules/slash": { @@ -29798,7 +33991,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "dev": true, "license": "ISC", "engines": { "node": ">= 10.x" @@ -29874,6 +34066,12 @@ "dev": true, "license": "MIT" }, + "node_modules/state-local": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==", + "license": "MIT" + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -30238,6 +34436,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -30316,7 +34528,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -30400,6 +34611,12 @@ "postcss": "^8.4.31" } }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT" + }, "node_modules/stylus": { "version": "0.64.0", "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.64.0.tgz", @@ -30469,7 +34686,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -30551,6 +34767,12 @@ "node": ">=16.0.0" } }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "license": "MIT" + }, "node_modules/tailwind-merge": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.2.0.tgz", @@ -30846,7 +35068,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", - "dev": true, "license": "MIT", "dependencies": { "real-require": "^0.2.0" @@ -30942,7 +35163,6 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", - "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.4.4", @@ -31022,11 +35242,16 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/to-no-case": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz", + "integrity": "sha512-Z3g735FxuZY8rodxV4gH7LxClE4H0hTIyHNIHdk+vpQxjLm0cwnKXq/OFVZ76SOQmto7txVcwSCwkU5kqp+FKg==", + "license": "MIT" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -31035,6 +35260,24 @@ "node": ">=8.0" } }, + "node_modules/to-snake-case": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-snake-case/-/to-snake-case-1.0.0.tgz", + "integrity": "sha512-joRpzBAk1Bhi2eGEYBjukEWHOe/IvclOkiJl3DtA91jV6NwQ3MwXA4FHYeqk8BNp/D8bmi9tcNbRu/SozP0jbQ==", + "license": "MIT", + "dependencies": { + "to-space-case": "^1.0.0" + } + }, + "node_modules/to-space-case": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz", + "integrity": "sha512-rLdvwXZ39VOn1IxGL3V6ZstoTbwLRckQmn/U8ZDLuWwIXNpuZDhQ3AiRUlhTbOXFVE9C+dR51wM0CBDhk31VcA==", + "license": "MIT", + "dependencies": { + "to-no-case": "^1.0.0" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -31049,7 +35292,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.0.0.tgz", "integrity": "sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==", - "dev": true, "license": "MIT", "dependencies": { "@tokenizer/token": "^0.3.0", @@ -31139,6 +35381,15 @@ "tree-kill": "cli.js" } }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "license": "WTFPL", + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, "node_modules/ts-api-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", @@ -31162,6 +35413,20 @@ "node": ">=6.10" } }, + "node_modules/ts-essentials": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-10.0.3.tgz", + "integrity": "sha512-/FrVAZ76JLTWxJOERk04fm8hYENDo0PWSP3YLQKxevLwWtxemGcl5JJEzN4iqfDlRve0ckyfFaOBu4xbNH/wZw==", + "license": "MIT", + "peerDependencies": { + "typescript": ">=4.5.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/ts-loader": { "version": "9.5.2", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz", @@ -31303,6 +35568,448 @@ "node": ">=0.6.x" } }, + "node_modules/tsx": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", + "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", + "license": "MIT", + "dependencies": { + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/esbuild": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "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" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -31498,7 +36205,7 @@ "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -31556,7 +36263,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.0.tgz", "integrity": "sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -31658,6 +36364,74 @@ "node": ">= 0.8.0" } }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -31813,6 +36587,30 @@ "requires-port": "^1.0.0" } }, + "node_modules/use-context-selector": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/use-context-selector/-/use-context-selector-2.0.0.tgz", + "integrity": "sha512-owfuSmUNd3eNp3J9CdDl0kMgfidV+MkDvHPpvthN5ThqM+ibMccNE0k+Iq7TWC6JPFvGZqanqiGCuQx6DyV24g==", + "license": "MIT", + "peerDependencies": { + "react": ">=18.0.0", + "scheduler": ">=0.19.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.0.tgz", + "integrity": "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/use-sync-external-store": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", @@ -31822,6 +36620,12 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", + "license": "(WTFPL OR MIT)" + }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -32136,6 +36940,20 @@ "extsprintf": "^1.2.0" } }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vite": { "version": "6.3.3", "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.3.tgz", @@ -33563,7 +38381,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": { @@ -33584,7 +38401,6 @@ "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10.0.0" @@ -33626,11 +38442,32 @@ "dev": true, "license": "MIT" }, + "node_modules/xss": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.15.tgz", + "integrity": "sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==", + "license": "MIT", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xss/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.4" @@ -33731,6 +38568,24 @@ "node": ">=12" } }, + "node_modules/yjs": { + "version": "13.6.26", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.26.tgz", + "integrity": "sha512-wiARO3wixu7mtoRP5f7LqpUtsURP9SmNgXUt3RlnZg4qDuF7dUjthwIvwxIDmK55dPw4Wl4QdW5A3ag0atwu7g==", + "license": "MIT", + "peer": true, + "dependencies": { + "lib0": "^0.2.99" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=8.0.0" + }, + "funding": { + "type": "GitHub Sponsors ❤", + "url": "https://github.com/sponsors/dmonad" + } + }, "node_modules/ylru": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz", @@ -33772,6 +38627,16 @@ "funding": { "url": "https://github.com/sponsors/colinhacks" } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/package.json b/package.json index 9be78c1..83c78d8 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,8 @@ "landing:dev": "nx serve landing", "landing:build": "nx build landing", "landing:prod": "cd ./dist/apps/landing && npx next start", + "landing:generate:importmap": "PAYLOAD_CONFIG_PATH=apps/landing/src/payload.config.ts payload generate:importmap", + "landing:generate:types": "PAYLOAD_CONFIG_PATH=apps/landing/src/payload.config.ts payload generate:types", "ui:test": "nx test ui", "ui:build": "nx build ui", "ui:storybook": "nx storybook ui" @@ -26,6 +28,9 @@ "dependencies": { "@ant-design/icons": "^6.0.0", "@hookform/resolvers": "^5.0.1", + "@payloadcms/db-postgres": "^3.37.0", + "@payloadcms/next": "^3.37.0", + "@payloadcms/richtext-lexical": "^3.37.0", "@radix-ui/react-slot": "^1.2.0", "@tanstack/react-query": "^5.74.4", "@tanstack/react-store": "^0.7.0", @@ -34,14 +39,17 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "framer-motion": "^12.9.2", + "graphql": "^16.11.0", "js-cookie": "^3.0.5", "next": "~15.2.4", "next-themes": "^0.4.6", + "payload": "^3.37.0", "react": "^19.1.0", "react-dom": "^19.1.0", "react-hook-form": "^7.55.0", "react-icons": "^5.5.0", "react-router-dom": "^7.3.0", + "sharp": "^0.34.1", "sonner": "^2.0.3", "tailwind-merge": "^3.0.2", "zod": "^3.24.2" From 45295953aaae0f168557b31407897c97b2e95921 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Thu, 8 May 2025 15:16:59 +0700 Subject: [PATCH 02/31] feat: add payload configuration and update TypeScript target --- apps/landing/src/lib/payload.ts | 4 ++++ apps/landing/tsconfig.json | 1 + 2 files changed, 5 insertions(+) create mode 100644 apps/landing/src/lib/payload.ts diff --git a/apps/landing/src/lib/payload.ts b/apps/landing/src/lib/payload.ts new file mode 100644 index 0000000..a4257f5 --- /dev/null +++ b/apps/landing/src/lib/payload.ts @@ -0,0 +1,4 @@ +import config from '@payload-config'; +import { getPayload } from 'payload'; + +export const payload = await getPayload({ config }); diff --git a/apps/landing/tsconfig.json b/apps/landing/tsconfig.json index 9bbac47..b43de1c 100644 --- a/apps/landing/tsconfig.json +++ b/apps/landing/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { + "target": "ES2022", "baseUrl": ".", "paths": { "@payload-config": ["./src/payload.config.ts"] From c82426282cf0cad9a54ba71a11eba5f90d0f40cc Mon Sep 17 00:00:00 2001 From: ArraysID Date: Thu, 8 May 2025 15:24:44 +0700 Subject: [PATCH 03/31] fix: update TypeScript paths for payload configuration --- apps/landing/tsconfig.json | 6 +----- tsconfig.base.json | 3 ++- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/apps/landing/tsconfig.json b/apps/landing/tsconfig.json index b43de1c..2a48629 100644 --- a/apps/landing/tsconfig.json +++ b/apps/landing/tsconfig.json @@ -1,16 +1,12 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "target": "ES2022", - "baseUrl": ".", - "paths": { - "@payload-config": ["./src/payload.config.ts"] - }, "jsx": "preserve", "strict": true, "noEmit": true, "emitDeclarationOnly": false, "esModuleInterop": true, + "target": "ES2022", "module": "esnext", "moduleResolution": "bundler", "resolveJsonModule": true, diff --git a/tsconfig.base.json b/tsconfig.base.json index f26b5f3..2cffbcf 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -24,7 +24,8 @@ "@imphnen-frontend-service/ui/organisms": [ "libs/ui/src/organisms/index.ts" ], - "@imphnen-frontend-service/utils": ["libs/utils/src/index.ts"] + "@imphnen-frontend-service/utils": ["libs/utils/src/index.ts"], + "@payload-config": ["apps/landing/src/payload.config.ts"], } }, "exclude": ["node_modules", "tmp"] From c69614531b91f7a47ebc72bbe330780afc4f5cf6 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Thu, 8 May 2025 15:39:21 +0700 Subject: [PATCH 04/31] refactor: update config import paths to use local payload.config --- .../src/app/(payload)/admin/[[...segments]]/not-found.tsx | 2 +- apps/landing/src/app/(payload)/admin/[[...segments]]/page.tsx | 2 +- apps/landing/src/app/(payload)/api/[...slug]/route.ts | 2 +- apps/landing/src/app/(payload)/api/graphql-playground/route.ts | 2 +- apps/landing/src/app/(payload)/api/graphql/route.ts | 2 +- apps/landing/src/app/(payload)/layout.tsx | 2 +- apps/landing/src/lib/payload.ts | 2 +- tsconfig.base.json | 3 +-- 8 files changed, 8 insertions(+), 9 deletions(-) diff --git a/apps/landing/src/app/(payload)/admin/[[...segments]]/not-found.tsx b/apps/landing/src/app/(payload)/admin/[[...segments]]/not-found.tsx index 91f934d..94d4e63 100644 --- a/apps/landing/src/app/(payload)/admin/[[...segments]]/not-found.tsx +++ b/apps/landing/src/app/(payload)/admin/[[...segments]]/not-found.tsx @@ -2,8 +2,8 @@ /* 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 config from '../../../../payload.config'; import { importMap } from '../importMap'; type Args = { diff --git a/apps/landing/src/app/(payload)/admin/[[...segments]]/page.tsx b/apps/landing/src/app/(payload)/admin/[[...segments]]/page.tsx index 78d8a55..cf3fdd0 100644 --- a/apps/landing/src/app/(payload)/admin/[[...segments]]/page.tsx +++ b/apps/landing/src/app/(payload)/admin/[[...segments]]/page.tsx @@ -2,8 +2,8 @@ /* 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 config from '../../../../payload.config'; import { importMap } from '../importMap'; type Args = { diff --git a/apps/landing/src/app/(payload)/api/[...slug]/route.ts b/apps/landing/src/app/(payload)/api/[...slug]/route.ts index 42ce02f..7177895 100644 --- a/apps/landing/src/app/(payload)/api/[...slug]/route.ts +++ b/apps/landing/src/app/(payload)/api/[...slug]/route.ts @@ -1,6 +1,5 @@ /* 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 '@payloadcms/next/css'; import { REST_DELETE, @@ -10,6 +9,7 @@ import { REST_POST, REST_PUT, } from '@payloadcms/next/routes'; +import config from '../../../../payload.config'; export const GET = REST_GET(config); export const POST = REST_POST(config); diff --git a/apps/landing/src/app/(payload)/api/graphql-playground/route.ts b/apps/landing/src/app/(payload)/api/graphql-playground/route.ts index ef97193..9c2a713 100644 --- a/apps/landing/src/app/(payload)/api/graphql-playground/route.ts +++ b/apps/landing/src/app/(payload)/api/graphql-playground/route.ts @@ -1,7 +1,7 @@ /* 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 '@payloadcms/next/css'; import { GRAPHQL_PLAYGROUND_GET } from '@payloadcms/next/routes'; +import config from '../../../../payload.config'; export const GET = GRAPHQL_PLAYGROUND_GET(config); diff --git a/apps/landing/src/app/(payload)/api/graphql/route.ts b/apps/landing/src/app/(payload)/api/graphql/route.ts index 89f7c29..e6ab622 100644 --- a/apps/landing/src/app/(payload)/api/graphql/route.ts +++ b/apps/landing/src/app/(payload)/api/graphql/route.ts @@ -1,7 +1,7 @@ /* 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, REST_OPTIONS } from '@payloadcms/next/routes'; +import config from '../../../../payload.config'; export const POST = GRAPHQL_POST(config); diff --git a/apps/landing/src/app/(payload)/layout.tsx b/apps/landing/src/app/(payload)/layout.tsx index f596218..e32d647 100644 --- a/apps/landing/src/app/(payload)/layout.tsx +++ b/apps/landing/src/app/(payload)/layout.tsx @@ -1,10 +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 '@payloadcms/next/css'; import { handleServerFunctions, RootLayout } from '@payloadcms/next/layouts'; import type { ServerFunctionClient } from 'payload'; import React from 'react'; +import config from '../../payload.config'; import { importMap } from './admin/importMap.js'; import './custom.scss'; diff --git a/apps/landing/src/lib/payload.ts b/apps/landing/src/lib/payload.ts index a4257f5..2151d1a 100644 --- a/apps/landing/src/lib/payload.ts +++ b/apps/landing/src/lib/payload.ts @@ -1,4 +1,4 @@ -import config from '@payload-config'; import { getPayload } from 'payload'; +import config from '../payload.config'; export const payload = await getPayload({ config }); diff --git a/tsconfig.base.json b/tsconfig.base.json index 2cffbcf..f26b5f3 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -24,8 +24,7 @@ "@imphnen-frontend-service/ui/organisms": [ "libs/ui/src/organisms/index.ts" ], - "@imphnen-frontend-service/utils": ["libs/utils/src/index.ts"], - "@payload-config": ["apps/landing/src/payload.config.ts"], + "@imphnen-frontend-service/utils": ["libs/utils/src/index.ts"] } }, "exclude": ["node_modules", "tmp"] From acb7f4aef93cfb3c26298d35082c702b1612b96b Mon Sep 17 00:00:00 2001 From: ArraysID Date: Thu, 8 May 2025 15:42:24 +0700 Subject: [PATCH 05/31] fix: update quotation marks for testimonials to use HTML entities --- apps/landing/src/app/(frontend)/_components/testimonials.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/landing/src/app/(frontend)/_components/testimonials.tsx b/apps/landing/src/app/(frontend)/_components/testimonials.tsx index 243792d..e53dcb4 100644 --- a/apps/landing/src/app/(frontend)/_components/testimonials.tsx +++ b/apps/landing/src/app/(frontend)/_components/testimonials.tsx @@ -101,7 +101,7 @@ export function Testimonials() {

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

From f31aad8570300491a8bfa9c6c2436cdee376ea80 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Thu, 8 May 2025 16:07:51 +0700 Subject: [PATCH 06/31] fix: include withPayload in Next.js plugins for proper configuration --- apps/landing/next.config.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/apps/landing/next.config.js b/apps/landing/next.config.js index b878e60..7f7d4ff 100644 --- a/apps/landing/next.config.js +++ b/apps/landing/next.config.js @@ -15,11 +15,6 @@ const nextConfig = { }, }; -const plugins = [ - // Add more Next.js plugins to this list if needed. - withNx, -]; +const plugins = [withNx, withPayload]; -const configWithNxPlugin = composePlugins(...plugins)(nextConfig); - -module.exports = withPayload(configWithNxPlugin); +module.exports = composePlugins(...plugins)(nextConfig); From 7b490702b942d9c5d5271cbefbfef07dd8abe0bf Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 03:32:19 +0700 Subject: [PATCH 07/31] feat: implement HeroSection global configuration and integrate with Hero component --- .../src/app/(frontend)/_components/hero.tsx | 80 ++++++-------- apps/landing/src/app/(frontend)/page.tsx | 7 +- apps/landing/src/collections/HeroSection.ts | 101 ++++++++++++++++++ apps/landing/src/payload-types.ts | 62 ++++++++++- apps/landing/src/payload.config.ts | 2 + .../repositories/get-globals-hero-section.ts | 7 ++ 6 files changed, 209 insertions(+), 50 deletions(-) create mode 100644 apps/landing/src/collections/HeroSection.ts create mode 100644 apps/landing/src/repositories/get-globals-hero-section.ts diff --git a/apps/landing/src/app/(frontend)/_components/hero.tsx b/apps/landing/src/app/(frontend)/_components/hero.tsx index 863418c..3c9cd44 100644 --- a/apps/landing/src/app/(frontend)/_components/hero.tsx +++ b/apps/landing/src/app/(frontend)/_components/hero.tsx @@ -6,11 +6,14 @@ import { SparklesIcon, UsersIcon, } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { HeroSection } from 'apps/landing/src/payload-types'; import { motion } from 'framer-motion'; import Image from 'next/image'; -import { useEffect, useState } from 'react'; +import { Fragment, useEffect, useState } from 'react'; + +export function Hero(props: HeroSection) { + const { badgeText, buttons, description, highlight, title, stats } = props; -export function Hero() { const [scrollY, setScrollY] = useState(0); useEffect(() => { @@ -24,11 +27,8 @@ export function Hero() { return (
- {/* Background Elements */}
- - {/* Animated Gradient Orbs */}
- - {/* Grid Pattern */}
@@ -58,63 +56,56 @@ export function Hero() { >
- Komunitas Programmer Indonesia + {badgeText}

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

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

-
-
- 100K+ -
-
Member
-
-
-
-
- 500+ -
-
Tutorial
-
-
-
-
- 24/7 -
-
Yapping
-
+ {stats?.map(({ value, label }, i) => ( + +
+
+ {value} +
+
{label}
+
+ {i < stats.length - 1 && ( +
+ )} + + ))}
@@ -125,15 +116,12 @@ export function Hero() { transition={{ duration: 0.5, delay: 0.2 }} >
- {/* Decorative Elements */}
- - {/* Main Image */}
- + diff --git a/apps/landing/src/collections/HeroSection.ts b/apps/landing/src/collections/HeroSection.ts new file mode 100644 index 0000000..38e5a1e --- /dev/null +++ b/apps/landing/src/collections/HeroSection.ts @@ -0,0 +1,101 @@ +import type { GlobalConfig } from 'payload'; + +export const HeroSection: GlobalConfig = { + slug: 'hero-section', + label: 'Hero Section', + access: { + read: () => true, + update: () => true, + }, + fields: [ + { + name: 'badgeText', + label: 'Badge Text', + type: 'text', + required: true, + defaultValue: 'Komunitas Programmer Indonesia', + }, + { + name: 'title', + label: 'Main Title', + type: 'text', + required: true, + defaultValue: 'Programmer Handal,', + }, + { + name: 'highlight', + label: 'Highlight Text', + type: 'text', + required: true, + defaultValue: 'Tanpa Ribet', + }, + { + name: 'description', + label: 'Description', + type: 'textarea', + required: true, + defaultValue: + 'Temukan potensi programming Anda bersama komunitas yang mendukung, tutorial interaktif, dan sumber daya berkualitas tinggi.', + }, + { + type: 'group', + name: 'buttons', + label: 'Buttons', + fields: [ + { + name: 'primaryLabel', + label: 'Primary Button Label', + type: 'text', + required: true, + defaultValue: 'Mulai Belajar', + }, + { + name: 'primaryUrl', + label: 'Primary Button URL', + type: 'text', + required: true, + defaultValue: 'https://web.facebook.com/groups/1032515944638255', + }, + { + name: 'secondaryLabel', + label: 'Secondary Button Label', + type: 'text', + required: true, + defaultValue: 'Gabung Discord', + }, + { + name: 'secondaryUrl', + label: 'Secondary Button URL', + type: 'text', + required: true, + defaultValue: 'https://discord.com/invite/imphnen', + }, + ], + }, + { + name: 'stats', + label: 'Statistics', + type: 'array', + minRows: 1, + fields: [ + { + name: 'value', + label: 'Value', + type: 'text', + required: true, + }, + { + name: 'label', + label: 'Label', + type: 'text', + required: true, + }, + ], + defaultValue: [ + { value: '180K+', label: 'Member' }, + { value: '500+', label: 'Tutorial' }, + { value: '24/7', label: 'Yapping' }, + ], + }, + ], +}; diff --git a/apps/landing/src/payload-types.ts b/apps/landing/src/payload-types.ts index d3cacc9..865e21d 100644 --- a/apps/landing/src/payload-types.ts +++ b/apps/landing/src/payload-types.ts @@ -84,8 +84,12 @@ export interface Config { db: { defaultIDType: number; }; - globals: {}; - globalsSelect: {}; + globals: { + 'hero-section': HeroSection; + }; + globalsSelect: { + 'hero-section': HeroSectionSelect | HeroSectionSelect; + }; locale: null; user: User & { collection: 'users'; @@ -271,6 +275,60 @@ export interface PayloadMigrationsSelect { updatedAt?: T; createdAt?: T; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "hero-section". + */ +export interface HeroSection { + id: number; + badgeText: string; + title: string; + highlight: string; + description: string; + buttons: { + primaryLabel: string; + primaryUrl: string; + secondaryLabel: string; + secondaryUrl: string; + }; + stats?: + | { + value: string; + label: string; + id?: string | null; + }[] + | null; + updatedAt?: string | null; + createdAt?: string | null; +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "hero-section_select". + */ +export interface HeroSectionSelect { + badgeText?: T; + title?: T; + highlight?: T; + description?: T; + buttons?: + | T + | { + primaryLabel?: T; + primaryUrl?: T; + secondaryLabel?: T; + secondaryUrl?: T; + }; + stats?: + | T + | { + value?: T; + label?: T; + id?: T; + }; + updatedAt?: T; + createdAt?: T; + globalType?: T; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "auth". diff --git a/apps/landing/src/payload.config.ts b/apps/landing/src/payload.config.ts index de076a1..48bc574 100644 --- a/apps/landing/src/payload.config.ts +++ b/apps/landing/src/payload.config.ts @@ -5,6 +5,7 @@ import { buildConfig } from 'payload'; import sharp from 'sharp'; import { fileURLToPath } from 'url'; +import { HeroSection } from './collections/HeroSection'; import { Media } from './collections/Media'; import { Users } from './collections/Users'; @@ -25,6 +26,7 @@ export default buildConfig({ }, }, collections: [Users, Media], + globals: [HeroSection], editor: lexicalEditor(), secret: process.env.CMS_SECRET || '', typescript: { diff --git a/apps/landing/src/repositories/get-globals-hero-section.ts b/apps/landing/src/repositories/get-globals-hero-section.ts new file mode 100644 index 0000000..cd8e3c0 --- /dev/null +++ b/apps/landing/src/repositories/get-globals-hero-section.ts @@ -0,0 +1,7 @@ +import { payload } from '../lib/payload'; + +export async function getGlobalsHeroSection() { + return await payload.findGlobal({ + slug: 'hero-section', + }); +} From 39a57b4fed0c3502e5003e961789235085ccdede Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 04:08:37 +0700 Subject: [PATCH 08/31] feat: add FeaturesSection global configuration and integrate with Features component --- .../app/(frontend)/_components/features.tsx | 64 ++++++++--------- apps/landing/src/app/(frontend)/page.tsx | 4 +- .../src/collections/FeaturesSection.ts | 72 +++++++++++++++++++ apps/landing/src/payload-types.ts | 40 +++++++++++ apps/landing/src/payload.config.ts | 3 +- .../get-globals-features-section.ts | 7 ++ 6 files changed, 152 insertions(+), 38 deletions(-) create mode 100644 apps/landing/src/collections/FeaturesSection.ts create mode 100644 apps/landing/src/repositories/get-globals-features-section.ts diff --git a/apps/landing/src/app/(frontend)/_components/features.tsx b/apps/landing/src/app/(frontend)/_components/features.tsx index 40ed3e1..20c82e8 100644 --- a/apps/landing/src/app/(frontend)/_components/features.tsx +++ b/apps/landing/src/app/(frontend)/_components/features.tsx @@ -6,40 +6,22 @@ import { LaptopIcon, UsersIcon, } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { FeaturesSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; import { useRef } from 'react'; -export function Features() { +export function Features(props: FeaturesSection) { + const { heading, subheading, features } = props; + + const featuresFormatted = features?.map((f) => ({ + icon: IconMapper(String(f.icon)), + title: f.title, + description: f.description, + })); + const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); - const features = [ - { - icon: , - title: 'Belajar Tanpa Koding', - description: - 'Pelajari konsep programming dengan cara yang mudah dipahami tanpa harus menulis kode yang rumit.', - }, - { - icon: , - title: 'Komunitas Supportif', - description: - 'Bergabunglah dengan komunitas programmer Indonesia yang siap membantu dan berbagi pengalaman.', - }, - { - icon: , - title: 'Tutorial Interaktif', - description: - 'Akses tutorial interaktif yang membuat konsep programming lebih mudah untuk dipahami.', - }, - { - icon: , - title: 'Proyek Praktis', - description: - 'Terapkan pengetahuan Anda dalam proyek nyata dengan panduan langkah demi langkah.', - }, - ]; - const containerVariants = { hidden: { opacity: 0 }, visible: { @@ -64,7 +46,6 @@ export function Features() { id="fitur" className="w-full py-20 md:py-32 relative overflow-hidden" > - {/* Background Elements */}
@@ -82,14 +63,10 @@ export function Features() { Fitur Unggulan

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

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

@@ -100,7 +77,7 @@ export function Features() { initial="hidden" animate={isInView ? 'visible' : 'hidden'} > - {features.map((feature, index) => ( + {featuresFormatted?.map((feature, index) => ( ); } + +function IconMapper(name: string) { + switch (name) { + case 'LaptopIcon': + return ; + case 'UsersIcon': + return ; + case 'BookOpenIcon': + return ; + case 'CodeIcon': + return ; + default: + return null; + } +} diff --git a/apps/landing/src/app/(frontend)/page.tsx b/apps/landing/src/app/(frontend)/page.tsx index ef7edd4..c0f9dfa 100644 --- a/apps/landing/src/app/(frontend)/page.tsx +++ b/apps/landing/src/app/(frontend)/page.tsx @@ -1,3 +1,4 @@ +import { getGlobalsFeaturesSection } from '../../repositories/get-globals-features-section'; import { getGlobalsHeroSection } from '../../repositories/get-globals-hero-section'; import { CallToAction } from './_components/call-to-action'; import { Community } from './_components/community'; @@ -10,13 +11,14 @@ import { Testimonials } from './_components/testimonials'; export default async function Page() { const heroData = await getGlobalsHeroSection(); + const featuresData = await getGlobalsFeaturesSection(); return (
- + diff --git a/apps/landing/src/collections/FeaturesSection.ts b/apps/landing/src/collections/FeaturesSection.ts new file mode 100644 index 0000000..8de4e31 --- /dev/null +++ b/apps/landing/src/collections/FeaturesSection.ts @@ -0,0 +1,72 @@ +import { GlobalConfig } from 'payload'; + +export const FeaturesSection: GlobalConfig = { + slug: 'features-section', + label: 'Features Section', + access: { + read: (): boolean => true, + }, + fields: [ + { + name: 'heading', + type: 'text', + defaultValue: 'Belajar programming dengan cara yang lebih baik', + }, + { + name: 'subheading', + type: 'text', + defaultValue: + 'IMPHNEN hadir dengan berbagai fitur untuk membantu kamu menjadi programmer handal tanpa harus pusing dengan coding.', + }, + { + name: 'features', + type: 'array', + defaultValue: [ + { + icon: 'LaptopIcon', + title: 'Belajar Tanpa Koding', + description: + 'Pelajari konsep programming dengan cara yang mudah dipahami tanpa harus menulis kode yang rumit.', + }, + { + icon: 'UsersIcon', + title: 'Komunitas Supportif', + description: + 'Bergabunglah dengan komunitas programmer Indonesia yang siap membantu dan berbagi pengalaman.', + }, + { + icon: 'BookOpenIcon', + title: 'Tutorial Interaktif', + description: + 'Akses tutorial interaktif yang membuat konsep programming lebih mudah untuk dipahami.', + }, + { + icon: 'CodeIcon', + title: 'Proyek Praktis', + description: + 'Terapkan pengetahuan Anda dalam proyek nyata dengan panduan langkah demi langkah.', + }, + ], + fields: [ + { + name: 'icon', + type: 'select', + options: [ + { label: 'LaptopIcon', value: 'LaptopIcon' }, + { label: 'UsersIcon', value: 'UsersIcon' }, + { label: 'BookOpenIcon', value: 'BookOpenIcon' }, + { label: 'CodeIcon', value: 'CodeIcon' }, + ], + }, + { + name: 'title', + type: 'text', + }, + { + name: 'description', + type: 'textarea', + }, + ], + }, + ], +}; diff --git a/apps/landing/src/payload-types.ts b/apps/landing/src/payload-types.ts index 865e21d..b1c50ce 100644 --- a/apps/landing/src/payload-types.ts +++ b/apps/landing/src/payload-types.ts @@ -86,9 +86,11 @@ export interface Config { }; globals: { 'hero-section': HeroSection; + 'features-section': FeaturesSection; }; globalsSelect: { 'hero-section': HeroSectionSelect | HeroSectionSelect; + 'features-section': FeaturesSectionSelect | FeaturesSectionSelect; }; locale: null; user: User & { @@ -301,6 +303,25 @@ export interface HeroSection { updatedAt?: string | null; createdAt?: string | null; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "features-section". + */ +export interface FeaturesSection { + id: number; + heading?: string | null; + subheading?: string | null; + features?: + | { + icon?: ('LaptopIcon' | 'UsersIcon' | 'BookOpenIcon' | 'CodeIcon') | null; + title?: string | null; + description?: string | null; + id?: string | null; + }[] + | null; + updatedAt?: string | null; + createdAt?: string | null; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "hero-section_select". @@ -329,6 +350,25 @@ export interface HeroSectionSelect { createdAt?: T; globalType?: T; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "features-section_select". + */ +export interface FeaturesSectionSelect { + heading?: T; + subheading?: T; + features?: + | T + | { + icon?: T; + title?: T; + description?: T; + id?: T; + }; + updatedAt?: T; + createdAt?: T; + globalType?: T; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "auth". diff --git a/apps/landing/src/payload.config.ts b/apps/landing/src/payload.config.ts index 48bc574..b63dcd5 100644 --- a/apps/landing/src/payload.config.ts +++ b/apps/landing/src/payload.config.ts @@ -5,6 +5,7 @@ import { buildConfig } from 'payload'; import sharp from 'sharp'; import { fileURLToPath } from 'url'; +import { FeaturesSection } from './collections/FeaturesSection'; import { HeroSection } from './collections/HeroSection'; import { Media } from './collections/Media'; import { Users } from './collections/Users'; @@ -26,7 +27,7 @@ export default buildConfig({ }, }, collections: [Users, Media], - globals: [HeroSection], + globals: [HeroSection, FeaturesSection], editor: lexicalEditor(), secret: process.env.CMS_SECRET || '', typescript: { diff --git a/apps/landing/src/repositories/get-globals-features-section.ts b/apps/landing/src/repositories/get-globals-features-section.ts new file mode 100644 index 0000000..d22574d --- /dev/null +++ b/apps/landing/src/repositories/get-globals-features-section.ts @@ -0,0 +1,7 @@ +import { payload } from '../lib/payload'; + +export async function getGlobalsFeaturesSection() { + return await payload.findGlobal({ + slug: 'features-section', + }); +} From 7fd5528c0ddc306649aa75e92e73985ba73b4a8b Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 04:29:28 +0700 Subject: [PATCH 09/31] feat: add revalidate constant to control page revalidation interval --- apps/landing/src/app/(frontend)/page.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/landing/src/app/(frontend)/page.tsx b/apps/landing/src/app/(frontend)/page.tsx index c0f9dfa..6d5f8a1 100644 --- a/apps/landing/src/app/(frontend)/page.tsx +++ b/apps/landing/src/app/(frontend)/page.tsx @@ -9,6 +9,8 @@ import { Hero } from './_components/hero'; import { LearningResources } from './_components/learning-resources'; import { Testimonials } from './_components/testimonials'; +export const revalidate = 60 * 5; // Seconds + export default async function Page() { const heroData = await getGlobalsHeroSection(); const featuresData = await getGlobalsFeaturesSection(); From d4a91abb6399c94de213ea53a70e845b07fdd744 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 04:29:46 +0700 Subject: [PATCH 10/31] refactor: optimize data fetching by using Promise.all --- apps/landing/src/app/(frontend)/page.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/landing/src/app/(frontend)/page.tsx b/apps/landing/src/app/(frontend)/page.tsx index 6d5f8a1..3d627f2 100644 --- a/apps/landing/src/app/(frontend)/page.tsx +++ b/apps/landing/src/app/(frontend)/page.tsx @@ -12,8 +12,10 @@ import { Testimonials } from './_components/testimonials'; export const revalidate = 60 * 5; // Seconds export default async function Page() { - const heroData = await getGlobalsHeroSection(); - const featuresData = await getGlobalsFeaturesSection(); + const [heroData, featuresData] = await Promise.all([ + getGlobalsHeroSection(), + getGlobalsFeaturesSection(), + ]); return (
From aad04b6f949d4f3af03f22b6b29337865f8a8a5a Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 04:33:06 +0700 Subject: [PATCH 11/31] fix: update revalidation interval to 10 seconds --- apps/landing/src/app/(frontend)/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/landing/src/app/(frontend)/page.tsx b/apps/landing/src/app/(frontend)/page.tsx index 3d627f2..079c88d 100644 --- a/apps/landing/src/app/(frontend)/page.tsx +++ b/apps/landing/src/app/(frontend)/page.tsx @@ -9,7 +9,7 @@ import { Hero } from './_components/hero'; import { LearningResources } from './_components/learning-resources'; import { Testimonials } from './_components/testimonials'; -export const revalidate = 60 * 5; // Seconds +export const revalidate = 10; // Seconds export default async function Page() { const [heroData, featuresData] = await Promise.all([ From 07a1eb8dbc48816b586a028e5c4d51bf0ceba494 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 05:35:24 +0700 Subject: [PATCH 12/31] feat: add CommunitiesSection configuration and integrate with Community component --- .../app/(frontend)/_components/community.tsx | 147 ++++++------------ apps/landing/src/app/(frontend)/page.tsx | 6 +- .../src/collections/CommunitiesSection.ts | 70 +++++++++ .../src/collections/FeaturesSection.ts | 3 - apps/landing/src/collections/HeroSection.ts | 4 - apps/landing/src/payload-types.ts | 50 ++++++ apps/landing/src/payload.config.ts | 3 +- .../get-globals-communitues-section.ts | 7 + 8 files changed, 178 insertions(+), 112 deletions(-) create mode 100644 apps/landing/src/collections/CommunitiesSection.ts create mode 100644 apps/landing/src/repositories/get-globals-communitues-section.ts diff --git a/apps/landing/src/app/(frontend)/_components/community.tsx b/apps/landing/src/app/(frontend)/_components/community.tsx index f1c415c..7370a13 100644 --- a/apps/landing/src/app/(frontend)/_components/community.tsx +++ b/apps/landing/src/app/(frontend)/_components/community.tsx @@ -6,48 +6,26 @@ import { InstagramIcon, MessageCircleIcon, } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { CommunitiesSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; import { useRef } from 'react'; -export function Community() { +export function Community(props: CommunitiesSection) { + const { items: communities, stats } = props; const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); - const communities = [ - { - icon: ( - - ), - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Facebook Group', - description: - 'Bergabunglah dengan grup Facebook kami untuk diskusi santai dan berbagi artikel menarik.', - buttonText: 'Gabung Sekarang', - buttonLink: '#', - }, - { - icon: ( - - ), - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Instagram', - description: - 'Ikuti kami di Instagram untuk tips programming, konten inspiratif, dan info event terbaru.', - buttonText: 'Follow Kami', - buttonLink: '#', - }, - { - icon: ( - - ), - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Discord Server', - description: - 'Diskusikan langsung dengan sesama programmer dan dapatkan bantuan langsung dari para ahli.', - buttonText: 'Join Server', - buttonLink: '#', - }, - ]; + const iconMap = { + FacebookIcon: ( + + ), + InstagramIcon: ( + + ), + MessageCircleIcon: ( + + ), + }; const containerVariants = { hidden: { opacity: 0 }, @@ -73,105 +51,70 @@ export function Community() { id="komunitas" className="w-full py-20 md:py-32 bg-muted relative overflow-hidden" > - {/* Background Elements */}
-
-
- -

- Komunitas{' '} - - Kami - -

-

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

-
-
- +

+ Komunitas{' '} + + Kami + +

+

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

+
+ - {communities.map((community, index) => ( + {communities?.map((c, i) => (
-
-
- {community.icon} +
+ {iconMap[c.iconName]}
-

{community.title}

-

- {community.description} -

+

{c.title}

+

{c.description}

-
))} - - {/* Community Stats */} -
-
- 10K+ + {stats?.map((s, i) => ( +
+
+ {s.value} +
+
{s.label}
-
Member Aktif
-
-
-
- 50+ -
-
Event Bulanan
-
-
-
- 100+ -
-
- Mentor Profesional -
-
-
-
- 5K+ -
-
- Diskusi Mingguan -
-
+ ))}
diff --git a/apps/landing/src/app/(frontend)/page.tsx b/apps/landing/src/app/(frontend)/page.tsx index 079c88d..9a5a0ad 100644 --- a/apps/landing/src/app/(frontend)/page.tsx +++ b/apps/landing/src/app/(frontend)/page.tsx @@ -1,3 +1,4 @@ +import { getGlobalsCommunitiesSection } from '../../repositories/get-globals-communitues-section'; import { getGlobalsFeaturesSection } from '../../repositories/get-globals-features-section'; import { getGlobalsHeroSection } from '../../repositories/get-globals-hero-section'; import { CallToAction } from './_components/call-to-action'; @@ -12,9 +13,10 @@ import { Testimonials } from './_components/testimonials'; export const revalidate = 10; // Seconds export default async function Page() { - const [heroData, featuresData] = await Promise.all([ + const [heroData, featuresData, communitiesData] = await Promise.all([ getGlobalsHeroSection(), getGlobalsFeaturesSection(), + getGlobalsCommunitiesSection(), ]); return ( @@ -23,7 +25,7 @@ export default async function Page() {
- + diff --git a/apps/landing/src/collections/CommunitiesSection.ts b/apps/landing/src/collections/CommunitiesSection.ts new file mode 100644 index 0000000..a60a903 --- /dev/null +++ b/apps/landing/src/collections/CommunitiesSection.ts @@ -0,0 +1,70 @@ +import { GlobalConfig } from 'payload'; + +export const CommunitiesSection: GlobalConfig = { + slug: 'communities-section', + label: 'Communities Section', + fields: [ + { + name: 'items', + type: 'array', + required: true, + defaultValue: [ + { + iconName: 'FacebookIcon', + title: 'Facebook Group', + description: + 'Bergabunglah dengan grup Facebook kami untuk diskusi santai dan berbagi artikel menarik.', + buttonText: 'Gabung Sekarang', + buttonLink: 'https://facebook.com/groups/1032515944638255', + }, + { + iconName: 'InstagramIcon', + title: 'Instagram', + description: + 'Ikuti kami di Instagram untuk tips programming, konten inspiratif, dan info event terbaru.', + buttonText: 'Follow Kami', + buttonLink: 'https://www.instagram.com/imphnen.dev', + }, + { + iconName: 'MessageCircleIcon', + title: 'Discord Server', + description: + 'Diskusikan langsung dengan sesama programmer dan dapatkan bantuan langsung dari para ahli.', + buttonText: 'Join Server', + buttonLink: 'https://discord.com/invite/imphnen', + }, + ], + fields: [ + { + name: 'iconName', + type: 'select', + options: [ + { label: 'Facebook', value: 'FacebookIcon' }, + { label: 'Instagram', value: 'InstagramIcon' }, + { label: 'Discord', value: 'MessageCircleIcon' }, + ], + required: true, + }, + { name: 'title', type: 'text', required: true }, + { name: 'description', type: 'textarea', required: true }, + { name: 'buttonText', type: 'text', required: true }, + { name: 'buttonLink', type: 'text', required: true }, + ], + }, + { + name: 'stats', + type: 'array', + required: true, + defaultValue: [ + { value: '100K+', label: 'Member Aktif' }, + { value: '50+', label: 'Event Bulanan' }, + { value: '100+', label: 'Mentor Profesional' }, + { value: '5K+', label: 'Diskusi Mingguan' }, + ], + fields: [ + { name: 'value', type: 'text', required: true }, + { name: 'label', type: 'text', required: true }, + ], + }, + ], +}; diff --git a/apps/landing/src/collections/FeaturesSection.ts b/apps/landing/src/collections/FeaturesSection.ts index 8de4e31..37a058a 100644 --- a/apps/landing/src/collections/FeaturesSection.ts +++ b/apps/landing/src/collections/FeaturesSection.ts @@ -3,9 +3,6 @@ import { GlobalConfig } from 'payload'; export const FeaturesSection: GlobalConfig = { slug: 'features-section', label: 'Features Section', - access: { - read: (): boolean => true, - }, fields: [ { name: 'heading', diff --git a/apps/landing/src/collections/HeroSection.ts b/apps/landing/src/collections/HeroSection.ts index 38e5a1e..33c6490 100644 --- a/apps/landing/src/collections/HeroSection.ts +++ b/apps/landing/src/collections/HeroSection.ts @@ -3,10 +3,6 @@ import type { GlobalConfig } from 'payload'; export const HeroSection: GlobalConfig = { slug: 'hero-section', label: 'Hero Section', - access: { - read: () => true, - update: () => true, - }, fields: [ { name: 'badgeText', diff --git a/apps/landing/src/payload-types.ts b/apps/landing/src/payload-types.ts index b1c50ce..4ef1e98 100644 --- a/apps/landing/src/payload-types.ts +++ b/apps/landing/src/payload-types.ts @@ -87,10 +87,12 @@ export interface Config { globals: { 'hero-section': HeroSection; 'features-section': FeaturesSection; + 'communities-section': CommunitiesSection; }; globalsSelect: { 'hero-section': HeroSectionSelect | HeroSectionSelect; 'features-section': FeaturesSectionSelect | FeaturesSectionSelect; + 'communities-section': CommunitiesSectionSelect | CommunitiesSectionSelect; }; locale: null; user: User & { @@ -322,6 +324,28 @@ export interface FeaturesSection { updatedAt?: string | null; createdAt?: string | null; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "communities-section". + */ +export interface CommunitiesSection { + id: number; + items: { + iconName: 'FacebookIcon' | 'InstagramIcon' | 'MessageCircleIcon'; + title: string; + description: string; + buttonText: string; + buttonLink: string; + id?: string | null; + }[]; + stats: { + value: string; + label: string; + id?: string | null; + }[]; + updatedAt?: string | null; + createdAt?: string | null; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "hero-section_select". @@ -369,6 +393,32 @@ export interface FeaturesSectionSelect { createdAt?: T; globalType?: T; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "communities-section_select". + */ +export interface CommunitiesSectionSelect { + items?: + | T + | { + iconName?: T; + title?: T; + description?: T; + buttonText?: T; + buttonLink?: T; + id?: T; + }; + stats?: + | T + | { + value?: T; + label?: T; + id?: T; + }; + updatedAt?: T; + createdAt?: T; + globalType?: T; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "auth". diff --git a/apps/landing/src/payload.config.ts b/apps/landing/src/payload.config.ts index b63dcd5..dc962f5 100644 --- a/apps/landing/src/payload.config.ts +++ b/apps/landing/src/payload.config.ts @@ -5,6 +5,7 @@ import { buildConfig } from 'payload'; import sharp from 'sharp'; import { fileURLToPath } from 'url'; +import { CommunitiesSection } from './collections/CommunitiesSection'; import { FeaturesSection } from './collections/FeaturesSection'; import { HeroSection } from './collections/HeroSection'; import { Media } from './collections/Media'; @@ -27,7 +28,7 @@ export default buildConfig({ }, }, collections: [Users, Media], - globals: [HeroSection, FeaturesSection], + globals: [HeroSection, FeaturesSection, CommunitiesSection], editor: lexicalEditor(), secret: process.env.CMS_SECRET || '', typescript: { diff --git a/apps/landing/src/repositories/get-globals-communitues-section.ts b/apps/landing/src/repositories/get-globals-communitues-section.ts new file mode 100644 index 0000000..7b11ce7 --- /dev/null +++ b/apps/landing/src/repositories/get-globals-communitues-section.ts @@ -0,0 +1,7 @@ +import { payload } from '../lib/payload'; + +export async function getGlobalsCommunitiesSection() { + return await payload.findGlobal({ + slug: 'communities-section', + }); +} From 55fd1fa44314fb3b57556e3eac2751fc4defcd6f Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 05:38:01 +0700 Subject: [PATCH 13/31] refactor: move global section functions to services directory --- apps/landing/src/app/(frontend)/page.tsx | 6 +++--- .../get-globals-communitues-section.ts | 0 .../get-globals-features-section.ts | 0 .../{repositories => services}/get-globals-hero-section.ts | 0 4 files changed, 3 insertions(+), 3 deletions(-) rename apps/landing/src/{repositories => services}/get-globals-communitues-section.ts (100%) rename apps/landing/src/{repositories => services}/get-globals-features-section.ts (100%) rename apps/landing/src/{repositories => services}/get-globals-hero-section.ts (100%) diff --git a/apps/landing/src/app/(frontend)/page.tsx b/apps/landing/src/app/(frontend)/page.tsx index 9a5a0ad..8818b6d 100644 --- a/apps/landing/src/app/(frontend)/page.tsx +++ b/apps/landing/src/app/(frontend)/page.tsx @@ -1,6 +1,6 @@ -import { getGlobalsCommunitiesSection } from '../../repositories/get-globals-communitues-section'; -import { getGlobalsFeaturesSection } from '../../repositories/get-globals-features-section'; -import { getGlobalsHeroSection } from '../../repositories/get-globals-hero-section'; +import { getGlobalsCommunitiesSection } from '../../services/get-globals-communitues-section'; +import { getGlobalsFeaturesSection } from '../../services/get-globals-features-section'; +import { getGlobalsHeroSection } from '../../services/get-globals-hero-section'; import { CallToAction } from './_components/call-to-action'; import { Community } from './_components/community'; import { Features } from './_components/features'; diff --git a/apps/landing/src/repositories/get-globals-communitues-section.ts b/apps/landing/src/services/get-globals-communitues-section.ts similarity index 100% rename from apps/landing/src/repositories/get-globals-communitues-section.ts rename to apps/landing/src/services/get-globals-communitues-section.ts diff --git a/apps/landing/src/repositories/get-globals-features-section.ts b/apps/landing/src/services/get-globals-features-section.ts similarity index 100% rename from apps/landing/src/repositories/get-globals-features-section.ts rename to apps/landing/src/services/get-globals-features-section.ts diff --git a/apps/landing/src/repositories/get-globals-hero-section.ts b/apps/landing/src/services/get-globals-hero-section.ts similarity index 100% rename from apps/landing/src/repositories/get-globals-hero-section.ts rename to apps/landing/src/services/get-globals-hero-section.ts From aba462e462bf10d7d8d9eb274ad01c4de6bef5ed Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 06:55:11 +0700 Subject: [PATCH 14/31] feat: add support for s3 bucket for media --- .env.example | 5 + .../src/app/(payload)/admin/importMap.js | 7 +- apps/landing/src/payload.config.ts | 26 +- package-lock.json | 1779 ++++++++++++++++- package.json | 2 + 5 files changed, 1796 insertions(+), 23 deletions(-) diff --git a/.env.example b/.env.example index b6eda3e..d93943c 100644 --- a/.env.example +++ b/.env.example @@ -2,3 +2,8 @@ VITE_API_URL= CMS_SECRET= CMS_POSTGRES_URL= + +CMS_STORAGE_ENDPOINT= +CMS_STORAGE_ACCESS_KEY_ID= +CMS_STORAGE_SECRET_ACCESS_KEY= +CMS_STORAGE_REGION=ap-southeast-1 diff --git a/apps/landing/src/app/(payload)/admin/importMap.js b/apps/landing/src/app/(payload)/admin/importMap.js index 73849ab..fad9d10 100644 --- a/apps/landing/src/app/(payload)/admin/importMap.js +++ b/apps/landing/src/app/(payload)/admin/importMap.js @@ -1 +1,6 @@ -export const importMap = {}; +import { S3ClientUploadHandler as S3ClientUploadHandler_f97aa6c64367fa259c5bc0567239ef24 } from '@payloadcms/storage-s3/client'; + +export const importMap = { + '@payloadcms/storage-s3/client#S3ClientUploadHandler': + S3ClientUploadHandler_f97aa6c64367fa259c5bc0567239ef24, +}; diff --git a/apps/landing/src/payload.config.ts b/apps/landing/src/payload.config.ts index dc962f5..b9c0b88 100644 --- a/apps/landing/src/payload.config.ts +++ b/apps/landing/src/payload.config.ts @@ -1,5 +1,8 @@ import { postgresAdapter } from '@payloadcms/db-postgres'; import { lexicalEditor } from '@payloadcms/richtext-lexical'; +import { s3Storage } from '@payloadcms/storage-s3'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; +import https from 'https'; import path from 'path'; import { buildConfig } from 'payload'; import sharp from 'sharp'; @@ -40,5 +43,26 @@ export default buildConfig({ }, }), sharp, - plugins: [], + plugins: [ + s3Storage({ + collections: { + media: { + disableLocalStorage: true, + }, + }, + bucket: 'landing-cms', + config: { + endpoint: process.env.CMS_STORAGE_ENDPOINT, + credentials: { + accessKeyId: process.env.CMS_STORAGE_ACCESS_KEY_ID!, + secretAccessKey: process.env.CMS_STORAGE_SECRET_ACCESS_KEY!, + }, + region: process.env.CMS_STORAGE_REGION!, + forcePathStyle: true, + requestHandler: new NodeHttpHandler({ + httpsAgent: new https.Agent({ rejectUnauthorized: false }), + }), + }, + }), + ], }); diff --git a/package-lock.json b/package-lock.json index 4a4f13e..086d91c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,9 @@ "@payloadcms/db-postgres": "^3.37.0", "@payloadcms/next": "^3.37.0", "@payloadcms/richtext-lexical": "^3.37.0", + "@payloadcms/storage-s3": "^3.37.0", "@radix-ui/react-slot": "^1.2.0", + "@smithy/node-http-handler": "^4.0.4", "@tanstack/react-query": "^5.74.4", "@tanstack/react-store": "^0.7.0", "@tanstack/react-table": "^8.21.2", @@ -202,6 +204,921 @@ "url": "https://github.com/sponsors/philsturgeon" } }, + "node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/crc32c": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.806.0.tgz", + "integrity": "sha512-kQaBBBxEBU/IJ2wKG+LL2BK+uvBwpdvOA9jy1WhW+U2/DIMwMrjVs7M/ZvTlmVOJwhZaONcJbgQqsN4Yirjj4g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.806.0", + "@aws-sdk/credential-provider-node": "3.806.0", + "@aws-sdk/middleware-bucket-endpoint": "3.806.0", + "@aws-sdk/middleware-expect-continue": "3.804.0", + "@aws-sdk/middleware-flexible-checksums": "3.806.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-location-constraint": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-sdk-s3": "3.806.0", + "@aws-sdk/middleware-ssec": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.806.0", + "@aws-sdk/region-config-resolver": "3.806.0", + "@aws-sdk/signature-v4-multi-region": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.806.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.806.0", + "@aws-sdk/xml-builder": "3.804.0", + "@smithy/config-resolver": "^4.1.1", + "@smithy/core": "^3.3.1", + "@smithy/eventstream-serde-browser": "^4.0.2", + "@smithy/eventstream-serde-config-resolver": "^4.1.0", + "@smithy/eventstream-serde-node": "^4.0.2", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-blob-browser": "^4.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/hash-stream-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/md5-js": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.3", + "@smithy/middleware-retry": "^4.1.4", + "@smithy/middleware-serde": "^4.0.3", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.11", + "@smithy/util-defaults-mode-node": "^4.0.11", + "@smithy/util-endpoints": "^3.0.3", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-stream": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "@smithy/util-waiter": "^4.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.806.0.tgz", + "integrity": "sha512-X0p/9/u9e6b22rlQqKucdtjdqmjSNB4c/8zDEoD5MvgYAAbMF9HNE0ST2xaA/WsJ7uE0jFfhPY2/00pslL1DqQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.806.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.806.0", + "@aws-sdk/region-config-resolver": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.806.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.806.0", + "@smithy/config-resolver": "^4.1.1", + "@smithy/core": "^3.3.1", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.3", + "@smithy/middleware-retry": "^4.1.4", + "@smithy/middleware-serde": "^4.0.3", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.11", + "@smithy/util-defaults-mode-node": "^4.0.11", + "@smithy/util-endpoints": "^3.0.3", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.806.0.tgz", + "integrity": "sha512-HJRINPncdjPK0iL3f6cBpqCMaxVwq2oDbRCzOx04tsLZ0tNgRACBfT3d/zNVRvMt6fnOVKXoN1LAtQaw50pjEA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/core": "^3.3.1", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/signature-v4": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "@smithy/util-middleware": "^4.0.2", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.806.0.tgz", + "integrity": "sha512-nbPwmZn0kt6Q1XI2FaJWP6AhF9tro4cO5HlmZQx8NU+B0H1y9WMo659Q5zLLY46BXgoQVIJEsPSZpcZk27O4aw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.806.0.tgz", + "integrity": "sha512-e/gB2iJQQ4ZpecOVpEFhEvjGwuTqNCzhVaVsFYVc49FPfR1seuN7qBGYe1MO7mouGDQFInzJgcNup0DnYUrLiw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/property-provider": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "@smithy/util-stream": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.806.0.tgz", + "integrity": "sha512-FogfbuYSEZgFxbNy0QcsBZHHe5mSv5HV3+JyB5n0kCyjOISCVCZD7gwxKdXjt8O1hXq5k5SOdQvydGULlB6rew==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/credential-provider-env": "3.806.0", + "@aws-sdk/credential-provider-http": "3.806.0", + "@aws-sdk/credential-provider-process": "3.806.0", + "@aws-sdk/credential-provider-sso": "3.806.0", + "@aws-sdk/credential-provider-web-identity": "3.806.0", + "@aws-sdk/nested-clients": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/credential-provider-imds": "^4.0.2", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.806.0.tgz", + "integrity": "sha512-fZX8xP2Kf0k70kDTog/87fh/M+CV0E2yujSw1cUBJhDSwDX3RlUahiJk7TpB/KGw6hEFESMd6+7kq3UzYuw3rg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.806.0", + "@aws-sdk/credential-provider-http": "3.806.0", + "@aws-sdk/credential-provider-ini": "3.806.0", + "@aws-sdk/credential-provider-process": "3.806.0", + "@aws-sdk/credential-provider-sso": "3.806.0", + "@aws-sdk/credential-provider-web-identity": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/credential-provider-imds": "^4.0.2", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.806.0.tgz", + "integrity": "sha512-8Y8GYEw/1e5IZRDQL02H6nsTDcRWid/afRMeWg+93oLQmbHcTtdm48tjis+7Xwqy+XazhMDmkbUht11QPTDJcQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.806.0.tgz", + "integrity": "sha512-hT9OBwCxWMPBydNhXm2gdNNzx5AJNheS9RglwDDvXWzQ9qDuRztjuMBilMSUMb0HF9K4IqQjYzGqczMuktz4qQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.806.0", + "@aws-sdk/core": "3.806.0", + "@aws-sdk/token-providers": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.806.0.tgz", + "integrity": "sha512-XxaSY9Zd3D4ClUGENYMvi52ac5FuJPPAsvRtEfyrSdEpf6QufbMpnexWBZMYRF31h/VutgqtJwosGgNytpxMEg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/nested-clients": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/lib-storage": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.806.0.tgz", + "integrity": "sha512-8FjceMZWyqdu3jEa5iryqMH+XdR2iM6kcD/pcsv1JNQUfKicMcW6Db8dXVc29MdMw3f/3kokXqNLGvSKAl81SQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.3", + "@smithy/smithy-client": "^4.2.3", + "buffer": "5.6.0", + "events": "3.3.0", + "stream-browserify": "3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-s3": "^3.806.0" + } + }, + "node_modules/@aws-sdk/lib-storage/node_modules/buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.806.0.tgz", + "integrity": "sha512-ACjuyKJw9OZl8z8HzPEaqn1o7ElVW94mowyoZvyUIDouwAPGqPGJbJ5V35qx1oDTFSAJX+N3O3AO6RyFc8nUhw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-arn-parser": "3.804.0", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.804.0.tgz", + "integrity": "sha512-YW1hySBolALMII6C8y7Z0CRG2UX1dGJjLEBNFeefhO/xP7ZuE1dvnmfJGaEuBMnvc3wkRS63VZ3aqX6sevM1CA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.806.0.tgz", + "integrity": "sha512-YEmuU2Nr/+blhi70gS38fnCe2IoL6OVVZXMp4MbzqZRUqeBbnxZhHQrd5YOiboJz7iq+g98xwFebHY167iejcg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/is-array-buffer": "^4.0.0", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-stream": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.804.0.tgz", + "integrity": "sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.804.0.tgz", + "integrity": "sha512-AMtKnllIWKgoo7hiJfphLYotEwTERfjVMO2+cKAncz9w1g+bnYhHxiVhJJoR94y047c06X4PU5MsTxvdQ73Znw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.804.0.tgz", + "integrity": "sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.804.0.tgz", + "integrity": "sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.806.0.tgz", + "integrity": "sha512-K1ssdovHH/kPN9EUS1LznwzoL+r89Cx8qAkp0K8MqdCQuBjZ0KRnjvo9nx69Vg5d/rg01VYTxomFUPXfcPtVXw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-arn-parser": "3.804.0", + "@smithy/core": "^3.3.1", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/signature-v4": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-stream": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.804.0.tgz", + "integrity": "sha512-Tk8jK0gOIUBvEPTz/wwSlP1V70zVQ3QYqsLPAjQRMO6zfOK9ax31dln3MgKvFDJxBydS2tS3wsn53v+brxDxTA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.806.0.tgz", + "integrity": "sha512-XoIromVffgXnc+/mjlR2EVzQVIei3bPVtafIZNsHuEmUvIWJXiWsa2eJpt3BUqa0HF9YPknK7ommNEhqRb8ucg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.806.0", + "@smithy/core": "^3.3.1", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.806.0.tgz", + "integrity": "sha512-ua2gzpfQ9MF8Rny+tOAivowOWWvqEusez2rdcQK8jdBjA1ANd/0xzToSZjZh0ziN8Kl8jOhNnHbQJ0v6dT6+hg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.806.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.806.0", + "@aws-sdk/region-config-resolver": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.806.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.806.0", + "@smithy/config-resolver": "^4.1.1", + "@smithy/core": "^3.3.1", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.3", + "@smithy/middleware-retry": "^4.1.4", + "@smithy/middleware-serde": "^4.0.3", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.11", + "@smithy/util-defaults-mode-node": "^4.0.11", + "@smithy/util-endpoints": "^3.0.3", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.806.0.tgz", + "integrity": "sha512-cuv5pX55JOlzKC/iLsB5nZ9eUyVgncim3VhhWHZA/KYPh7rLMjOEfZ+xyaE9uLJXGmzOJboFH7+YdTRdIcOgrg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/s3-request-presigner": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.806.0.tgz", + "integrity": "sha512-/LjdkoMAr6T0EIIWVt444CJlaOCpYwjKxhTgZODSeRUPhKQxidBehg0TmXgQUc3oGUhGFPGCuQtFgLT0xvOSnw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/signature-v4-multi-region": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-format-url": "3.804.0", + "@smithy/middleware-endpoint": "^4.1.3", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.3", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.806.0.tgz", + "integrity": "sha512-IrbEnpKvG8d9rUWAvsF28g8qBlQ02FaOxn4cGXtTs0b0BGMK1M+cGQrYjJ7Ak08kIXDxBqsdIlZGsKYr+Ds9+w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/signature-v4": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.806.0.tgz", + "integrity": "sha512-I6SxcsvV7yinJZmPgGullFHS0tsTKa7K3jEc5dmyCz8X+kZPfsWNffZmtmnCvWXPqMXWBvK6hVaxwomx79yeHA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/nested-clients": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz", + "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.804.0.tgz", + "integrity": "sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.806.0.tgz", + "integrity": "sha512-3YRRgZ+qFuWDdm5uAbxKsr65UAil4KkrFKua9f4m7Be3v24ETiFOOqhanFUIk9/WOtvzF7oFEiDjYKDGlwV2xg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "@smithy/util-endpoints": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-format-url": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.804.0.tgz", + "integrity": "sha512-1nOwSg7B0bj5LFGor0udF/HSdvDuSCxP+NC0IuSOJ5RgJ2AphFo03pLtK2UwArHY5WWZaejAEz5VBND6xxOEhA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/querystring-builder": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz", + "integrity": "sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.804.0.tgz", + "integrity": "sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.806.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.806.0.tgz", + "integrity": "sha512-Az2e4/gmPZ4BpB7QRj7U76I+fctXhNcxlcgsaHnMhvt+R30nvzM2EhsyBUvsWl8+r9bnLeYt9BpvEZeq2ANDzA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.806.0", + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.804.0.tgz", + "integrity": "sha512-JbGWp36IG9dgxtvC6+YXwt5WDZYfuamWFtVfK6fQpnmL96dx+GUPOXPKRWdw67WLKf2comHY28iX2d3z35I53Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -8781,6 +9698,22 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@payloadcms/plugin-cloud-storage": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@payloadcms/plugin-cloud-storage/-/plugin-cloud-storage-3.37.0.tgz", + "integrity": "sha512-iJVjAIQoFoVKWLdG1d2/HvXHcdlQ2alFR2siXUsyTRC0JDAbJkIgIQJvCu0goMS8fb65UnikpSeI9iYKRMoqpQ==", + "license": "MIT", + "dependencies": { + "@payloadcms/ui": "3.37.0", + "find-node-modules": "^2.1.3", + "range-parser": "^1.2.1" + }, + "peerDependencies": { + "payload": "3.37.0", + "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020", + "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020" + } + }, "node_modules/@payloadcms/richtext-lexical": { "version": "3.37.0", "resolved": "https://registry.npmjs.org/@payloadcms/richtext-lexical/-/richtext-lexical-3.37.0.tgz", @@ -8857,6 +9790,24 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@payloadcms/storage-s3": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@payloadcms/storage-s3/-/storage-s3-3.37.0.tgz", + "integrity": "sha512-9lygwru7gR0mlbtWK4oMnXhENPHbUAmppW3MKqyAIUN2mpAj/Du3uc3XqyfzBOQGhPofUQ+nN44GURujeRha5g==", + "license": "MIT", + "dependencies": { + "@aws-sdk/client-s3": "^3.614.0", + "@aws-sdk/lib-storage": "^3.614.0", + "@aws-sdk/s3-request-presigner": "^3.614.0", + "@payloadcms/plugin-cloud-storage": "3.37.0" + }, + "engines": { + "node": "^18.20.2 || >=20.9.0" + }, + "peerDependencies": { + "payload": "3.37.0" + } + }, "node_modules/@payloadcms/translations": { "version": "3.37.0", "resolved": "https://registry.npmjs.org/@payloadcms/translations/-/translations-3.37.0.tgz", @@ -9842,6 +10793,723 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@smithy/abort-controller": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.2.tgz", + "integrity": "sha512-Sl/78VDtgqKxN2+1qduaVE140XF+Xg+TafkncspwM4jFP/LHr76ZHmIY/y3V1M0mMLNk+Je6IGbzxy23RSToMw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.0.0.tgz", + "integrity": "sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.0.0.tgz", + "integrity": "sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-base64": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.2.tgz", + "integrity": "sha512-7r6mZGwb5LmLJ+zPtkLoznf2EtwEuSWdtid10pjGl/7HefCE4mueOkrfki8JCUm99W6UfP47/r3tbxx9CfBN5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.3.1.tgz", + "integrity": "sha512-W7AppgQD3fP1aBmo8wWo0id5zeR2/aYRy067vZsDVaa6v/mdhkg6DxXwEVuSPjZl+ZnvWAQbUMCd5ckw38+tHQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.0.3", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-stream": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.4.tgz", + "integrity": "sha512-jN6M6zaGVyB8FmNGG+xOPQB4N89M1x97MMdMnm1ESjljLS3Qju/IegQizKujaNcy2vXAvrz0en8bobe6E55FEA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.1", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.0.2.tgz", + "integrity": "sha512-p+f2kLSK7ZrXVfskU/f5dzksKTewZk8pJLPvER3aFHPt76C2MxD9vNatSfLzzQSQB4FNO96RK4PSXfhD1TTeMQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.2.0", + "@smithy/util-hex-encoding": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.0.2.tgz", + "integrity": "sha512-CepZCDs2xgVUtH7ZZ7oDdZFH8e6Y2zOv8iiX6RhndH69nlojCALSKK+OXwZUgOtUZEUaZ5e1hULVCHYbCn7pug==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.1.0.tgz", + "integrity": "sha512-1PI+WPZ5TWXrfj3CIoKyUycYynYJgZjuQo8U+sphneOtjsgrttYybdqESFReQrdWJ+LKt6NEdbYzmmfDBmjX2A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.0.2.tgz", + "integrity": "sha512-C5bJ/C6x9ENPMx2cFOirspnF9ZsBVnBMtP6BdPl/qYSuUawdGQ34Lq0dMcf42QTjUZgWGbUIZnz6+zLxJlb9aw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.0.2.tgz", + "integrity": "sha512-St8h9JqzvnbB52FtckiHPN4U/cnXcarMniXRXTKn0r4b4XesZOGiAyUdj1aXbqqn1icSqBlzzUsCl6nPB018ng==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.2.tgz", + "integrity": "sha512-+9Dz8sakS9pe7f2cBocpJXdeVjMopUDLgZs1yWeu7h++WqSbjUYv/JAJwKwXw1HV6gq1jyWjxuyn24E2GhoEcQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.0", + "@smithy/querystring-builder": "^4.0.2", + "@smithy/types": "^4.2.0", + "@smithy/util-base64": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.0.2.tgz", + "integrity": "sha512-3g188Z3DyhtzfBRxpZjU8R9PpOQuYsbNnyStc/ZVS+9nVX1f6XeNOa9IrAh35HwwIZg+XWk8bFVtNINVscBP+g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^5.0.0", + "@smithy/chunked-blob-reader-native": "^4.0.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.2.tgz", + "integrity": "sha512-VnTpYPnRUE7yVhWozFdlxcYknv9UN7CeOqSrMH+V877v4oqtVYuoqhIhtSjmGPvYrYnAkaM61sLMKHvxL138yg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.0.2.tgz", + "integrity": "sha512-POWDuTznzbIwlEXEvvXoPMS10y0WKXK790soe57tFRfvf4zBHyzE529HpZMqmDdwG9MfFflnyzndUQ8j78ZdSg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.2.tgz", + "integrity": "sha512-GatB4+2DTpgWPday+mnUkoumP54u/MDM/5u44KF9hIu8jF0uafZtQLcdfIKkIcUNuF/fBojpLEHZS/56JqPeXQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz", + "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.0.2.tgz", + "integrity": "sha512-Hc0R8EiuVunUewCse2syVgA2AfSRco3LyAv07B/zCOMa+jpXI9ll+Q21Nc6FAlYPcpNcAXqBzMhNs1CD/pP2bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.2.tgz", + "integrity": "sha512-hAfEXm1zU+ELvucxqQ7I8SszwQ4znWMbNv6PLMndN83JJN41EPuS93AIyh2N+gJ6x8QFhzSO6b7q2e6oClDI8A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.4.tgz", + "integrity": "sha512-qWyYvszzvDjT2AxRvEpNhnMTo8QX9MCAtuSA//kYbXewb+2mEGQCk1UL4dNIrKLcF5KT11dOJtxFYT0kzajq5g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.3.1", + "@smithy/middleware-serde": "^4.0.3", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-middleware": "^4.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.5.tgz", + "integrity": "sha512-eQguCTA2TRGyg4P7gDuhRjL2HtN5OKJXysq3Ufj0EppZe4XBmSyKIvVX9ws9KkD3lkJskw1tfE96wMFsiUShaw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.1", + "@smithy/protocol-http": "^5.1.0", + "@smithy/service-error-classification": "^4.0.3", + "@smithy/smithy-client": "^4.2.4", + "@smithy/types": "^4.2.0", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.3.tgz", + "integrity": "sha512-rfgDVrgLEVMmMn0BI8O+8OVr6vXzjV7HZj57l0QxslhzbvVfikZbVfBVthjLHqib4BW44QhcIgJpvebHlRaC9A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.2.tgz", + "integrity": "sha512-eSPVcuJJGVYrFYu2hEq8g8WWdJav3sdrI4o2c6z/rjnYDd3xH9j9E7deZQCzFn4QvGPouLngH3dQ+QVTxv5bOQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.1.tgz", + "integrity": "sha512-1slS5jf5icHETwl5hxEVBj+mh6B+LbVW4yRINsGtUKH+nxM5Pw2H59+qf+JqYFCHp9jssG4vX81f5WKnjMN3Vw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.4.tgz", + "integrity": "sha512-/mdqabuAT3o/ihBGjL94PUbTSPSRJ0eeVTdgADzow0wRJ0rN4A27EOrtlK56MYiO1fDvlO3jVTCxQtQmK9dZ1g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/querystring-builder": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.2.tgz", + "integrity": "sha512-wNRoQC1uISOuNc2s4hkOYwYllmiyrvVXWMtq+TysNRVQaHm4yoafYQyjN/goYZS+QbYlPIbb/QRjaUZMuzwQ7A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.0.tgz", + "integrity": "sha512-KxAOL1nUNw2JTYrtviRRjEnykIDhxc84qMBzxvu1MUfQfHTuBlCG7PA6EdVwqpJjH7glw7FqQoFxUJSyBQgu7g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.2.tgz", + "integrity": "sha512-NTOs0FwHw1vimmQM4ebh+wFQvOwkEf/kQL6bSM1Lock+Bv4I89B3hGYoUEPkmvYPkDKyp5UdXJYu+PoTQ3T31Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "@smithy/util-uri-escape": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.2.tgz", + "integrity": "sha512-v6w8wnmZcVXjfVLjxw8qF7OwESD9wnpjp0Dqry/Pod0/5vcEA3qxCr+BhbOHlxS8O+29eLpT3aagxXGwIoEk7Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.3.tgz", + "integrity": "sha512-FTbcajmltovWMjj3tksDQdD23b2w6gH+A0DYA1Yz3iSpjDj8fmkwy62UnXcWMy4d5YoMoSyLFHMfkEVEzbiN8Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.2.tgz", + "integrity": "sha512-J9/gTWBGVuFZ01oVA6vdb4DAjf1XbDhK6sLsu3OS9qmLrS6KB5ygpeHiM3miIbj1qgSJ96GYszXFWv6ErJ8QEw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.0.tgz", + "integrity": "sha512-4t5WX60sL3zGJF/CtZsUQTs3UrZEDO2P7pEaElrekbLqkWPYkgqNW1oeiNYC6xXifBnT9dVBOnNQRvOE9riU9w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.0.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-uri-escape": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.2.4.tgz", + "integrity": "sha512-oolSEpr/ABUtVmFMdNgi6sSXsK4csV9n4XM9yXgvDJGRa32tQDUdv9s+ztFZKccay1AiTWLSGsyDj2xy1gsv7Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.3.1", + "@smithy/middleware-endpoint": "^4.1.4", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-stream": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.2.0.tgz", + "integrity": "sha512-7eMk09zQKCO+E/ivsjQv+fDlOupcFUCSC/L2YUPgwhvowVGWbPQHjEFcmjt7QQ4ra5lyowS92SV53Zc6XD4+fg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.2.tgz", + "integrity": "sha512-Bm8n3j2ScqnT+kJaClSVCMeiSenK6jVAzZCNewsYWuZtnBehEz4r2qP0riZySZVfzB+03XZHJeqfmJDkeeSLiQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz", + "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz", + "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz", + "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz", + "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz", + "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.12.tgz", + "integrity": "sha512-0vPKiC+rXWMq397tsa/RFcO/kJ1UsibgNCXScMsRwzm9WMT4QjGf43zVPWZ5hPLu3z/1XddiZFIlKcu2j/yUuQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.0.2", + "@smithy/smithy-client": "^4.2.4", + "@smithy/types": "^4.2.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.12.tgz", + "integrity": "sha512-zCx9noceM3Pw2jvcJ3w3RbvKnPe3lCo6txH9ksZj6CeRZPkvRZPLXmKVSOvDr9QQP3VRq/WnBLd+LTZAL7+0IQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.1.2", + "@smithy/credential-provider-imds": "^4.0.4", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/property-provider": "^4.0.2", + "@smithy/smithy-client": "^4.2.4", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.4.tgz", + "integrity": "sha512-VfFATC1bmZLV2858B/O1NpMcL32wYo8DPPhHxYxDCodDl3f3mSZ5oJheW1IF91A0EeAADz2WsakM/hGGPGNKLg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz", + "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.2.tgz", + "integrity": "sha512-6GDamTGLuBQVAEuQ4yDQ+ti/YINf/MEmIegrEeg7DdB/sld8BX1lqt9RRuIcABOhAGTA50bRbPzErez7SlDtDQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.3.tgz", + "integrity": "sha512-DPuYjZQDXmKr/sNvy9Spu8R/ESa2e22wXZzSAY6NkjOLj6spbIje/Aq8rT97iUMdDj0qHMRIe+bTxvlU74d9Ng==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.0.3", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.0.tgz", + "integrity": "sha512-Vj1TtwWnuWqdgQI6YTUF5hQ/0jmFiOYsc51CSMgj7QfyO+RF4EnT2HNjoviNlOOmgzgvf3f5yno+EiC4vrnaWQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/types": "^4.2.0", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz", + "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz", + "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.0.3.tgz", + "integrity": "sha512-JtaY3FxmD+te+KSI2FJuEcfNC9T/DGGVf551babM7fAaXhjJUt7oSYurH1Devxd2+BOSUACCgt3buinx4UnmEA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@standard-schema/utils": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", @@ -15561,7 +17229,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -15796,6 +17463,12 @@ "dev": true, "license": "ISC" }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "license": "MIT" + }, "node_modules/boxen": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", @@ -18269,6 +19942,15 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/detect-libc": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", @@ -20298,7 +21980,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.8.x" @@ -20341,7 +22022,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dev": true, "license": "MIT", "dependencies": { "homedir-polyfill": "^1.0.1" @@ -20677,6 +22357,28 @@ ], "license": "BSD-3-Clause" }, + "node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", @@ -20997,6 +22699,16 @@ "node": ">=8" } }, + "node_modules/find-node-modules": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", + "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", + "license": "MIT", + "dependencies": { + "findup-sync": "^4.0.0", + "merge": "^2.1.1" + } + }, "node_modules/find-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-2.0.0.tgz", @@ -21074,6 +22786,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "license": "MIT", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -21777,7 +23504,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, "license": "MIT", "dependencies": { "global-prefix": "^1.0.1", @@ -21792,7 +23518,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dev": true, "license": "MIT", "dependencies": { "expand-tilde": "^2.0.2", @@ -21809,7 +23534,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -22206,7 +23930,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, "license": "MIT", "dependencies": { "parse-passwd": "^1.0.0" @@ -22733,14 +24456,12 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, "license": "ISC" }, "node_modules/inspect-with-kind": { @@ -23472,7 +25193,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -23502,7 +25222,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, "license": "ISC" }, "node_modules/isobject": { @@ -26699,6 +28418,12 @@ "map-or-similar": "^1.5.0" } }, + "node_modules/merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "license": "MIT" + }, "node_modules/merge-descriptors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", @@ -27257,7 +28982,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -27271,7 +28995,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -29460,7 +31183,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -31476,7 +33198,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -31829,7 +33550,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -32169,7 +33889,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "dev": true, "license": "MIT", "dependencies": { "expand-tilde": "^2.0.0", @@ -32431,7 +34150,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -34140,6 +35858,16 @@ } } }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, "node_modules/stream-shift": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", @@ -34223,7 +35951,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -34536,6 +36263,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strnum": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/strtok3": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-9.1.1.tgz", @@ -36644,7 +38383,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, "license": "MIT" }, "node_modules/utils-merge": { @@ -36661,7 +38399,6 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" diff --git a/package.json b/package.json index 83c78d8..3377eb6 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,9 @@ "@payloadcms/db-postgres": "^3.37.0", "@payloadcms/next": "^3.37.0", "@payloadcms/richtext-lexical": "^3.37.0", + "@payloadcms/storage-s3": "^3.37.0", "@radix-ui/react-slot": "^1.2.0", + "@smithy/node-http-handler": "^4.0.4", "@tanstack/react-query": "^5.74.4", "@tanstack/react-store": "^0.7.0", "@tanstack/react-table": "^8.21.2", From 88468081b684ca5a42659459142849c54f4c0f91 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 07:26:38 +0700 Subject: [PATCH 15/31] feat: update Community component to use Iconify for icons and adjust CommunitiesSection configuration --- .../app/(frontend)/_components/community.tsx | 43 ++++++++----------- .../src/collections/CommunitiesSection.ts | 13 ++---- package-lock.json | 22 ++++++++++ package.json | 1 + 4 files changed, 45 insertions(+), 34 deletions(-) diff --git a/apps/landing/src/app/(frontend)/_components/community.tsx b/apps/landing/src/app/(frontend)/_components/community.tsx index 7370a13..7a32022 100644 --- a/apps/landing/src/app/(frontend)/_components/community.tsx +++ b/apps/landing/src/app/(frontend)/_components/community.tsx @@ -1,32 +1,19 @@ 'use client'; -import { - Button, - FacebookIcon, - InstagramIcon, - MessageCircleIcon, -} from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { Icon } from '@iconify/react'; +import { buttonVariants } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { cn } from '@imphnen-frontend-service/utils'; import { CommunitiesSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; +import Link from 'next/link'; import { useRef } from 'react'; export function Community(props: CommunitiesSection) { - const { items: communities, stats } = props; + const { items, stats } = props; + const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); - const iconMap = { - FacebookIcon: ( - - ), - InstagramIcon: ( - - ), - MessageCircleIcon: ( - - ), - }; - const containerVariants = { hidden: { opacity: 0 }, visible: { @@ -77,7 +64,7 @@ export function Community(props: CommunitiesSection) { initial="hidden" animate={isInView ? 'visible' : 'hidden'} > - {communities?.map((c, i) => ( + {items?.map((c, i) => (
- {iconMap[c.iconName]} +

{c.title}

{c.description}

- +
diff --git a/apps/landing/src/collections/CommunitiesSection.ts b/apps/landing/src/collections/CommunitiesSection.ts index a60a903..56ae7db 100644 --- a/apps/landing/src/collections/CommunitiesSection.ts +++ b/apps/landing/src/collections/CommunitiesSection.ts @@ -10,7 +10,7 @@ export const CommunitiesSection: GlobalConfig = { required: true, defaultValue: [ { - iconName: 'FacebookIcon', + iconName: 'tabler:brand-facebook', title: 'Facebook Group', description: 'Bergabunglah dengan grup Facebook kami untuk diskusi santai dan berbagi artikel menarik.', @@ -18,7 +18,7 @@ export const CommunitiesSection: GlobalConfig = { buttonLink: 'https://facebook.com/groups/1032515944638255', }, { - iconName: 'InstagramIcon', + iconName: 'tabler:brand-instagram', title: 'Instagram', description: 'Ikuti kami di Instagram untuk tips programming, konten inspiratif, dan info event terbaru.', @@ -26,7 +26,7 @@ export const CommunitiesSection: GlobalConfig = { buttonLink: 'https://www.instagram.com/imphnen.dev', }, { - iconName: 'MessageCircleIcon', + iconName: 'tabler:brand-discord-filled', title: 'Discord Server', description: 'Diskusikan langsung dengan sesama programmer dan dapatkan bantuan langsung dari para ahli.', @@ -37,12 +37,7 @@ export const CommunitiesSection: GlobalConfig = { fields: [ { name: 'iconName', - type: 'select', - options: [ - { label: 'Facebook', value: 'FacebookIcon' }, - { label: 'Instagram', value: 'InstagramIcon' }, - { label: 'Discord', value: 'MessageCircleIcon' }, - ], + type: 'text', required: true, }, { name: 'title', type: 'text', required: true }, diff --git a/package-lock.json b/package-lock.json index 086d91c..c5d83b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@ant-design/icons": "^6.0.0", "@hookform/resolvers": "^5.0.1", + "@iconify/react": "^6.0.0", "@payloadcms/db-postgres": "^3.37.0", "@payloadcms/next": "^3.37.0", "@payloadcms/richtext-lexical": "^3.37.0", @@ -4628,6 +4629,27 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@iconify/react": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@iconify/react/-/react-6.0.0.tgz", + "integrity": "sha512-eqNscABVZS8eCpZLU/L5F5UokMS9mnCf56iS1nM9YYHdH8ZxqZL9zyjSwW60IOQFsXZkilbBiv+1paMXBhSQnw==", + "license": "MIT", + "dependencies": { + "@iconify/types": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/cyberalien" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.34.1", "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", diff --git a/package.json b/package.json index 3377eb6..6069068 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "dependencies": { "@ant-design/icons": "^6.0.0", "@hookform/resolvers": "^5.0.1", + "@iconify/react": "^6.0.0", "@payloadcms/db-postgres": "^3.37.0", "@payloadcms/next": "^3.37.0", "@payloadcms/richtext-lexical": "^3.37.0", From 378e2585200bb660a6abb18c72eced16186cbc58 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 07:30:06 +0700 Subject: [PATCH 16/31] feat: replace Link component with Button for improved button styling in Community component --- .../app/(frontend)/_components/community.tsx | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/apps/landing/src/app/(frontend)/_components/community.tsx b/apps/landing/src/app/(frontend)/_components/community.tsx index 7a32022..e114e2a 100644 --- a/apps/landing/src/app/(frontend)/_components/community.tsx +++ b/apps/landing/src/app/(frontend)/_components/community.tsx @@ -1,16 +1,13 @@ 'use client'; import { Icon } from '@iconify/react'; -import { buttonVariants } from '@imphnen-frontend-service/shadcn-ui/atoms'; -import { cn } from '@imphnen-frontend-service/utils'; +import { Button } from '@imphnen-frontend-service/shadcn-ui/atoms'; import { CommunitiesSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; -import Link from 'next/link'; import { useRef } from 'react'; export function Community(props: CommunitiesSection) { const { items, stats } = props; - const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); @@ -80,15 +77,14 @@ export function Community(props: CommunitiesSection) {

{c.title}

{c.description}

- - {c.buttonText} - + + +
From 13ab089afc0a844ef7869b87c3adaa9eee8a8b7e Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 07:45:29 +0700 Subject: [PATCH 17/31] feat: update FeaturesSection to use Iconify icons and adjust icon properties --- .../app/(frontend)/_components/features.tsx | 35 ++++--------------- .../src/collections/FeaturesSection.ts | 20 +++++------ apps/landing/src/payload-types.ts | 8 ++--- 3 files changed, 18 insertions(+), 45 deletions(-) diff --git a/apps/landing/src/app/(frontend)/_components/features.tsx b/apps/landing/src/app/(frontend)/_components/features.tsx index 20c82e8..35a970a 100644 --- a/apps/landing/src/app/(frontend)/_components/features.tsx +++ b/apps/landing/src/app/(frontend)/_components/features.tsx @@ -1,11 +1,6 @@ 'use client'; -import { - BookOpenIcon, - CodeIcon, - LaptopIcon, - UsersIcon, -} from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { Icon } from '@iconify/react'; import { FeaturesSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; import { useRef } from 'react'; @@ -13,12 +8,6 @@ import { useRef } from 'react'; export function Features(props: FeaturesSection) { const { heading, subheading, features } = props; - const featuresFormatted = features?.map((f) => ({ - icon: IconMapper(String(f.icon)), - title: f.title, - description: f.description, - })); - const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); @@ -77,7 +66,7 @@ export function Features(props: FeaturesSection) { initial="hidden" animate={isInView ? 'visible' : 'hidden'} > - {featuresFormatted?.map((feature, index) => ( + {features?.map((feature, index) => (
- {feature.icon} +

{feature.title}

{feature.description}

@@ -101,18 +93,3 @@ export function Features(props: FeaturesSection) { ); } - -function IconMapper(name: string) { - switch (name) { - case 'LaptopIcon': - return ; - case 'UsersIcon': - return ; - case 'BookOpenIcon': - return ; - case 'CodeIcon': - return ; - default: - return null; - } -} diff --git a/apps/landing/src/collections/FeaturesSection.ts b/apps/landing/src/collections/FeaturesSection.ts index 37a058a..4ae5dc2 100644 --- a/apps/landing/src/collections/FeaturesSection.ts +++ b/apps/landing/src/collections/FeaturesSection.ts @@ -20,25 +20,25 @@ export const FeaturesSection: GlobalConfig = { type: 'array', defaultValue: [ { - icon: 'LaptopIcon', + iconName: 'tabler:device-laptop', title: 'Belajar Tanpa Koding', description: 'Pelajari konsep programming dengan cara yang mudah dipahami tanpa harus menulis kode yang rumit.', }, { - icon: 'UsersIcon', + iconName: 'tabler:users', title: 'Komunitas Supportif', description: 'Bergabunglah dengan komunitas programmer Indonesia yang siap membantu dan berbagi pengalaman.', }, { - icon: 'BookOpenIcon', + iconName: 'tabler:book', title: 'Tutorial Interaktif', description: 'Akses tutorial interaktif yang membuat konsep programming lebih mudah untuk dipahami.', }, { - icon: 'CodeIcon', + iconName: 'tabler:code', title: 'Proyek Praktis', description: 'Terapkan pengetahuan Anda dalam proyek nyata dengan panduan langkah demi langkah.', @@ -46,18 +46,14 @@ export const FeaturesSection: GlobalConfig = { ], fields: [ { - name: 'icon', - type: 'select', - options: [ - { label: 'LaptopIcon', value: 'LaptopIcon' }, - { label: 'UsersIcon', value: 'UsersIcon' }, - { label: 'BookOpenIcon', value: 'BookOpenIcon' }, - { label: 'CodeIcon', value: 'CodeIcon' }, - ], + name: 'iconName', + type: 'text', + required: true, }, { name: 'title', type: 'text', + required: true, }, { name: 'description', diff --git a/apps/landing/src/payload-types.ts b/apps/landing/src/payload-types.ts index 4ef1e98..f9d36fa 100644 --- a/apps/landing/src/payload-types.ts +++ b/apps/landing/src/payload-types.ts @@ -315,8 +315,8 @@ export interface FeaturesSection { subheading?: string | null; features?: | { - icon?: ('LaptopIcon' | 'UsersIcon' | 'BookOpenIcon' | 'CodeIcon') | null; - title?: string | null; + iconName: string; + title: string; description?: string | null; id?: string | null; }[] @@ -331,7 +331,7 @@ export interface FeaturesSection { export interface CommunitiesSection { id: number; items: { - iconName: 'FacebookIcon' | 'InstagramIcon' | 'MessageCircleIcon'; + iconName: string; title: string; description: string; buttonText: string; @@ -384,7 +384,7 @@ export interface FeaturesSectionSelect { features?: | T | { - icon?: T; + iconName?: T; title?: T; description?: T; id?: T; From ff99564b05f351af0f2b796702f7e4cf16718404 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 08:54:45 +0700 Subject: [PATCH 18/31] feat: add heroImage field to HeroSection and implement image formatting utility --- apps/landing/public/hero.jpeg | Bin 89536 -> 0 bytes .../src/app/(frontend)/_components/hero.tsx | 33 +++++++++++++----- .../src/app/(payload)/admin/importMap.js | 7 ++-- apps/landing/src/collections/HeroSection.ts | 7 ++++ apps/landing/src/lib/format.ts | 10 ++++++ apps/landing/src/payload-types.ts | 2 ++ 6 files changed, 46 insertions(+), 13 deletions(-) delete mode 100644 apps/landing/public/hero.jpeg create mode 100644 apps/landing/src/lib/format.ts diff --git a/apps/landing/public/hero.jpeg b/apps/landing/public/hero.jpeg deleted file mode 100644 index 5e4ccd0b06628ae3e50d09ef583501541ed5f491..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89536 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 -
+
{badgeText}
@@ -124,13 +133,19 @@ export function Hero(props: HeroSection) {
- IMPHNEN Programming Community + {(() => { + const media = formatCMSImageDataToMedia(heroImage); + if (!media) return null; + return ( + {media.alt} + ); + })()}
diff --git a/apps/landing/src/app/(payload)/admin/importMap.js b/apps/landing/src/app/(payload)/admin/importMap.js index fad9d10..bd56203 100644 --- a/apps/landing/src/app/(payload)/admin/importMap.js +++ b/apps/landing/src/app/(payload)/admin/importMap.js @@ -1,6 +1,5 @@ -import { S3ClientUploadHandler as S3ClientUploadHandler_f97aa6c64367fa259c5bc0567239ef24 } from '@payloadcms/storage-s3/client'; +import { S3ClientUploadHandler as S3ClientUploadHandler_f97aa6c64367fa259c5bc0567239ef24 } from '@payloadcms/storage-s3/client' export const importMap = { - '@payloadcms/storage-s3/client#S3ClientUploadHandler': - S3ClientUploadHandler_f97aa6c64367fa259c5bc0567239ef24, -}; + "@payloadcms/storage-s3/client#S3ClientUploadHandler": S3ClientUploadHandler_f97aa6c64367fa259c5bc0567239ef24 +} diff --git a/apps/landing/src/collections/HeroSection.ts b/apps/landing/src/collections/HeroSection.ts index 33c6490..6ba0109 100644 --- a/apps/landing/src/collections/HeroSection.ts +++ b/apps/landing/src/collections/HeroSection.ts @@ -4,6 +4,13 @@ export const HeroSection: GlobalConfig = { slug: 'hero-section', label: 'Hero Section', fields: [ + { + name: 'heroImage', + label: 'Hero Image', + type: 'upload', + relationTo: 'media', + required: true, + }, { name: 'badgeText', label: 'Badge Text', diff --git a/apps/landing/src/lib/format.ts b/apps/landing/src/lib/format.ts new file mode 100644 index 0000000..5c0dd9e --- /dev/null +++ b/apps/landing/src/lib/format.ts @@ -0,0 +1,10 @@ +import { Media } from '../payload-types'; + +export function formatCMSImageDataToMedia( + image: number | Media | null | undefined +): Media | null { + if (image && typeof image === 'object' && 'url' in image) { + return image as Media; + } + return null; +} diff --git a/apps/landing/src/payload-types.ts b/apps/landing/src/payload-types.ts index f9d36fa..3e3c26a 100644 --- a/apps/landing/src/payload-types.ts +++ b/apps/landing/src/payload-types.ts @@ -285,6 +285,7 @@ export interface PayloadMigrationsSelect { */ export interface HeroSection { id: number; + heroImage: number | Media; badgeText: string; title: string; highlight: string; @@ -351,6 +352,7 @@ export interface CommunitiesSection { * via the `definition` "hero-section_select". */ export interface HeroSectionSelect { + heroImage?: T; badgeText?: T; title?: T; highlight?: T; From a02a259f4e9c5b95143286af7f39ced15aef528d Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 12:48:07 +0700 Subject: [PATCH 19/31] feat: add Learning Resources section with dynamic data fetching and UI integration --- .../_components/learning-resources.tsx | 103 ++++----------- apps/landing/src/app/(frontend)/page.tsx | 15 ++- .../collections/LearningResourcesSection.ts | 124 ++++++++++++++++++ apps/landing/src/payload-types.ts | 58 ++++++++ apps/landing/src/payload.config.ts | 8 +- .../get-globals-learning-resources-section.ts | 7 + 6 files changed, 231 insertions(+), 84 deletions(-) create mode 100644 apps/landing/src/collections/LearningResourcesSection.ts create mode 100644 apps/landing/src/services/get-globals-learning-resources-section.ts diff --git a/apps/landing/src/app/(frontend)/_components/learning-resources.tsx b/apps/landing/src/app/(frontend)/_components/learning-resources.tsx index cfddf3a..2af7ae8 100644 --- a/apps/landing/src/app/(frontend)/_components/learning-resources.tsx +++ b/apps/landing/src/app/(frontend)/_components/learning-resources.tsx @@ -1,65 +1,17 @@ 'use client'; -import { - BookOpenIcon, - Button, - CodeIcon, - Share2Icon, - VideoIcon, -} from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { Icon } from '@iconify/react'; +import { Button } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { LearningResourcesSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; - import { useRef } from 'react'; -export function LearningResources() { +export function LearningResources(props: LearningResourcesSection) { + const { resources, featured, title, description } = props; + const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); - const resources = [ - { - icon: , - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Video Tutorial', - description: - 'Belajar melalui tutorial video dari langkah awal hingga mahir.', - buttonText: 'Lihat Semua Video', - buttonLink: '#', - color: 'from-blue-500 to-blue-700', - }, - { - icon: ( - - ), - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Artikel & Tutorial', - description: - 'Pelajari konsep programming melalui artikel yang disusun secara terstruktur.', - buttonText: 'Baca Artikel', - buttonLink: '#', - color: 'from-blue-500 to-blue-700', - }, - { - icon: , - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Tantangan Koding', - description: - 'Uji kemampuan koding kamu dengan tantangan yang menyenangkan dan menantang.', - buttonText: 'Mulai Tantangan', - buttonLink: '#', - color: 'from-blue-500 to-blue-700', - }, - { - icon: , - iconBg: 'bg-blue-100 dark:bg-blue-900', - title: 'Sharing Session', - description: - 'Ikuti sesi berbagi pengalaman dari programmer berpengalaman dan belajar dari pengalaman mereka.', - buttonText: 'Jadwal Session', - buttonLink: '#', - color: 'from-blue-500 to-blue-700', - }, - ]; - const containerVariants = { hidden: { opacity: 0 }, visible: { @@ -100,14 +52,10 @@ export function LearningResources() { transition={{ duration: 0.5 }} >

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

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

@@ -118,7 +66,7 @@ export function LearningResources() { initial="hidden" animate={isInView ? 'visible' : 'hidden'} > - {resources.map((resource, index) => ( + {resources?.map((resource, index) => (
-
- {resource.icon} +
+

{resource.title}

{resource.description}

- + + +
@@ -158,16 +109,14 @@ export function LearningResources() { >
-
- Rekomendasi Terbaik +
+ {featured.label}

- Kursus Lengkap Web Development + {featured.title}

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

-
))} - - {/* Featured Resource */}
@@ -119,10 +110,16 @@ export function LearningResources(props: LearningResourcesSection) { {featured.description}

diff --git a/apps/landing/src/collections/LearningResourcesSection.ts b/apps/landing/src/collections/LearningResourcesSection.ts index 2689245..ddc8505 100644 --- a/apps/landing/src/collections/LearningResourcesSection.ts +++ b/apps/landing/src/collections/LearningResourcesSection.ts @@ -1,3 +1,4 @@ +// payload config import { GlobalConfig } from 'payload'; export const LearningResourcesSection: GlobalConfig = { @@ -22,31 +23,11 @@ export const LearningResourcesSection: GlobalConfig = { type: 'array', required: true, fields: [ - { - name: 'icon', - type: 'text', - required: true, - }, - { - name: 'title', - type: 'text', - required: true, - }, - { - name: 'description', - type: 'textarea', - required: true, - }, - { - name: 'buttonText', - type: 'text', - required: true, - }, - { - name: 'buttonLink', - type: 'text', - required: true, - }, + { name: 'icon', type: 'text', required: true }, + { name: 'title', type: 'text', required: true }, + { name: 'description', type: 'textarea', required: true }, + { name: 'buttonText', type: 'text', required: true }, + { name: 'buttonLink', type: 'text', required: true }, ], defaultValue: [ { @@ -112,12 +93,24 @@ export const LearningResourcesSection: GlobalConfig = { required: true, defaultValue: 'Mulai Kursus', }, + { + name: 'primaryButtonLink', + type: 'text', + required: true, + defaultValue: '#', + }, { name: 'secondaryButtonText', type: 'text', required: true, defaultValue: 'Lihat Silabus', }, + { + name: 'secondaryButtonLink', + type: 'text', + required: true, + defaultValue: '#', + }, ], }, ], diff --git a/apps/landing/src/payload-types.ts b/apps/landing/src/payload-types.ts index e172913..c96a803 100644 --- a/apps/landing/src/payload-types.ts +++ b/apps/landing/src/payload-types.ts @@ -370,7 +370,9 @@ export interface LearningResourcesSection { title: string; description: string; primaryButtonText: string; + primaryButtonLink: string; secondaryButtonText: string; + secondaryButtonLink: string; }; updatedAt?: string | null; createdAt?: string | null; @@ -473,7 +475,9 @@ export interface LearningResourcesSectionSelect { title?: T; description?: T; primaryButtonText?: T; + primaryButtonLink?: T; secondaryButtonText?: T; + secondaryButtonLink?: T; }; updatedAt?: T; createdAt?: T; From a800b1e2935310f6c9cb0fbc1ab2db14bc21ee9d Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 13:19:24 +0700 Subject: [PATCH 21/31] refactor: reorganize layout structure by moving Header and Footer components to RootLayout --- .../src/app/(frontend)/_components/header.tsx | 12 +++++++--- apps/landing/src/app/(frontend)/layout.tsx | 8 ++++++- apps/landing/src/app/(frontend)/page.tsx | 22 +++++++------------ 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/apps/landing/src/app/(frontend)/_components/header.tsx b/apps/landing/src/app/(frontend)/_components/header.tsx index ffd53b4..59b6a16 100644 --- a/apps/landing/src/app/(frontend)/_components/header.tsx +++ b/apps/landing/src/app/(frontend)/_components/header.tsx @@ -134,9 +134,15 @@ export function Header() { > Testimoni - + + +
)} diff --git a/apps/landing/src/app/(frontend)/layout.tsx b/apps/landing/src/app/(frontend)/layout.tsx index 4926ba2..8cbe8a6 100644 --- a/apps/landing/src/app/(frontend)/layout.tsx +++ b/apps/landing/src/app/(frontend)/layout.tsx @@ -1,6 +1,8 @@ import { type Metadata } from 'next'; import { Inter } from 'next/font/google'; import '../../styles/globals.css'; +import Footer from './_components/footer'; +import { Header } from './_components/header'; import { ThemeProvider } from './_components/theme-provider'; const inter = Inter({ subsets: ['latin'] }); @@ -24,7 +26,11 @@ export default function RootLayout({ enableSystem disableTransitionOnChange > - {children} +
+
+
{children}
+
+
diff --git a/apps/landing/src/app/(frontend)/page.tsx b/apps/landing/src/app/(frontend)/page.tsx index 4767410..6602ca7 100644 --- a/apps/landing/src/app/(frontend)/page.tsx +++ b/apps/landing/src/app/(frontend)/page.tsx @@ -5,8 +5,6 @@ import { getGlobalsLearningResourcesSection } from '../../services/get-globals-l import { CallToAction } from './_components/call-to-action'; import { Community } from './_components/community'; import { Features } from './_components/features'; -import Footer from './_components/footer'; -import { Header } from './_components/header'; import { Hero } from './_components/hero'; import { LearningResources } from './_components/learning-resources'; import { Testimonials } from './_components/testimonials'; @@ -23,17 +21,13 @@ export default async function Page() { ]); return ( -
-
-
- - - - - - -
-
-
+ <> + + + + + + + ); } From c4cf9e4e6c124c12ab2012fb8bde9af9527a8383 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 14:52:35 +0700 Subject: [PATCH 22/31] feat: implement Testimonials section with dynamic data fetching and UI integration --- .../(frontend)/_components/testimonials.tsx | 188 +++++++----------- apps/landing/src/app/(frontend)/page.tsx | 23 ++- .../src/collections/TestimonialsSection.ts | 93 +++++++++ apps/landing/src/payload-types.ts | 60 ++++++ apps/landing/src/payload.config.ts | 2 + .../get-globals-testimonials-section.ts | 7 + 6 files changed, 250 insertions(+), 123 deletions(-) create mode 100644 apps/landing/src/collections/TestimonialsSection.ts create mode 100644 apps/landing/src/services/get-globals-testimonials-section.ts diff --git a/apps/landing/src/app/(frontend)/_components/testimonials.tsx b/apps/landing/src/app/(frontend)/_components/testimonials.tsx index e53dcb4..a85a15f 100644 --- a/apps/landing/src/app/(frontend)/_components/testimonials.tsx +++ b/apps/landing/src/app/(frontend)/_components/testimonials.tsx @@ -1,87 +1,64 @@ 'use client'; import { QuoteIcon } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { formatCMSImageDataToMedia } from 'apps/landing/src/lib/format'; +import { TestimonialsSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; import Image from 'next/image'; import { useRef } from 'react'; -export function Testimonials() { - const ref = useRef(null); - const isInView = useInView(ref, { once: true, amount: 0.2 }); +export function Testimonials(props: TestimonialsSection) { + const { title, subtitle, items, stats, joinTitle, joinText } = props; - const testimonials = [ - { - quote: - 'Saya yang tadinya tidak mengerti apa-apa tentang programming, sekarang bisa membuat website sendiri dengan mudah. Terima kasih IMPHNEN!', - name: 'Budi Santoso', - role: 'Web Developer Pemula', - avatar: '/placeholder.svg?height=64&width=64', - }, - { - quote: - 'Komunitas yang sangat supportif! Setiap pertanyaan selalu dijawab dengan cepat dan jelas. Diskusi programnya mudah dipahami.', - name: 'Anita Ratna', - role: 'Mobile App Developer', - avatar: '/placeholder.svg?height=64&width=64', - }, - { - quote: - 'Server Discord IMPHNEN adalah tempat belajar terbaik untuk programmer pemula seperti saya. Materinya lengkap dan komunitasnya sangat membantu!', - name: 'Dedi Permana', - role: 'Data Scientist', - avatar: '/placeholder.svg?height=64&width=64', - }, - ]; + const ref = useRef(null); + const isInView = useInView(ref, { once: true, amount: 0.2 }); const containerVariants = { hidden: { opacity: 0 }, - visible: { - opacity: 1, - transition: { - staggerChildren: 0.1, - }, - }, + visible: { opacity: 1, transition: { staggerChildren: 0.1 } }, }; const itemVariants = { hidden: { y: 20, opacity: 0 }, - visible: { - y: 0, - opacity: 1, - transition: { duration: 0.5 }, - }, + visible: { y: 0, opacity: 1, transition: { duration: 0.5 } }, }; return (
- {/* Background Elements */}
-
-
- -

- Testimoni{' '} - - Member - -

-

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

-
-
+
+ +

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

+

+ {subtitle} +

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

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

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

{testimonial.name}

-

- {testimonial.role} -

+

{t.name}

+

{t.role}

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

- Bergabunglah dengan{' '} - - 10,000+ - {' '} - programmer Indonesia lainnya + {joinTitle.split(' ').map((word, i) => + i === 1 ? ( + + {word} + + ) : ( + {word} + ) + )}

-

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

+

{joinText}

-
-
- 98% + {stats?.map((s, idx) => ( +
+
+ {s.value} +
+
{s.label}
-
- Tingkat Kemalasan -
-
-
-
- 4.9/5 -
-
- Rating Drama -
-
-
-
- 85% -
-
- Mendapat Pekerjaan -
-
-
-
- 24/7 -
-
Yapping
-
+ ))}
diff --git a/apps/landing/src/app/(frontend)/page.tsx b/apps/landing/src/app/(frontend)/page.tsx index 6602ca7..a45ae0d 100644 --- a/apps/landing/src/app/(frontend)/page.tsx +++ b/apps/landing/src/app/(frontend)/page.tsx @@ -2,6 +2,7 @@ import { getGlobalsCommunitiesSection } from '../../services/get-globals-communi import { getGlobalsFeaturesSection } from '../../services/get-globals-features-section'; import { getGlobalsHeroSection } from '../../services/get-globals-hero-section'; import { getGlobalsLearningResourcesSection } from '../../services/get-globals-learning-resources-section'; +import { getGlobalsTestimonialsSection } from '../../services/get-globals-testimonials-section'; import { CallToAction } from './_components/call-to-action'; import { Community } from './_components/community'; import { Features } from './_components/features'; @@ -12,13 +13,19 @@ import { Testimonials } from './_components/testimonials'; export const revalidate = 10; // Seconds export default async function Page() { - const [heroData, featuresData, communitiesData, learningResourcesData] = - await Promise.all([ - getGlobalsHeroSection(), - getGlobalsFeaturesSection(), - getGlobalsCommunitiesSection(), - getGlobalsLearningResourcesSection(), - ]); + const [ + heroData, + featuresData, + communitiesData, + learningResourcesData, + testimonialsData, + ] = await Promise.all([ + getGlobalsHeroSection(), + getGlobalsFeaturesSection(), + getGlobalsCommunitiesSection(), + getGlobalsLearningResourcesSection(), + getGlobalsTestimonialsSection(), + ]); return ( <> @@ -26,7 +33,7 @@ export default async function Page() { - + ); diff --git a/apps/landing/src/collections/TestimonialsSection.ts b/apps/landing/src/collections/TestimonialsSection.ts new file mode 100644 index 0000000..92926b4 --- /dev/null +++ b/apps/landing/src/collections/TestimonialsSection.ts @@ -0,0 +1,93 @@ +import { GlobalConfig } from 'payload'; + +export const TestimonialsSection: GlobalConfig = { + slug: 'testimonials-section', + label: 'Testimonials Section', + fields: [ + { + name: 'title', + label: 'Section Title', + type: 'text', + defaultValue: 'Testimoni Member', + required: true, + }, + { + name: 'subtitle', + label: 'Section Subtitle', + type: 'textarea', + defaultValue: + 'Apa kata mereka yang telah bergabung dengan komunitas IMPHNEN?', + required: true, + }, + { + name: 'items', + label: 'Testimonials Items', + type: 'array', + fields: [ + { name: 'quote', type: 'textarea', label: 'Quote', required: true }, + { name: 'name', type: 'text', label: 'Name', required: true }, + { name: 'role', type: 'text', label: 'Role', required: true }, + { + name: 'avatar', + type: 'upload', + label: 'Avatar', + relationTo: 'media', + required: true, + }, + ], + defaultValue: [ + { + quote: + 'Saya yang tadinya tidak mengerti apa-apa tentang programming, sekarang bisa membuat website sendiri dengan mudah. Terima kasih IMPHNEN!', + name: 'Budi Santoso', + role: 'Web Developer Pemula', + avatar: { id: '', relationTo: 'media' }, + }, + { + quote: + 'Komunitas yang sangat supportif! Setiap pertanyaan selalu dijawab dengan cepat dan jelas. Diskusi programnya mudah dipahami.', + name: 'Anita Ratna', + role: 'Mobile App Developer', + avatar: { id: '', relationTo: 'media' }, + }, + { + quote: + 'Server Discord IMPHNEN adalah tempat belajar terbaik untuk programmer pemula seperti saya. Materinya lengkap dan komunitasnya sangat membantu!', + name: 'Dedi Permana', + role: 'Data Scientist', + avatar: { id: '', relationTo: 'media' }, + }, + ], + }, + { + name: 'stats', + label: 'Statistics', + type: 'array', + fields: [ + { name: 'value', type: 'text', label: 'Value', required: true }, + { name: 'label', type: 'text', label: 'Label', required: true }, + ], + defaultValue: [ + { value: '98%', label: 'Tingkat Kemalasan' }, + { value: '4.9/5', label: 'Rating Drama' }, + { value: '85%', label: 'Mendapat Pekerjaan' }, + { value: '24/7', label: 'Yapping' }, + ], + }, + { + name: 'joinTitle', + label: 'Join Section Title', + type: 'text', + defaultValue: 'Bergabunglah dengan 10,000+ programmer Indonesia lainnya', + required: true, + }, + { + name: 'joinText', + label: 'Join Section Text', + type: 'textarea', + defaultValue: + 'Komunitas kami terus berkembang dengan programmer dari berbagai latar belakang dan tingkat keahlian. Bersama-sama, kita belajar, berbagi, dan tumbuh sebagai profesional.', + required: true, + }, + ], +}; diff --git a/apps/landing/src/payload-types.ts b/apps/landing/src/payload-types.ts index c96a803..ca962da 100644 --- a/apps/landing/src/payload-types.ts +++ b/apps/landing/src/payload-types.ts @@ -89,12 +89,14 @@ export interface Config { 'features-section': FeaturesSection; 'communities-section': CommunitiesSection; 'learning-resources-section': LearningResourcesSection; + 'testimonials-section': TestimonialsSection; }; globalsSelect: { 'hero-section': HeroSectionSelect | HeroSectionSelect; 'features-section': FeaturesSectionSelect | FeaturesSectionSelect; 'communities-section': CommunitiesSectionSelect | CommunitiesSectionSelect; 'learning-resources-section': LearningResourcesSectionSelect | LearningResourcesSectionSelect; + 'testimonials-section': TestimonialsSectionSelect | TestimonialsSectionSelect; }; locale: null; user: User & { @@ -377,6 +379,35 @@ export interface LearningResourcesSection { updatedAt?: string | null; createdAt?: string | null; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "testimonials-section". + */ +export interface TestimonialsSection { + id: number; + title: string; + subtitle: string; + items?: + | { + quote: string; + name: string; + role: string; + avatar: number | Media; + id?: string | null; + }[] + | null; + stats?: + | { + value: string; + label: string; + id?: string | null; + }[] + | null; + joinTitle: string; + joinText: string; + updatedAt?: string | null; + createdAt?: string | null; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "hero-section_select". @@ -483,6 +514,35 @@ export interface LearningResourcesSectionSelect { createdAt?: T; globalType?: T; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "testimonials-section_select". + */ +export interface TestimonialsSectionSelect { + title?: T; + subtitle?: T; + items?: + | T + | { + quote?: T; + name?: T; + role?: T; + avatar?: T; + id?: T; + }; + stats?: + | T + | { + value?: T; + label?: T; + id?: T; + }; + joinTitle?: T; + joinText?: T; + updatedAt?: T; + createdAt?: T; + globalType?: T; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "auth". diff --git a/apps/landing/src/payload.config.ts b/apps/landing/src/payload.config.ts index c53a388..215958e 100644 --- a/apps/landing/src/payload.config.ts +++ b/apps/landing/src/payload.config.ts @@ -13,6 +13,7 @@ import { FeaturesSection } from './collections/FeaturesSection'; import { HeroSection } from './collections/HeroSection'; import { LearningResourcesSection } from './collections/LearningResourcesSection'; import { Media } from './collections/Media'; +import { TestimonialsSection } from './collections/TestimonialsSection'; import { Users } from './collections/Users'; const filename = fileURLToPath(import.meta.url); @@ -37,6 +38,7 @@ export default buildConfig({ FeaturesSection, CommunitiesSection, LearningResourcesSection, + TestimonialsSection, ], editor: lexicalEditor(), secret: process.env.CMS_SECRET || '', diff --git a/apps/landing/src/services/get-globals-testimonials-section.ts b/apps/landing/src/services/get-globals-testimonials-section.ts new file mode 100644 index 0000000..2f9480d --- /dev/null +++ b/apps/landing/src/services/get-globals-testimonials-section.ts @@ -0,0 +1,7 @@ +import { payload } from '../lib/payload'; + +export async function getGlobalsTestimonialsSection() { + return await payload.findGlobal({ + slug: 'testimonials-section', + }); +} From 760ab67ae0949ffc3f1ae1731c75c5d4573a25ff Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 14:56:07 +0700 Subject: [PATCH 23/31] feat: simplify joinTitle rendering in Testimonials section --- .../src/app/(frontend)/_components/testimonials.tsx | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/apps/landing/src/app/(frontend)/_components/testimonials.tsx b/apps/landing/src/app/(frontend)/_components/testimonials.tsx index a85a15f..36ee5b5 100644 --- a/apps/landing/src/app/(frontend)/_components/testimonials.tsx +++ b/apps/landing/src/app/(frontend)/_components/testimonials.tsx @@ -115,18 +115,7 @@ export function Testimonials(props: TestimonialsSection) {

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

{joinText}

From a8c958400dd558f2c9c90e0198e87dcc3a4464f5 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 15:19:54 +0700 Subject: [PATCH 24/31] feat: implement CallToAction section with dynamic data fetching and UI integration --- .../(frontend)/_components/call-to-action.tsx | 26 +++++++--- apps/landing/src/app/(frontend)/page.tsx | 5 +- .../src/collections/CallToActionSection.ts | 50 +++++++++++++++++++ .../src/collections/CommunitiesSection.ts | 2 +- apps/landing/src/collections/HeroSection.ts | 2 +- apps/landing/src/payload-types.ts | 34 +++++++++++++ apps/landing/src/payload.config.ts | 2 + .../get-globals-call-to-action-section.ts | 7 +++ 8 files changed, 118 insertions(+), 10 deletions(-) create mode 100644 apps/landing/src/collections/CallToActionSection.ts create mode 100644 apps/landing/src/services/get-globals-call-to-action-section.ts diff --git a/apps/landing/src/app/(frontend)/_components/call-to-action.tsx b/apps/landing/src/app/(frontend)/_components/call-to-action.tsx index 5c09717..b6e36fb 100644 --- a/apps/landing/src/app/(frontend)/_components/call-to-action.tsx +++ b/apps/landing/src/app/(frontend)/_components/call-to-action.tsx @@ -1,10 +1,21 @@ 'use client'; import { Button } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { CallToActionSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; import { useRef } from 'react'; -export function CallToAction() { +export function CallToAction(props: CallToActionSection) { + const { + title, + highlightedTitle, + subtitle, + primaryButtonLabel, + primaryButtonLink, + secondaryButtonLabel, + secondaryButtonLink, + } = props; + const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); @@ -28,29 +39,30 @@ export function CallToAction() {

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

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

diff --git a/apps/landing/src/app/(frontend)/page.tsx b/apps/landing/src/app/(frontend)/page.tsx index a45ae0d..e50e601 100644 --- a/apps/landing/src/app/(frontend)/page.tsx +++ b/apps/landing/src/app/(frontend)/page.tsx @@ -1,3 +1,4 @@ +import { getGlobalsCallToActionSection } from '../../services/get-globals-call-to-action-section'; import { getGlobalsCommunitiesSection } from '../../services/get-globals-communitues-section'; import { getGlobalsFeaturesSection } from '../../services/get-globals-features-section'; import { getGlobalsHeroSection } from '../../services/get-globals-hero-section'; @@ -19,12 +20,14 @@ export default async function Page() { communitiesData, learningResourcesData, testimonialsData, + callToActionData, ] = await Promise.all([ getGlobalsHeroSection(), getGlobalsFeaturesSection(), getGlobalsCommunitiesSection(), getGlobalsLearningResourcesSection(), getGlobalsTestimonialsSection(), + getGlobalsCallToActionSection(), ]); return ( @@ -34,7 +37,7 @@ export default async function Page() { - + ); } diff --git a/apps/landing/src/collections/CallToActionSection.ts b/apps/landing/src/collections/CallToActionSection.ts new file mode 100644 index 0000000..67a5691 --- /dev/null +++ b/apps/landing/src/collections/CallToActionSection.ts @@ -0,0 +1,50 @@ +import { GlobalConfig } from 'payload'; + +export const CallToActionSection: GlobalConfig = { + slug: 'call-to-action-section', + fields: [ + { + name: 'title', + type: 'text', + required: true, + defaultValue: 'Siap Menjadi', + }, + { + name: 'highlightedTitle', + type: 'text', + required: true, + defaultValue: 'Programmer Handal?', + }, + { + name: 'subtitle', + type: 'textarea', + required: true, + defaultValue: + 'Bergabunglah dengan komunitas IMPHNEN sekarang dan mulai perjalanan programming mu dengan cara yang menyenangkan!', + }, + { + name: 'primaryButtonLabel', + type: 'text', + required: true, + defaultValue: 'Gabung Discord', + }, + { + name: 'primaryButtonLink', + type: 'text', + required: true, + defaultValue: 'https://discord.gg/imphnen', + }, + { + name: 'secondaryButtonLabel', + type: 'text', + required: true, + defaultValue: 'Join Facebook Group', + }, + { + name: 'secondaryButtonLink', + type: 'text', + required: true, + defaultValue: 'https://facebook.com/groups/programmerhandal', + }, + ], +}; diff --git a/apps/landing/src/collections/CommunitiesSection.ts b/apps/landing/src/collections/CommunitiesSection.ts index 56ae7db..1c04430 100644 --- a/apps/landing/src/collections/CommunitiesSection.ts +++ b/apps/landing/src/collections/CommunitiesSection.ts @@ -15,7 +15,7 @@ export const CommunitiesSection: GlobalConfig = { description: 'Bergabunglah dengan grup Facebook kami untuk diskusi santai dan berbagi artikel menarik.', buttonText: 'Gabung Sekarang', - buttonLink: 'https://facebook.com/groups/1032515944638255', + buttonLink: 'https://facebook.com/groups/programmerhandal', }, { iconName: 'tabler:brand-instagram', diff --git a/apps/landing/src/collections/HeroSection.ts b/apps/landing/src/collections/HeroSection.ts index 6ba0109..da1df61 100644 --- a/apps/landing/src/collections/HeroSection.ts +++ b/apps/landing/src/collections/HeroSection.ts @@ -57,7 +57,7 @@ export const HeroSection: GlobalConfig = { label: 'Primary Button URL', type: 'text', required: true, - defaultValue: 'https://web.facebook.com/groups/1032515944638255', + defaultValue: 'https://facebook.com/groups/programmerhandal', }, { name: 'secondaryLabel', diff --git a/apps/landing/src/payload-types.ts b/apps/landing/src/payload-types.ts index ca962da..4e4d9f6 100644 --- a/apps/landing/src/payload-types.ts +++ b/apps/landing/src/payload-types.ts @@ -90,6 +90,7 @@ export interface Config { 'communities-section': CommunitiesSection; 'learning-resources-section': LearningResourcesSection; 'testimonials-section': TestimonialsSection; + 'call-to-action-section': CallToActionSection; }; globalsSelect: { 'hero-section': HeroSectionSelect | HeroSectionSelect; @@ -97,6 +98,7 @@ export interface Config { 'communities-section': CommunitiesSectionSelect | CommunitiesSectionSelect; 'learning-resources-section': LearningResourcesSectionSelect | LearningResourcesSectionSelect; 'testimonials-section': TestimonialsSectionSelect | TestimonialsSectionSelect; + 'call-to-action-section': CallToActionSectionSelect | CallToActionSectionSelect; }; locale: null; user: User & { @@ -408,6 +410,22 @@ export interface TestimonialsSection { updatedAt?: string | null; createdAt?: string | null; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "call-to-action-section". + */ +export interface CallToActionSection { + id: number; + title: string; + highlightedTitle: string; + subtitle: string; + primaryButtonLabel: string; + primaryButtonLink: string; + secondaryButtonLabel: string; + secondaryButtonLink: string; + updatedAt?: string | null; + createdAt?: string | null; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "hero-section_select". @@ -543,6 +561,22 @@ export interface TestimonialsSectionSelect { createdAt?: T; globalType?: T; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "call-to-action-section_select". + */ +export interface CallToActionSectionSelect { + title?: T; + highlightedTitle?: T; + subtitle?: T; + primaryButtonLabel?: T; + primaryButtonLink?: T; + secondaryButtonLabel?: T; + secondaryButtonLink?: T; + updatedAt?: T; + createdAt?: T; + globalType?: T; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "auth". diff --git a/apps/landing/src/payload.config.ts b/apps/landing/src/payload.config.ts index 215958e..3e26c96 100644 --- a/apps/landing/src/payload.config.ts +++ b/apps/landing/src/payload.config.ts @@ -8,6 +8,7 @@ import { buildConfig } from 'payload'; import sharp from 'sharp'; import { fileURLToPath } from 'url'; +import { CallToActionSection } from './collections/CallToActionSection'; import { CommunitiesSection } from './collections/CommunitiesSection'; import { FeaturesSection } from './collections/FeaturesSection'; import { HeroSection } from './collections/HeroSection'; @@ -39,6 +40,7 @@ export default buildConfig({ CommunitiesSection, LearningResourcesSection, TestimonialsSection, + CallToActionSection ], editor: lexicalEditor(), secret: process.env.CMS_SECRET || '', diff --git a/apps/landing/src/services/get-globals-call-to-action-section.ts b/apps/landing/src/services/get-globals-call-to-action-section.ts new file mode 100644 index 0000000..c742304 --- /dev/null +++ b/apps/landing/src/services/get-globals-call-to-action-section.ts @@ -0,0 +1,7 @@ +import { payload } from '../lib/payload'; + +export async function getGlobalsCallToActionSection() { + return await payload.findGlobal({ + slug: 'call-to-action-section', + }); +} From 7ac571c0192b5ffbfbeeb377786378fa4e536d6c Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 15:34:18 +0700 Subject: [PATCH 25/31] feat: update CallToActionSection label and wrap Discord button in link --- apps/landing/src/app/(frontend)/_components/header.tsx | 8 +++++--- apps/landing/src/collections/CallToActionSection.ts | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/landing/src/app/(frontend)/_components/header.tsx b/apps/landing/src/app/(frontend)/_components/header.tsx index 59b6a16..b9a404f 100644 --- a/apps/landing/src/app/(frontend)/_components/header.tsx +++ b/apps/landing/src/app/(frontend)/_components/header.tsx @@ -82,9 +82,11 @@ export function Header() {
- + + + {/* Mobile Menu Button */}

{c.title}

{c.description}

- - - +
diff --git a/apps/landing/src/app/(frontend)/_components/header.tsx b/apps/landing/src/app/(frontend)/_components/header.tsx index b9a404f..a1285d9 100644 --- a/apps/landing/src/app/(frontend)/_components/header.tsx +++ b/apps/landing/src/app/(frontend)/_components/header.tsx @@ -82,11 +82,14 @@ export function Header() {
- - - + {/* Mobile Menu Button */} - - - - + +
diff --git a/apps/landing/src/app/(frontend)/_components/learning-resources.tsx b/apps/landing/src/app/(frontend)/_components/learning-resources.tsx index b64e945..79db31b 100644 --- a/apps/landing/src/app/(frontend)/_components/learning-resources.tsx +++ b/apps/landing/src/app/(frontend)/_components/learning-resources.tsx @@ -78,15 +78,15 @@ export function LearningResources(props: LearningResourcesSection) {

{r.title}

{r.description}

- - - + +
@@ -110,16 +110,22 @@ export function LearningResources(props: LearningResourcesSection) { {featured.description}

- - - - - - + +
From 4b2733511ceaba455259e8bd817953ca55e922e0 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 15:50:42 +0700 Subject: [PATCH 27/31] feat: wrap logo image in a link to navigate to the homepage --- .../src/app/(frontend)/_components/header.tsx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/apps/landing/src/app/(frontend)/_components/header.tsx b/apps/landing/src/app/(frontend)/_components/header.tsx index a1285d9..414f562 100644 --- a/apps/landing/src/app/(frontend)/_components/header.tsx +++ b/apps/landing/src/app/(frontend)/_components/header.tsx @@ -35,13 +35,15 @@ export function Header() {
- IMPHNEN Logo + + IMPHNEN +
From 121faf89c3a1547140add23a90eb1c35a25a4ea5 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 16:26:32 +0700 Subject: [PATCH 28/31] fix: supress scss deps warning --- apps/landing/next.config.js | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/apps/landing/next.config.js b/apps/landing/next.config.js index 7f7d4ff..71243d4 100644 --- a/apps/landing/next.config.js +++ b/apps/landing/next.config.js @@ -1,20 +1,18 @@ -//@ts-check - -// eslint-disable-next-line @typescript-eslint/no-var-requires const { composePlugins, withNx } = require('@nx/next'); const { withPayload } = require('@payloadcms/next/withPayload'); -/** - * @type {import('@nx/next/plugins/with-nx').WithNxOptions} - **/ +/** @type {import('@nx/next/plugins/with-nx').WithNxOptions} */ const nextConfig = { - nx: { - // Set this to true if you would like to to use SVGR - // See: https://github.com/gregberge/svgr - svgr: false, + nx: { svgr: false }, + sassOptions: { + quietDeps: true, + logger: { + warn: () => {}, + }, + }, + webpack(config) { + return config; }, }; -const plugins = [withNx, withPayload]; - -module.exports = composePlugins(...plugins)(nextConfig); +module.exports = composePlugins(withNx, withPayload)(nextConfig); From b9b71c4c256092b8654cd89acf518ffcbe1eaf9c Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 16:44:12 +0700 Subject: [PATCH 29/31] fix: add placeholder to .env.example --- .env.example | 15 ++++++++++----- apps/landing/next.config.js | 3 --- apps/landing/src/payload.config.ts | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index d93943c..8736213 100644 --- a/.env.example +++ b/.env.example @@ -1,9 +1,14 @@ +# API Endpoint VITE_API_URL= -CMS_SECRET= -CMS_POSTGRES_URL= +# Payload CMS Secret Key (minimum 32 characters) +CMS_SECRET=your-very-long-secret-key -CMS_STORAGE_ENDPOINT= -CMS_STORAGE_ACCESS_KEY_ID= -CMS_STORAGE_SECRET_ACCESS_KEY= +# PostgreSQL Connection String +CMS_POSTGRES_URL=postgres://user:password@host:port/database + +# S3 Storage Configuration +CMS_STORAGE_ENDPOINT=https://your-s3-endpoint.com +CMS_STORAGE_ACCESS_KEY_ID=your-access-key-id +CMS_STORAGE_SECRET_ACCESS_KEY=your-secret-access-key CMS_STORAGE_REGION=ap-southeast-1 diff --git a/apps/landing/next.config.js b/apps/landing/next.config.js index 71243d4..e6eccb9 100644 --- a/apps/landing/next.config.js +++ b/apps/landing/next.config.js @@ -10,9 +10,6 @@ const nextConfig = { warn: () => {}, }, }, - webpack(config) { - return config; - }, }; module.exports = composePlugins(withNx, withPayload)(nextConfig); diff --git a/apps/landing/src/payload.config.ts b/apps/landing/src/payload.config.ts index 3e26c96..7ccc7e1 100644 --- a/apps/landing/src/payload.config.ts +++ b/apps/landing/src/payload.config.ts @@ -40,7 +40,7 @@ export default buildConfig({ CommunitiesSection, LearningResourcesSection, TestimonialsSection, - CallToActionSection + CallToActionSection, ], editor: lexicalEditor(), secret: process.env.CMS_SECRET || '', From 4316dcf8b3025f9492bebd8ce4e206a351e4b6a0 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 17:04:33 +0700 Subject: [PATCH 30/31] chore: add environment placeholder variables for CMS configuration in test build workflow --- .github/workflows/test-build.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index 84ebe3e..7926013 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -8,6 +8,12 @@ on: env: NODE_VERSION: 22.14.0 + CMS_SECRET: fake-secret + CMS_POSTGRES_URL: postgres://user:password@localhost:5432/fake-db + CMS_STORAGE_ENDPOINT: https://fake-s3-endpoint.com + CMS_STORAGE_ACCESS_KEY_ID: fake-access-key + CMS_STORAGE_SECRET_ACCESS_KEY: fake-secret-key + CMS_STORAGE_REGION: ap-southeast-1 jobs: build: From 919fac811daa919ae3bc3b4f12312cbde565e0df Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 17:07:51 +0700 Subject: [PATCH 31/31] fix: remove unused environment variables from test build workflow --- .github/workflows/test-build.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index 7926013..a4a8c86 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -7,13 +7,7 @@ on: branches: ['develop'] env: - NODE_VERSION: 22.14.0 CMS_SECRET: fake-secret - CMS_POSTGRES_URL: postgres://user:password@localhost:5432/fake-db - CMS_STORAGE_ENDPOINT: https://fake-s3-endpoint.com - CMS_STORAGE_ACCESS_KEY_ID: fake-access-key - CMS_STORAGE_SECRET_ACCESS_KEY: fake-secret-key - CMS_STORAGE_REGION: ap-southeast-1 jobs: build: