diff --git a/.github/workflows/external-pr-comment.yml b/.github/workflows/external-pr-comment.yml new file mode 100644 index 00000000000..5e3c36dd358 --- /dev/null +++ b/.github/workflows/external-pr-comment.yml @@ -0,0 +1,31 @@ +name: Comment on external PRs + +on: + pull_request_target: + types: [opened] + +permissions: + pull-requests: write + +jobs: + comment-on-external-pr: + runs-on: ubuntu-latest + if: github.event.pull_request.head.repo.full_name != github.repository + steps: + - name: Comment on PR + uses: actions/github-script@v7 + with: + script: | + const commentBody = ` + Thanks for contributing to Supabase! ❤️ Our team will review your PR. + + A few tips for a smoother review process: + - If you have a local version of the repo, run \`pnpm run format\` to make sure formatting checks pass. + - Once we've reviewed your PR, please don't trivially merge master (don't click \`Update branch\` if there are no merge conflicts to be fixed). This invalidates any pre-merge checks we've run. + `; + github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + body: commentBody + }); diff --git a/.prettierignore b/.prettierignore index 37dd5d06e3c..f399c6bc555 100644 --- a/.prettierignore +++ b/.prettierignore @@ -16,4 +16,6 @@ apps/docs/pages/guides/integrations/*.mdx apps/studio/public apps/**/.turbo apps/docs/CONTRIBUTING.md -apps/design-system/__registry__ \ No newline at end of file +apps/design-system/__registry__ +packages/icons/__registry__ +packages/icons/src/icons/*.ts \ No newline at end of file diff --git a/apps/design-system/package.json b/apps/design-system/package.json index e947582604c..8a5e56ce5a2 100644 --- a/apps/design-system/package.json +++ b/apps/design-system/package.json @@ -23,7 +23,7 @@ "lodash.template": "4.5.0", "lucide-react": "*", "markdown-wasm": "^1.2.0", - "next": "^14.2.10", + "next": "catalog:", "next-contentlayer2": "0.4.6", "next-themes": "^0.3.0", "react": "^18.2.0", @@ -49,7 +49,6 @@ "devDependencies": { "@shikijs/compat": "^1.1.7", "@types/lodash.template": "4.5.0", - "@types/node": "^20", "@types/react": "^18.2.65", "@types/react-dom": "^18.2.22", "autoprefixer": "^10.0.1", diff --git a/apps/docs/app/guides/(with-sidebar)/layout.tsx b/apps/docs/app/guides/(with-sidebar)/layout.tsx index 532645a070d..2824184e834 100644 --- a/apps/docs/app/guides/(with-sidebar)/layout.tsx +++ b/apps/docs/app/guides/(with-sidebar)/layout.tsx @@ -9,7 +9,7 @@ import { getAiPrompts } from './getting-started/ai-prompts/[slug]/AiPrompts.util // Revalidate occasionally to pick up changes to partners // 60 seconds/minute * 60 minutes/hour * 24 hours/day -export const revalidate = 86_400 +// export const revalidate = 86_400 const GuidesLayout = async ({ children }: PropsWithChildren) => { const [partnerNavItems, promptNavItems] = await Promise.all([getPartners(), getPrompts()]) diff --git a/apps/docs/app/guides/troubleshooting/[slug]/page.tsx b/apps/docs/app/guides/troubleshooting/[slug]/page.tsx index 9e2a1471a8d..9fcd77530d1 100644 --- a/apps/docs/app/guides/troubleshooting/[slug]/page.tsx +++ b/apps/docs/app/guides/troubleshooting/[slug]/page.tsx @@ -5,7 +5,7 @@ import { getAllTroubleshootingEntries, getArticleSlug } from '~/features/docs/Tr import { PROD_URL } from '~/lib/constants' // 60 seconds/minute * 60 minutes/hour * 24 hours/day -export const revalidate = 86_400 +// export const revalidate = 86_400 export const dynamicParams = false export default async function TroubleshootingEntryPage({ diff --git a/apps/docs/app/guides/troubleshooting/page.tsx b/apps/docs/app/guides/troubleshooting/page.tsx index ac0be072bfe..b9d65fed5ad 100644 --- a/apps/docs/app/guides/troubleshooting/page.tsx +++ b/apps/docs/app/guides/troubleshooting/page.tsx @@ -17,7 +17,7 @@ import { SidebarSkeleton } from '~/layouts/MainSkeleton' import { PROD_URL } from '~/lib/constants' // 60 seconds/minute * 60 minutes/hour * 24 hours/day -export const revalidate = 86_400 +// export const revalidate = 86_400 export default async function GlobalTroubleshootingPage() { const troubleshootingEntries = await getAllTroubleshootingEntries() diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts index d882244fc55..26b092a7509 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts @@ -771,6 +771,10 @@ const guiQuickstarts: NavMenuSection = { name: 'Metabase', url: '/guides/database/metabase', }, + { + name: 'Beekeeper Studio', + url: '/guides/database/beekeeper-studio', + }, ], } @@ -1020,6 +1024,10 @@ export const database: NavMenuConstant = { name: 'pg_stat_statements: SQL Planning and Execution Statistics', url: '/guides/database/extensions/pg_stat_statements', }, + { + name: 'pg_repack: Storage Optimization', + url: '/guides/database/extensions/pg_repack', + }, { name: 'PostGIS: Geo queries', url: '/guides/database/extensions/postgis', diff --git a/apps/docs/content/guides/auth/auth-hooks.mdx b/apps/docs/content/guides/auth/auth-hooks.mdx index 94118f245a5..960e19d5d37 100644 --- a/apps/docs/content/guides/auth/auth-hooks.mdx +++ b/apps/docs/content/guides/auth/auth-hooks.mdx @@ -79,11 +79,11 @@ revoke execute from authenticated, anon, public; ``` - +You will need to alter your row-level security (RLS) policies to allow the `supabase_auth_admin` role to access tables that you have RLS policies on. You can read more about RLS policies [here](/docs/guides/database/postgres/row-level-security). -We do not recommend creating postgres functions with the `security definer` tag. The `security definer` tag specifies that the function is to be executed with the privileges of the user that owns it. Read more about the `security definer` tag [in our database guide](/docs/guides/database/functions#security-definer-vs-invoker). +Alternatively, you can create your postgres function via the dashboard with the `security definer` tag. The `security definer` tag specifies that the function is to be executed with the privileges of the user that owns it. - +Currently, functions created via the dashboard take on the `postgres` role. Read more about the `security definer` tag [in our database guide](/docs/guides/database/functions#security-definer-vs-invoker) diff --git a/apps/docs/content/guides/auth/native-mobile-deep-linking.mdx b/apps/docs/content/guides/auth/native-mobile-deep-linking.mdx index 603bed79bf3..ba96b451495 100644 --- a/apps/docs/content/guides/auth/native-mobile-deep-linking.mdx +++ b/apps/docs/content/guides/auth/native-mobile-deep-linking.mdx @@ -9,7 +9,7 @@ Many Auth methods involve a redirect to your app. For example: - Signup confirmation emails, Magic Link signins, and password reset emails contain a link that redirects to your app. - In OAuth signins, an automatic redirect occurs to your app. -With Deep Linking, you can configure this redirect to open a specific page. This is necessary if, for example, you need to display a form for password reset, or to manually exchange a token hash. +With Deep Linking, you can configure this redirect to open a specific page. This is necessary if, for example, you need to display a form for [password reset](/docs/guides/auth/passwords#resetting-a-users-password-forgot-password), or to manually exchange a token hash. ## Setting up deep linking diff --git a/apps/docs/content/guides/database/beekeeper-studio.mdx b/apps/docs/content/guides/database/beekeeper-studio.mdx new file mode 100644 index 00000000000..59145196cb7 --- /dev/null +++ b/apps/docs/content/guides/database/beekeeper-studio.mdx @@ -0,0 +1,81 @@ +--- +id: 'Beekeeper Studio' +title: 'Connecting with Beekeeper Studio' +breadcrumb: 'GUI Quickstarts' +hideToc: true +--- + +[`Beekeeper Studio Community`](https://www.beekeeperstudio.io/get-community) is a free GUI tool for interacting with databases. + + + + + + + + In Beekeeper, create a new Postgres connection. + + + + + ![Postgres connection](/docs/img/guides/database/connecting-to-postgres/beekeeper-studio/new-connection.png) + + + + + + + + + + Get your connection credentials from the [`Database Settings`](https://supabase.com/dashboard/project/_/settings/database). You will need: + - host + - username + - password + - port + + + + + + Add your credentials to Beekeeper's connection form + + ![Credentials](/docs/img/guides/database/connecting-to-postgres/beekeeper-studio/beekeeper-credentials.png) + + + + + + + + + + Download your SSL certificate from the Dashboard's [`Database Settings`](https://supabase.com/dashboard/project/_/settings/database) + ![SSL](/docs/img/guides/database/connecting-to-postgres/beekeeper-studio/certificate.png) + + + + + Add your SSL to the connection form + ![SSL](/docs/img/guides/database/connecting-to-postgres/beekeeper-studio/certificate-beekeeper.png) + + + + + + + + + + Test your connection and then connect + + + + + ![SSL](/docs/img/guides/database/connecting-to-postgres/beekeeper-studio/connect.png) + + + + + + diff --git a/apps/docs/content/guides/database/connecting-to-postgres.mdx b/apps/docs/content/guides/database/connecting-to-postgres.mdx index d866f655bf8..0dbb2ec3fd6 100644 --- a/apps/docs/content/guides/database/connecting-to-postgres.mdx +++ b/apps/docs/content/guides/database/connecting-to-postgres.mdx @@ -100,7 +100,7 @@ Get your project's session mode string from the [Database Settings](/dashboard/p ## Supavisor transaction mode -The transaction mode connection string connects to your Postgres instance via a proxy which serves as a connection pooler. This is deal for serverless or edge functions, which require many transient connections. +The transaction mode connection string connects to your Postgres instance via a proxy which serves as a connection pooler. This is ideal for serverless or edge functions, which require many transient connections. diff --git a/apps/docs/content/guides/database/extensions/pg_repack.mdx b/apps/docs/content/guides/database/extensions/pg_repack.mdx new file mode 100644 index 00000000000..b9416f2349a --- /dev/null +++ b/apps/docs/content/guides/database/extensions/pg_repack.mdx @@ -0,0 +1,99 @@ +--- +id: 'pg_repack' +title: 'pg_repack: Physical storage optimization and maintenance' +description: 'A tool to remove bloat from tables and indexes and optimize physical data order and physical storage' +--- + +[pg_repack](https://github.com/reorg/pg_repack) is a Postgres extension to remove bloat from tables and indexes, and optionally restore the physical order of clustered indexes. Unlike CLUSTER and VACUUM FULL, pg_repack runs "online" and does not hold a exclusive locks on the processed tables that could prevent ongoing database operations. pg_repack's efficiency is comparable to using CLUSTER directly. + +pg_repack provides the following methods to optimize physical storage: + +- Online CLUSTER: ordering table data by cluster index in a non-blocking way +- Ordering table data by specified columns +- Online VACUUM FULL: packing rows only in a non-blocking way +- Rebuild or relocate only the indexes of a table + +pg_repack has 2 components, the database extension and a client-side CLI to control it. + +## Requirements + +- A target table must have a PRIMARY KEY, or a UNIQUE total index on a NOT NULL column. +- Performing a full-table repack requires free disk space about twice as large as the target table and its indexes. + +pg_repack requires the Postgres superuser role by default. That role is not available to users on the Supabase platform. To avoid that requirement, use the `-k` or `--no-superuser-check` flags on every `pg_repack` CLI command. + +The first version of pg_repack with full support for non-superuser repacking is 1.5.2. You can check the version installed on your Supabase instance using + +```sql +select default_version +from pg_available_extensions +where name = 'pg_repack'; +``` + +If pg_repack is not present, or the version is < 1.5.2, [upgrade to the latest version](/docs/guides/platform/upgrading) of Supabase to gain access. + +## Usage + +### Enable the extension + +Get started with pg_repack by enabling the extension in the Supabase Dashboard. + + + + +1. Go to the [Database](https://supabase.com/dashboard/project/_/database/tables) page in the Dashboard. +2. Click on **Extensions** in the sidebar. +3. Search for "pg_repack" and enable the extension. + + + + +{/* prettier-ignore */} +```sql +-- Example: enable the "pg_repack" extension +create extension pg_repack with schema extensions; +``` + + + + +### Install the CLI + +Select an option from the pg_repack docs to [install the client CLI](https://reorg.github.io/pg_repack/#download). + +### Syntax + +All pg_repack commands should include the `-k` flag to skip the client-side superuser check. + +{/* prettier-ignore */} +```sh +pg_repack -k [OPTION]... [DBNAME] +``` + +## Example + +Perform an online `VACUUM FULL` on the tables `public.foo` and `public.bar` in the database `postgres`: + +{/* prettier-ignore */} +```sh +pg_repack -k -h db..supabase.co -p 5432 -U postgres -d postgres --no-order --table public.foo --table public.bar +``` + +See the [official pg_repack documentation](https://reorg.github.io/pg_repack/) for the full list of options. + +## Limitations + +- pg_repack cannot reorganize temporary tables. +- pg_repack cannot cluster tables by GiST indexes. +- You cannot perform DDL commands of the target tables except VACUUM or ANALYZE while pg_repack is working. + pg_repack holds an ACCESS SHARE lock on the target table to enforce this restriction. + +## Resources + +- [Official pg_repack documentation](https://reorg.github.io/pg_repack/) diff --git a/apps/docs/content/guides/deployment/branching.mdx b/apps/docs/content/guides/deployment/branching.mdx index 783b8cf29b4..b99936f1689 100644 --- a/apps/docs/content/guides/deployment/branching.mdx +++ b/apps/docs/content/guides/deployment/branching.mdx @@ -532,6 +532,57 @@ Migrations are run in sequential order. Each migration builds upon the previous The preview branch has a record of which migrations have been applied, and only applies new migrations for each commit. This can create an issue when rolling back migrations. +## Branch configuration with remotes + +When Branching is enabled, your `config.toml` settings automatically sync to all ephemeral branches through a one-to-one mapping between your Git and Supabase branches. + +### Basic configuration + +To update configuration for a Supabase branch, simply modify `config.toml` and push to git. The Supabase integration will detect the changes and apply them to the corresponding branch. + +### Remote-specific configuration + +For persistent branches that need specific settings, you can use the `[remotes]` block in your `config.toml`. Each remote configuration must reference an existing project ID. + +Here's an example of configuring a separate seed script for a staging environment: + +```toml +[remotes.staging] +project_id = "your-project-ref" + +[remotes.staging.db.seed] +sql_paths = ["./seeds/staging.sql"] +``` + +Since the `project_id` field must reference an existing branch, you need to create the persistent branch before adding its configuration. Use the CLI to create a persistent branch first: + +```bash +supabase --experimental branches create --persistent +# Do you want to create a branch named develop? [Y/n] +``` + +### Configuration merging + +When merging a PR into a persistent branch, the Supabase integration: + +1. Checks for configuration changes +2. Logs the changes +3. Applies them to the target remote + +If no remote is declared or the project ID is incorrect, the configuration step is skipped. + +### Available configuration options + +All standard configuration options are available in the `[remotes]` block. This includes: + +- Database settings +- API configurations +- Authentication settings +- Edge Functions configuration +- And more + +You can use this to maintain different configurations for different environments while keeping them all in version control. + ### Rolling back migrations You might want to roll back changes you've made in an earlier migration change. For example, you may have pushed a migration file containing schema changes you no longer want. diff --git a/apps/docs/content/guides/queues/pgmq.mdx b/apps/docs/content/guides/queues/pgmq.mdx index 9e057e84368..400cedd776d 100644 --- a/apps/docs/content/guides/queues/pgmq.mdx +++ b/apps/docs/content/guides/queues/pgmq.mdx @@ -49,7 +49,7 @@ select from pgmq.create('my_queue'); #### `create_unlogged` -Creates an unlogged table. This is useful when write throughput is more important that durability. +Creates an unlogged table. This is useful when write throughput is more important than durability. See Postgres documentation for [unlogged tables](https://www.postgresql.org/docs/current/sql-createtable.html#SQL-CREATETABLE-UNLOGGED) for more information. {/* prettier-ignore */} diff --git a/apps/docs/content/guides/realtime/broadcast.mdx b/apps/docs/content/guides/realtime/broadcast.mdx index 6fa1482f7df..09291a4e6ea 100644 --- a/apps/docs/content/guides/realtime/broadcast.mdx +++ b/apps/docs/content/guides/realtime/broadcast.mdx @@ -652,7 +652,7 @@ Broadcast Changes allows you to trigger messages from your database. To achieve It uses partitioned tables per day which allows the deletion your previous images in a performant way by dropping the physical tables of this partitioned table. Tables older than 3 days old are deleted. -Broadcasting from the database works like a client-side broadcast, using WebSockets to send JSON packages. [Realtime Authorization]/docs/guides/realtime/authorization) is required and enabled by default to protect your data. +Broadcasting from the database works like a client-side broadcast, using WebSockets to send JSON packages. [Realtime Authorization](/docs/guides/realtime/authorization) is required and enabled by default to protect your data. The database broadcast feature provides two functions to help you send messages: diff --git a/apps/docs/content/guides/storage/uploads/resumable-uploads.mdx b/apps/docs/content/guides/storage/uploads/resumable-uploads.mdx index eaeceb400e4..635ab2207d0 100644 --- a/apps/docs/content/guides/storage/uploads/resumable-uploads.mdx +++ b/apps/docs/content/guides/storage/uploads/resumable-uploads.mdx @@ -205,6 +205,53 @@ Supabase Storage implements the [TUS protocol](https://tus.io/) to enable resuma ``` + + + + Here's an example of how to upload a file using [`tus-py-client`](https://github.com/tus/tus-py-client): + + ```python + from io import BufferedReader + from tusclient import client + from supabase import create_client + + def upload_file( + bucket_name: str, file_name: str, file: BufferedReader, access_token: str + ): + # create Tus client + my_client = client.TusClient( + f"{supabase_url}/storage/v1/upload/resumable", + headers={"Authorization": f"Bearer {access_token}", "x-upsert": "true"}, + ) + uploader = my_client.uploader( + file_stream=file, + chunk_size=(6 * 1024 * 1024), + metadata={ + "bucketName": bucket_name, + "objectName": file_name, + "contentType": "image/png", + "cacheControl": "3600", + }, + ) + uploader.upload() + + # create client and sign in + supabase = create_client(supabase_url, supabase_key) + + # retrieve the current user's session for authentication + session = supabase.auth.get_session() + + # open file and send file stream to upload + with open("./assets/40mb.jpg", "rb") as fs: + upload_file( + bucket_name="assets", + file_name="large_file", + file=fs, + access_token=session.access_token, + ) + ``` + + ### Upload URL diff --git a/apps/docs/docs/ref/api/introduction.mdx b/apps/docs/docs/ref/api/introduction.mdx index 76a6ed4541b..a5cd9b0057e 100644 --- a/apps/docs/docs/ref/api/introduction.mdx +++ b/apps/docs/docs/ref/api/introduction.mdx @@ -17,9 +17,19 @@ hideTitle: true ## Authentication - All API requests require a Supabase Personal token to be included in the Authorization header: `Authorization Bearer `. - To generate or manage your API token, visit your [account](https://supabase.com/dashboard/account/tokens) page. - Your API tokens carry the same privileges as your user account, so be sure to keep it secret. + All API requests require an access token to be included in the Authorization header: `Authorization Bearer `. + + There are two ways to generate an access token: + + 1. **Personal access token (PAT):** + PATs are long-lived tokens that you manually generate to access the Management API. They are useful for automating workflows or developing against the Management API. PATs carry the same privileges as your user account, so be sure to keep it secret. + + To generate or manage your personal access tokens, visit your [account](/dashboard/account/tokens) page. + + 2. **OAuth2:** + OAuth2 allows your application to generate tokens on behalf of a Supabase user, providing secure and limited access to their account without requiring their credentials. Use this if you're building a third-party app that needs to create or manage Supabase projects on behalf of your users. Tokens generated via OAuth2 are short-lived and tied to specific scopes to ensure your app can only perform actions that are explicitly approved by the user. + + See [Build a Supabase Integration](/docs/guides/integrations/build-a-supabase-integration) to set up OAuth2 for your application. ```bash curl https://api.supabase.com/v1/projects \ diff --git a/apps/docs/features/helpers.fetch.ts b/apps/docs/features/helpers.fetch.ts index cb194482203..55f2de27a93 100644 --- a/apps/docs/features/helpers.fetch.ts +++ b/apps/docs/features/helpers.fetch.ts @@ -18,6 +18,9 @@ function fetchWithNextOptions({ return (info: RequestInfo) => fetch(info, { next, cache }) } -const fetchRevalidatePerDay = fetchWithNextOptions({ next: { revalidate: ONE_DAY_IN_SECONDS } }) +// const fetchRevalidatePerDay = fetchWithNextOptions({ next: { revalidate: ONE_DAY_IN_SECONDS } }) +// [Charis 2024-12-28] +// Temporarily disabling revalidation as a hotfix for Vercel NFT problem +const fetchRevalidatePerDay = fetch export { fetchWithNextOptions, fetchRevalidatePerDay } diff --git a/apps/docs/next.config.mjs b/apps/docs/next.config.mjs index 167677a302d..d2b12e7ea74 100644 --- a/apps/docs/next.config.mjs +++ b/apps/docs/next.config.mjs @@ -1,7 +1,6 @@ // @ts-check import { remarkCodeHike } from '@code-hike/mdx' import nextMdx from '@next/mdx' -import os from 'node:os' import rehypeSlug from 'rehype-slug' import remarkGfm from 'remark-gfm' @@ -61,30 +60,7 @@ const nextConfig = { '/guides/**/*': ['./content/guides/**/*', './content/troubleshooting/**/*'], '/reference/**/*': ['./features/docs/generated/**/*', './docs/ref/**/*'], }, - }, - webpack: (config, options) => { - /** - * The SQL to REST API translator relies on libpg-query, which packages a - * native Node.js module that wraps the Postgres query parser. - * - * The default webpack config can't load native modules, so we need a custom - * loader for it, which calls process.dlopen to load C++ Addons. - * - * See https://github.com/eisberg-labs/nextjs-node-loader - */ - config.module.rules.push({ - test: /\.node$/, - use: [ - { - loader: 'nextjs-node-loader', - options: { - flags: os.constants.dlopen.RTLD_NOW, - outputPath: config.output.path, - }, - }, - ], - }) - return config + serverComponentsExternalPackages: ['libpg-query'], }, async headers() { return [ diff --git a/apps/docs/package.json b/apps/docs/package.json index 6570afa9a6d..cff144eb3e0 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -61,6 +61,7 @@ "js-yaml": "^3.14.1", "jsrsasign": "^11.0.0", "katex": "^0.16.10", + "libpg-query": "15.2.0", "lodash": "^4.17.21", "lucide-react": "*", "markdown-toc": "^1.2.0", @@ -74,7 +75,7 @@ "mdast-util-to-string": "^3.1.1", "micromark-extension-gfm": "^2.0.3", "micromark-extension-mdxjs": "^1.0.0", - "next": "^14.2.10", + "next": "catalog:", "next-mdx-remote": "^4.4.1", "next-plugin-yaml": "^1.0.1", "next-seo": "^6.5.0", @@ -115,7 +116,7 @@ "@types/hast": "^2.3.4", "@types/jsrsasign": "^10.5.12", "@types/mdast": "^3.0.0", - "@types/node": "^20.11.16", + "@types/node": "catalog:", "@types/react": "^18.2.24", "@types/react-copy-to-clipboard": "^5.0.4", "@types/unist": "^2.0.6", @@ -125,7 +126,6 @@ "dotenv": "^16.0.3", "ejs": "^3.1.10", "globby": "^13.2.2", - "nextjs-node-loader": "^1.1.5", "npm-run-all": "^4.1.5", "openapi-types": "^12.1.3", "simple-git": "^3.24.0", diff --git a/apps/docs/public/humans.txt b/apps/docs/public/humans.txt index 73b70492351..69fb2aae602 100644 --- a/apps/docs/public/humans.txt +++ b/apps/docs/public/humans.txt @@ -41,7 +41,6 @@ Inian P Ivan Vasilov Jenny Kibiri Jess Shears -Joel Lee John Pena Jon M Jonny Summers-Muir diff --git a/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/beekeeper-credentials.png b/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/beekeeper-credentials.png new file mode 100644 index 00000000000..ccf768d3764 Binary files /dev/null and b/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/beekeeper-credentials.png differ diff --git a/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/certificate-beekeeper.png b/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/certificate-beekeeper.png new file mode 100644 index 00000000000..fa072beb19e Binary files /dev/null and b/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/certificate-beekeeper.png differ diff --git a/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/certificate.png b/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/certificate.png new file mode 100644 index 00000000000..8c532535c23 Binary files /dev/null and b/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/certificate.png differ diff --git a/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/connect.png b/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/connect.png new file mode 100644 index 00000000000..c8fb036c307 Binary files /dev/null and b/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/connect.png differ diff --git a/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/new-connection.png b/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/new-connection.png new file mode 100644 index 00000000000..aa4b7913a7c Binary files /dev/null and b/apps/docs/public/img/guides/database/connecting-to-postgres/beekeeper-studio/new-connection.png differ diff --git a/apps/docs/spec/api_v1_openapi.json b/apps/docs/spec/api_v1_openapi.json index 3802f4ea3f4..5ecb7b3a1a1 100644 --- a/apps/docs/spec/api_v1_openapi.json +++ b/apps/docs/spec/api_v1_openapi.json @@ -336,6 +336,25 @@ "operationId": "v1-list-all-snippets", "summary": "Lists SQL snippets for the logged in user", "parameters": [ + { "name": "cursor", "required": false, "in": "query", "schema": { "type": "string" } }, + { + "name": "limit", + "required": false, + "in": "query", + "schema": { "type": "string", "minimum": 1, "maximum": 100 } + }, + { + "name": "sort_by", + "required": false, + "in": "query", + "schema": { "enum": ["name", "inserted_at"], "type": "string" } + }, + { + "name": "sort_order", + "required": false, + "in": "query", + "schema": { "enum": ["asc", "desc"], "type": "string" } + }, { "name": "project_ref", "required": false, @@ -3062,7 +3081,8 @@ "SnippetList": { "type": "object", "properties": { - "data": { "type": "array", "items": { "$ref": "#/components/schemas/SnippetMeta" } } + "data": { "type": "array", "items": { "$ref": "#/components/schemas/SnippetMeta" } }, + "cursor": { "type": "string" } }, "required": ["data"] }, diff --git a/apps/docs/spec/cli_v1_commands.yaml b/apps/docs/spec/cli_v1_commands.yaml index c616b0ab50b..90d76c6144e 100644 --- a/apps/docs/spec/cli_v1_commands.yaml +++ b/apps/docs/spec/cli_v1_commands.yaml @@ -1,7 +1,7 @@ clispec: '001' info: id: cli - version: 2.1.1 + version: 2.2.1 title: Supabase CLI language: sh source: https://github.com/supabase/cli diff --git a/apps/docs/spec/cli_v1_config.yaml b/apps/docs/spec/cli_v1_config.yaml index 2fbdd858fab..fca79cb6203 100644 --- a/apps/docs/spec/cli_v1_config.yaml +++ b/apps/docs/spec/cli_v1_config.yaml @@ -50,6 +50,9 @@ info: - id: local title: Local Development description: Local Development settings. + - id: branching + title: Branching + description: Branching configurations settings. # This section is an array of public functions which a user might need to execute. parameters: @@ -500,6 +503,18 @@ parameters: External URL of the API server that frontend connects to. links: [] + - id: 'studio.openai_api_key' + title: 'studio.openai_api_key' + tags: ['dashboard'] + required: false + default: 'env(OPENAI_API_KEY)' + description: | + OpenAI API key used for AI features in the Studio dashboard. + DO NOT commit your OpenAI API key to git. Use environment variable substitution instead. + links: + - name: 'OpenAI API Keys' + link: 'https://platform.openai.com/api-keys' + - id: 'inbucket.enabled' title: 'inbucket.enabled' tags: ['local'] @@ -1587,3 +1602,19 @@ parameters: DO NOT commit your AWS secret key to git. Use environment variable substitution instead. Note: This is an experimental feature and may change in future releases. links: [] + + - id: 'remotes.branch_name.project_id' + title: 'remotes..project_id' + tags: ['branching'] + required: true + description: | + The project reference ID for a specific persistent Supabase branch. + This ID is used to configure branch-specific settings in your config.toml file for branches deployments. + All other configuration options available in the root config are also supported in the remotes block. + For example, you can specify branch-specific database settings like so: + usage: | + [remotes.] + project_id = "your-project-ref" + + [remotes..db.seed] + sql_paths = ["./seeds/staging.sql"] diff --git a/apps/docs/spec/transforms/api_v1_openapi_deparsed.json b/apps/docs/spec/transforms/api_v1_openapi_deparsed.json index f6305737fb3..50b2c52dae6 100644 --- a/apps/docs/spec/transforms/api_v1_openapi_deparsed.json +++ b/apps/docs/spec/transforms/api_v1_openapi_deparsed.json @@ -990,6 +990,42 @@ "operationId": "v1-list-all-snippets", "summary": "Lists SQL snippets for the logged in user", "parameters": [ + { + "name": "cursor", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "schema": { + "type": "string", + "minimum": 1, + "maximum": 100 + } + }, + { + "name": "sort_by", + "required": false, + "in": "query", + "schema": { + "enum": ["name", "inserted_at"], + "type": "string" + } + }, + { + "name": "sort_order", + "required": false, + "in": "query", + "schema": { + "enum": ["asc", "desc"], + "type": "string" + } + }, { "name": "project_ref", "required": false, @@ -1087,6 +1123,9 @@ "updated_by" ] } + }, + "cursor": { + "type": "string" } }, "required": ["data"] @@ -10798,6 +10837,9 @@ "updated_by" ] } + }, + "cursor": { + "type": "string" } }, "required": ["data"] diff --git a/apps/studio/Dockerfile b/apps/studio/Dockerfile index ac935b26cec..1d3d57dcb4e 100644 --- a/apps/studio/Dockerfile +++ b/apps/studio/Dockerfile @@ -30,7 +30,7 @@ WORKDIR /app FROM base AS turbo COPY . . -RUN pnpm dlx turbo@2.0.4 prune studio --docker +RUN pnpm dlx turbo@2.3.3 prune studio --docker # Install dev dependencies (only if needed) FROM base AS deps @@ -50,7 +50,7 @@ CMD ["pnpm", "dev:studio"] # Compile Next.js FROM dev AS builder -RUN pnpm dlx turbo@2.0.4 run build --filter studio -- --no-lint +RUN pnpm dlx turbo@2.3.3 run build --filter studio -- --no-lint # Copy only compiled code and dependencies FROM base AS production diff --git a/apps/studio/components/grid/components/editor/DateTimeEditor.tsx b/apps/studio/components/grid/components/editor/DateTimeEditor.tsx index d48e4d935b7..1676996991d 100644 --- a/apps/studio/components/grid/components/editor/DateTimeEditor.tsx +++ b/apps/studio/components/grid/components/editor/DateTimeEditor.tsx @@ -51,7 +51,11 @@ function BaseEditor({ } useEffect(() => { - if (ref.current) ref.current.focus() + try { + ref.current?.focus({ preventScroll: true }) + } catch (e) { + ref.current?.focus() + } }, []) return ( @@ -69,7 +73,7 @@ function BaseEditor({ onEnter={saveChanges} > setInputValue(e.target.value)} diff --git a/apps/studio/components/grid/components/editor/JsonEditor.tsx b/apps/studio/components/grid/components/editor/JsonEditor.tsx index 152accb8044..87b6863db12 100644 --- a/apps/studio/components/grid/components/editor/JsonEditor.tsx +++ b/apps/studio/components/grid/components/editor/JsonEditor.tsx @@ -1,4 +1,3 @@ -import { isNil } from 'lodash' import { Maximize } from 'lucide-react' import { useCallback, useState } from 'react' import type { RenderEditCellProps } from 'react-data-grid' @@ -65,8 +64,15 @@ export const JsonEditor = ({ }) const gridColumn = state.gridColumns.find((x) => x.name == column.key) - const initialValue = row[column.key as keyof TRow] as string - const jsonString = prettifyJSON(!isNil(initialValue) ? tryFormatInitialValue(initialValue) : '') + + const rawInitialValue = row[column.key as keyof TRow] as unknown + const initialValue = + rawInitialValue === null || rawInitialValue === undefined || typeof rawInitialValue === 'string' + ? rawInitialValue + : JSON.stringify(rawInitialValue) + + const jsonString = prettifyJSON(initialValue ? tryFormatInitialValue(initialValue) : '') + const isTruncated = typeof initialValue === 'string' && initialValue.endsWith('...') && diff --git a/apps/studio/components/interfaces/Account/NewAccessTokenButton.tsx b/apps/studio/components/interfaces/Account/NewAccessTokenButton.tsx index e82b691d082..a9e90325b41 100644 --- a/apps/studio/components/interfaces/Account/NewAccessTokenButton.tsx +++ b/apps/studio/components/interfaces/Account/NewAccessTokenButton.tsx @@ -4,7 +4,6 @@ import { useState } from 'react' import { useAccessTokenCreateMutation } from 'data/access-tokens/access-tokens-create-mutation' import { - Alert, Button, DialogFooter, DropdownMenu, @@ -15,6 +14,7 @@ import { Input, Modal, } from 'ui' +import { Admonition } from 'ui-patterns' export interface NewAccessTokenButtonProps { onCreateToken: (token: any) => void @@ -105,27 +105,30 @@ const NewAccessTokenButton = ({ onCreateToken }: NewAccessTokenButtonProps) => { <> {tokenScope === 'V0' && ( - -

- These include deleting organizations and projects which cannot be undone. As - such, be very careful when using this API. -

-
- -
-
+ +

+ These include deleting organizations and projects which cannot be undone. + As such, be very careful when using this API. +

+
+ +
+ + } + />
)} diff --git a/apps/studio/components/interfaces/Auth/AuthProvidersForm/ProviderForm.tsx b/apps/studio/components/interfaces/Auth/AuthProvidersForm/ProviderForm.tsx index dd66b17e3be..0d35ca6f79a 100644 --- a/apps/studio/components/interfaces/Auth/AuthProvidersForm/ProviderForm.tsx +++ b/apps/studio/components/interfaces/Auth/AuthProvidersForm/ProviderForm.tsx @@ -15,7 +15,6 @@ import { useCustomDomainsQuery } from 'data/custom-domains/custom-domains-query' import { useCheckPermissions } from 'hooks/misc/useCheckPermissions' import { BASE_PATH } from 'lib/constants' import { - Alert, Alert_Shadcn_, AlertDescription_Shadcn_, AlertTitle_Shadcn_, @@ -29,6 +28,7 @@ import { ProviderCollapsibleClasses } from './AuthProvidersForm.constants' import type { Provider } from './AuthProvidersForm.types' import FormField from './FormField' import { Markdown } from 'components/interfaces/Markdown' +import { Admonition } from 'ui-patterns' export interface ProviderFormProps { config: components['schemas']['GoTrueConfigResponse'] @@ -264,9 +264,15 @@ const ProviderForm = ({ config, provider }: ProviderFormProps) => { ))} {provider?.misc?.alert && ( - - {provider.misc.alert.description} - + + {provider.misc.alert.description} + + } + /> )} {provider.misc.requiresRedirect && ( diff --git a/apps/studio/components/interfaces/Auth/BasicAuthSettingsForm/BasicAuthSettingsForm.tsx b/apps/studio/components/interfaces/Auth/BasicAuthSettingsForm/BasicAuthSettingsForm.tsx index d4d68c8ced8..6ddf1eafef7 100644 --- a/apps/studio/components/interfaces/Auth/BasicAuthSettingsForm/BasicAuthSettingsForm.tsx +++ b/apps/studio/components/interfaces/Auth/BasicAuthSettingsForm/BasicAuthSettingsForm.tsx @@ -254,7 +254,7 @@ const BasicAuthSettingsForm = () => { className="w-min" icon={} > - + View access control docs diff --git a/apps/studio/components/interfaces/Auth/Users/InviteUserModal.tsx b/apps/studio/components/interfaces/Auth/Users/InviteUserModal.tsx index 32b3beef3d4..59f7d064d3b 100644 --- a/apps/studio/components/interfaces/Auth/Users/InviteUserModal.tsx +++ b/apps/studio/components/interfaces/Auth/Users/InviteUserModal.tsx @@ -44,52 +44,49 @@ const InviteUserModal = ({ visible, setVisible }: InviteUserModalProps) => { } return ( -
- +
- - {() => ( - <> - - } - type="email" - name="email" - placeholder="User email" - /> - + {() => ( + <> + + } + type="email" + name="email" + placeholder="User email" + /> + - - - - - )} -
-
-
+ + + + + )} + + ) } diff --git a/apps/studio/components/interfaces/Auth/Users/Users.constants.ts b/apps/studio/components/interfaces/Auth/Users/Users.constants.ts index 97b20ae76c6..6d53666ea4d 100644 --- a/apps/studio/components/interfaces/Auth/Users/Users.constants.ts +++ b/apps/studio/components/interfaces/Auth/Users/Users.constants.ts @@ -1,6 +1,9 @@ import { BASE_PATH } from 'lib/constants' import { PROVIDER_PHONE, PROVIDERS_SCHEMAS } from '../AuthProvidersFormValidation' +// [Joshen] Temporary fix as bulk delete will fire n requests since Auth + API do not have a bulk delete endpoint yet +export const MAX_BULK_DELETE = 20 + export const PROVIDER_FILTER_OPTIONS = PROVIDERS_SCHEMAS.map((provider) => ({ name: provider.title, value: diff --git a/apps/studio/components/interfaces/Auth/Users/Users.utils.tsx b/apps/studio/components/interfaces/Auth/Users/Users.utils.tsx index d0d1633454d..0e101574dd7 100644 --- a/apps/studio/components/interfaces/Auth/Users/Users.utils.tsx +++ b/apps/studio/components/interfaces/Auth/Users/Users.utils.tsx @@ -1,12 +1,12 @@ import dayjs from 'dayjs' import { UserIcon } from 'lucide-react' import { UIEvent } from 'react' -import { Column } from 'react-data-grid' +import { Column, useRowSelection } from 'react-data-grid' import { User } from 'data/auth/users-infinite-query' import { BASE_PATH } from 'lib/constants' -import { cn } from 'ui' -import { HeaderCell } from './UsersGridComponents' +import { Checkbox_Shadcn_, cn } from 'ui' +import { HeaderCell, SelectHeaderCell } from './UsersGridComponents' import { ColumnConfiguration, USERS_TABLE_COLUMNS } from './UsersV2' const SUPPORTED_CSP_AVATAR_URLS = [ @@ -262,10 +262,18 @@ export const formatUserColumns = ({ minWidth: col.minWidth ?? 120, headerCellClass: 'z-50 outline-none !shadow-none', renderHeaderCell: () => { + // [Joshen] I'm on the fence to support "Select all" for users, as the results are infinitely paginated + // "Select all" wouldn't be an accurate representation if not all the pages have been fetched, but if decide + // to support - the component is ready as such: Just pass selectedUsers and allRowsSelected as props from parent + // if (col.id === 'img') return undefined return }, renderCell: ({ row }) => { + // This is actually a valid React component, so we can use hooks here + // eslint-disable-next-line react-hooks/rules-of-hooks + const [isRowSelected, onRowSelectionChange] = useRowSelection() + const value = row?.[col.id] const user = users?.find((u) => u.id === row.id) const formattedValue = @@ -278,7 +286,19 @@ export const formatUserColumns = ({ if (col.id === 'img') { return ( -
+
+ { + e.stopPropagation() + onRowSelectionChange({ + row, + type: 'ROW', + checked: !isRowSelected, + isShiftClick: e.shiftKey, + }) + }} + />
formatUserColumns for more info +export const SelectHeaderCell = ({ + selectedUsers, + allRowsSelected, +}: { + selectedUsers: Set + allRowsSelected: boolean +}) => { + const inputRef = useRef(null) + const [isRowSelected, onRowSelectionChange] = useRowSelection() + + const isIndeterminate = selectedUsers.size > 0 && !allRowsSelected + + useEffect(() => { + if (inputRef.current) inputRef.current.indeterminate = isIndeterminate + }, [isIndeterminate]) + + return ( +
+
+ onRowSelectionChange({ type: 'HEADER', checked: e.target.checked })} + /> +
+
+ ) +} + export const HeaderCell = ({ col, setSortByValue, diff --git a/apps/studio/components/interfaces/Auth/Users/UsersV2.tsx b/apps/studio/components/interfaces/Auth/Users/UsersV2.tsx index a2351632139..51dff52526f 100644 --- a/apps/studio/components/interfaces/Auth/Users/UsersV2.tsx +++ b/apps/studio/components/interfaces/Auth/Users/UsersV2.tsx @@ -1,7 +1,9 @@ +import { useQueryClient } from '@tanstack/react-query' import AwesomeDebouncePromise from 'awesome-debounce-promise' -import { ArrowDown, ArrowUp, Loader2, RefreshCw, Search, Users, X } from 'lucide-react' +import { ArrowDown, ArrowUp, Loader2, RefreshCw, Search, Trash, Users, X } from 'lucide-react' import { UIEvent, useEffect, useMemo, useRef, useState } from 'react' import DataGrid, { Column, DataGridHandle, Row } from 'react-data-grid' +import { toast } from 'sonner' import { useParams } from 'common' import { useIsAPIDocsSidePanelEnabled } from 'components/interfaces/App/FeaturePreview/FeaturePreviewContext' @@ -10,6 +12,8 @@ import AlertError from 'components/ui/AlertError' import APIDocsButton from 'components/ui/APIDocsButton' import { FilterPopover } from 'components/ui/FilterPopover' import { FormHeader } from 'components/ui/Forms/FormHeader' +import { authKeys } from 'data/auth/keys' +import { useUserDeleteMutation } from 'data/auth/user-delete-mutation' import { useUsersCountQuery } from 'data/auth/users-count-query' import { useUsersInfiniteQuery } from 'data/auth/users-infinite-query' import { useLocalStorageQuery } from 'hooks/misc/useLocalStorage' @@ -36,13 +40,15 @@ import { SelectValue_Shadcn_, } from 'ui' import { Input } from 'ui-patterns/DataInputs/Input' +import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import AddUserDropdown from './AddUserDropdown' import { UserPanel } from './UserPanel' -import { PROVIDER_FILTER_OPTIONS } from './Users.constants' +import { MAX_BULK_DELETE, PROVIDER_FILTER_OPTIONS } from './Users.constants' import { formatUserColumns, formatUsersData, isAtBottom } from './Users.utils' +import { ButtonTooltip } from 'components/ui/ButtonTooltip' -type Filter = 'all' | 'verified' | 'unverified' | 'anonymous' +export type Filter = 'all' | 'verified' | 'unverified' | 'anonymous' export type UsersTableColumn = { id: string name: string @@ -52,7 +58,7 @@ export type UsersTableColumn = { } export type ColumnConfiguration = { id: string; width?: number } export const USERS_TABLE_COLUMNS: UsersTableColumn[] = [ - { id: 'img', name: '', minWidth: 65, width: 65, resizable: false }, + { id: 'img', name: '', minWidth: 95, width: 95, resizable: false }, { id: 'id', name: 'UID', width: 280 }, { id: 'name', name: 'Display name', minWidth: 0, width: 150 }, { id: 'email', name: 'Email', width: 300 }, @@ -66,6 +72,7 @@ export const USERS_TABLE_COLUMNS: UsersTableColumn[] = [ // [Joshen] Just naming it as V2 as its a rewrite of the old one, to make it easier for reviews // Can change it to remove V2 thereafter export const UsersV2 = () => { + const queryClient = useQueryClient() const { ref: projectRef } = useParams() const { project } = useProjectContext() const gridRef = useRef(null) @@ -75,10 +82,13 @@ export const UsersV2 = () => { const [search, setSearch] = useState('') const [filter, setFilter] = useState('all') const [filterKeywords, setFilterKeywords] = useState('') + const [selectedUsers, setSelectedUsers] = useState>(new Set([])) const [selectedColumns, setSelectedColumns] = useState([]) const [selectedProviders, setSelectedProviders] = useState([]) - const [selectedRow, setSelectedRow] = useState() + const [selectedUser, setSelectedUser] = useState() const [sortByValue, setSortByValue] = useState('created_at:desc') + const [showDeleteModal, setShowDeleteModal] = useState(false) + const [isDeletingUsers, setIsDeletingUsers] = useState(false) const [ columnConfiguration, setColumnConfiguration, @@ -123,8 +133,12 @@ export const UsersV2 = () => { providers: selectedProviders, }) + const { mutateAsync: deleteUser } = useUserDeleteMutation() + const totalUsers = countData ?? 0 const users = useMemo(() => data?.pages.flatMap((page) => page.result) ?? [], [data?.pages]) + // [Joshen] Only relevant for when selecting one user only + const selectedUserToDelete = users.find((u) => u.id === [...selectedUsers][0]) const handleScroll = (event: UIEvent) => { if (isLoading || !isAtBottom(event)) return @@ -169,6 +183,33 @@ export const UsersV2 = () => { 500 ) + const handleDeleteUsers = async () => { + if (!projectRef) return console.error('Project ref is required') + const userIds = [...selectedUsers] + + setIsDeletingUsers(true) + try { + await Promise.all( + userIds.map((id) => deleteUser({ projectRef, userId: id, skipInvalidation: true })) + ) + // [Joshen] Skip invalidation within RQ to prevent multiple requests, then invalidate once at the end + await Promise.all([ + queryClient.invalidateQueries(authKeys.usersInfinite(projectRef)), + queryClient.invalidateQueries(authKeys.usersCount(projectRef)), + ]) + toast.success( + `Successfully deleted the selected ${selectedUsers.size} user${selectedUsers.size > 1 ? 's' : ''}` + ) + setShowDeleteModal(false) + setSelectedUsers(new Set([])) + + if (userIds.includes(selectedUser)) setSelectedUser(undefined) + } catch (error: any) { + toast.error(`Failed to delete selected users: ${error.message}`) + setIsDeletingUsers(false) + } + } + useEffect(() => { if ( !isRefetching && @@ -187,278 +228,346 @@ export const UsersV2 = () => { } } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [isSuccess, isRefetching, isSuccessStorage, isErrorStorage, errorStorage, users]) + }, [ + isSuccess, + isRefetching, + isSuccessStorage, + isErrorStorage, + errorStorage, + users, + selectedUsers, + ]) return ( -
- -
-
- } - placeholder="Search email, phone or UID" - value={search} - onChange={(e) => setSearch(e.target.value)} - onKeyDown={(e) => { - if (e.code === 'Enter') { - setSearch(search.trim()) - setFilterKeywords(search.trim().toLocaleLowerCase()) - } - }} - actions={[ - search && ( + <> +
+ +
+ {selectedUsers.size > 0 ? ( +
+ + } + className="px-1.5" + onClick={() => setSelectedUsers(new Set([]))} + tooltip={{ content: { side: 'bottom', text: 'Cancel selection' } }} + /> +
+ ) : ( + <> +
+ } + placeholder="Search email, phone or UID" + value={search} + onChange={(e) => setSearch(e.target.value)} + onKeyDown={(e) => { + if (e.code === 'Enter') { + setSearch(search.trim()) + setFilterKeywords(search.trim().toLocaleLowerCase()) + } + }} + actions={[ + search && ( + + + + + + Sort by created at + + + Ascending + + + Descending + + + + + Sort by last sign in at + + + Ascending + + + Descending + + + + + Sort by email + + Ascending + + Descending + + + + + Sort by phone + + Ascending + + Descending + + + + + + +
+ +
+ {isNewAPIDocsEnabled && } - - - - - Sort by created at - - Ascending - - Descending - - - - - Sort by last sign in at - - - Ascending - - - Descending - - - - - Sort by email - - Ascending - Descending - - - - Sort by phone - - Ascending - Descending - - - - - + icon={} + type="default" + loading={isRefetching && !isFetchingNextPage} + onClick={() => refetch()} + > + Refresh + + +
+ + )}
+ + + +
+ { + const isSelected = row.id === selectedUser + return [ + `${isSelected ? 'bg-surface-300 dark:bg-surface-300' : 'bg-200'} cursor-pointer`, + '[&>.rdg-cell]:border-box [&>.rdg-cell]:outline-none [&>.rdg-cell]:shadow-none', + '[&>.rdg-cell:first-child>div]:ml-4', + ].join(' ') + }} + rowKeyGetter={(row) => row.id} + selectedRows={selectedUsers} + onScroll={handleScroll} + onSelectedRowsChange={(rows) => { + if (rows.size > MAX_BULK_DELETE) { + toast(`Only up to ${MAX_BULK_DELETE} users can be selected at a time`) + } else setSelectedUsers(rows) + }} + onColumnResize={(idx, width) => saveColumnConfiguration('resize', { idx, width })} + onColumnsReorder={(source, target) => { + const sourceIdx = columns.findIndex((col) => col.key === source) + const targetIdx = columns.findIndex((col) => col.key === target) -
- {isNewAPIDocsEnabled && } - - -
-
- - - -
- { - const isSelected = idx === selectedRow - return [ - `${isSelected ? 'bg-surface-300 dark:bg-surface-300' : 'bg-200'} cursor-pointer`, - '[&>.rdg-cell]:border-box [&>.rdg-cell]:outline-none [&>.rdg-cell]:shadow-none', - '[&>.rdg-cell:first-child>div]:ml-4', - ].join(' ') - }} - onScroll={handleScroll} - onColumnResize={(idx, width) => saveColumnConfiguration('resize', { idx, width })} - onColumnsReorder={(source, target) => { - const sourceIdx = columns.findIndex((col) => col.key === source) - const targetIdx = columns.findIndex((col) => col.key === target) + const updatedColumns = swapColumns(columns, sourceIdx, targetIdx) + setColumns(updatedColumns) - const updatedColumns = swapColumns(columns, sourceIdx, targetIdx) - setColumns(updatedColumns) - - saveColumnConfiguration('reorder', { columns: updatedColumns }) - }} - renderers={{ - renderRow(idx, props) { - return ( - { - if (typeof idx === 'number' && idx >= 0) { - setSelectedRow(idx) - gridRef.current?.scrollToCell({ idx: 0, rowIdx: idx }) - } - }} - /> - ) - }, - noRowsFallback: isLoading ? ( -
- -
- ) : isError ? ( -
- -
- ) : ( -
- -
-

- {filter !== 'all' || filterKeywords.length > 0 - ? 'No users found' - : 'No users in your project'} -

-

- {filter !== 'all' || filterKeywords.length > 0 - ? 'There are currently no users based on the filters applied' - : 'There are currently no users who signed up to your project'} -

+ saveColumnConfiguration('reorder', { columns: updatedColumns }) + }} + renderers={{ + renderRow(id, props) { + return ( + { + const idx = users.indexOf(users.find((u) => u.id === id) ?? {}) + if (props.row.id) { + setSelectedUser(props.row.id) + gridRef.current?.scrollToCell({ idx: 0, rowIdx: idx }) + } + }} + /> + ) + }, + noRowsFallback: isLoading ? ( +
+
-
- ), - }} + ) : isError ? ( +
+ +
+ ) : ( +
+ +
+

+ {filter !== 'all' || filterKeywords.length > 0 + ? 'No users found' + : 'No users in your project'} +

+

+ {filter !== 'all' || filterKeywords.length > 0 + ? 'There are currently no users based on the filters applied' + : 'There are currently no users who signed up to your project'} +

+
+
+ ), + }} + /> +
+ + {selectedUser !== undefined && ( + u.id === selectedUser)} + onClose={() => setSelectedUser(undefined)} /> -
-
- {selectedRow !== undefined && ( - setSelectedRow(undefined)} - /> - )} -
+ )} +
-
- {isLoading || isRefetching ? 'Loading users...' : `Total: ${totalUsers} users`} - {(isLoading || isRefetching || isFetchingNextPage) && ( - - Loading... - - )} +
+ {isLoading || isRefetching ? 'Loading users...' : `Total: ${totalUsers} users`} + {(isLoading || isRefetching || isFetchingNextPage) && ( + + Loading... + + )} +
-
+ + 1 ? 's' : ''}`} + loading={isDeletingUsers} + confirmLabel="Delete" + onCancel={() => setShowDeleteModal(false)} + onConfirm={() => handleDeleteUsers()} + alert={{ + title: `Deleting ${selectedUsers.size === 1 ? 'a user' : 'users'} is irreversible`, + description: `This will remove the selected ${selectedUsers.size === 1 ? '' : `${selectedUsers.size} `}user${selectedUsers.size > 1 ? 's' : ''} from the project and all associated data.`, + }} + > +

+ This is permanent! Are you sure you want to delete the{' '} + {selectedUsers.size === 1 ? '' : `selected ${selectedUsers.size} `}user + {selectedUsers.size > 1 ? 's' : ''} + {selectedUsers.size === 1 ? ( + + {' '} + {selectedUserToDelete?.email ?? selectedUserToDelete?.phone ?? 'this user'} + + ) : null} + ? +

+
+ ) } diff --git a/apps/studio/components/interfaces/Billing/Usage/UsageWarningAlerts/DiskIOBandwidthWarnings.tsx b/apps/studio/components/interfaces/Billing/Usage/UsageWarningAlerts/DiskIOBandwidthWarnings.tsx index ca114a07351..7fda2bb1e39 100644 --- a/apps/studio/components/interfaces/Billing/Usage/UsageWarningAlerts/DiskIOBandwidthWarnings.tsx +++ b/apps/studio/components/interfaces/Billing/Usage/UsageWarningAlerts/DiskIOBandwidthWarnings.tsx @@ -1,5 +1,6 @@ import Link from 'next/link' -import { Alert, Button } from 'ui' +import { Button } from 'ui' +import { Admonition } from 'ui-patterns' // [Joshen] In the future, conditionals should be from resource exhaustion endpoint as single source of truth interface DiskIOBandwidthWarningsProps { @@ -21,66 +22,95 @@ const DiskIOBandwidthWarnings = ({ }: DiskIOBandwidthWarningsProps) => { if (hasLatest && latestIoBudgetConsumption >= 100) { return ( - -

- Your workload has used up all your Disk IO Budget and is now running at the baseline - performance. If you need consistent disk performance, consider upgrading to a larger - compute add-on. -

- -
+ +

+ Your workload has used up all your Disk IO Budget and is now running at the baseline + performance. If you need consistent disk performance, consider upgrading to a larger + compute add-on. +

+ + + } + /> ) } if (hasLatest && latestIoBudgetConsumption >= 80) { return ( - -

- Your workload has consumed {latestIoBudgetConsumption}% of your Disk IO Budget. If you use - up all your Disk IO Budget, your instance will reverted to baseline performance. If you - need consistent disk performance, consider upgrading to a larger compute add-on. -

- -
+ +

+ Your workload has consumed {latestIoBudgetConsumption}% of your Disk IO Budget. If you + use up all your Disk IO Budget, your instance will reverted to baseline performance. + If you need consistent disk performance, consider upgrading to a larger compute + add-on. +

+ + + } + /> ) } if (currentBillingCycleSelected && highestIoBudgetConsumption >= 100) { return ( - -

- Your workload has used up all your Disk IO Budget and reverted to baseline performance at - least once during this billing cycle. If you need consistent disk performance, consider - upgrading to a larger compute add-on. -

- -
+ +

+ Your workload has used up all your Disk IO Budget and reverted to baseline performance + at least once during this billing cycle. If you need consistent disk performance, + consider upgrading to a larger compute add-on. +

+ + + } + /> ) } if (currentBillingCycleSelected && highestIoBudgetConsumption >= 80) { return ( - -

- Your workload has consumed {highestIoBudgetConsumption}% of your Disk IO budget during - this billing cycle. If you use up all your Disk IO Budget, your instance will reverted to - baseline performance. If you need consistent disk performance, consider upgrading to a - larger compute add-on. -

- -
+ description={ + <> +

+ Your workload has consumed {highestIoBudgetConsumption}% of your Disk IO budget during + this billing cycle. If you use up all your Disk IO Budget, your instance will reverted + to baseline performance. If you need consistent disk performance, consider upgrading + to a larger compute add-on. +

+ + + } + /> ) } diff --git a/apps/studio/components/interfaces/Connect/Connect.tsx b/apps/studio/components/interfaces/Connect/Connect.tsx index 9a107bf7c3c..62951d6c126 100644 --- a/apps/studio/components/interfaces/Connect/Connect.tsx +++ b/apps/studio/components/interfaces/Connect/Connect.tsx @@ -268,7 +268,7 @@ const Connect = () => { /> diff --git a/apps/studio/components/interfaces/Database/Migrations/Migrations.tsx b/apps/studio/components/interfaces/Database/Migrations/Migrations.tsx index 3119bada864..7a3285b3045 100644 --- a/apps/studio/components/interfaces/Database/Migrations/Migrations.tsx +++ b/apps/studio/components/interfaces/Database/Migrations/Migrations.tsx @@ -7,9 +7,10 @@ import Table from 'components/to-be-cleaned/Table' import CodeEditor from 'components/ui/CodeEditor/CodeEditor' import ShimmeringLoader from 'components/ui/ShimmeringLoader' import { DatabaseMigration, useMigrationsQuery } from 'data/database/migrations-query' -import { Alert, Button, Input, SidePanel } from 'ui' +import { Button, Input, SidePanel } from 'ui' import MigrationsEmptyState from './MigrationsEmptyState' import { Search } from 'lucide-react' +import { Admonition } from 'ui-patterns' const Migrations = () => { const [search, setSearch] = useState('') @@ -39,26 +40,27 @@ const Migrations = () => {
{isError && ( - - - Contact support - - , - ]} + description={ + <> +

+ Try refreshing your browser, but if the issue persists, please reach out to us via + support. +

+

Error: {(error as any)?.message ?? 'Unknown'}

+ + } > -

- Try refreshing your browser, but if the issue persists, please reach out to us via - support. -

-

Error: {(error as any)?.message ?? 'Unknown'}

-
+ + )} {isSuccess && (
diff --git a/apps/studio/components/interfaces/Docs/Authentication.tsx b/apps/studio/components/interfaces/Docs/Authentication.tsx index 418e8f8025e..f6d24271122 100644 --- a/apps/studio/components/interfaces/Docs/Authentication.tsx +++ b/apps/studio/components/interfaces/Docs/Authentication.tsx @@ -48,7 +48,7 @@ const Authentication = ({ selectedLang, showApiKey }: AuthenticationProps) => {

Client API Keys

-
+

Client keys allow "anonymous access" to your database, until the user has logged in. @@ -79,7 +79,7 @@ const Authentication = ({ selectedLang, showApiKey }: AuthenticationProps) => {

Service Keys

-
+

Service keys have FULL access to your data, bypassing any security policies. Be VERY diff --git a/apps/studio/components/interfaces/Docs/Introduction.tsx b/apps/studio/components/interfaces/Docs/Introduction.tsx index e102f008de5..ae8dd1b4f9d 100644 --- a/apps/studio/components/interfaces/Docs/Introduction.tsx +++ b/apps/studio/components/interfaces/Docs/Introduction.tsx @@ -2,6 +2,7 @@ import { useParams } from 'common' import Snippets from 'components/interfaces/Docs/Snippets' import { useProjectPostgrestConfigQuery } from 'data/config/project-postgrest-config-query' +import { InlineLink } from 'components/ui/InlineLink' import { useProjectSettingsV2Query } from 'data/config/project-settings-v2-query' import CodeSnippet from './CodeSnippet' import PublicSchemaNotEnabledAlert from './PublicSchemaNotEnabledAlert' @@ -26,12 +27,26 @@ export default function Introduction({ selectedLang }: Props) { .includes('public') return ( -

-
- - - {!isPublicSchemaEnabled && } -
-
+ <> +

Connect to your project

+
+
+

+ All projects have a RESTful endpoint that you can use with your project's API key to + query and manage your database. These can be obtained from the{' '} + API settings. +

+

+ You can initialize a new Supabase client using the createClient() method. + The Supabase client is your entrypoint to the rest of the Supabase functionality and is + the easiest way to interact with everything we offer within the Supabase ecosystem. +

+
+
+ + {!isPublicSchemaEnabled && } +
+
+ ) } diff --git a/apps/studio/components/interfaces/Functions/EdgeFunctionDetails/EdgeFunctionDetails.tsx b/apps/studio/components/interfaces/Functions/EdgeFunctionDetails/EdgeFunctionDetails.tsx index 483a1fa9a84..aa42058a0a5 100644 --- a/apps/studio/components/interfaces/Functions/EdgeFunctionDetails/EdgeFunctionDetails.tsx +++ b/apps/studio/components/interfaces/Functions/EdgeFunctionDetails/EdgeFunctionDetails.tsx @@ -101,7 +101,7 @@ const EdgeFunctionDetails = () => { return ( <> -
+
{({ handleReset, values, initialValues, resetForm }: any) => { const hasChanges = JSON.stringify(values) !== JSON.stringify(initialValues) diff --git a/apps/studio/components/interfaces/Functions/EdgeFunctionsListItem.tsx b/apps/studio/components/interfaces/Functions/EdgeFunctionsListItem.tsx index 428d29b3372..269f0183ea0 100644 --- a/apps/studio/components/interfaces/Functions/EdgeFunctionsListItem.tsx +++ b/apps/studio/components/interfaces/Functions/EdgeFunctionsListItem.tsx @@ -36,7 +36,7 @@ const EdgeFunctionsListItem = ({ function: item }: EdgeFunctionsListItemProps) = { - router.push(`/project/${ref}/functions/${item.slug}/details`) + router.push(`/project/${ref}/functions/${item.slug}`) }} > diff --git a/apps/studio/components/interfaces/Functions/FunctionsNav.tsx b/apps/studio/components/interfaces/Functions/FunctionsNav.tsx index 47b6d4f734d..fe37ab1afca 100644 --- a/apps/studio/components/interfaces/Functions/FunctionsNav.tsx +++ b/apps/studio/components/interfaces/Functions/FunctionsNav.tsx @@ -11,17 +11,18 @@ const FunctionsNav = ({ item }: any) => { defaultActiveId="1" type="underlined" size="medium" - activeId={!activeRoute ? 'metrics' : activeRoute} + baseClassNames="!space-y-0" + activeId={!activeRoute ? 'overview' : activeRoute} onChange={(e: string) => { if (item?.slug) { - router.push(`/project/${ref}/functions/${item.slug}/${e === 'metrics' ? '' : e}`) + router.push(`/project/${ref}/functions/${item.slug}/${e === 'overview' ? '' : e}`) } }} > - - + + ) } diff --git a/apps/studio/components/interfaces/Home/ProjectUsage.tsx b/apps/studio/components/interfaces/Home/ProjectUsage.tsx index b872fc4657c..1c9b9c6cfa3 100644 --- a/apps/studio/components/interfaces/Home/ProjectUsage.tsx +++ b/apps/studio/components/interfaces/Home/ProjectUsage.tsx @@ -64,7 +64,8 @@ const ProjectUsage = () => { ], 0, startDateLocal.toISOString(), - endDateLocal.toISOString() + endDateLocal.toISOString(), + 5 ) const datetimeFormat = selectedInterval.format || 'MMM D, ha' diff --git a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobCard.tsx b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobCard.tsx index 02539377fcd..a7dcafb173c 100644 --- a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobCard.tsx +++ b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobCard.tsx @@ -1,4 +1,4 @@ -import { toString as CronToString } from 'cronstrue' +import dayjs from 'dayjs' import { Clock, History, Loader2, MoreVertical } from 'lucide-react' import Link from 'next/link' import { useState } from 'react' @@ -7,21 +7,26 @@ import { useParams } from 'common' import { SQLCodeBlock } from 'components/interfaces/Auth/ThirdPartyAuthForm/SqlCodeBlock' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' import { CronJob } from 'data/database-cron-jobs/database-cron-jobs-query' +import { useCronJobRunQuery } from 'data/database-cron-jobs/database-cron-jobs-run-query' import { useDatabaseCronJobToggleMutation } from 'data/database-cron-jobs/database-cron-jobs-toggle-mutation' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { TelemetryActions } from 'lib/constants/telemetry' import { + Badge, Button, + cn, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, - Input, Label_Shadcn_, Switch, } from 'ui' +import { TimestampInfo } from 'ui-patterns' +import { Input } from 'ui-patterns/DataInputs/Input' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' +import { convertCronToString, getNextRun } from './CronJobs.utils' interface CronJobCardProps { job: CronJob @@ -35,17 +40,18 @@ export const CronJobCard = ({ job, onEditCronJob, onDeleteCronJob }: CronJobCard const [toggleConfirmationModalShown, showToggleConfirmationModal] = useState(false) + const { data } = useCronJobRunQuery({ + projectRef: ref, + connectionString: selectedProject?.connectionString, + jobId: job.jobid, + }) + const lastRun = data?.start_time ? dayjs(data.start_time).valueOf() : undefined + const nextRun = getNextRun(job.schedule, data?.start_time) + const schedule = convertCronToString(job.schedule) + const { mutate: sendEvent } = useSendEventMutation() const { mutate: toggleDatabaseCronJob, isLoading } = useDatabaseCronJobToggleMutation() - // pg_cron can also use "30 seconds" format for schedule. Cronstrue doesn't understand that format so just use the - // original schedule when cronstrue throws - let schedule = job.schedule - try { - const scheduleString = CronToString(job.schedule) - schedule = scheduleString - } catch {} - return ( <>
@@ -120,12 +126,59 @@ export const CronJobCard = ({ job, onEditCronJob, onDeleteCronJob }: CronJobCard
Schedule
- + +
+
+
+ Last run +
+
+ {lastRun ? ( + <> + + {data?.status && ( + + {data.status} + + )} + + ) : ( + 'Job has not been run yet' + )} +
+
+
+
+ Next run +
+
+ {nextRun ? ( + + ) : ( + 'Unable to parse next run for job' + )} +
diff --git a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobs.utils.ts b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobs.utils.ts index 07210781d20..317bfed450d 100644 --- a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobs.utils.ts +++ b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobs.utils.ts @@ -1,4 +1,6 @@ +import parser from 'cron-parser' import { toString as CronToString } from 'cronstrue' +import dayjs from 'dayjs' import { CronJobType } from './CreateCronJobSheet' import { HTTPHeader } from './CronJobs.constants' @@ -50,7 +52,7 @@ export const parseCronJobCommand = (originalCommand: string): CronJobType => { /select net\.([^']+)\(\s*url:='([^']+)',\s*headers:=jsonb_build_object\(([^)]*)\),(?:\s*body:='(.*)',)?\s*timeout_milliseconds:=(\d+) \)/i ) || [] - // if the match has been unsuccesful, the cron may be created with the previous encoding/parsing. + // if the match has been unsuccessful, the cron may be created with the previous encoding/parsing. if (matches.length === 0) { matches = command.match( @@ -190,3 +192,41 @@ export const formatScheduleString = (value: string) => { return '' } } + +export const convertCronToString = (schedule: string) => { + // pg_cron can also use "30 seconds" format for schedule. Cronstrue doesn't understand that format so just use the + // original schedule when cronstrue throws + try { + return CronToString(schedule) + } catch (error) { + return schedule + } +} + +export const getNextRun = (schedule: string, lastRun?: string) => { + // cron-parser can only deal with the traditional cron syntax but technically users can also + // use strings like "30 seconds" now, For the latter case, we try our best to parse the next run + // (can't guarantee as scope is quite big) + if (schedule.includes('*')) { + try { + const interval = parser.parseExpression(schedule) + return interval.next().getTime() + } catch (error) { + return undefined + } + } else { + // [Joshen] Only going to attempt to parse if the schedule is as simple as "n seconds", "n minutes", or "n days" + // Returned undefined otherwise - we can revisit this perhaps if we get feedback about this + const [value, unit] = schedule.split(' ') + if ( + ['seconds', 'minutes', 'days'].includes(unit) && + !Number.isNaN(Number(value)) && + lastRun !== undefined + ) { + const parsedLastRun = dayjs(lastRun).add(Number(value), unit as dayjs.ManipulateType) + return parsedLastRun.valueOf() + } else { + return undefined + } + } +} diff --git a/apps/studio/components/interfaces/Integrations/Vault/Keys/EncryptionKeysManagement.tsx b/apps/studio/components/interfaces/Integrations/Vault/Keys/EncryptionKeysManagement.tsx index 5d427bcac86..4e65964934c 100644 --- a/apps/studio/components/interfaces/Integrations/Vault/Keys/EncryptionKeysManagement.tsx +++ b/apps/studio/components/interfaces/Integrations/Vault/Keys/EncryptionKeysManagement.tsx @@ -14,7 +14,8 @@ import { usePgSodiumKeyDeleteMutation } from 'data/pg-sodium-keys/pg-sodium-key- import { usePgSodiumKeysQuery } from 'data/pg-sodium-keys/pg-sodium-keys-query' import { useCheckPermissions } from 'hooks/misc/useCheckPermissions' import { Key, Loader, Search, Trash, X } from 'lucide-react' -import { Alert, Button, Form, Input, Listbox, Modal, Separator } from 'ui' +import { Button, Form, Input, Listbox, Modal, Separator } from 'ui' +import { Admonition } from 'ui-patterns' const DEFAULT_KEY_NAME = 'No description provided' @@ -256,13 +257,12 @@ export const EncryptionKeysManagement = () => { header="Confirm to delete key" > - - Do ensure that the key is not currently in use to prevent any issues. - +

The following key will be permanently removed and cannot be recovered.

diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/PaymentMethods/DeletePaymentMethodModal.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/PaymentMethods/DeletePaymentMethodModal.tsx index 62b27c9d2a2..e05ff07ce4b 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/PaymentMethods/DeletePaymentMethodModal.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/PaymentMethods/DeletePaymentMethodModal.tsx @@ -1,9 +1,10 @@ import { useParams } from 'common' import { toast } from 'sonner' -import { Alert, Button, Modal } from 'ui' +import { Button, Modal } from 'ui' import { useOrganizationPaymentMethodDeleteMutation } from 'data/organizations/organization-payment-method-delete-mutation' import type { OrganizationPaymentMethod } from 'data/organizations/organization-payment-methods-query' +import { Admonition } from 'ui-patterns' export interface DeletePaymentMethodModalProps { selectedPaymentMethod?: OrganizationPaymentMethod @@ -55,9 +56,11 @@ const DeletePaymentMethodModal = ({ } > - -

You can re-add the payment method any time.

-
+
) diff --git a/apps/studio/components/interfaces/Organization/OAuthApps/AuthorizeRequesterDetails.tsx b/apps/studio/components/interfaces/Organization/OAuthApps/AuthorizeRequesterDetails.tsx index a8590363441..fe2a4ce16fb 100644 --- a/apps/studio/components/interfaces/Organization/OAuthApps/AuthorizeRequesterDetails.tsx +++ b/apps/studio/components/interfaces/Organization/OAuthApps/AuthorizeRequesterDetails.tsx @@ -78,6 +78,11 @@ const AuthorizeRequesterDetails = ({ selected organization and all of its projects.

+ { return (
+ { toast.error(`Failed to move query: ${error.message}`) }, diff --git a/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx b/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx index 2f5b532fb11..2cfa5eea5ed 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx +++ b/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx @@ -426,7 +426,10 @@ export const SQLEditor = () => { } } - sendEvent({ action: TelemetryActions.ASSISTANT_SUGGESTION_ACCEPTED }) + sendEvent({ + action: TelemetryActions.ASSISTANT_SQL_DIFF_HANDLER_EVALUATED, + properties: { handlerAccepted: true }, + }) setSelectedDiffType(DiffType.Modification) resetPrompt() @@ -447,7 +450,10 @@ export const SQLEditor = () => { ]) const discardAiHandler = useCallback(() => { - sendEvent({ action: TelemetryActions.ASSISTANT_SUGGESTION_REJECTED }) + sendEvent({ + action: TelemetryActions.ASSISTANT_SQL_DIFF_HANDLER_EVALUATED, + properties: { handlerAccepted: false }, + }) resetPrompt() closeDiff() }, [closeDiff, resetPrompt, sendEvent]) diff --git a/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLQuickstarts.tsx b/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLQuickstarts.tsx index 1ee8e1d403f..5f1c2fba0b2 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLQuickstarts.tsx +++ b/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLQuickstarts.tsx @@ -78,7 +78,7 @@ const SQLQuickstarts = () => { handleNewQuery(sql, title) sendEvent({ action: TelemetryActions.SQL_EDITOR_QUICKSTART_CLICKED, - properties: { title }, + properties: { quickstartName: title }, }) }} /> diff --git a/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx b/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx index 93931d586ed..fc8e1014ff3 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx +++ b/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx @@ -78,7 +78,7 @@ const SQLTemplates = () => { handleNewQuery(sql, title) sendEvent({ action: TelemetryActions.SQL_EDITOR_TEMPLATE_CLICKED, - properties: { title }, + properties: { templateName: title }, }) }} /> diff --git a/apps/studio/components/interfaces/Settings/Logs/LogTable.tsx b/apps/studio/components/interfaces/Settings/Logs/LogTable.tsx index f83f79c0f8d..c7c4cf89dbc 100644 --- a/apps/studio/components/interfaces/Settings/Logs/LogTable.tsx +++ b/apps/studio/components/interfaces/Settings/Logs/LogTable.tsx @@ -5,6 +5,7 @@ import { ChevronDown, Clipboard, Download, Eye, EyeOff, Play } from 'lucide-reac import { Key, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react' import DataGrid, { Column, RenderRowProps, Row } from 'react-data-grid' import { toast } from 'sonner' +import Papa from 'papaparse' import { ButtonTooltip } from 'components/ui/ButtonTooltip' import CSVButton from 'components/ui/CSVButton' @@ -92,15 +93,10 @@ const LogTable = ({ const { profile } = useProfile() const { show: showContextMenu } = useContextMenu() + const downloadCsvRef = useRef(null) const [cellPosition, setCellPosition] = useState() - const [selectionOpen, setSelectionOpen] = useState(false) - - useEffect(() => { - if (selectedLog || isSelectedLogLoading) { - setSelectionOpen(true) - } - }, [selectedLog, isSelectedLogLoading]) + const [selectedRow, setSelectedRow] = useState(null) const canCreateLogQuery = useCheckPermissions(PermissionAction.CREATE, 'user_content', { resource: { type: 'log_sql', owner_id: profile?.id }, @@ -148,6 +144,7 @@ const LogTable = ({ }) let columns = DEFAULT_COLUMNS + if (!queryType) { columns } else { @@ -235,21 +232,10 @@ const LogTable = ({ } } - const copyResultsToClipboard = () => { - copyToClipboard(stringData, () => { - toast.success('Results copied to clipboard') - }) - } - - const downloadCsvRef = useRef(null) - function downloadCSV() { - downloadCsvRef.current?.click() - } - const LogsExplorerTableHeader = () => (
- + { + downloadCsvRef.current?.click() + }} + className="space-x-2" + >
Download CSV
- + { + const csvData = Papa.unparse(data) + copyToClipboard(csvData, () => { + toast.success('Results copied to clipboard') + }) + }} + className="space-x-2" + > -
Copy to clipboard
+
Copy as CSV
+
+ { + copyToClipboard(stringData, () => { + toast.success('Results copied to clipboard') + }) + }} + className="space-x-2" + > + +
Copy as JSON
@@ -352,14 +362,22 @@ const LogTable = ({ else return } - const [selectedRow, setSelectedRow] = useState(null) - function onRowClick(row: LogData) { setSelectedRow(row) onSelectedLogChange?.(row) } + useEffect(() => { + if (selectedLog || isSelectedLogLoading) { + setSelectionOpen(true) + } + if (!isSelectedLogLoading && !selectedLog) { + setSelectedRow(null) + } + }, [selectedLog, isSelectedLogLoading]) + if (!data) return null + return (
{!queryType && } @@ -369,7 +387,7 @@ const LogTable = ({ `m.project like '${value}%'`, }, + pg_cron_logs: { + ..._SQL_FILTER_COMMON, + }, } export enum LogsTableName { diff --git a/apps/studio/components/interfaces/Settings/Logs/Logs.utils.ts b/apps/studio/components/interfaces/Settings/Logs/Logs.utils.ts index 7367bf296ee..527194f63af 100644 --- a/apps/studio/components/interfaces/Settings/Logs/Logs.utils.ts +++ b/apps/studio/components/interfaces/Settings/Logs/Logs.utils.ts @@ -458,8 +458,18 @@ export const fillTimeseries = ( valueKey: string | string[], defaultValue: number, min?: string, - max?: string + max?: string, + minPointsToFill: number = 20 ) => { + // If we have more points than minPointsToFill, just normalize timestamps and return + if (timeseriesData.length > minPointsToFill) { + return timeseriesData.map((datum) => { + const iso = dayjs.utc(datum[timestampKey]).toISOString() + datum[timestampKey] = iso + return datum + }) + } + if (timeseriesData.length <= 1 && !(min || max)) return timeseriesData const dates: unknown[] = timeseriesData.map((datum) => dayjs.utc(datum[timestampKey])) diff --git a/apps/studio/components/interfaces/Settings/Logs/LogsPreviewer.tsx b/apps/studio/components/interfaces/Settings/Logs/LogsPreviewer.tsx index ee03bbd0c93..8af8a9c74c3 100644 --- a/apps/studio/components/interfaces/Settings/Logs/LogsPreviewer.tsx +++ b/apps/studio/components/interfaces/Settings/Logs/LogsPreviewer.tsx @@ -39,6 +39,7 @@ interface LogsPreviewerProps { condensedLayout?: boolean tableName?: LogsTableName EmptyState?: React.ReactNode + filterPanelClassName?: string } export const LogsPreviewer = ({ projectRef, @@ -48,6 +49,7 @@ export const LogsPreviewer = ({ tableName, children, EmptyState, + filterPanelClassName, }: PropsWithChildren) => { const router = useRouter() const { s, ite, its, db } = useParams() @@ -150,6 +152,7 @@ export const LogsPreviewer = ({ } const handleSearch: LogSearchCallback = async (event, { query, to, from }) => { if (event === 'search-input-change') { + setSelectedLogId(null) setFilters((prev) => ({ ...prev, search_query: query })) router.push({ pathname: router.pathname, @@ -199,6 +202,7 @@ export const LogsPreviewer = ({ return (
void filters: Filters onSelectedDatabaseChange: (id: string) => void + className?: string } /** @@ -61,6 +70,7 @@ const PreviewFilterPanel = ({ filters, table, onSelectedDatabaseChange, + className, }: PreviewFilterPanelProps) => { const router = useRouter() const { ref } = useParams() @@ -121,7 +131,13 @@ const PreviewFilterPanel = ({ const handleInputSearch = (query: string) => onSearch('search-input-change', { query }) return ( -
+
handleInputSearch(search)} - className="mx-2 text-foreground-light hover:text-foreground" - > - {'↲'} - - ) +
+ {hasEdits && ( + ↲} + type="text" + className="px-1 h-[20px]" + onClick={() => handleInputSearch(search)} + tooltip={{ content: { side: 'bottom', text: 'Search for events' } }} + /> + )} + + {search.length > 0 && ( + } + type="text" + className="p-[1px] h-[20px]" + onClick={() => handleInputSearch('')} + tooltip={{ content: { side: 'bottom', text: 'Clear search' } }} + /> + )} +
} /> diff --git a/apps/studio/components/interfaces/SignIn/SignInForm.tsx b/apps/studio/components/interfaces/SignIn/SignInForm.tsx index 1b72d45fa83..2d202b7ee90 100644 --- a/apps/studio/components/interfaces/SignIn/SignInForm.tsx +++ b/apps/studio/components/interfaces/SignIn/SignInForm.tsx @@ -9,9 +9,11 @@ import { toast } from 'sonner' import { object, string } from 'yup' import { getMfaAuthenticatorAssuranceLevel } from 'data/profile/mfa-authenticator-assurance-level-query' +import { useSendEventMutation } from 'data/telemetry/send-event-mutation' +import { useLastSignIn } from 'hooks/misc/useLastSignIn' +import { TelemetryActions } from 'lib/constants/telemetry' import { auth, buildPathWithParams, getReturnToPath } from 'lib/gotrue' import { Button, Form, Input } from 'ui' -import { useLastSignIn } from 'hooks/misc/useLastSignIn' import { LastSignInWrapper } from './LastSignInWrapper' const signInSchema = object({ @@ -22,11 +24,13 @@ const signInSchema = object({ const SignInForm = () => { const router = useRouter() const queryClient = useQueryClient() - const [lastSignIn, setLastSignIn] = useLastSignIn() + const [_, setLastSignIn] = useLastSignIn() const [captchaToken, setCaptchaToken] = useState(null) const captchaRef = useRef(null) + const { mutate: sendEvent } = useSendEventMutation() + const onSignIn = async ({ email, password }: { email: string; password: string }) => { const toastId = toast.loading('Signing in...') @@ -56,6 +60,7 @@ const SignInForm = () => { } toast.success(`Signed in successfully!`, { id: toastId }) + sendEvent({ action: TelemetryActions.SIGN_IN, properties: { category: 'account' } }) await queryClient.resetQueries() const returnTo = getReturnToPath() // since we're already on the /sign-in page, prevent redirect loops diff --git a/apps/studio/components/interfaces/SignIn/SignInSSOForm.tsx b/apps/studio/components/interfaces/SignIn/SignInSSOForm.tsx index 5a31e6baf26..93b2e16951a 100644 --- a/apps/studio/components/interfaces/SignIn/SignInSSOForm.tsx +++ b/apps/studio/components/interfaces/SignIn/SignInSSOForm.tsx @@ -5,10 +5,12 @@ import { useRef, useState } from 'react' import { toast } from 'sonner' import { object, string } from 'yup' +import { useSendEventMutation } from 'data/telemetry/send-event-mutation' +import { useLastSignIn } from 'hooks/misc/useLastSignIn' import { BASE_PATH } from 'lib/constants' +import { TelemetryActions } from 'lib/constants/telemetry' import { auth, buildPathWithParams } from 'lib/gotrue' import { Button, Form, Input } from 'ui' -import { useLastSignIn } from 'hooks/misc/useLastSignIn' const WHITELIST_ERRORS = ['No SSO provider assigned for this domain'] @@ -16,10 +18,14 @@ const SignInSSOForm = () => { const queryClient = useQueryClient() const captchaRef = useRef(null) const [captchaToken, setCaptchaToken] = useState(null) - const [lastSignInUsed, setLastSignInUsed] = useLastSignIn() + const [_, setLastSignInUsed] = useLastSignIn() + const signInSchema = object({ email: string().email('Must be a valid email').required('Email is required'), }) + + const { mutate: sendEvent } = useSendEventMutation() + const onSignIn = async ({ email }: { email: string }) => { const toastId = toast.loading('Signing in...') @@ -47,6 +53,7 @@ const SignInSSOForm = () => { }) if (!error) { + sendEvent({ action: TelemetryActions.SIGN_IN, properties: { category: 'account' } }) await queryClient.resetQueries() setLastSignInUsed('sso') if (data) { diff --git a/apps/studio/components/layouts/FunctionsLayout/FunctionsLayout.tsx b/apps/studio/components/layouts/FunctionsLayout/FunctionsLayout.tsx index 1b3a03d852d..bf5b9d1dc36 100644 --- a/apps/studio/components/layouts/FunctionsLayout/FunctionsLayout.tsx +++ b/apps/studio/components/layouts/FunctionsLayout/FunctionsLayout.tsx @@ -89,12 +89,12 @@ const FunctionsLayout = ({ title, children }: PropsWithChildren {name && ( -
+
-
{name}
+

{name}

)}
diff --git a/apps/studio/components/layouts/OrganizationLayout.tsx b/apps/studio/components/layouts/OrganizationLayout.tsx index 802b1235097..d3a71f986dc 100644 --- a/apps/studio/components/layouts/OrganizationLayout.tsx +++ b/apps/studio/components/layouts/OrganizationLayout.tsx @@ -78,7 +78,7 @@ const OrganizationLayout = ({ children }: PropsWithChildren<{}>) => { {selectedOrganization?.name ?? 'Organization'} settings {filteredNavMenuItems.map((item) => ( diff --git a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/LayoutHeader.tsx b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/LayoutHeader.tsx index 8a37500aa87..9a05ec59bb6 100644 --- a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/LayoutHeader.tsx +++ b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/LayoutHeader.tsx @@ -102,7 +102,7 @@ const LayoutHeader = ({
)}
-
+
{projectRef && ( <> diff --git a/apps/studio/components/layouts/SQLEditorLayout/SQLEditorNavV2/SQLEditorNav.tsx b/apps/studio/components/layouts/SQLEditorLayout/SQLEditorNavV2/SQLEditorNav.tsx index 6ee9cc784f6..31e1163ecb4 100644 --- a/apps/studio/components/layouts/SQLEditorLayout/SQLEditorNavV2/SQLEditorNav.tsx +++ b/apps/studio/components/layouts/SQLEditorLayout/SQLEditorNavV2/SQLEditorNav.tsx @@ -13,6 +13,7 @@ import { createSqlSnippetSkeletonV2 } from 'components/interfaces/SQLEditor/SQLE import { useContentCountQuery } from 'data/content/content-count-query' import { useContentDeleteMutation } from 'data/content/content-delete-mutation' import { getContentById } from 'data/content/content-id-query' +import { useContentUpsertMutation } from 'data/content/content-upsert-mutation' import { useSQLSnippetFoldersDeleteMutation } from 'data/content/sql-folders-delete-mutation' import { Snippet, SnippetFolder, useSQLSnippetFoldersQuery } from 'data/content/sql-folders-query' import { useSqlSnippetsQuery } from 'data/content/sql-snippets-query' @@ -24,6 +25,7 @@ import { useSnippetFolders, useSqlEditorV2StateSnapshot, } from 'state/sql-editor-v2' +import { SqlSnippets } from 'types' import { cn, Separator, TreeView } from 'ui' import { InnerSideBarEmptyPanel, @@ -34,10 +36,8 @@ import { } from 'ui-patterns' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import SQLEditorLoadingSnippets from './SQLEditorLoadingSnippets' -import { ROOT_NODE, formatFolderResponseForTreeView, getLastItemIds } from './SQLEditorNav.utils' +import { formatFolderResponseForTreeView, getLastItemIds, ROOT_NODE } from './SQLEditorNav.utils' import { SQLEditorTreeViewItem } from './SQLEditorTreeViewItem' -import { useContentUpsertV2Mutation } from 'data/content/content-upsert-v2-mutation' -import { SqlSnippets } from 'types' interface SQLEditorNavProps { searchText: string @@ -331,7 +331,7 @@ export const SQLEditorNav = ({ // Snippet mutations from RQ // ========================== - const { mutate: upsertContent, isLoading: isUpserting } = useContentUpsertV2Mutation({ + const { mutate: upsertContent, isLoading: isUpserting } = useContentUpsertMutation({ onError: (error) => { toast.error(`Failed to update query: ${error.message}`) }, diff --git a/apps/studio/components/layouts/TableEditorLayout/EntityListItem.tsx b/apps/studio/components/layouts/TableEditorLayout/EntityListItem.tsx index 23ad874970b..02e617995be 100644 --- a/apps/studio/components/layouts/TableEditorLayout/EntityListItem.tsx +++ b/apps/studio/components/layouts/TableEditorLayout/EntityListItem.tsx @@ -267,196 +267,198 @@ const EntityListItem: ItemRenderer = ({ } return ( - - - - {entity.type === ENTITY_TYPE.TABLE ? ( - - ) : entity.type === ENTITY_TYPE.VIEW ? ( - - ) : ( -
- {Object.entries(ENTITY_TYPE) - .find(([, value]) => value === entity.type)?.[0]?.[0] - ?.toUpperCase()} -
- )} -
- - - - {formatTooltipText(entity.type)} - - -
-
+ - + + {entity.type === ENTITY_TYPE.TABLE ? ( + + ) : entity.type === ENTITY_TYPE.VIEW ? ( + + ) : ( +
+ {Object.entries(ENTITY_TYPE) + .find(([, value]) => value === entity.type)?.[0]?.[0] + ?.toUpperCase()} +
+ )} +
+ + + + {formatTooltipText(entity.type)} + + + +
- {entity.name} - - -
- - {canEdit && ( - - - - - - { - e.stopPropagation() - copyToClipboard(entity.name) - }} - > - - Copy name - - - {entity.type === ENTITY_TYPE.TABLE && ( - <> - - - { - e.stopPropagation() - snap.onEditTable() - }} - > - - Edit table - - { - e.stopPropagation() - snap.onDuplicateTable() - }} - > - - Duplicate table - - - - - View policies - - - - - - - Export data - - - { - e.stopPropagation() - exportTableAsCSV() - }} - > - Export table as CSV - - { - e.stopPropagation() - exportTableAsSQL() - }} - > - Export table as SQL - - - - - - { - e.stopPropagation() - snap.onDeleteTable() - }} - > - - Delete table - - + - - )} -
+ > + {entity.name} + + +
+ + {canEdit && ( + + + + + + { + e.stopPropagation() + copyToClipboard(entity.name) + }} + > + + Copy name + + + {entity.type === ENTITY_TYPE.TABLE && ( + <> + + + { + e.stopPropagation() + snap.onEditTable() + }} + > + + Edit table + + { + e.stopPropagation() + snap.onDuplicateTable() + }} + > + + Duplicate table + + + + + View policies + + + + + + + Export data + + + { + e.stopPropagation() + exportTableAsCSV() + }} + > + Export table as CSV + + { + e.stopPropagation() + exportTableAsSQL() + }} + > + Export table as SQL + + + + + + { + e.stopPropagation() + snap.onDeleteTable() + }} + > + + Delete table + + + )} + + + )} +
+
) } diff --git a/apps/studio/components/layouts/TableEditorLayout/TableEditorMenu.tsx b/apps/studio/components/layouts/TableEditorLayout/TableEditorMenu.tsx index c233915a21e..22d28e67044 100644 --- a/apps/studio/components/layouts/TableEditorLayout/TableEditorMenu.tsx +++ b/apps/studio/components/layouts/TableEditorLayout/TableEditorMenu.tsx @@ -269,7 +269,7 @@ const TableEditorMenu = () => { /> )} {(entityTypes?.length ?? 0) > 0 && ( -
+
- - {(!isProjectActive || !canCreateCredentials) && ( + {disableCreation && ( {!isProjectActive ? 'Restore your project to create new access keys' - : !canCreateCredentials - ? 'You need additional permissions to create new access keys' - : ''} + : !isS3ConnectionEnabled + ? 'Connection via S3 protocol is currently disabled' + : !canCreateCredentials + ? 'You need additional permissions to create new access keys' + : ''} )} @@ -159,7 +163,7 @@ export const CreateCredentialModal = ({ visible, onOpenChange }: CreateCredentia ( + render={() => ( { const [deleteCred, setDeleteCred] = useState<{ id: string; description: string }>() const canReadS3Credentials = useCheckPermissions(PermissionAction.STORAGE_ADMIN_READ, '*') + const canUpdateStorageSettings = useCheckPermissions(PermissionAction.STORAGE_ADMIN_WRITE, '*') const { data: settings } = useProjectSettingsV2Query({ projectRef }) - const { data: storageCreds, ...storageCredsQuery } = useStorageCredentialsQuery( + const { + data: config, + error: configError, + isSuccess: isSuccessStorageConfig, + isError: isErrorStorageConfig, + } = useProjectStorageConfigQuery({ projectRef }) + const { data: storageCreds, isLoading: isLoadingStorageCreds } = useStorageCredentialsQuery( { projectRef }, { enabled: canReadS3Credentials } ) + const { mutate: updateStorageConfig, isLoading: isUpdating } = + useProjectStorageConfigUpdateUpdateMutation({ + onSuccess: (_, vars) => { + if (vars.features) form.reset({ s3ConnectionEnabled: vars.features.s3Protocol.enabled }) + toast.success('Successfully updated storage settings') + }, + }) + + const FormSchema = z.object({ s3ConnectionEnabled: z.boolean() }) + const form = useForm>({ + resolver: zodResolver(FormSchema), + defaultValues: { s3ConnectionEnabled: false }, + }) + const protocol = settings?.app_config?.protocol ?? 'https' const endpoint = settings?.app_config?.endpoint const hasStorageCreds = storageCreds?.data && storageCreds.data.length > 0 const s3connectionUrl = getConnectionURL(projectRef ?? '', protocol, endpoint) + const onSubmit: SubmitHandler> = async (data) => { + if (!projectRef) return console.error('Project ref is required') + if (!config) return console.error('Storage config is required') + updateStorageConfig({ + projectRef, + features: { + ...config?.features, + s3Protocol: { enabled: data.s3ConnectionEnabled }, + }, + }) + } + + useEffect(() => { + form.reset({ s3ConnectionEnabled: config?.features.s3Protocol.enabled }) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isSuccessStorageConfig]) + return ( <> -
- - {projectIsLoading ? ( - - ) : isProjectActive ? ( - - - - - {!projectIsLoading && ( - - - - )} - - ) : ( - - - Project is paused - - To connect to your S3 bucket, you need to restore your project. - -
- -
-
- )} -
+ +
+ + {projectIsLoading ? ( + + ) : isProjectActive ? ( + + ( + + + + + + )} + /> + + {isErrorStorageConfig && ( +
+ +
+ )} + + + +
+ + + + {!projectIsLoading && ( + + + + )} +
+ + + +
+ {!canUpdateStorageSettings ? ( +

+ You need additional permissions to update storage settings +

+ ) : ( +
+ )} +
+ + +
+
+ + ) : ( + + + Project is paused + + To connect to your S3 bucket, you need to restore your project. + +
+ +
+
+ )} + +
{ ) : ( <> - {storageCredsQuery.isLoading ? ( + {isLoadingStorageCreds ? (
diff --git a/apps/studio/components/to-be-cleaned/Storage/StorageSettings/StorageSettings.tsx b/apps/studio/components/to-be-cleaned/Storage/StorageSettings/StorageSettings.tsx index acc0d6d5ca9..5ad69e661f2 100644 --- a/apps/studio/components/to-be-cleaned/Storage/StorageSettings/StorageSettings.tsx +++ b/apps/studio/components/to-be-cleaned/Storage/StorageSettings/StorageSettings.tsx @@ -8,6 +8,7 @@ import * as z from 'zod' import { useParams } from 'common' import AlertError from 'components/ui/AlertError' +import { InlineLink } from 'components/ui/InlineLink' import NoPermission from 'components/ui/NoPermission' import { GenericSkeletonLoader } from 'components/ui/ShimmeringLoader' import UpgradeToPro from 'components/ui/UpgradeToPro' @@ -35,7 +36,6 @@ import { } from 'ui' import { STORAGE_FILE_SIZE_LIMIT_MAX_BYTES, StorageSizeUnits } from './StorageSettings.constants' import { convertFromBytes, convertToBytes } from './StorageSettings.utils' -import { Markdown } from 'components/interfaces/Markdown' interface StorageSettingsState { fileSizeLimit: number @@ -54,7 +54,7 @@ const StorageSettings = () => { isLoading, isSuccess, isError, - } = useProjectStorageConfigQuery({ projectRef }, { enabled: IS_PLATFORM }) + } = useProjectStorageConfigQuery({ projectRef }) const organization = useSelectedOrganization() const { data: subscription, isSuccess: isSuccessSubscription } = useOrgSubscriptionQuery({ @@ -116,7 +116,7 @@ const StorageSettings = () => { resolver: zodResolver(FormSchema), defaultValues: initialValues, }) - const { fileSizeLimit: limit, unit: storageUnit, imageTransformationEnabled } = form.watch() + const { fileSizeLimit: limit, unit: storageUnit } = form.watch() const { mutate: updateStorageConfig, isLoading: isUpdating } = useProjectStorageConfigUpdateUpdateMutation({ @@ -127,13 +127,14 @@ const StorageSettings = () => { const onSubmit: SubmitHandler> = async (data) => { if (!projectRef) return console.error('Project ref is required') + if (!config) return console.error('Storage config is required') + updateStorageConfig({ projectRef, fileSizeLimit: convertToBytes(data.fileSizeLimit, data.unit), features: { - imageTransformation: { - enabled: data.imageTransformationEnabled, - }, + imageTransformation: { enabled: data.imageTransformationEnabled }, + s3Protocol: config.features.s3Protocol, }, }) } @@ -153,7 +154,7 @@ const StorageSettings = () => { {isSuccess && (
-
+

Upload file size limit

@@ -251,7 +252,13 @@ const StorageSettings = () => { )} />
- +

+ Optimize and resize images on the fly.{' '} + + Learn more + + . +

diff --git a/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx b/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx index 2bb77ae57da..d1835325c94 100644 --- a/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx +++ b/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx @@ -511,7 +511,9 @@ export const AIAssistant = ({ title="OpenAI API key not set" description={ } /> diff --git a/apps/studio/components/ui/AIAssistantPanel/SqlSnippet.tsx b/apps/studio/components/ui/AIAssistantPanel/SqlSnippet.tsx index 47b3d10a056..87701f56f12 100644 --- a/apps/studio/components/ui/AIAssistantPanel/SqlSnippet.tsx +++ b/apps/studio/components/ui/AIAssistantPanel/SqlSnippet.tsx @@ -213,7 +213,7 @@ export const SqlCard = ({ }) sendEvent({ - action: TelemetryActions.ASSISTANT_SUGGESTION_RAN, + action: TelemetryActions.ASSISTANT_SUGGESTION_RUN_QUERY_CLICKED, properties: { type: 'mutation', category: identifyQueryType(sql) ?? 'unknown', @@ -261,7 +261,13 @@ export const SqlCard = ({ icon={} onClick={() => { handleEditInSQLEditor() - sendEvent({ action: TelemetryActions.ASSISTANT_EDIT_SQL_CLICKED }) + sendEvent({ + action: TelemetryActions.ASSISTANT_EDIT_IN_SQL_EDITOR_CLICKED, + properties: { + isInSQLEditor, + isInNewSnippet, + }, + }) }} tooltip={{ content: { side: 'bottom', text: 'Edit in SQL Editor' } }} /> @@ -306,7 +312,7 @@ export const SqlCard = ({ handleExecute() if (isReadOnlySelect(sql)) { sendEvent({ - action: TelemetryActions.ASSISTANT_SUGGESTION_RAN, + action: TelemetryActions.ASSISTANT_SUGGESTION_RUN_QUERY_CLICKED, properties: { type: 'select' }, }) } diff --git a/apps/studio/components/ui/Charts/BarChart.tsx b/apps/studio/components/ui/Charts/BarChart.tsx index aa2ec9766b6..addd36773ad 100644 --- a/apps/studio/components/ui/Charts/BarChart.tsx +++ b/apps/studio/components/ui/Charts/BarChart.tsx @@ -111,11 +111,7 @@ const BarChart = ({ title={title} format={format} customDateFormat={customDateFormat} - highlightedValue={ - typeof resolvedHighlightedValue === 'number' - ? numberFormatter(resolvedHighlightedValue, valuePrecision) - : resolvedHighlightedValue - } + highlightedValue={resolvedHighlightedValue} highlightedLabel={resolvedHighlightedLabel} minimalHeader={minimalHeader} /> diff --git a/apps/studio/components/ui/InlineLink.tsx b/apps/studio/components/ui/InlineLink.tsx index b33d5981939..f8f547457f8 100644 --- a/apps/studio/components/ui/InlineLink.tsx +++ b/apps/studio/components/ui/InlineLink.tsx @@ -7,7 +7,7 @@ interface InlineLinkProps { export const InlineLink = ({ href, children }: PropsWithChildren) => { const className = - 'underline transition underline-offset-2 decoration-foreground-lighter hover:decoration-foreground' + 'underline transition underline-offset-2 decoration-foreground-lighter hover:decoration-foreground text-foreground' if (href.startsWith('http')) { return ( diff --git a/apps/studio/components/ui/ProjectSettings/DisplayApiSettings.tsx b/apps/studio/components/ui/ProjectSettings/DisplayApiSettings.tsx index c45e703792a..9dfce64c2d1 100644 --- a/apps/studio/components/ui/ProjectSettings/DisplayApiSettings.tsx +++ b/apps/studio/components/ui/ProjectSettings/DisplayApiSettings.tsx @@ -132,7 +132,7 @@ const DisplayApiSettings = ({ legacy }: { legacy?: boolean }) => { )}
-
-
-
+
+
deleteUser(vars), { async onSuccess(data, variables, context) { - const { projectRef } = variables + const { projectRef, skipInvalidation = false } = variables - await Promise.all([ - queryClient.invalidateQueries(authKeys.usersInfinite(projectRef)), - queryClient.invalidateQueries(authKeys.usersCount(projectRef)), - ]) + if (!skipInvalidation) { + await Promise.all([ + queryClient.invalidateQueries(authKeys.usersInfinite(projectRef)), + queryClient.invalidateQueries(authKeys.usersCount(projectRef)), + ]) + } await onSuccess?.(data, variables, context) }, diff --git a/apps/studio/data/config/project-storage-config-query.ts b/apps/studio/data/config/project-storage-config-query.ts index 56cbaf50708..058fa95e9a9 100644 --- a/apps/studio/data/config/project-storage-config-query.ts +++ b/apps/studio/data/config/project-storage-config-query.ts @@ -4,6 +4,7 @@ import { components } from 'data/api' import { get, handleError } from 'data/fetchers' import type { ResponseError } from 'types' import { configKeys } from './keys' +import { IS_PLATFORM } from 'lib/constants' export type ProjectStorageConfigVariables = { projectRef?: string @@ -39,5 +40,5 @@ export const useProjectStorageConfigQuery = ( useQuery( configKeys.storage(projectRef), ({ signal }) => getProjectStorageConfig({ projectRef }, signal), - { enabled: enabled && typeof projectRef !== 'undefined', ...options } + { enabled: enabled && IS_PLATFORM && typeof projectRef !== 'undefined', ...options } ) diff --git a/apps/studio/data/config/project-storage-config-update-mutation.ts b/apps/studio/data/config/project-storage-config-update-mutation.ts index 9c55eeb2ec9..3ded8ea5326 100644 --- a/apps/studio/data/config/project-storage-config-update-mutation.ts +++ b/apps/studio/data/config/project-storage-config-update-mutation.ts @@ -1,19 +1,15 @@ import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query' import { toast } from 'sonner' -import { patch } from 'lib/common/fetch' -import { API_URL } from 'lib/constants' +import { handleError, patch } from 'data/fetchers' import type { ResponseError } from 'types' import { configKeys } from './keys' +import { components } from 'api-types' -export type ProjectStorageConfigUpdateUpdateVariables = { +type StorageConfigUpdatePayload = components['schemas']['UpdateStorageConfigBody'] + +export type ProjectStorageConfigUpdateUpdateVariables = StorageConfigUpdatePayload & { projectRef: string - fileSizeLimit: number - features?: { - imageTransformation: { - enabled: boolean - } - } } export async function updateProjectStorageConfigUpdate({ @@ -21,12 +17,12 @@ export async function updateProjectStorageConfigUpdate({ fileSizeLimit, features, }: ProjectStorageConfigUpdateUpdateVariables) { - const response = await patch(`${API_URL}/projects/${projectRef}/config/storage`, { - fileSizeLimit, - features, + const { data, error } = await patch('/platform/projects/{ref}/config/storage', { + params: { path: { ref: projectRef } }, + body: { fileSizeLimit, features }, }) - if (response.error) throw response.error - return response + if (error) handleError(error) + return data } type ProjectStorageConfigUpdateUpdateData = Awaited< diff --git a/apps/studio/data/content/content-upsert-mutation.ts b/apps/studio/data/content/content-upsert-mutation.ts index f0a2655afc0..2831298e4b7 100644 --- a/apps/studio/data/content/content-upsert-mutation.ts +++ b/apps/studio/data/content/content-upsert-mutation.ts @@ -25,17 +25,8 @@ export async function upsertContent( ) { const { data, error } = await put('/platform/projects/{ref}/content', { params: { path: { ref: projectRef } }, - body: { - id: payload.id, - name: payload.name, - description: payload.description, - project_id: payload.project_id, - owner_id: payload.owner_id, - type: payload.type, - visibility: payload.visibility, - content: payload.content as any, - folder_id: payload.folder_id, - }, + body: payload, + headers: { Version: '2' }, signal, }) if (error) handleError(error) diff --git a/apps/studio/data/content/content-upsert-v2-mutation.ts b/apps/studio/data/content/content-upsert-v2-mutation.ts deleted file mode 100644 index e456c1a7fce..00000000000 --- a/apps/studio/data/content/content-upsert-v2-mutation.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query' -import { toast } from 'sonner' - -import type { components } from 'data/api' -import { handleError, put } from 'data/fetchers' -import type { ResponseError } from 'types' -import type { Content } from './content-query' -import { contentKeys } from './keys' - -export type UpsertContentPayloadV2 = Omit< - components['schemas']['UpsertContentBodyDto'], - 'content' -> & { - content: Content['content'] -} - -export type UpsertContentVariables = { - projectRef: string - payload: UpsertContentPayloadV2 -} - -export async function upsertContent( - { projectRef, payload }: UpsertContentVariables, - signal?: AbortSignal -) { - const { data, error } = await put('/platform/projects/{ref}/content', { - params: { path: { ref: projectRef } }, - body: payload as any, - headers: { Version: '2' }, - signal, - }) - - if (error) handleError(error) - return data -} - -export type UpsertContentData = Awaited> - -export const useContentUpsertV2Mutation = ({ - onError, - onSuccess, - invalidateQueriesOnSuccess = true, - ...options -}: Omit< - UseMutationOptions, - 'mutationFn' -> & { - invalidateQueriesOnSuccess?: boolean -} = {}) => { - const queryClient = useQueryClient() - - return useMutation( - (args) => upsertContent(args), - { - async onSuccess(data, variables, context) { - const { projectRef } = variables - if (invalidateQueriesOnSuccess) { - await queryClient.invalidateQueries(contentKeys.allContentLists(projectRef)) - } - await onSuccess?.(data, variables, context) - }, - async onError(data, variables, context) { - if (onError === undefined) { - toast.error(`Failed to upsert content: ${data.message}`) - } else { - onError(data, variables, context) - } - }, - ...options, - } - ) -} diff --git a/apps/studio/data/database-cron-jobs/database-cron-jobs-run-query.ts b/apps/studio/data/database-cron-jobs/database-cron-jobs-run-query.ts new file mode 100644 index 00000000000..aaa92df92e2 --- /dev/null +++ b/apps/studio/data/database-cron-jobs/database-cron-jobs-run-query.ts @@ -0,0 +1,53 @@ +import { useQuery, UseQueryOptions } from '@tanstack/react-query' + +import { executeSql } from 'data/sql/execute-sql-query' +import { ResponseError } from 'types' +import { CronJobRun } from './database-cron-jobs-runs-infinite-query' +import { databaseCronJobsKeys } from './keys' + +export type DatabaseCronJobRunVariables = { + projectRef?: string + connectionString?: string + jobId: number +} + +export async function getDatabaseCronJobRun({ + projectRef, + connectionString, + jobId, +}: DatabaseCronJobRunVariables) { + if (!projectRef) throw new Error('Project ref is required') + + const query = ` + SELECT * FROM cron.job_run_details + WHERE jobid = '${jobId}' + ORDER BY start_time DESC + LIMIT 1` + + const { result } = await executeSql({ + projectRef, + connectionString, + sql: query, + }) + + return result[0] +} + +export type DatabaseCronJobRunData = CronJobRun +export type DatabaseCronJobRunError = ResponseError + +export const useCronJobRunQuery = ( + { projectRef, connectionString, jobId }: DatabaseCronJobRunVariables, + { + enabled = true, + ...options + }: UseQueryOptions = {} +) => + useQuery( + databaseCronJobsKeys.run(projectRef, jobId), + () => getDatabaseCronJobRun({ projectRef, connectionString, jobId }), + { + enabled: enabled && typeof projectRef !== 'undefined', + ...options, + } + ) diff --git a/apps/studio/data/database-cron-jobs/keys.ts b/apps/studio/data/database-cron-jobs/keys.ts index f132226a3d8..60f75b20a65 100644 --- a/apps/studio/data/database-cron-jobs/keys.ts +++ b/apps/studio/data/database-cron-jobs/keys.ts @@ -3,6 +3,13 @@ export const databaseCronJobsKeys = { delete: () => ['cron-jobs', 'delete'] as const, alter: () => ['cronjobs', 'alter'] as const, list: (projectRef: string | undefined) => ['projects', projectRef, 'cron-jobs'] as const, + run: (projectRef: string | undefined, jobId: number) => [ + 'projects', + projectRef, + 'cron-jobs', + jobId, + 'run', + ], runsInfinite: (projectRef: string | undefined, jobId: number, options?: object) => [ 'projects', projectRef, diff --git a/apps/studio/data/storage/s3-access-key-query.ts b/apps/studio/data/storage/s3-access-key-query.ts index 67a1e1acc4c..9bef91e3b3c 100644 --- a/apps/studio/data/storage/s3-access-key-query.ts +++ b/apps/studio/data/storage/s3-access-key-query.ts @@ -3,6 +3,7 @@ import { UseQueryOptions, useQuery } from '@tanstack/react-query' import { get, handleError } from 'data/fetchers' import { ResponseError } from 'types' import { storageCredentialsKeys } from './s3-access-key-keys' +import { IS_PLATFORM } from 'lib/constants' type StorageCredentialsVariables = { projectRef?: string } @@ -39,5 +40,5 @@ export const useStorageCredentialsQuery = ( useQuery( storageCredentialsKeys.credentials(projectRef), ({ signal }) => fetchStorageCredentials({ projectRef }, signal), - { enabled: enabled && typeof projectRef !== 'undefined', ...options } + { enabled: enabled && IS_PLATFORM && typeof projectRef !== 'undefined', ...options } ) diff --git a/apps/studio/data/telemetry/send-event-mutation.ts b/apps/studio/data/telemetry/send-event-mutation.ts index 2cc8968b088..ed38f2d7a76 100644 --- a/apps/studio/data/telemetry/send-event-mutation.ts +++ b/apps/studio/data/telemetry/send-event-mutation.ts @@ -16,12 +16,32 @@ import { FeaturePreviewsClickedEvent, FeaturePreviewEnabledEvent, FeaturePreviewDisabledEvent, + SqlEditorQuickstartClickedEvent, + SqlEditorTemplateClickedEvent, + SqlEditorResultDownloadCsvClickedEvent, + SqlEditorResultCopyMarkdownClickedEvent, + SqlEditorResultCopyJsonClickedEvent, TelemetryActions, + SignUpEvent, + SignInEvent, + RealtimeInspectorListenChannelClickedEvent, + RealtimeInspectorBroadcastSentEvent, + RealtimeInspectorMessageClickedEvent, + RealtimeInspectorCopyMessageClickedEvent, + RealtimeInspectorFiltersAppliedEvent, + RealtimeInspectorDatabaseRoleUpdatedEvent, + AssistantPromptSubmittedEvent, + AssistantDebugSubmittedEvent, + AssistantSuggestionRunQueryClickedEvent, + AssistantSqlDiffHandlerEvaluatedEvent, + AssistantEditInSqlEditorClickedEvent, } from 'lib/constants/telemetry' import { useRouter } from 'next/router' import type { ResponseError } from 'types' export type SendEventVariables = + | SignUpEvent + | SignInEvent | ConnectionStringCopiedEvent | CronJobCreatedEvent | CronJobUpdatedEvent @@ -33,6 +53,22 @@ export type SendEventVariables = | FeaturePreviewsClickedEvent | FeaturePreviewEnabledEvent | FeaturePreviewDisabledEvent + | RealtimeInspectorListenChannelClickedEvent + | RealtimeInspectorBroadcastSentEvent + | RealtimeInspectorMessageClickedEvent + | RealtimeInspectorCopyMessageClickedEvent + | RealtimeInspectorFiltersAppliedEvent + | RealtimeInspectorDatabaseRoleUpdatedEvent + | SqlEditorQuickstartClickedEvent + | SqlEditorTemplateClickedEvent + | SqlEditorResultDownloadCsvClickedEvent + | SqlEditorResultCopyMarkdownClickedEvent + | SqlEditorResultCopyJsonClickedEvent + | AssistantPromptSubmittedEvent + | AssistantDebugSubmittedEvent + | AssistantSuggestionRunQueryClickedEvent + | AssistantSqlDiffHandlerEvaluatedEvent + | AssistantEditInSqlEditorClickedEvent // TODO remove this once all events are documented | { diff --git a/apps/studio/lib/constants/infrastructure.ts b/apps/studio/lib/constants/infrastructure.ts index 5ef80c359a0..3aa2c40a89d 100644 --- a/apps/studio/lib/constants/infrastructure.ts +++ b/apps/studio/lib/constants/infrastructure.ts @@ -4,7 +4,7 @@ import { AWS_REGIONS, FLY_REGIONS } from 'shared-data' import type { components } from 'data/api' export const AWS_REGIONS_DEFAULT = - process.env.NEXT_PUBLIC_ENVIRONMENT !== 'prod' ? AWS_REGIONS.SOUTHEAST_ASIA : AWS_REGIONS.EAST_US + process.env.NEXT_PUBLIC_ENVIRONMENT !== 'prod' ? AWS_REGIONS.SOUTHEAST_ASIA : AWS_REGIONS.WEST_US // TO DO, change default to US region for prod export const FLY_REGIONS_DEFAULT = FLY_REGIONS.SOUTHEAST_ASIA diff --git a/apps/studio/lib/constants/telemetry.ts b/apps/studio/lib/constants/telemetry.ts index 80b1d84c5b8..4d636fe8abd 100644 --- a/apps/studio/lib/constants/telemetry.ts +++ b/apps/studio/lib/constants/telemetry.ts @@ -6,11 +6,9 @@ export enum TelemetryActions { ASSISTANT_PROMPT_SUBMITTED = 'assistant_prompt_submitted', ASSISTANT_DEBUG_SUBMITTED = 'assistant_debug_submitted', - ASSISTANT_SUGGESTION_RAN = 'assistant_suggestion_ran', - ASSISTANT_SUGGESTION_ACCEPTED = 'assistant_suggestion_accepted', - ASSISTANT_SUGGESTION_REJECTED = 'assistant_suggestion_rejected', - ASSISTANT_SUGGESTION_COPIED = 'assistant_suggestion_copied', - ASSISTANT_EDIT_SQL_CLICKED = 'assistant_edit_sql_clicked', + ASSISTANT_SUGGESTION_RUN_QUERY_CLICKED = 'assistant_suggestion_run_query_clicked', + ASSISTANT_SQL_DIFF_HANDLER_EVALUATED = 'assistant_sql_diff_handler_evaluated', + ASSISTANT_EDIT_IN_SQL_EDITOR_CLICKED = 'assistant_edit_in_sql_editor_clicked', CONNECTION_STRING_COPIED = 'connection_string_copied', @@ -40,6 +38,37 @@ export enum TelemetryActions { SQL_EDITOR_RESULT_COPY_JSON_CLICKED = 'sql_editor_result_copy_markdown_clicked', } +/** + * Triggered when a user signs up. When signing up with Email and Password, this is only triggered once user confirms their email. + * + * @group Events + * @source studio + * @page /sign-up + */ +export interface SignUpEvent { + action: TelemetryActions.SIGN_UP + properties: { + category: 'conversion' + } +} + +/** + * Triggered when a user signs in with Github, Email and Password or SSO. + * + * Some unintuitive behavior: + * - If signing up with GitHub the SignInEvent gets triggered first before the SignUpEvent. + * + * @group Events + * @source studio + * @page /sign-in-mfa + */ +export interface SignInEvent { + action: TelemetryActions.SIGN_IN + properties: { + category: 'account' + } +} + /** * User copied the database connection string. * @@ -208,3 +237,207 @@ export interface FeaturePreviewDisabledEvent { feature: string } } + +/** + * After selecting channel, either "Listening to channel" or "Start listening" button was clicked. + * + * @group Events + * @source studio + * @page /dashboard/project/{ref}/realtime/inspector + */ +export interface RealtimeInspectorListenChannelClickedEvent { + action: TelemetryActions.REALTIME_INSPECTOR_LISTEN_CHANNEL_CLICKED +} + +/** + * A broadcast message was sent from the SendMessageModal. + * + * @group Events + * @source studio + * @page /dashboard/project/{ref}/realtime/inspector + */ +export interface RealtimeInspectorBroadcastSentEvent { + action: TelemetryActions.REALTIME_INSPECTOR_BROADCAST_SENT +} + +/** + * A message was clicked in the RealtimeInspector, which opens a sidebar that shows the messsage details including metadata. + * + * @group Events + * @source studio + * @page /dashboard/project/{ref}/realtime/inspector + */ +export interface RealtimeInspectorMessageClickedEvent { + action: TelemetryActions.REALTIME_INSPECTOR_MESSAGE_CLICKED +} + +/** + * A message was copied from the RealtimeInspector. + * + * @group Events + * @source studio + * @page /dashboard/project/{ref}/realtime/inspector + */ +export interface RealtimeInspectorCopyMessageClickedEvent { + action: TelemetryActions.REALTIME_INSPECTOR_COPY_MESSAGE_CLICKED +} + +/** + * Filters were applied in the RealtimeInspector. + * + * @group Events + * @source studio + * @page /dashboard/project/{ref}/realtime/inspector + */ +export interface RealtimeInspectorFiltersAppliedEvent { + action: TelemetryActions.REALTIME_INSPECTOR_FILTERS_APPLIED +} + +/** + * Database role was updated in the RealtimeInspector. + * + * @group Events + * @source studio + * @page /dashboard/project/{ref}/realtime/inspector + */ +export interface RealtimeInspectorDatabaseRoleUpdatedEvent { + action: TelemetryActions.REALTIME_INSPECTOR_DATABASE_ROLE_UPDATED +} + +/** + * Quickstart card clicked in the SQL editor. + * + * @group Events + * @source studio + * @page /dashboard/project/{ref}/sql + */ +export interface SqlEditorQuickstartClickedEvent { + action: TelemetryActions.SQL_EDITOR_QUICKSTART_CLICKED + properties: { + /** + * The title of the quickstart card clicked. + */ + quickstartName: string + } +} + +/** + * Template card clicked in the SQL editor. + * + * @group Events + * @source studio + * @page /dashboard/project/{ref}/sql + */ +export interface SqlEditorTemplateClickedEvent { + action: TelemetryActions.SQL_EDITOR_TEMPLATE_CLICKED + properties: { + /** + * The name of the template card clicked. + */ + templateName: string + } +} + +/** + * Result download CSV button clicked in the SQL editor. + * + * @group Events + * @source studio + * @page /dashboard/project/{ref}/sql + */ +export interface SqlEditorResultDownloadCsvClickedEvent { + action: TelemetryActions.SQL_EDITOR_RESULT_DOWNLOAD_CSV_CLICKED +} + +/** + * Result copy markdown button clicked in the SQL editor. + * + * @group Events + * @source studio + * @page /dashboard/project/{ref}/sql + */ +export interface SqlEditorResultCopyMarkdownClickedEvent { + action: TelemetryActions.SQL_EDITOR_RESULT_COPY_MARKDOWN_CLICKED +} + +/** + * Result copy JSON button clicked in the SQL editor. + * + * @group Events + * @source studio + * @page /dashboard/project/{ref}/sql + */ +export interface SqlEditorResultCopyJsonClickedEvent { + action: TelemetryActions.SQL_EDITOR_RESULT_COPY_JSON_CLICKED +} + +/** + * User submitted a prompt to the assistant sidebar. + * + * @group Events + * @source studio + */ +export interface AssistantPromptSubmittedEvent { + action: TelemetryActions.ASSISTANT_PROMPT_SUBMITTED +} + +/** + * User submitted a debug request to the assistant sidebar or prompt submitted has Help me to debug. + * + * @group Events + * @source studio + */ +export interface AssistantDebugSubmittedEvent { + action: TelemetryActions.ASSISTANT_DEBUG_SUBMITTED +} + +/** + * User clicked the run query button in the suggestion provided in the assistant sidebar. + * + * @group Events + * @source studio + */ +export interface AssistantSuggestionRunQueryClickedEvent { + action: TelemetryActions.ASSISTANT_SUGGESTION_RUN_QUERY_CLICKED + properties: { + /** + * The type of suggestion that was run by the user. Mutate or Select query types only. + */ + queryType: string + category?: string + } +} + +/** + * User accepted or rejected changes in sql ai diff handler. They can accept change by clicking accept button or typing shortcut (CMD+Enter) or reject by clicking reject button or typing shortcut (Esc). Handler only appears after clicking any dropdown option in Edit in Sql Editor in suggestion provided by the assistant. The dropdown options only appear in any page with 'sql' in url. + * + * @group Events + * @source studio + * @page /dashboard/project/{ref}/sql + */ +export interface AssistantSqlDiffHandlerEvaluatedEvent { + action: TelemetryActions.ASSISTANT_SQL_DIFF_HANDLER_EVALUATED + properties: { + /** + * Whether the user accepted or rejected the changes. + */ + handlerAccepted: boolean + } +} + +/** + * User clicked Edit in SQL Editor button in the assistant sidebar when user is in any page that does not have 'sql' in url or is in a new snippet. + * + * @group Events + * @source studio + */ +export interface AssistantEditInSqlEditorClickedEvent { + action: TelemetryActions.ASSISTANT_EDIT_IN_SQL_EDITOR_CLICKED + properties: { + /** + * Whether the user is in the SQL editor page or in a new snippet. + */ + isInSQLEditor: boolean + isInNewSnippet: boolean + } +} diff --git a/apps/studio/package.json b/apps/studio/package.json index 179890d26ba..502a7dce43f 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -80,7 +80,7 @@ "mobx": "^6.10.2", "mobx-react-lite": "^4.0.5", "monaco-editor": "0.33.0", - "next": "^14.2.10", + "next": "catalog:", "next-themes": "^0.3.0", "nuqs": "^1.17.8", "openai": "^4.20.1", @@ -147,6 +147,7 @@ "@types/lodash": "^4.14.172", "@types/markdown-table": "^3.0.0", "@types/mime-db": "^1.43.5", + "@types/node": "catalog:", "@types/papaparse": "^5.3.1", "@types/randombytes": "^2.0.3", "@types/react": "^18.2.24", @@ -178,7 +179,6 @@ "next-router-mock": "^0.9.13", "postcss": "^8.4.31", "prettier": "3.2.4", - "supports-color": "5.5.0", "tailwindcss": "^3.4.1", "typescript": "~5.5.0" } diff --git a/apps/studio/pages/new/[slug].tsx b/apps/studio/pages/new/[slug].tsx index 1d9d736d17a..31e6a141987 100644 --- a/apps/studio/pages/new/[slug].tsx +++ b/apps/studio/pages/new/[slug].tsx @@ -461,13 +461,7 @@ const Wizard: NextPageWithLayout = () => { render={({ field }) => ( - { - field.onChange(event.target.value.replace(/\./g, '')) - }} - /> + )} diff --git a/apps/studio/pages/project/[ref]/database/backups/restore-to-new-project.tsx b/apps/studio/pages/project/[ref]/database/backups/restore-to-new-project.tsx index 7f685eb6989..ef9d807df68 100644 --- a/apps/studio/pages/project/[ref]/database/backups/restore-to-new-project.tsx +++ b/apps/studio/pages/project/[ref]/database/backups/restore-to-new-project.tsx @@ -83,10 +83,9 @@ const RestoreToNewProject = () => { 'queue_job.restore.prepare' ) const PITR_ENABLED = cloneBackups?.pitr_enabled - + const PHYSICAL_BACKUPS_ENABLED = project?.is_physical_backups_enabled const dbVersion = getDatabaseMajorVersion(project?.dbVersion ?? '') const IS_PG15_OR_ABOVE = dbVersion >= 15 - const PHYSICAL_BACKUPS_ENABLED = project?.is_physical_backups_enabled const { data: cloneStatus, @@ -260,7 +259,7 @@ const RestoreToNewProject = () => {
+
{CHART_INTERVALS.map((item, i) => { diff --git a/apps/studio/pages/project/[ref]/functions/[functionSlug]/invocations.tsx b/apps/studio/pages/project/[ref]/functions/[functionSlug]/invocations.tsx index 29c2e48d83b..5ecb05564fd 100644 --- a/apps/studio/pages/project/[ref]/functions/[functionSlug]/invocations.tsx +++ b/apps/studio/pages/project/[ref]/functions/[functionSlug]/invocations.tsx @@ -19,9 +19,11 @@ export const LogPage: NextPageWithLayout = () => { return ( ) } diff --git a/apps/studio/pages/project/[ref]/functions/[functionSlug]/logs.tsx b/apps/studio/pages/project/[ref]/functions/[functionSlug]/logs.tsx index c3d5282e6d9..e82144574d1 100644 --- a/apps/studio/pages/project/[ref]/functions/[functionSlug]/logs.tsx +++ b/apps/studio/pages/project/[ref]/functions/[functionSlug]/logs.tsx @@ -16,9 +16,11 @@ export const LogPage: NextPageWithLayout = () => { return ( ) } diff --git a/apps/studio/pages/project/[ref]/functions/index.tsx b/apps/studio/pages/project/[ref]/functions/index.tsx index 9a819b83a6f..684fa07eda2 100644 --- a/apps/studio/pages/project/[ref]/functions/index.tsx +++ b/apps/studio/pages/project/[ref]/functions/index.tsx @@ -1,16 +1,5 @@ import { useParams } from 'common' -import { useState } from 'react' -import { - Button, - Dialog, - DialogContent, - DialogFooter, - DialogHeader, - DialogSection, - DialogSectionSeparator, - DialogTrigger, - Modal, -} from 'ui' +import { Button, Dialog, DialogContent, DialogSection, DialogTrigger } from 'ui' import { EdgeFunctionsListItem, @@ -26,7 +15,6 @@ import type { NextPageWithLayout } from 'types' const PageLayout: NextPageWithLayout = () => { const { ref } = useParams() - const [showTerminalInstructions, setShowTerminalInstructions] = useState(false) const { data: functions, @@ -55,9 +43,7 @@ const PageLayout: NextPageWithLayout = () => { } deployed`} - + diff --git a/apps/studio/state/sql-editor-v2.ts b/apps/studio/state/sql-editor-v2.ts index f5b3d2f72ba..287eb1620c8 100644 --- a/apps/studio/state/sql-editor-v2.ts +++ b/apps/studio/state/sql-editor-v2.ts @@ -4,15 +4,14 @@ import { proxy, snapshot, subscribe, useSnapshot } from 'valtio' import { devtools, proxySet } from 'valtio/utils' import { DiffType } from 'components/interfaces/SQLEditor/SQLEditor.types' -import { getContentById } from 'data/content/content-id-query' -import { UpsertContentPayloadV2, upsertContent } from 'data/content/content-upsert-v2-mutation' +import { upsertContent, UpsertContentPayload } from 'data/content/content-upsert-mutation' import { contentKeys } from 'data/content/keys' import { createSQLSnippetFolder } from 'data/content/sql-folder-create-mutation' import { updateSQLSnippetFolder } from 'data/content/sql-folder-update-mutation' import { Snippet, SnippetFolder } from 'data/content/sql-folders-query' import { getQueryClient } from 'data/query-client' -import { SqlSnippets } from 'types' import { useMemo } from 'react' +import { SqlSnippets } from 'types' export type StateSnippetFolder = { projectRef: string @@ -285,7 +284,7 @@ export const useSnippets = (projectRef: string) => { // ## Below are all the asynchronous saving logic for the SQL Editor // ======================================================================== -async function upsertSnippet(id: string, projectRef: string, payload: UpsertContentPayloadV2) { +async function upsertSnippet(id: string, projectRef: string, payload: UpsertContentPayload) { try { sqlEditorState.savingStates[id] = 'UPDATING' await upsertContent({ projectRef, payload }) @@ -305,7 +304,7 @@ async function upsertSnippet(id: string, projectRef: string, payload: UpsertCont const memoizedUpdateSnippet = memoize((_id: string) => debounce(upsertSnippet, 1000)) -const debouncedUpdateSnippet = (id: string, projectRef: string, payload: UpsertContentPayloadV2) => +const debouncedUpdateSnippet = (id: string, projectRef: string, payload: UpsertContentPayload) => memoizedUpdateSnippet(id)(id, projectRef, payload) async function upsertFolder(id: string, projectRef: string, name: string) { diff --git a/apps/studio/tests/setup/testing-library-matchers.js b/apps/studio/tests/setup/testing-library-matchers.js deleted file mode 100644 index f533ae70ec8..00000000000 --- a/apps/studio/tests/setup/testing-library-matchers.js +++ /dev/null @@ -1,9 +0,0 @@ -import { expect, afterEach } from 'vitest' -import { cleanup } from '@testing-library/react' -import * as matchers from '@testing-library/jest-dom/matchers' - -expect.extend(matchers) - -afterEach(() => { - cleanup() -}) diff --git a/apps/studio/tests/vitestSetup.ts b/apps/studio/tests/vitestSetup.ts index 704b2e8701a..d6ee8de7efb 100644 --- a/apps/studio/tests/vitestSetup.ts +++ b/apps/studio/tests/vitestSetup.ts @@ -1,3 +1,7 @@ +/// + +import '@testing-library/jest-dom/vitest' +import { cleanup } from '@testing-library/react' import { setupServer } from 'msw/node' import { createDynamicRouteParser } from 'next-router-mock/dist/dynamic-routes' import { afterAll, afterEach, beforeAll, vi } from 'vitest' @@ -33,3 +37,7 @@ beforeAll(() => { afterAll(() => mswServer.close()) afterEach(() => mswServer.resetHandlers()) + +afterEach(() => { + cleanup() +}) diff --git a/apps/studio/vitest.config.mts b/apps/studio/vitest.config.mts index c255ef58ca0..390de131082 100644 --- a/apps/studio/vitest.config.mts +++ b/apps/studio/vitest.config.mts @@ -1,9 +1,8 @@ -import { defineConfig } from 'vitest/config' -import tsconfigPaths from 'vite-tsconfig-paths' -import { fileURLToPath } from 'url' -import { resolve } from 'path' -import path from 'path' import react from '@vitejs/plugin-react' +import path, { resolve } from 'path' +import { fileURLToPath } from 'url' +import tsconfigPaths from 'vite-tsconfig-paths' +import { defineConfig } from 'vitest/config' // Some tools like Vitest VSCode extensions, have trouble with resolving relative paths, // as they use the directory of the test file as `cwd`, which makes them believe that @@ -32,7 +31,6 @@ export default defineConfig({ restoreMocks: true, setupFiles: [ resolve(dirname, './tests/vitestSetup.ts'), - resolve(dirname, './tests/setup/testing-library-matchers.js'), resolve(dirname, './tests/setup/polyfills.js'), resolve(dirname, './tests/setup/radix.js'), ], diff --git a/apps/www/_blog/2024-08-12-postgres-new.mdx b/apps/www/_blog/2024-08-12-postgres-new.mdx index 85bf3d1cae0..d1ede74b34e 100644 --- a/apps/www/_blog/2024-08-12-postgres-new.mdx +++ b/apps/www/_blog/2024-08-12-postgres-new.mdx @@ -198,7 +198,7 @@ None of this would be possible without [PGlite](https://pglite.dev/), developed - **Local development:** You can use PGlite as an alternative to a full local Postgres for development; simplifying your development environments. - **Remote development, or local web containers:** As PGlite is so lightweight it can be easily embedded into remote containerised development environments, or in-browser web containers -### Data persistance +### Data persistence PGlite supports multiple backends for data persistence: diff --git a/apps/www/components/LaunchWeek/8/AnimatedParticles/Particle.tsx b/apps/www/components/LaunchWeek/8/AnimatedParticles/Particle.tsx deleted file mode 100644 index 29908f79016..00000000000 --- a/apps/www/components/LaunchWeek/8/AnimatedParticles/Particle.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import React, { useRef } from 'react' -import { useFrame } from '@react-three/fiber' - -interface Props { - animate?: boolean - children: any - config: any - user?: any -} - -const Particle = ({ animate = true, children, config }: Props) => { - const particle = useRef(null) - - const pathOffsetShape = - Math.pow( - Math.random() * config.xRandomnessShape, - config.xRandomness - 1 + 1 - config.xRandomness / 2 - ) * config.xThickness - - const pathOffset = pathOffsetShape * (pathOffsetShape < 1 || Math.random() < 0.5 ? 1 : -1) - const verticalRandomness = Math.random() * (config.yThickness - 1) + 1 - config.yThickness / 2 - - const speed = Math.random() * (config.min_speed - config.max_speed) + config.max_speed - - const circumference = (config.widthRadius * Math.PI * 2) / 100 - const delayOffsetFactor = 100 - const delayOffset = Math.random() * delayOffsetFactor - - useFrame(({ clock }) => { - if (animate) { - const timer = clock.getElapsedTime() * speed + delayOffset - // When the loop count is even, draw bottom 8 shape - // if odd, draw top 8 shape - const isEven = Math.floor(timer / circumference) % 2 == 0 - particle.current.position.x = isEven - ? Math.sin(timer) * config.widthRadius * config.widthRatio + pathOffset - : Math.sin(timer) * config.widthRadius + pathOffset - particle.current.position.y = isEven - ? Math.cos(timer) * config.bottomHeightRadius - - config.bottomHeightRadius + - verticalRandomness - : -Math.cos(timer) * config.topHeightRadius + config.topHeightRadius + verticalRandomness - } - }) - - return {children} -} - -export default Particle diff --git a/apps/www/components/LaunchWeek/8/AnimatedParticles/ParticlesCanvas.tsx b/apps/www/components/LaunchWeek/8/AnimatedParticles/ParticlesCanvas.tsx deleted file mode 100644 index 0e258a3bf86..00000000000 --- a/apps/www/components/LaunchWeek/8/AnimatedParticles/ParticlesCanvas.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import React, { useMemo, useEffect, useState } from 'react' -import { Canvas } from '@react-three/fiber' -import { AdditiveBlending } from 'three' -import Particle from './Particle' -import useParticlesConfig from './hooks/useParticlesConfig' - -const ParticlesCanvas = () => { - const isWindowUndefined = typeof window === 'undefined' - if (isWindowUndefined) return null - - const canvasRef = React.useRef(null) - - const [animate, setAnimate] = useState(true) - const { config, particles } = useParticlesConfig() - - // stop animation if canvas if is not in viewport - // to stop unnecessary computations - const handleScroll = () => { - if (canvasRef.current && typeof window !== 'undefined') { - const rect = (canvasRef.current as HTMLCanvasElement)?.getBoundingClientRect() - const isInView = rect.bottom > 0 - - setAnimate(isInView) - } - } - - useEffect(() => { - window.addEventListener('scroll', handleScroll) - - return () => { - window.removeEventListener('scroll', handleScroll) - } - }, []) - - /* ThreeJs setup */ - - const Geometry = useMemo( - () => () => , - [] - ) - const GoldGeometry = useMemo( - () => () => , - [] - ) - const Material = () => - useMemo( - () => ( - - ), - [] - ) - const GoldMaterial = () => - useMemo( - () => ( - - ), - [] - ) - - return ( - - - - {particles?.map((user: any, index: number) => ( - - {config.showGold && Math.random() <= 0.5 ? ( - <> - - - - ) : ( - <> - - - - )} - - ))} - - - ) -} - -export default ParticlesCanvas diff --git a/apps/www/components/LaunchWeek/8/AnimatedParticles/hooks/useParticlesConfig.tsx b/apps/www/components/LaunchWeek/8/AnimatedParticles/hooks/useParticlesConfig.tsx deleted file mode 100644 index 6eaf48d8204..00000000000 --- a/apps/www/components/LaunchWeek/8/AnimatedParticles/hooks/useParticlesConfig.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import { useEffect, useState } from 'react' -import { range } from 'lodash' - -let defaultConfig = { - particles: 700, - particlesSize: 1.2, - goldParticlesSize: 1.5, - particlesSides: 5, - particlesBlending: true, - lightIntensity: 0.4, - widthRadius: 100, - widthRatio: 1.2, - topHeightRadius: 80, - bottomHeightRadius: 100, - color: '#ffffff', - colorGold: '#b89d18', - xThickness: 7, - xRandomnessFactor: 2.2, - xRandomnessShape: 2.2, - xRandomness: 5, - yThickness: 20, - max_speed: 0.1, - min_speed: -0.1, - showGold: true, -} - -const useParticlesConfig = (): any => { - const isWindowUndefined = typeof window === 'undefined' - if (isWindowUndefined) return null - const hash = window.location.hash - const isDebugMode = hash.includes('#debug') - const [particles, setParticles] = useState(range(0, defaultConfig.particles)) - - const [config, setConfig] = useState(defaultConfig) - - const handleSetConfig = (name: string, value: any) => { - setConfig((prevConfig) => ({ ...prevConfig, [name]: value })) - } - - const init = async () => { - if (!isDebugMode) return - const dat = await import('dat.gui') - const gui = new dat.GUI() - const particlesFolder = gui.addFolder('Particles') - const shapeFolder = gui.addFolder('Shape') - const speedFolder = gui.addFolder('Speed') - - gui.width = 500 - particlesFolder - .add(config, 'particles') - .min(1) - .max(5000) - .step(1) - .name('Count') - .onChange((value) => { - handleSetConfig('particles', value) - setParticles(range(0, value)) - }) - particlesFolder - .add(config, 'particlesSize') - .min(1) - .max(10) - .step(0.05) - .name('Size') - .onChange((value) => handleSetConfig('particlesSize', value)) - particlesFolder - .add(config, 'goldParticlesSize') - .min(1) - .max(10) - .step(0.05) - .name('Gold Particles Size') - .onChange((value) => handleSetConfig('goldParticlesSize', value)) - particlesFolder - .add(config, 'particlesSides') - .min(3) - .max(20) - .step(1) - .name('Sides') - .onChange((value) => handleSetConfig('particlesSides', value)) - particlesFolder - .add(config, 'lightIntensity') - .min(0) - .max(10) - .step(0.05) - .name('Light intensity') - .onChange((value) => handleSetConfig('lightIntensity', value)) - particlesFolder - .add(config, 'showGold') - .name('Show Gold Particles') - .onChange((value) => handleSetConfig('showGold', value)) - particlesFolder - .add(config, 'particlesBlending') - .name('Blending') - .onChange((value) => handleSetConfig('particlesBlending', value)) - shapeFolder - .add(config, 'widthRadius') - .min(1) - .max(200) - .step(1) - .name('Width Radius') - .onChange((value) => handleSetConfig('widthRadius', value)) - shapeFolder - .add(config, 'widthRatio') - .min(0.5) - .max(3) - .step(0.01) - .name('Top/Bottom Ratio') - .onChange((value) => handleSetConfig('widthRatio', value)) - shapeFolder - .add(config, 'topHeightRadius') - .min(1) - .max(200) - .step(1) - .name('Height Radius - Top') - .onChange((value) => handleSetConfig('topHeightRadius', value)) - shapeFolder - .add(config, 'bottomHeightRadius') - .min(1) - .max(200) - .step(1) - .name('Height Radius - Bottom') - .onChange((value) => handleSetConfig('bottomHeightRadius', value)) - shapeFolder - .add(config, 'xThickness') - .min(1) - .max(100) - .step(0.1) - .name('Stroke Width') - .onChange((value) => handleSetConfig('xThickness', value)) - shapeFolder - .add(config, 'xRandomnessShape') - .min(0) - .max(5) - .step(0.001) - .name('Randomness shape') - .onChange((value) => handleSetConfig('xRandomnessShape', value)) - shapeFolder - .add(config, 'xRandomness') - .min(0) - .max(50) - .step(0.01) - .name('Randomness') - .onChange((value) => handleSetConfig('xRandomness', value)) - shapeFolder - .add(config, 'yThickness') - .min(1) - .max(50) - .step(0.1) - .name('y thickness') - .onChange((value) => handleSetConfig('yThickness', value)) - speedFolder - .add(config, 'min_speed') - .min(-6) - .max(6) - .step(0.01) - .name('Min speed') - .onChange((value) => handleSetConfig('min_speed', value)) - speedFolder - .add(config, 'max_speed') - .min(-6) - .max(6) - .step(0.01) - .name('Max speed') - .onChange((value) => handleSetConfig('max_speed', value)) - - particlesFolder.open() - shapeFolder.open() - speedFolder.open() - } - - useEffect(() => { - init() - }, []) - - return { config, handleSetConfig, particles, setParticles, isDebugMode } -} - -export default useParticlesConfig diff --git a/apps/www/package.json b/apps/www/package.json index e6ec5353f3a..440ae4365d9 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -28,7 +28,6 @@ "@octokit/plugin-paginate-graphql": "^4.0.0", "@octokit/rest": "^20.0.2", "@radix-ui/react-dialog": "^1.0.5", - "@react-three/fiber": "^7.0.29", "@supabase/auth-helpers-react": "^0.4.2", "@supabase/auth-ui-react": "^0.4.5", "@supabase/supabase-js": "^2.44.3", @@ -42,7 +41,6 @@ "common-tags": "^1.8.2", "config": "workspace:*", "contentlayer2": "0.5.3", - "dat.gui": "^0.7.9", "dayjs": "^1.11.12", "eslint-config-supabase": "workspace:*", "framer-motion": "^11.0.3", @@ -52,7 +50,7 @@ "lodash": "^4.0.0", "lucide-react": "*", "markdown-toc": "^1.2.0", - "next": "^14.2.10", + "next": "catalog:", "next-contentlayer2": "0.5.3", "next-mdx-remote": "^4.4.1", "next-seo": "^6.5.0", @@ -89,10 +87,8 @@ "@types/animejs": "^3.1.12", "@types/classnames": "^2.3.1", "@types/common-tags": "^1.8.4", - "@types/dat.gui": "^0.7.10", "@types/lodash": "^4.0.0", "@types/mdx-js__react": "^1.5.6", - "@types/node": "^20.11.16", "@types/parse-numeric-range": "^0.0.1", "@types/react": "^18.2.24", "@types/react-copy-to-clipboard": "^5.0.4", diff --git a/apps/www/pages/launch-week/8/index.tsx b/apps/www/pages/launch-week/8/index.tsx index 2d983a7475e..44d75858a11 100644 --- a/apps/www/pages/launch-week/8/index.tsx +++ b/apps/www/pages/launch-week/8/index.tsx @@ -16,7 +16,6 @@ import SectionContainer from '~/components/Layouts/SectionContainer' import { LaunchWeekLogoHeader } from '~/components/LaunchWeek/8/LaunchWeekLogoHeader' import { Meetup } from '~/components/LaunchWeek/8/LW8Meetups' import LW8CalloutsSection from '~/components/LaunchWeek/8/LW8CalloutsSection' -import AnimatedParticles from '~/components/LaunchWeek/8/AnimatedParticles/ParticlesCanvas' const LW8Releases = dynamic(() => import('~/components/LaunchWeek/8/Releases')) const LW8Meetups = dynamic(() => import('~/components/LaunchWeek/8/LW8Meetups')) @@ -134,12 +133,11 @@ export default function TicketHome({ users, meetups }: Props) {
- +
- starts backgroundstorage-dart functions-dart + + Swift + supabase-swift + postgrest-swift + auth-swift + realtime-swift + storage-swift + functions-swift + + + Python + supabase-py + postgrest-py + gotrue-py + realtime-py + storage-py + functions-py + 💚 커뮤니티 💚 @@ -149,20 +167,11 @@ Supabase는 [호스팅 플랫폼](https://supabase.com/dashboard)입니다. 가 Kotlin supabase-kt postgrest-kt - gotrue-kt + auth-kt realtime-kt storage-kt functions-kt - - Python - supabase-py - postgrest-py - gotrue-py - realtime-py - storage-py - functions-py - Ruby supabase-rb @@ -181,15 +190,6 @@ Supabase는 [호스팅 플랫폼](https://supabase.com/dashboard)입니다. 가 - - - - Swift - supabase-swift - postgrest-swift - gotrue-swift - realtime-swift - storage-swift - functions-swift - Godot Engine (GDScript) supabase-gdscript @@ -243,48 +243,49 @@ Supabase는 [호스팅 플랫폼](https://supabase.com/dashboard)입니다. 가 ## 번역 -- [아랍어 | 아랍어](/i18n/README.ar.md) -- [알바니아어 / 쉬킵어](/i18n/README.sq.md) +- [아랍어 | العربية](/i18n/README.ar.md) +- [알바니아어 / Shqip](/i18n/README.sq.md) - [방글라데시어 / বাংলা](/i18n/README.bn.md) - [불가리아어 / Български](/i18n/README.bg.md) -- [카탈루냐어 / 카탈루냐어](/i18n/README.ca.md) +- [카탈루냐어 / Català](/i18n/README.ca.md) +- [체코어 / čeština](/i18n/README.cs.md) - [덴마크어 / Dansk](/i18n/README.da.md) -- [네덜란드어 / 네덜란드어](/i18n/README.nl.md) -- [영어](https://github.com/supabase/supabase) -- [핀란드어 / 수오말라이넨](/i18n/README.fi.md) -- [프랑스어 / 프랑스어](/i18n/README.fr.md) +- [네덜란드어 / Nederlands](/i18n/README.nl.md) +- [영어 / English](https://github.com/supabase/supabase) +- [에스토니아어 / eesti keel](/i18n/README.et.md) +- [핀란드어 / Suomalainen](/i18n/README.fi.md) +- [프랑스어 / Français](/i18n/README.fr.md) - [독일어 / Deutsch](/i18n/README.de.md) -- [그리스어 / Ελληνικά](/i18n/README.gr.md) +- [그리스어 / Ελληνικά](/i18n/README.el.md) +- [구자라트어 / ગુજરાતી](/i18n/README.gu.md) - [히브리어 / עברית](/i18n/README.he.md) - [힌디어 / हिंदी](/i18n/README.hi.md) -- [헝가리어 / 마자르어](/i18n/README.hu.md) +- [헝가리어 / Magyar](/i18n/README.hu.md) - [네팔어 / नेपाली](/i18n/README.ne.md) -- [인도네시아어 / 바하사 인도네시아](/i18n/README.id.md) -- [이탈리아어 / Italiano](/i18n/README.it.md) +- [인도네시아어 / Bahasa Indonesia](/i18n/README.id.md) +- [이탈리아어 / Italian](/i18n/README.it.md) - [일본어 / 日本語](/i18n/README.jp.md) -- [한국어 / 한국어](/i18n/README.ko.md) -- [말레이어 / 바하사 말레이시아](/i18n/README.ms.md) -- [노르웨이어(복말) / 노르웨이어(복말)](/i18n/README.nb-no.md) +- [한국어](/i18n/README.ko.md) +- [리투아니아어 / lietuvių](/i18n/README.lt.md) +- [라트비아어 / latviski](/i18n/README.lv.md) +- [말레이어 / Bahasa Malaysia](/i18n/README.ms.md) +- [노르웨이어(복말) / Norsk (Bokmål)](/i18n/README.nb.md) - [페르시아어 / فارسی](/i18n/README.fa.md) - [폴란드어 / Polski](/i18n/README.pl.md) -- [포르투갈어 / 포르투갈어](/i18n/README.pt.md) -- [포르투갈어(브라질어) / 포르투갈어 브라질](/i18n/README.pt-br.md) -- [루마니아어 / 루마니아어](/i18n/README.ro.md) +- [포르투갈어 / Português](/i18n/README.pt.md) +- [포르투갈어(브라질) / Português Brasileiro](/i18n/README.pt-br.md) +- [루마니아어 / Română](/i18n/README.ro.md) - [러시아어 / Pусский](/i18n/README.ru.md) - [세르비아어 / Srpski](/i18n/README.sr.md) - [신할라어 / සිංහල](/i18n/README.si.md) -- [스페인어 / 에스파냐어](/i18n/README.es.md) +- [슬로바키아어 / slovenský](/i18n/README.sk.md) +- [슬로베니아어 / Slovenščina](/i18n/README.sl.md) +- [스페인어 / Español](/i18n/README.es.md) - [중국어 간체 / 简体中文](/i18n/README.zh-cn.md) -- [스웨덴어 / 스벤스카르어](/i18n/README.sv.md) +- [스웨덴어 / Svenska](/i18n/README.sv.md) - [태국어 / ไทย](/i18n/README.th.md) - [중국어 번체 / 繁體中文](/i18n/README.zh-tw.md) - [터키어 / Türkçe](/i18n/README.tr.md) - [우크라이나어 / Українська](/i18n/README.uk.md) - [베트남어 / Tiếng Việt](/i18n/README.vi-vn.md) - [번역 목록](/i18n/languages.md) - ---- - -## 스폰서 - -[![신규 스폰서](https://user-images.githubusercontent.com/10214025/90518111-e74bbb00-e198-11ea-8f88-c9e3c1aa4b5b.png)](https://github.com/sponsors/supabase) diff --git a/package.json b/package.json index dbc4242d245..f92f9268c5d 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,8 @@ "dev:design-system": "turbo run dev --filter=design-system --parallel", "lint": "turbo run lint", "typecheck": "turbo --continue typecheck", - "test:prettier": "prettier -c 'apps/**/*.{js,jsx,ts,tsx,css,md,mdx,json}'", - "format": "prettier --write \"apps/**/*.{js,jsx,ts,tsx,css,md,mdx,json}\" \"packages/pg-meta/**/*.ts\"", + "test:prettier": "prettier -c '{apps,packages}/**/*.{js,jsx,ts,tsx,css,md,mdx,json}'", + "format": "prettier --write '{apps,packages}/**/*.{js,jsx,ts,tsx,css,md,mdx,json}'", "docker:dev": "cd docker && docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up --renew-anon-volumes", "docker:up": "cd docker && docker compose up", "docker:down": "cd docker && docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml down --remove-orphans", @@ -38,13 +38,15 @@ "api:codegen": "cd packages/api-types && pnpm run codegen" }, "devDependencies": { + "@types/node": "catalog:", "eslint": "^8.57.0", "prettier": "3.2.4", "prettier-plugin-sql-cst": "^0.11.0", "rimraf": "^6.0.0", "sass": "^1.72.0", "supabase": "^1.151.1", - "turbo": "2.0.4", + "supports-color": "^8.0.0", + "turbo": "2.3.3", "typescript": "~5.5.0" }, "repository": { diff --git a/packages/ai-commands/package.json b/packages/ai-commands/package.json index 275d867abf6..cca078a1b06 100644 --- a/packages/ai-commands/package.json +++ b/packages/ai-commands/package.json @@ -24,6 +24,7 @@ "devDependencies": { "@ai-sdk/openai": "^0.0.72", "@types/common-tags": "^1.8.4", + "@types/node": "catalog:", "api-types": "workspace:*", "chalk": "^5.3.0", "dotenv": "^16.3.1", diff --git a/packages/ai-commands/test/sql-util.ts b/packages/ai-commands/test/sql-util.ts index 79fae6a4795..d9c5eea6c66 100644 --- a/packages/ai-commands/test/sql-util.ts +++ b/packages/ai-commands/test/sql-util.ts @@ -17,9 +17,8 @@ type ExtractKeys = T extends T ? keyof T : never /** * Unwraps a Node to get its underlying value. */ -type NodeValue> = T extends Record - ? V - : never +type NodeValue> = + T extends Record ? V : never export class AssertionError extends Error { constructor(message: string) { diff --git a/packages/ai-commands/tsconfig.json b/packages/ai-commands/tsconfig.json index e8b5504d293..f612f0c8a27 100644 --- a/packages/ai-commands/tsconfig.json +++ b/packages/ai-commands/tsconfig.json @@ -1,16 +1,8 @@ { "extends": "tsconfig/react-library.json", - "include": [ - "." - ], - "exclude": [ - "dist", - "build", - "node_modules" - ], + "include": ["."], + "exclude": ["dist", "build", "node_modules"], "compilerOptions": { - "types": [ - "./test/extensions.d.ts" - ] + "types": ["./test/extensions.d.ts"] } -} \ No newline at end of file +} diff --git a/packages/api-types/types/api.d.ts b/packages/api-types/types/api.d.ts index 1cf709bab4e..0035062a5cd 100644 --- a/packages/api-types/types/api.d.ts +++ b/packages/api-types/types/api.d.ts @@ -5681,6 +5681,10 @@ export interface components { } StorageFeatures: { imageTransformation: components['schemas']['StorageFeatureImageTransformation'] + s3Protocol: components['schemas']['StorageFeatureS3Protocol'] + } + StorageFeatureS3Protocol: { + enabled: boolean } StorageObject: { bucket_id: string diff --git a/packages/common/database-types.ts b/packages/common/database-types.ts index 79ee7683f14..4acdbef0dc2 100644 --- a/packages/common/database-types.ts +++ b/packages/common/database-types.ts @@ -1,10 +1,4 @@ -export type Json = - | string - | number - | boolean - | null - | { [key: string]: Json | undefined } - | Json[] +export type Json = string | number | boolean | null | { [key: string]: Json | undefined } | Json[] export type Database = { graphql_public: { @@ -40,21 +34,21 @@ export type Database = { id: number metadata: Json | null page: string - vote: Database["public"]["Enums"]["feedback_vote"] + vote: Database['public']['Enums']['feedback_vote'] } Insert: { date_created?: string id?: never metadata?: Json | null page: string - vote: Database["public"]["Enums"]["feedback_vote"] + vote: Database['public']['Enums']['feedback_vote'] } Update: { date_created?: string id?: never metadata?: Json | null page?: string - vote?: Database["public"]["Enums"]["feedback_vote"] + vote?: Database['public']['Enums']['feedback_vote'] } Relationships: [] } @@ -145,11 +139,11 @@ export type Database = { } Relationships: [ { - foreignKeyName: "meetups_launch_week_fkey" - columns: ["launch_week"] + foreignKeyName: 'meetups_launch_week_fkey' + columns: ['launch_week'] isOneToOne: false - referencedRelation: "launch_weeks" - referencedColumns: ["id"] + referencedRelation: 'launch_weeks' + referencedColumns: ['id'] }, ] } @@ -228,11 +222,11 @@ export type Database = { } Relationships: [ { - foreignKeyName: "page_section_page_id_fkey" - columns: ["page_id"] + foreignKeyName: 'page_section_page_id_fkey' + columns: ['page_id'] isOneToOne: false - referencedRelation: "page" - referencedColumns: ["id"] + referencedRelation: 'page' + referencedColumns: ['id'] }, ] } @@ -293,25 +287,25 @@ export type Database = { } Relationships: [ { - foreignKeyName: "public_tickets_id_fkey" - columns: ["user_id"] + foreignKeyName: 'public_tickets_id_fkey' + columns: ['user_id'] isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] + referencedRelation: 'users' + referencedColumns: ['id'] }, { - foreignKeyName: "tickets_launch_week_fkey" - columns: ["launch_week"] + foreignKeyName: 'tickets_launch_week_fkey' + columns: ['launch_week'] isOneToOne: false - referencedRelation: "launch_weeks" - referencedColumns: ["id"] + referencedRelation: 'launch_weeks' + referencedColumns: ['id'] }, { - foreignKeyName: "tickets_user_id_fkey" - columns: ["user_id"] + foreignKeyName: 'tickets_user_id_fkey' + columns: ['user_id'] isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] + referencedRelation: 'users' + referencedColumns: ['id'] }, ] } @@ -397,11 +391,11 @@ export type Database = { } Relationships: [ { - foreignKeyName: "tickets_launch_week_fkey" - columns: ["launch_week"] + foreignKeyName: 'tickets_launch_week_fkey' + columns: ['launch_week'] isOneToOne: false - referencedRelation: "launch_weeks" - referencedColumns: ["id"] + referencedRelation: 'launch_weeks' + referencedColumns: ['id'] }, ] } @@ -451,7 +445,7 @@ export type Database = { } hnswhandler: { Args: { - "": unknown + '': unknown } Returns: unknown } @@ -466,7 +460,7 @@ export type Database = { } ivfflathandler: { Args: { - "": unknown + '': unknown } Returns: unknown } @@ -532,43 +526,43 @@ export type Database = { } vector_avg: { Args: { - "": number[] + '': number[] } Returns: string } vector_dims: { Args: { - "": string + '': string } Returns: number } vector_norm: { Args: { - "": string + '': string } Returns: number } vector_out: { Args: { - "": string + '': string } Returns: unknown } vector_send: { Args: { - "": string + '': string } Returns: string } vector_typmod_in: { Args: { - "": unknown[] + '': unknown[] } Returns: number } } Enums: { - feedback_vote: "yes" | "no" + feedback_vote: 'yes' | 'no' } CompositeTypes: { [_ in never]: never @@ -678,11 +672,11 @@ export type Database = { } Relationships: [ { - foreignKeyName: "objects_bucketId_fkey" - columns: ["bucket_id"] + foreignKeyName: 'objects_bucketId_fkey' + columns: ['bucket_id'] isOneToOne: false - referencedRelation: "buckets" - referencedColumns: ["id"] + referencedRelation: 'buckets' + referencedColumns: ['id'] }, ] } @@ -755,27 +749,25 @@ export type Database = { } } -type PublicSchema = Database[Extract] +type PublicSchema = Database[Extract] export type Tables< PublicTableNameOrOptions extends - | keyof (PublicSchema["Tables"] & PublicSchema["Views"]) + | keyof (PublicSchema['Tables'] & PublicSchema['Views']) | { schema: keyof Database }, TableName extends PublicTableNameOrOptions extends { schema: keyof Database } - ? keyof (Database[PublicTableNameOrOptions["schema"]]["Tables"] & - Database[PublicTableNameOrOptions["schema"]]["Views"]) + ? keyof (Database[PublicTableNameOrOptions['schema']]['Tables'] & + Database[PublicTableNameOrOptions['schema']]['Views']) : never = never, > = PublicTableNameOrOptions extends { schema: keyof Database } - ? (Database[PublicTableNameOrOptions["schema"]]["Tables"] & - Database[PublicTableNameOrOptions["schema"]]["Views"])[TableName] extends { + ? (Database[PublicTableNameOrOptions['schema']]['Tables'] & + Database[PublicTableNameOrOptions['schema']]['Views'])[TableName] extends { Row: infer R } ? R : never - : PublicTableNameOrOptions extends keyof (PublicSchema["Tables"] & - PublicSchema["Views"]) - ? (PublicSchema["Tables"] & - PublicSchema["Views"])[PublicTableNameOrOptions] extends { + : PublicTableNameOrOptions extends keyof (PublicSchema['Tables'] & PublicSchema['Views']) + ? (PublicSchema['Tables'] & PublicSchema['Views'])[PublicTableNameOrOptions] extends { Row: infer R } ? R @@ -783,20 +775,18 @@ export type Tables< : never export type TablesInsert< - PublicTableNameOrOptions extends - | keyof PublicSchema["Tables"] - | { schema: keyof Database }, + PublicTableNameOrOptions extends keyof PublicSchema['Tables'] | { schema: keyof Database }, TableName extends PublicTableNameOrOptions extends { schema: keyof Database } - ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"] + ? keyof Database[PublicTableNameOrOptions['schema']]['Tables'] : never = never, > = PublicTableNameOrOptions extends { schema: keyof Database } - ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends { + ? Database[PublicTableNameOrOptions['schema']]['Tables'][TableName] extends { Insert: infer I } ? I : never - : PublicTableNameOrOptions extends keyof PublicSchema["Tables"] - ? PublicSchema["Tables"][PublicTableNameOrOptions] extends { + : PublicTableNameOrOptions extends keyof PublicSchema['Tables'] + ? PublicSchema['Tables'][PublicTableNameOrOptions] extends { Insert: infer I } ? I @@ -804,20 +794,18 @@ export type TablesInsert< : never export type TablesUpdate< - PublicTableNameOrOptions extends - | keyof PublicSchema["Tables"] - | { schema: keyof Database }, + PublicTableNameOrOptions extends keyof PublicSchema['Tables'] | { schema: keyof Database }, TableName extends PublicTableNameOrOptions extends { schema: keyof Database } - ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"] + ? keyof Database[PublicTableNameOrOptions['schema']]['Tables'] : never = never, > = PublicTableNameOrOptions extends { schema: keyof Database } - ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends { + ? Database[PublicTableNameOrOptions['schema']]['Tables'][TableName] extends { Update: infer U } ? U : never - : PublicTableNameOrOptions extends keyof PublicSchema["Tables"] - ? PublicSchema["Tables"][PublicTableNameOrOptions] extends { + : PublicTableNameOrOptions extends keyof PublicSchema['Tables'] + ? PublicSchema['Tables'][PublicTableNameOrOptions] extends { Update: infer U } ? U @@ -825,15 +813,12 @@ export type TablesUpdate< : never export type Enums< - PublicEnumNameOrOptions extends - | keyof PublicSchema["Enums"] - | { schema: keyof Database }, + PublicEnumNameOrOptions extends keyof PublicSchema['Enums'] | { schema: keyof Database }, EnumName extends PublicEnumNameOrOptions extends { schema: keyof Database } - ? keyof Database[PublicEnumNameOrOptions["schema"]]["Enums"] + ? keyof Database[PublicEnumNameOrOptions['schema']]['Enums'] : never = never, > = PublicEnumNameOrOptions extends { schema: keyof Database } - ? Database[PublicEnumNameOrOptions["schema"]]["Enums"][EnumName] - : PublicEnumNameOrOptions extends keyof PublicSchema["Enums"] - ? PublicSchema["Enums"][PublicEnumNameOrOptions] + ? Database[PublicEnumNameOrOptions['schema']]['Enums'][EnumName] + : PublicEnumNameOrOptions extends keyof PublicSchema['Enums'] + ? PublicSchema['Enums'][PublicEnumNameOrOptions] : never - diff --git a/packages/common/package.json b/packages/common/package.json index 424fdaabf0a..9b6a54a54f8 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -28,7 +28,7 @@ "peerDependencies": { "@supabase/auth-js": "^2.63.0", "@supabase/supabase-js": "*", - "next": "*", + "next": "catalog:", "react": "*", "react-dom": "*" } diff --git a/packages/generator/tsdoc.ts b/packages/generator/tsdoc.ts index e01d11b8d33..a362c345ef1 100644 --- a/packages/generator/tsdoc.ts +++ b/packages/generator/tsdoc.ts @@ -2,7 +2,7 @@ import { writeToDisk } from './helpers' import stringify from 'json-stringify-safe' import { parseArgs } from 'node:util' import fs from 'fs' -import { strict as assert } from 'node:assert'; +import { strict as assert } from 'node:assert' const args = parseArgs({ options: { @@ -24,13 +24,7 @@ interface KV { [key: string]: any } -async function dereference({ - input, - output, -}: { - input: string - output: string -}) { +async function dereference({ input, output }: { input: string; output: string }) { console.log('input', input) const specRaw = fs.readFileSync(input, 'utf8') @@ -72,9 +66,7 @@ function dereferenceReducer(child: any, kv: KV) { !!child.type.declaration.children && child.type.type === 'reflection' ) { - child.type.declaration.children.forEach((x: any) => - dereferenceReducer(x, kv) - ) + child.type.declaration.children.forEach((x: any) => dereferenceReducer(x, kv)) } const final = { ...child } @@ -97,10 +89,7 @@ function dereferenceReducer(child: any, kv: KV) { const dereferenced = kv[final.type.id] final.type.dereferenced = dereferenced || {} return final - } else if ( - final.kindString === 'Type alias' && - final.type?.type === 'union' - ) { + } else if (final.kindString === 'Type alias' && final.type?.type === 'union') { // handles union types that contain nested references // by replacing the reference in-place final.type.types = final.type.types.map((item: any) => { diff --git a/packages/icons/src/createSupabaseIcon.ts b/packages/icons/src/createSupabaseIcon.ts index 172a509f94e..5671d38e552 100644 --- a/packages/icons/src/createSupabaseIcon.ts +++ b/packages/icons/src/createSupabaseIcon.ts @@ -5,20 +5,20 @@ import { SVGProps, ForwardRefExoticComponent, RefAttributes, -} from 'react'; -import defaultAttributes from './defaultAttributes'; +} from 'react' +import defaultAttributes from './defaultAttributes' -export type IconNode = [elementName: keyof ReactSVG, attrs: Record][]; +export type IconNode = [elementName: keyof ReactSVG, attrs: Record][] -export type SVGAttributes = Partial>; -type ComponentAttributes = RefAttributes & SVGAttributes; +export type SVGAttributes = Partial> +type ComponentAttributes = RefAttributes & SVGAttributes export interface LucideProps extends ComponentAttributes { - size?: string | number; - absoluteStrokeWidth?: boolean; + size?: string | number + absoluteStrokeWidth?: boolean } -export type LucideIcon = ForwardRefExoticComponent; +export type LucideIcon = ForwardRefExoticComponent /** * Converts string to KebabCase * Copied from scripts/helper. If anyone knows how to properly import it here @@ -31,7 +31,7 @@ export const toKebabCase = (string: string) => string .replace(/([a-z0-9])([A-Z])/g, '$1-$2') .toLowerCase() - .trim(); + .trim() const createLucideIcon = (iconName: string, iconNode: IconNode): LucideIcon => { const Component = forwardRef( @@ -45,7 +45,7 @@ const createLucideIcon = (iconName: string, iconNode: IconNode): LucideIcon => { children, ...rest }, - ref, + ref ) => { return createElement( 'svg', @@ -64,14 +64,14 @@ const createLucideIcon = (iconName: string, iconNode: IconNode): LucideIcon => { [ ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)), ...(Array.isArray(children) ? children : [children]), - ], - ); - }, - ); + ] + ) + } + ) - Component.displayName = `${iconName}`; + Component.displayName = `${iconName}` - return Component; -}; + return Component +} -export default createLucideIcon; +export default createLucideIcon diff --git a/packages/icons/src/defaultAttributes.ts b/packages/icons/src/defaultAttributes.ts index ce97fb05877..e1644175a13 100644 --- a/packages/icons/src/defaultAttributes.ts +++ b/packages/icons/src/defaultAttributes.ts @@ -8,4 +8,4 @@ export default { strokeWidth: 2, strokeLinecap: 'round', strokeLinejoin: 'round', -}; +} diff --git a/packages/icons/src/raw-icons/_example-template.json b/packages/icons/src/raw-icons/_example-template.json index 90144eed90b..30e98ddf155 100644 --- a/packages/icons/src/raw-icons/_example-template.json +++ b/packages/icons/src/raw-icons/_example-template.json @@ -1,20 +1,6 @@ { "$schema": "../icon.schema.json", - "contributors": [ - "it-is-not", - "jguddas", - "danielbayley", - "ericfennis" - ], - "tags": [ - "letter", - "font size", - "text", - "formatting", - "smaller" - ], - "categories": [ - "text", - "design" - ] + "contributors": ["it-is-not", "jguddas", "danielbayley", "ericfennis"], + "tags": ["letter", "font size", "text", "formatting", "smaller"], + "categories": ["text", "design"] } diff --git a/packages/shared-data/config.ts b/packages/shared-data/config.ts index 03bac52848b..01f390522ce 100644 --- a/packages/shared-data/config.ts +++ b/packages/shared-data/config.ts @@ -104,9 +104,8 @@ const config = { }, http_hooks: { value: 5, - }, - } + }, }, branching: { inactivity_period_in_minutes: { @@ -119,9 +118,9 @@ const config = { */ free_tier: { value: '1', - unit: 'week' - } - } + unit: 'week', + }, + }, } as const export default config diff --git a/packages/shared-data/extensions.json b/packages/shared-data/extensions.json index c1752b0abea..5ea2d9fe7ae 100644 --- a/packages/shared-data/extensions.json +++ b/packages/shared-data/extensions.json @@ -599,6 +599,12 @@ "product": "Supabase Vector", "product_url": null }, + { + "name": "pg_repack", + "comment": "Optimize physical storage and remove bloat from tables and indexes", + "tags": ["Admin", "Utility"], + "link": "/guides/database/extensions/pg_repack" + }, { "name": "wrappers", "comment": "Foreign data wrappers developed by Supabase", diff --git a/packages/shared-data/regions.ts b/packages/shared-data/regions.ts index 850e7880f99..06f6b0fe27a 100644 --- a/packages/shared-data/regions.ts +++ b/packages/shared-data/regions.ts @@ -11,7 +11,7 @@ export const AWS_REGIONS = { WEST_EU_3: { code: 'eu-west-3', displayName: 'West EU (Paris)' }, CENTRAL_EU: { code: 'eu-central-1', displayName: 'Central EU (Frankfurt)' }, CENTRAL_EU_2: { code: 'eu-central-2', displayName: 'Central Europe (Zurich)' }, - NORTH_EU: { code: 'eu-north-1', displayName: 'North EU (Stockholm)'}, + NORTH_EU: { code: 'eu-north-1', displayName: 'North EU (Stockholm)' }, SOUTH_ASIA: { code: 'ap-south-1', displayName: 'South Asia (Mumbai)' }, SOUTHEAST_ASIA: { code: 'ap-southeast-1', displayName: 'Southeast Asia (Singapore)' }, NORTHEAST_ASIA: { code: 'ap-northeast-1', displayName: 'Northeast Asia (Tokyo)' }, diff --git a/packages/tsconfig/package.json b/packages/tsconfig/package.json index d49a4c6ee80..bbb02c7fce4 100644 --- a/packages/tsconfig/package.json +++ b/packages/tsconfig/package.json @@ -3,9 +3,5 @@ "version": "0.0.0", "private": true, "main": "index.js", - "files": [ - "base.json", - "nextjs.json", - "react-library.json" - ] + "files": ["base.json", "nextjs.json", "react-library.json"] } diff --git a/packages/ui-patterns/admonition.tsx b/packages/ui-patterns/admonition.tsx index 9380a6056a0..477f61756b3 100644 --- a/packages/ui-patterns/admonition.tsx +++ b/packages/ui-patterns/admonition.tsx @@ -102,6 +102,7 @@ export const Admonition = forwardRef< variant={typeMapped} {...props} className={cn( + 'not-prose', 'mb-2', admonitionSVG({ type: typeMapped }), admonitionBase({ type: typeMapped }), diff --git a/packages/ui-patterns/package.json b/packages/ui-patterns/package.json index 32b3a1a393b..3ae95999281 100644 --- a/packages/ui-patterns/package.json +++ b/packages/ui-patterns/package.json @@ -51,16 +51,16 @@ "@testing-library/user-event": "^13.5.0", "@types/common-tags": "^1.8.4", "@types/lodash": "^4.17.5", + "@types/node": "catalog:", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "api-types": "workspace:*", "next-router-mock": "^0.9.13", "typescript": "~5.5.0", - "vite": "^5.2.14", "vitest": "^2.0.3" }, "peerDependencies": { - "next": "*", + "next": "catalog:", "react": "*", "react-dom": "*" } diff --git a/packages/ui-patterns/vitest.config.ts b/packages/ui-patterns/vitest.config.ts index 8623a6c59bf..8506bb4f23a 100644 --- a/packages/ui-patterns/vitest.config.ts +++ b/packages/ui-patterns/vitest.config.ts @@ -1,6 +1,4 @@ -/// - -import { defineConfig } from 'vite' +import { defineConfig } from 'vitest/config' export default defineConfig({ test: { diff --git a/packages/ui-patterns/vitest.setup.ts b/packages/ui-patterns/vitest.setup.ts index a4f40c8d8d0..aa5d0c82e44 100644 --- a/packages/ui-patterns/vitest.setup.ts +++ b/packages/ui-patterns/vitest.setup.ts @@ -1,10 +1,8 @@ /// -import * as matchers from '@testing-library/jest-dom/matchers' +import '@testing-library/jest-dom/vitest' import { cleanup } from '@testing-library/react' -import { afterEach, expect, vi } from 'vitest' - -expect.extend(matchers) +import { afterEach, vi } from 'vitest' Object.defineProperty(window, 'matchMedia', { writable: true, diff --git a/packages/ui/build/css/tw-extend/color.js b/packages/ui/build/css/tw-extend/color.js index 3809cd6673e..1e2e93751dd 100644 --- a/packages/ui/build/css/tw-extend/color.js +++ b/packages/ui/build/css/tw-extend/color.js @@ -1,646 +1,646 @@ module.exports = { -"colors-black": { - cssVariable: "var(--core-colors-black)", - value: "hsl(0, 0%, 0%)" -}, -"colors-white": { - cssVariable: "var(--core-colors-white)", - value: "hsl(0, 0%, 100%)" -}, -"colors-gray-dark-100": { - cssVariable: "var(--core-colors-gray-dark-100)", - value: "hsl(0, 0%, 8.6%)" -}, -"colors-gray-dark-200": { - cssVariable: "var(--core-colors-gray-dark-200)", - value: "hsl(0, 0%, 11%)" -}, -"colors-gray-dark-300": { - cssVariable: "var(--core-colors-gray-dark-300)", - value: "hsl(0, 0%, 13.7%)" -}, -"colors-gray-dark-400": { - cssVariable: "var(--core-colors-gray-dark-400)", - value: "hsl(0, 0%, 15.7%)" -}, -"colors-gray-dark-500": { - cssVariable: "var(--core-colors-gray-dark-500)", - value: "hsl(0, 0%, 18%)" -}, -"colors-gray-dark-600": { - cssVariable: "var(--core-colors-gray-dark-600)", - value: "hsl(0, 0%, 20.4%)" -}, -"colors-gray-dark-700": { - cssVariable: "var(--core-colors-gray-dark-700)", - value: "hsl(0, 0%, 24.3%)" -}, -"colors-gray-dark-800": { - cssVariable: "var(--core-colors-gray-dark-800)", - value: "hsl(0, 0%, 31.4%)" -}, -"colors-gray-dark-900": { - cssVariable: "var(--core-colors-gray-dark-900)", - value: "hsl(0, 0%, 43.9%)" -}, -"colors-gray-dark-1000": { - cssVariable: "var(--core-colors-gray-dark-1000)", - value: "hsl(0, 0%, 49.4%)" -}, -"colors-gray-dark-1100": { - cssVariable: "var(--core-colors-gray-dark-1100)", - value: "hsl(0, 0%, 62.7%)" -}, -"colors-gray-dark-1200": { - cssVariable: "var(--core-colors-gray-dark-1200)", - value: "hsl(0, 0%, 92.9%)" -}, -"colors-gray-dark-alpha-100": { - cssVariable: "var(--core-colors-gray-dark-alpha-100)", - value: "hsla(0, 0%, 0%, 0)" -}, -"colors-gray-dark-alpha-200": { - cssVariable: "var(--core-colors-gray-dark-alpha-200)", - value: "hsla(0, 0%, 100%, 0.03137254901960784)" -}, -"colors-gray-dark-alpha-300": { - cssVariable: "var(--core-colors-gray-dark-alpha-300)", - value: "hsla(0, 0%, 100%, 0.058823529411764705)" -}, -"colors-gray-dark-alpha-400": { - cssVariable: "var(--core-colors-gray-dark-alpha-400)", - value: "hsla(0, 0%, 100%, 0.0784313725490196)" -}, -"colors-gray-dark-alpha-500": { - cssVariable: "var(--core-colors-gray-dark-alpha-500)", - value: "hsla(0, 0%, 100%, 0.10196078431372549)" -}, -"colors-gray-dark-alpha-600": { - cssVariable: "var(--core-colors-gray-dark-alpha-600)", - value: "hsla(0, 0%, 100%, 0.12941176470588237)" -}, -"colors-gray-dark-alpha-700": { - cssVariable: "var(--core-colors-gray-dark-alpha-700)", - value: "hsla(0, 0%, 100%, 0.16862745098039217)" -}, -"colors-gray-dark-alpha-800": { - cssVariable: "var(--core-colors-gray-dark-alpha-800)", - value: "hsla(0, 0%, 100%, 0.25098039215686274)" -}, -"colors-gray-dark-alpha-900": { - cssVariable: "var(--core-colors-gray-dark-alpha-900)", - value: "hsla(0, 0%, 100%, 0.38823529411764707)" -}, -"colors-gray-dark-alpha-1000": { - cssVariable: "var(--core-colors-gray-dark-alpha-1000)", - value: "hsla(0, 0%, 100%, 0.45098039215686275)" -}, -"colors-gray-dark-alpha-1100": { - cssVariable: "var(--core-colors-gray-dark-alpha-1100)", - value: "hsla(0, 0%, 100%, 0.5882352941176471)" -}, -"colors-gray-dark-alpha-1200": { - cssVariable: "var(--core-colors-gray-dark-alpha-1200)", - value: "hsla(0, 0%, 100%, 0.9215686274509803)" -}, -"colors-gray-light-100": { - cssVariable: "var(--core-colors-gray-light-100)", - value: "hsl(0, 0%, 98.8%)" -}, -"colors-gray-light-200": { - cssVariable: "var(--core-colors-gray-light-200)", - value: "hsl(0, 0%, 97.3%)" -}, -"colors-gray-light-300": { - cssVariable: "var(--core-colors-gray-light-300)", - value: "hsl(0, 0%, 95.3%)" -}, -"colors-gray-light-400": { - cssVariable: "var(--core-colors-gray-light-400)", - value: "hsl(0, 0%, 92.9%)" -}, -"colors-gray-light-500": { - cssVariable: "var(--core-colors-gray-light-500)", - value: "hsl(0, 0%, 91%)" -}, -"colors-gray-light-600": { - cssVariable: "var(--core-colors-gray-light-600)", - value: "hsl(0, 0%, 88.6%)" -}, -"colors-gray-light-700": { - cssVariable: "var(--core-colors-gray-light-700)", - value: "hsl(0, 0%, 85.9%)" -}, -"colors-gray-light-800": { - cssVariable: "var(--core-colors-gray-light-800)", - value: "hsl(0, 0%, 78%)" -}, -"colors-gray-light-900": { - cssVariable: "var(--core-colors-gray-light-900)", - value: "hsl(0, 0%, 56.1%)" -}, -"colors-gray-light-1000": { - cssVariable: "var(--core-colors-gray-light-1000)", - value: "hsl(0, 0%, 52.2%)" -}, -"colors-gray-light-1100": { - cssVariable: "var(--core-colors-gray-light-1100)", - value: "hsl(0, 0%, 43.5%)" -}, -"colors-gray-light-1200": { - cssVariable: "var(--core-colors-gray-light-1200)", - value: "hsl(0, 0%, 9%)" -}, -"colors-gray-light-alpha-100": { - cssVariable: "var(--core-colors-gray-light-alpha-100)", - value: "hsla(0, 0%, 0%, 0.011764705882352941)" -}, -"colors-gray-light-alpha-200": { - cssVariable: "var(--core-colors-gray-light-alpha-200)", - value: "hsla(0, 0%, 0%, 0.03137254901960784)" -}, -"colors-gray-light-alpha-300": { - cssVariable: "var(--core-colors-gray-light-alpha-300)", - value: "hsla(0, 0%, 0%, 0.050980392156862744)" -}, -"colors-gray-light-alpha-400": { - cssVariable: "var(--core-colors-gray-light-alpha-400)", - value: "hsla(0, 0%, 0%, 0.07058823529411765)" -}, -"colors-gray-light-alpha-500": { - cssVariable: "var(--core-colors-gray-light-alpha-500)", - value: "hsla(0, 0%, 0%, 0.09019607843137255)" -}, -"colors-gray-light-alpha-600": { - cssVariable: "var(--core-colors-gray-light-alpha-600)", - value: "hsla(0, 0%, 0%, 0.10980392156862745)" -}, -"colors-gray-light-alpha-700": { - cssVariable: "var(--core-colors-gray-light-alpha-700)", - value: "hsla(0, 0%, 0%, 0.1411764705882353)" -}, -"colors-gray-light-alpha-800": { - cssVariable: "var(--core-colors-gray-light-alpha-800)", - value: "hsla(0, 0%, 0%, 0.2196078431372549)" -}, -"colors-gray-light-alpha-900": { - cssVariable: "var(--core-colors-gray-light-alpha-900)", - value: "hsla(0, 0%, 0%, 0.4392156862745098)" -}, -"colors-gray-light-alpha-1000": { - cssVariable: "var(--core-colors-gray-light-alpha-1000)", - value: "hsla(0, 0%, 0%, 0.47843137254901963)" -}, -"colors-gray-light-alpha-1100": { - cssVariable: "var(--core-colors-gray-light-alpha-1100)", - value: "hsla(0, 0%, 0%, 0.5607843137254902)" -}, -"colors-gray-light-alpha-1200": { - cssVariable: "var(--core-colors-gray-light-alpha-1200)", - value: "hsla(0, 0%, 0%, 0.9098039215686274)" -}, -"colors-slate-dark-100": { - cssVariable: "var(--core-colors-slate-dark-100)", - value: "hsl(200, 6.7%, 8.8%)" -}, -"colors-slate-dark-200": { - cssVariable: "var(--core-colors-slate-dark-200)", - value: "hsl(195, 7.1%, 11%)" -}, -"colors-slate-dark-300": { - cssVariable: "var(--core-colors-slate-dark-300)", - value: "hsl(192, 7.2%, 13.5%)" -}, -"colors-slate-dark-400": { - cssVariable: "var(--core-colors-slate-dark-400)", - value: "hsl(204, 6.2%, 15.9%)" -}, -"colors-slate-dark-500": { - cssVariable: "var(--core-colors-slate-dark-500)", - value: "hsl(200, 6.5%, 18%)" -}, -"colors-slate-dark-600": { - cssVariable: "var(--core-colors-slate-dark-600)", - value: "hsl(205.70000000000005, 6.7%, 20.6%)" -}, -"colors-slate-dark-700": { - cssVariable: "var(--core-colors-slate-dark-700)", - value: "hsl(202.5, 6.5%, 24.3%)" -}, -"colors-slate-dark-800": { - cssVariable: "var(--core-colors-slate-dark-800)", - value: "hsl(206.70000000000005, 5.6%, 31.6%)" -}, -"colors-slate-dark-900": { - cssVariable: "var(--core-colors-slate-dark-900)", - value: "hsl(205.70000000000005, 6.3%, 43.9%)" -}, -"colors-slate-dark-1000": { - cssVariable: "var(--core-colors-slate-dark-1000)", - value: "hsl(207.70000000000005, 5.1%, 49.6%)" -}, -"colors-slate-dark-1100": { - cssVariable: "var(--core-colors-slate-dark-1100)", - value: "hsl(207.29999999999995, 5.8%, 62.9%)" -}, -"colors-slate-dark-1200": { - cssVariable: "var(--core-colors-slate-dark-1200)", - value: "hsl(210, 5.6%, 92.9%)" -}, -"colors-slate-dark-alpha-100": { - cssVariable: "var(--core-colors-slate-dark-alpha-100)", - value: "hsla(0, 0%, 0%, 0)" -}, -"colors-slate-dark-alpha-200": { - cssVariable: "var(--core-colors-slate-dark-alpha-200)", - value: "hsla(181.39999999999998, 100%, 91.8%, 0.03137254901960784)" -}, -"colors-slate-dark-alpha-300": { - cssVariable: "var(--core-colors-slate-dark-alpha-300)", - value: "hsla(181.60000000000002, 86.4%, 91.4%, 0.058823529411764705)" -}, -"colors-slate-dark-alpha-400": { - cssVariable: "var(--core-colors-slate-dark-alpha-400)", - value: "hsla(208.89999999999998, 87.1%, 93.9%, 0.0784313725490196)" -}, -"colors-slate-dark-alpha-500": { - cssVariable: "var(--core-colors-slate-dark-alpha-500)", - value: "hsla(200, 88.2%, 93.3%, 0.10980392156862745)" -}, -"colors-slate-dark-alpha-600": { - cssVariable: "var(--core-colors-slate-dark-alpha-600)", - value: "hsla(209, 93.9%, 93.5%, 0.1411764705882353)" -}, -"colors-slate-dark-alpha-700": { - cssVariable: "var(--core-colors-slate-dark-alpha-700)", - value: "hsla(203.20000000000005, 100%, 93.9%, 0.1803921568627451)" -}, -"colors-slate-dark-alpha-800": { - cssVariable: "var(--core-colors-slate-dark-alpha-800)", - value: "hsla(208.79999999999995, 92.6%, 94.7%, 0.25882352941176473)" -}, -"colors-slate-dark-alpha-900": { - cssVariable: "var(--core-colors-slate-dark-alpha-900)", - value: "hsla(208, 100%, 94.1%, 0.4117647058823529)" -}, -"colors-slate-dark-alpha-1000": { - cssVariable: "var(--core-colors-slate-dark-alpha-1000)", - value: "hsla(210, 100%, 95.3%, 0.47058823529411764)" -}, -"colors-slate-dark-alpha-1100": { - cssVariable: "var(--core-colors-slate-dark-alpha-1100)", - value: "hsla(210, 100%, 96.9%, 0.6196078431372549)" -}, -"colors-slate-dark-alpha-1200": { - cssVariable: "var(--core-colors-slate-dark-alpha-1200)", - value: "hsla(210, 100%, 99.6%, 0.9294117647058824)" -}, -"colors-slate-light-100": { - cssVariable: "var(--core-colors-slate-light-100)", - value: "hsl(210, 33.3%, 98.8%)" -}, -"colors-slate-light-200": { - cssVariable: "var(--core-colors-slate-light-200)", - value: "hsl(210, 16.7%, 97.6%)" -}, -"colors-slate-light-300": { - cssVariable: "var(--core-colors-slate-light-300)", - value: "hsl(210, 16.7%, 95.3%)" -}, -"colors-slate-light-400": { - cssVariable: "var(--core-colors-slate-light-400)", - value: "hsl(210, 11.8%, 93.3%)" -}, -"colors-slate-light-500": { - cssVariable: "var(--core-colors-slate-light-500)", - value: "hsl(216, 11.1%, 91.2%)" -}, -"colors-slate-light-600": { - cssVariable: "var(--core-colors-slate-light-600)", - value: "hsl(205.70000000000005, 12.3%, 88.8%)" -}, -"colors-slate-light-700": { - cssVariable: "var(--core-colors-slate-light-700)", - value: "hsl(210, 11.1%, 85.9%)" -}, -"colors-slate-light-800": { - cssVariable: "var(--core-colors-slate-light-800)", - value: "hsl(205, 10.7%, 78%)" -}, -"colors-slate-light-900": { - cssVariable: "var(--core-colors-slate-light-900)", - value: "hsl(205.70000000000005, 6.3%, 56.1%)" -}, -"colors-slate-light-1000": { - cssVariable: "var(--core-colors-slate-light-1000)", - value: "hsl(205.70000000000005, 5.7%, 52.2%)" -}, -"colors-slate-light-1100": { - cssVariable: "var(--core-colors-slate-light-1100)", - value: "hsl(205.70000000000005, 6.3%, 43.5%)" -}, -"colors-slate-light-1200": { - cssVariable: "var(--core-colors-slate-light-1200)", - value: "hsl(201.79999999999995, 24.4%, 8.8%)" -}, -"colors-slate-light-alpha-100": { - cssVariable: "var(--core-colors-slate-light-alpha-100)", - value: "hsla(209.79999999999995, 92.6%, 26.5%, 0.0196078431372549)" -}, -"colors-slate-light-alpha-200": { - cssVariable: "var(--core-colors-slate-light-alpha-200)", - value: "hsla(210, 87.8%, 16.1%, 0.03137254901960784)" -}, -"colors-slate-light-alpha-300": { - cssVariable: "var(--core-colors-slate-light-alpha-300)", - value: "hsla(209.60000000000002, 100%, 14.3%, 0.050980392156862744)" -}, -"colors-slate-light-alpha-400": { - cssVariable: "var(--core-colors-slate-light-alpha-400)", - value: "hsla(210.60000000000002, 93%, 11.2%, 0.0784313725490196)" -}, -"colors-slate-light-alpha-500": { - cssVariable: "var(--core-colors-slate-light-alpha-500)", - value: "hsla(215.29999999999995, 92.7%, 10.8%, 0.10196078431372549)" -}, -"colors-slate-light-alpha-600": { - cssVariable: "var(--core-colors-slate-light-alpha-600)", - value: "hsla(205.70000000000005, 96.6%, 11.4%, 0.12941176470588237)" -}, -"colors-slate-light-alpha-700": { - cssVariable: "var(--core-colors-slate-light-alpha-700)", - value: "hsla(209.39999999999998, 100%, 10%, 0.1607843137254902)" -}, -"colors-slate-light-alpha-800": { - cssVariable: "var(--core-colors-slate-light-alpha-800)", - value: "hsla(204.5, 96.1%, 10%, 0.23921568627450981)" -}, -"colors-slate-light-alpha-900": { - cssVariable: "var(--core-colors-slate-light-alpha-900)", - value: "hsla(206, 100%, 5.9%, 0.47058823529411764)" -}, -"colors-slate-light-alpha-1000": { - cssVariable: "var(--core-colors-slate-light-alpha-1000)", - value: "hsla(204.39999999999998, 100%, 5.3%, 0.5098039215686274)" -}, -"colors-slate-light-alpha-1100": { - cssVariable: "var(--core-colors-slate-light-alpha-1100)", - value: "hsla(205, 100%, 4.7%, 0.5882352941176471)" -}, -"colors-slate-light-alpha-1200": { - cssVariable: "var(--core-colors-slate-light-alpha-1200)", - value: "hsla(200, 100%, 2.4%, 0.9294117647058824)" -}, -"variables-colors-brand-primary": { - cssVariable: "var(--core-variables-colors-brand-primary)", - value: "hsl(153.10000000000002, 60.2%, 52.7%)" -}, -"variables-colors-brand-accent": { - cssVariable: "var(--core-variables-colors-brand-accent)", - value: "hsl(152.89999999999998, 56.1%, 46.5%)" -}, -"foreground-DEFAULT": { - cssVariable: "var(--foreground-default)", - value: "hsl(0, 0%, 98%)" -}, -"foreground-light": { - cssVariable: "var(--foreground-light)", - value: "hsl(0, 0%, 70.6%)" -}, -"foreground-lighter": { - cssVariable: "var(--foreground-lighter)", - value: "hsl(0, 0%, 53.7%)" -}, -"foreground-muted": { - cssVariable: "var(--foreground-muted)", - value: "hsl(0, 0%, 30.2%)" -}, -"foreground-contrast": { - cssVariable: "var(--foreground-contrast)", - value: "hsl(0, 0%, 8.6%)" -}, -"background-200": { - cssVariable: "var(--background-200)", - value: "hsl(0, 0%, 9%)" -}, -"background-DEFAULT": { - cssVariable: "var(--background-default)", - value: "hsl(0, 0%, 7.1%)" -}, -"background-alternative-200": { - cssVariable: "var(--background-alternative-200)", - value: "hsl(0, 0%, 11%)" -}, -"background-alternative-DEFAULT": { - cssVariable: "var(--background-alternative-default)", - value: "hsl(0, 0%, 5.9%)" -}, -"background-selection": { - cssVariable: "var(--background-selection)", - value: "hsl(0, 0%, 19.2%)" -}, -"background-control": { - cssVariable: "var(--background-control)", - value: "hsl(0, 0%, 14.1%)" -}, -"background-surface-75": { - cssVariable: "var(--background-surface-75)", - value: "hsl(0, 0%, 9%)" -}, -"background-surface-100": { - cssVariable: "var(--background-surface-100)", - value: "hsl(0, 0%, 12.2%)" -}, -"background-surface-200": { - cssVariable: "var(--background-surface-200)", - value: "hsl(0, 0%, 12.9%)" -}, -"background-surface-300": { - cssVariable: "var(--background-surface-300)", - value: "hsl(0, 0%, 16.1%)" -}, -"background-surface-400": { - cssVariable: "var(--background-surface-400)", - value: "hsl(0, 0%, 16.1%)" -}, -"background-overlay-DEFAULT": { - cssVariable: "var(--background-overlay-default)", - value: "hsl(0, 0%, 14.1%)" -}, -"background-overlay-hover": { - cssVariable: "var(--background-overlay-hover)", - value: "hsl(0, 0%, 18%)" -}, -"background-muted": { - cssVariable: "var(--background-muted)", - value: "hsl(0, 0%, 14.1%)" -}, -"background-button-DEFAULT": { - cssVariable: "var(--background-button-default)", - value: "hsl(0, 0%, 18%)" -}, -"background-dialog-DEFAULT": { - cssVariable: "var(--background-dialog-default)", - value: "hsl(0, 0%, 7.1%)" -}, -"background-dash-sidebar": { - cssVariable: "var(--background-dash-sidebar)", - value: "hsl(0, 0%, 9%)" -}, -"background-dash-canvas": { - cssVariable: "var(--background-dash-canvas)", - value: "hsl(0, 0%, 7.1%)" -}, -"border-DEFAULT": { - cssVariable: "var(--border-default)", - value: "hsl(0, 0%, 18%)" -}, -"border-muted": { - cssVariable: "var(--border-muted)", - value: "hsl(0, 0%, 14.1%)" -}, -"border-secondary": { - cssVariable: "var(--border-secondary)", - value: "hsl(0, 0%, 14.1%)" -}, -"border-overlay": { - cssVariable: "var(--border-overlay)", - value: "hsl(0, 0%, 20%)" -}, -"border-control": { - cssVariable: "var(--border-control)", - value: "hsl(0, 0%, 22.4%)" -}, -"border-alternative": { - cssVariable: "var(--border-alternative)", - value: "hsl(0, 0%, 26.7%)" -}, -"border-strong": { - cssVariable: "var(--border-strong)", - value: "hsl(0, 0%, 21.2%)" -}, -"border-stronger": { - cssVariable: "var(--border-stronger)", - value: "hsl(0, 0%, 27.1%)" -}, -"border-button-DEFAULT": { - cssVariable: "var(--border-button-default)", - value: "hsl(0, 0%, 24.3%)" -}, -"border-button-hover": { - cssVariable: "var(--border-button-hover)", - value: "hsl(0, 0%, 31.4%)" -}, -"destructive-200": { - cssVariable: "var(--destructive-200)", - value: "hsl(10.899999999999977, 23.4%, 9.2%)" -}, -"destructive-300": { - cssVariable: "var(--destructive-300)", - value: "hsl(7.5, 51.3%, 15.3%)" -}, -"destructive-400": { - cssVariable: "var(--destructive-400)", - value: "hsl(6.699999999999989, 60%, 20.6%)" -}, -"destructive-500": { - cssVariable: "var(--destructive-500)", - value: "hsl(7.899999999999977, 71.6%, 29%)" -}, -"destructive-600": { - cssVariable: "var(--destructive-600)", - value: "hsl(9.699999999999989, 85.2%, 62.9%)" -}, -"destructive-DEFAULT": { - cssVariable: "var(--destructive-default)", - value: "hsl(10.199999999999989, 77.9%, 53.9%)" -}, -"warning-200": { - cssVariable: "var(--warning-200)", - value: "hsl(36.60000000000002, 100%, 8%)" -}, -"warning-300": { - cssVariable: "var(--warning-300)", - value: "hsl(32.30000000000001, 100%, 10.2%)" -}, -"warning-400": { - cssVariable: "var(--warning-400)", - value: "hsl(33.19999999999999, 100%, 14.5%)" -}, -"warning-500": { - cssVariable: "var(--warning-500)", - value: "hsl(34.80000000000001, 90.9%, 21.6%)" -}, -"warning-600": { - cssVariable: "var(--warning-600)", - value: "hsl(38.89999999999998, 100%, 42.9%)" -}, -"warning-DEFAULT": { - cssVariable: "var(--warning-default)", - value: "hsl(38.89999999999998, 100%, 42.9%)" -}, -"brand-200": { - cssVariable: "var(--brand-200)", - value: "hsl(162, 100%, 2%)" -}, -"brand-300": { - cssVariable: "var(--brand-300)", - value: "hsl(155.10000000000002, 100%, 8%)" -}, -"brand-400": { - cssVariable: "var(--brand-400)", - value: "hsl(155.5, 100%, 9.6%)" -}, -"brand-500": { - cssVariable: "var(--brand-500)", - value: "hsl(154.89999999999998, 100%, 19.2%)" -}, -"brand-600": { - cssVariable: "var(--brand-600)", - value: "hsl(154.89999999999998, 59.5%, 70%)" -}, -"brand-DEFAULT": { - cssVariable: "var(--brand-default)", - value: "hsl(153.10000000000002, 60.2%, 52.7%)" -}, -"brand-button": { - cssVariable: "var(--brand-button)", - value: "hsl(154.89999999999998, 100%, 19.2%)" -}, -"brand-link": { - cssVariable: "var(--brand-link)", - value: "hsl(155, 100%, 38.6%)" -}, -"_secondary-200": { - cssVariable: "var(--secondary-200)", - value: "hsl(248, 53.6%, 11%)" -}, -"_secondary-400": { - cssVariable: "var(--secondary-400)", - value: "hsl(248.29999999999995, 54.5%, 25.9%)" -}, -"_secondary-DEFAULT": { - cssVariable: "var(--secondary-default)", - value: "hsl(247.79999999999995, 100%, 70%)" -}, -"code_block-1": { - cssVariable: "var(--code-block-1)", - value: "hsl(170.79999999999995, 43.1%, 61.4%)" -}, -"code_block-2": { - cssVariable: "var(--code-block-2)", - value: "hsl(33.19999999999999, 90.3%, 75.7%)" -}, -"code_block-3": { - cssVariable: "var(--code-block-3)", - value: "hsl(83.80000000000001, 61.7%, 63.1%)" -}, -"code_block-4": { - cssVariable: "var(--code-block-4)", - value: "hsl(276.1, 67.7%, 74.5%)" -}, -"code_block-5": { - cssVariable: "var(--code-block-5)", - value: "hsl(13.800000000000011, 89.7%, 69.6%)" + 'colors-black': { + cssVariable: 'var(--core-colors-black)', + value: 'hsl(0, 0%, 0%)', + }, + 'colors-white': { + cssVariable: 'var(--core-colors-white)', + value: 'hsl(0, 0%, 100%)', + }, + 'colors-gray-dark-100': { + cssVariable: 'var(--core-colors-gray-dark-100)', + value: 'hsl(0, 0%, 8.6%)', + }, + 'colors-gray-dark-200': { + cssVariable: 'var(--core-colors-gray-dark-200)', + value: 'hsl(0, 0%, 11%)', + }, + 'colors-gray-dark-300': { + cssVariable: 'var(--core-colors-gray-dark-300)', + value: 'hsl(0, 0%, 13.7%)', + }, + 'colors-gray-dark-400': { + cssVariable: 'var(--core-colors-gray-dark-400)', + value: 'hsl(0, 0%, 15.7%)', + }, + 'colors-gray-dark-500': { + cssVariable: 'var(--core-colors-gray-dark-500)', + value: 'hsl(0, 0%, 18%)', + }, + 'colors-gray-dark-600': { + cssVariable: 'var(--core-colors-gray-dark-600)', + value: 'hsl(0, 0%, 20.4%)', + }, + 'colors-gray-dark-700': { + cssVariable: 'var(--core-colors-gray-dark-700)', + value: 'hsl(0, 0%, 24.3%)', + }, + 'colors-gray-dark-800': { + cssVariable: 'var(--core-colors-gray-dark-800)', + value: 'hsl(0, 0%, 31.4%)', + }, + 'colors-gray-dark-900': { + cssVariable: 'var(--core-colors-gray-dark-900)', + value: 'hsl(0, 0%, 43.9%)', + }, + 'colors-gray-dark-1000': { + cssVariable: 'var(--core-colors-gray-dark-1000)', + value: 'hsl(0, 0%, 49.4%)', + }, + 'colors-gray-dark-1100': { + cssVariable: 'var(--core-colors-gray-dark-1100)', + value: 'hsl(0, 0%, 62.7%)', + }, + 'colors-gray-dark-1200': { + cssVariable: 'var(--core-colors-gray-dark-1200)', + value: 'hsl(0, 0%, 92.9%)', + }, + 'colors-gray-dark-alpha-100': { + cssVariable: 'var(--core-colors-gray-dark-alpha-100)', + value: 'hsla(0, 0%, 0%, 0)', + }, + 'colors-gray-dark-alpha-200': { + cssVariable: 'var(--core-colors-gray-dark-alpha-200)', + value: 'hsla(0, 0%, 100%, 0.03137254901960784)', + }, + 'colors-gray-dark-alpha-300': { + cssVariable: 'var(--core-colors-gray-dark-alpha-300)', + value: 'hsla(0, 0%, 100%, 0.058823529411764705)', + }, + 'colors-gray-dark-alpha-400': { + cssVariable: 'var(--core-colors-gray-dark-alpha-400)', + value: 'hsla(0, 0%, 100%, 0.0784313725490196)', + }, + 'colors-gray-dark-alpha-500': { + cssVariable: 'var(--core-colors-gray-dark-alpha-500)', + value: 'hsla(0, 0%, 100%, 0.10196078431372549)', + }, + 'colors-gray-dark-alpha-600': { + cssVariable: 'var(--core-colors-gray-dark-alpha-600)', + value: 'hsla(0, 0%, 100%, 0.12941176470588237)', + }, + 'colors-gray-dark-alpha-700': { + cssVariable: 'var(--core-colors-gray-dark-alpha-700)', + value: 'hsla(0, 0%, 100%, 0.16862745098039217)', + }, + 'colors-gray-dark-alpha-800': { + cssVariable: 'var(--core-colors-gray-dark-alpha-800)', + value: 'hsla(0, 0%, 100%, 0.25098039215686274)', + }, + 'colors-gray-dark-alpha-900': { + cssVariable: 'var(--core-colors-gray-dark-alpha-900)', + value: 'hsla(0, 0%, 100%, 0.38823529411764707)', + }, + 'colors-gray-dark-alpha-1000': { + cssVariable: 'var(--core-colors-gray-dark-alpha-1000)', + value: 'hsla(0, 0%, 100%, 0.45098039215686275)', + }, + 'colors-gray-dark-alpha-1100': { + cssVariable: 'var(--core-colors-gray-dark-alpha-1100)', + value: 'hsla(0, 0%, 100%, 0.5882352941176471)', + }, + 'colors-gray-dark-alpha-1200': { + cssVariable: 'var(--core-colors-gray-dark-alpha-1200)', + value: 'hsla(0, 0%, 100%, 0.9215686274509803)', + }, + 'colors-gray-light-100': { + cssVariable: 'var(--core-colors-gray-light-100)', + value: 'hsl(0, 0%, 98.8%)', + }, + 'colors-gray-light-200': { + cssVariable: 'var(--core-colors-gray-light-200)', + value: 'hsl(0, 0%, 97.3%)', + }, + 'colors-gray-light-300': { + cssVariable: 'var(--core-colors-gray-light-300)', + value: 'hsl(0, 0%, 95.3%)', + }, + 'colors-gray-light-400': { + cssVariable: 'var(--core-colors-gray-light-400)', + value: 'hsl(0, 0%, 92.9%)', + }, + 'colors-gray-light-500': { + cssVariable: 'var(--core-colors-gray-light-500)', + value: 'hsl(0, 0%, 91%)', + }, + 'colors-gray-light-600': { + cssVariable: 'var(--core-colors-gray-light-600)', + value: 'hsl(0, 0%, 88.6%)', + }, + 'colors-gray-light-700': { + cssVariable: 'var(--core-colors-gray-light-700)', + value: 'hsl(0, 0%, 85.9%)', + }, + 'colors-gray-light-800': { + cssVariable: 'var(--core-colors-gray-light-800)', + value: 'hsl(0, 0%, 78%)', + }, + 'colors-gray-light-900': { + cssVariable: 'var(--core-colors-gray-light-900)', + value: 'hsl(0, 0%, 56.1%)', + }, + 'colors-gray-light-1000': { + cssVariable: 'var(--core-colors-gray-light-1000)', + value: 'hsl(0, 0%, 52.2%)', + }, + 'colors-gray-light-1100': { + cssVariable: 'var(--core-colors-gray-light-1100)', + value: 'hsl(0, 0%, 43.5%)', + }, + 'colors-gray-light-1200': { + cssVariable: 'var(--core-colors-gray-light-1200)', + value: 'hsl(0, 0%, 9%)', + }, + 'colors-gray-light-alpha-100': { + cssVariable: 'var(--core-colors-gray-light-alpha-100)', + value: 'hsla(0, 0%, 0%, 0.011764705882352941)', + }, + 'colors-gray-light-alpha-200': { + cssVariable: 'var(--core-colors-gray-light-alpha-200)', + value: 'hsla(0, 0%, 0%, 0.03137254901960784)', + }, + 'colors-gray-light-alpha-300': { + cssVariable: 'var(--core-colors-gray-light-alpha-300)', + value: 'hsla(0, 0%, 0%, 0.050980392156862744)', + }, + 'colors-gray-light-alpha-400': { + cssVariable: 'var(--core-colors-gray-light-alpha-400)', + value: 'hsla(0, 0%, 0%, 0.07058823529411765)', + }, + 'colors-gray-light-alpha-500': { + cssVariable: 'var(--core-colors-gray-light-alpha-500)', + value: 'hsla(0, 0%, 0%, 0.09019607843137255)', + }, + 'colors-gray-light-alpha-600': { + cssVariable: 'var(--core-colors-gray-light-alpha-600)', + value: 'hsla(0, 0%, 0%, 0.10980392156862745)', + }, + 'colors-gray-light-alpha-700': { + cssVariable: 'var(--core-colors-gray-light-alpha-700)', + value: 'hsla(0, 0%, 0%, 0.1411764705882353)', + }, + 'colors-gray-light-alpha-800': { + cssVariable: 'var(--core-colors-gray-light-alpha-800)', + value: 'hsla(0, 0%, 0%, 0.2196078431372549)', + }, + 'colors-gray-light-alpha-900': { + cssVariable: 'var(--core-colors-gray-light-alpha-900)', + value: 'hsla(0, 0%, 0%, 0.4392156862745098)', + }, + 'colors-gray-light-alpha-1000': { + cssVariable: 'var(--core-colors-gray-light-alpha-1000)', + value: 'hsla(0, 0%, 0%, 0.47843137254901963)', + }, + 'colors-gray-light-alpha-1100': { + cssVariable: 'var(--core-colors-gray-light-alpha-1100)', + value: 'hsla(0, 0%, 0%, 0.5607843137254902)', + }, + 'colors-gray-light-alpha-1200': { + cssVariable: 'var(--core-colors-gray-light-alpha-1200)', + value: 'hsla(0, 0%, 0%, 0.9098039215686274)', + }, + 'colors-slate-dark-100': { + cssVariable: 'var(--core-colors-slate-dark-100)', + value: 'hsl(200, 6.7%, 8.8%)', + }, + 'colors-slate-dark-200': { + cssVariable: 'var(--core-colors-slate-dark-200)', + value: 'hsl(195, 7.1%, 11%)', + }, + 'colors-slate-dark-300': { + cssVariable: 'var(--core-colors-slate-dark-300)', + value: 'hsl(192, 7.2%, 13.5%)', + }, + 'colors-slate-dark-400': { + cssVariable: 'var(--core-colors-slate-dark-400)', + value: 'hsl(204, 6.2%, 15.9%)', + }, + 'colors-slate-dark-500': { + cssVariable: 'var(--core-colors-slate-dark-500)', + value: 'hsl(200, 6.5%, 18%)', + }, + 'colors-slate-dark-600': { + cssVariable: 'var(--core-colors-slate-dark-600)', + value: 'hsl(205.70000000000005, 6.7%, 20.6%)', + }, + 'colors-slate-dark-700': { + cssVariable: 'var(--core-colors-slate-dark-700)', + value: 'hsl(202.5, 6.5%, 24.3%)', + }, + 'colors-slate-dark-800': { + cssVariable: 'var(--core-colors-slate-dark-800)', + value: 'hsl(206.70000000000005, 5.6%, 31.6%)', + }, + 'colors-slate-dark-900': { + cssVariable: 'var(--core-colors-slate-dark-900)', + value: 'hsl(205.70000000000005, 6.3%, 43.9%)', + }, + 'colors-slate-dark-1000': { + cssVariable: 'var(--core-colors-slate-dark-1000)', + value: 'hsl(207.70000000000005, 5.1%, 49.6%)', + }, + 'colors-slate-dark-1100': { + cssVariable: 'var(--core-colors-slate-dark-1100)', + value: 'hsl(207.29999999999995, 5.8%, 62.9%)', + }, + 'colors-slate-dark-1200': { + cssVariable: 'var(--core-colors-slate-dark-1200)', + value: 'hsl(210, 5.6%, 92.9%)', + }, + 'colors-slate-dark-alpha-100': { + cssVariable: 'var(--core-colors-slate-dark-alpha-100)', + value: 'hsla(0, 0%, 0%, 0)', + }, + 'colors-slate-dark-alpha-200': { + cssVariable: 'var(--core-colors-slate-dark-alpha-200)', + value: 'hsla(181.39999999999998, 100%, 91.8%, 0.03137254901960784)', + }, + 'colors-slate-dark-alpha-300': { + cssVariable: 'var(--core-colors-slate-dark-alpha-300)', + value: 'hsla(181.60000000000002, 86.4%, 91.4%, 0.058823529411764705)', + }, + 'colors-slate-dark-alpha-400': { + cssVariable: 'var(--core-colors-slate-dark-alpha-400)', + value: 'hsla(208.89999999999998, 87.1%, 93.9%, 0.0784313725490196)', + }, + 'colors-slate-dark-alpha-500': { + cssVariable: 'var(--core-colors-slate-dark-alpha-500)', + value: 'hsla(200, 88.2%, 93.3%, 0.10980392156862745)', + }, + 'colors-slate-dark-alpha-600': { + cssVariable: 'var(--core-colors-slate-dark-alpha-600)', + value: 'hsla(209, 93.9%, 93.5%, 0.1411764705882353)', + }, + 'colors-slate-dark-alpha-700': { + cssVariable: 'var(--core-colors-slate-dark-alpha-700)', + value: 'hsla(203.20000000000005, 100%, 93.9%, 0.1803921568627451)', + }, + 'colors-slate-dark-alpha-800': { + cssVariable: 'var(--core-colors-slate-dark-alpha-800)', + value: 'hsla(208.79999999999995, 92.6%, 94.7%, 0.25882352941176473)', + }, + 'colors-slate-dark-alpha-900': { + cssVariable: 'var(--core-colors-slate-dark-alpha-900)', + value: 'hsla(208, 100%, 94.1%, 0.4117647058823529)', + }, + 'colors-slate-dark-alpha-1000': { + cssVariable: 'var(--core-colors-slate-dark-alpha-1000)', + value: 'hsla(210, 100%, 95.3%, 0.47058823529411764)', + }, + 'colors-slate-dark-alpha-1100': { + cssVariable: 'var(--core-colors-slate-dark-alpha-1100)', + value: 'hsla(210, 100%, 96.9%, 0.6196078431372549)', + }, + 'colors-slate-dark-alpha-1200': { + cssVariable: 'var(--core-colors-slate-dark-alpha-1200)', + value: 'hsla(210, 100%, 99.6%, 0.9294117647058824)', + }, + 'colors-slate-light-100': { + cssVariable: 'var(--core-colors-slate-light-100)', + value: 'hsl(210, 33.3%, 98.8%)', + }, + 'colors-slate-light-200': { + cssVariable: 'var(--core-colors-slate-light-200)', + value: 'hsl(210, 16.7%, 97.6%)', + }, + 'colors-slate-light-300': { + cssVariable: 'var(--core-colors-slate-light-300)', + value: 'hsl(210, 16.7%, 95.3%)', + }, + 'colors-slate-light-400': { + cssVariable: 'var(--core-colors-slate-light-400)', + value: 'hsl(210, 11.8%, 93.3%)', + }, + 'colors-slate-light-500': { + cssVariable: 'var(--core-colors-slate-light-500)', + value: 'hsl(216, 11.1%, 91.2%)', + }, + 'colors-slate-light-600': { + cssVariable: 'var(--core-colors-slate-light-600)', + value: 'hsl(205.70000000000005, 12.3%, 88.8%)', + }, + 'colors-slate-light-700': { + cssVariable: 'var(--core-colors-slate-light-700)', + value: 'hsl(210, 11.1%, 85.9%)', + }, + 'colors-slate-light-800': { + cssVariable: 'var(--core-colors-slate-light-800)', + value: 'hsl(205, 10.7%, 78%)', + }, + 'colors-slate-light-900': { + cssVariable: 'var(--core-colors-slate-light-900)', + value: 'hsl(205.70000000000005, 6.3%, 56.1%)', + }, + 'colors-slate-light-1000': { + cssVariable: 'var(--core-colors-slate-light-1000)', + value: 'hsl(205.70000000000005, 5.7%, 52.2%)', + }, + 'colors-slate-light-1100': { + cssVariable: 'var(--core-colors-slate-light-1100)', + value: 'hsl(205.70000000000005, 6.3%, 43.5%)', + }, + 'colors-slate-light-1200': { + cssVariable: 'var(--core-colors-slate-light-1200)', + value: 'hsl(201.79999999999995, 24.4%, 8.8%)', + }, + 'colors-slate-light-alpha-100': { + cssVariable: 'var(--core-colors-slate-light-alpha-100)', + value: 'hsla(209.79999999999995, 92.6%, 26.5%, 0.0196078431372549)', + }, + 'colors-slate-light-alpha-200': { + cssVariable: 'var(--core-colors-slate-light-alpha-200)', + value: 'hsla(210, 87.8%, 16.1%, 0.03137254901960784)', + }, + 'colors-slate-light-alpha-300': { + cssVariable: 'var(--core-colors-slate-light-alpha-300)', + value: 'hsla(209.60000000000002, 100%, 14.3%, 0.050980392156862744)', + }, + 'colors-slate-light-alpha-400': { + cssVariable: 'var(--core-colors-slate-light-alpha-400)', + value: 'hsla(210.60000000000002, 93%, 11.2%, 0.0784313725490196)', + }, + 'colors-slate-light-alpha-500': { + cssVariable: 'var(--core-colors-slate-light-alpha-500)', + value: 'hsla(215.29999999999995, 92.7%, 10.8%, 0.10196078431372549)', + }, + 'colors-slate-light-alpha-600': { + cssVariable: 'var(--core-colors-slate-light-alpha-600)', + value: 'hsla(205.70000000000005, 96.6%, 11.4%, 0.12941176470588237)', + }, + 'colors-slate-light-alpha-700': { + cssVariable: 'var(--core-colors-slate-light-alpha-700)', + value: 'hsla(209.39999999999998, 100%, 10%, 0.1607843137254902)', + }, + 'colors-slate-light-alpha-800': { + cssVariable: 'var(--core-colors-slate-light-alpha-800)', + value: 'hsla(204.5, 96.1%, 10%, 0.23921568627450981)', + }, + 'colors-slate-light-alpha-900': { + cssVariable: 'var(--core-colors-slate-light-alpha-900)', + value: 'hsla(206, 100%, 5.9%, 0.47058823529411764)', + }, + 'colors-slate-light-alpha-1000': { + cssVariable: 'var(--core-colors-slate-light-alpha-1000)', + value: 'hsla(204.39999999999998, 100%, 5.3%, 0.5098039215686274)', + }, + 'colors-slate-light-alpha-1100': { + cssVariable: 'var(--core-colors-slate-light-alpha-1100)', + value: 'hsla(205, 100%, 4.7%, 0.5882352941176471)', + }, + 'colors-slate-light-alpha-1200': { + cssVariable: 'var(--core-colors-slate-light-alpha-1200)', + value: 'hsla(200, 100%, 2.4%, 0.9294117647058824)', + }, + 'variables-colors-brand-primary': { + cssVariable: 'var(--core-variables-colors-brand-primary)', + value: 'hsl(153.10000000000002, 60.2%, 52.7%)', + }, + 'variables-colors-brand-accent': { + cssVariable: 'var(--core-variables-colors-brand-accent)', + value: 'hsl(152.89999999999998, 56.1%, 46.5%)', + }, + 'foreground-DEFAULT': { + cssVariable: 'var(--foreground-default)', + value: 'hsl(0, 0%, 98%)', + }, + 'foreground-light': { + cssVariable: 'var(--foreground-light)', + value: 'hsl(0, 0%, 70.6%)', + }, + 'foreground-lighter': { + cssVariable: 'var(--foreground-lighter)', + value: 'hsl(0, 0%, 53.7%)', + }, + 'foreground-muted': { + cssVariable: 'var(--foreground-muted)', + value: 'hsl(0, 0%, 30.2%)', + }, + 'foreground-contrast': { + cssVariable: 'var(--foreground-contrast)', + value: 'hsl(0, 0%, 8.6%)', + }, + 'background-200': { + cssVariable: 'var(--background-200)', + value: 'hsl(0, 0%, 9%)', + }, + 'background-DEFAULT': { + cssVariable: 'var(--background-default)', + value: 'hsl(0, 0%, 7.1%)', + }, + 'background-alternative-200': { + cssVariable: 'var(--background-alternative-200)', + value: 'hsl(0, 0%, 11%)', + }, + 'background-alternative-DEFAULT': { + cssVariable: 'var(--background-alternative-default)', + value: 'hsl(0, 0%, 5.9%)', + }, + 'background-selection': { + cssVariable: 'var(--background-selection)', + value: 'hsl(0, 0%, 19.2%)', + }, + 'background-control': { + cssVariable: 'var(--background-control)', + value: 'hsl(0, 0%, 14.1%)', + }, + 'background-surface-75': { + cssVariable: 'var(--background-surface-75)', + value: 'hsl(0, 0%, 9%)', + }, + 'background-surface-100': { + cssVariable: 'var(--background-surface-100)', + value: 'hsl(0, 0%, 12.2%)', + }, + 'background-surface-200': { + cssVariable: 'var(--background-surface-200)', + value: 'hsl(0, 0%, 12.9%)', + }, + 'background-surface-300': { + cssVariable: 'var(--background-surface-300)', + value: 'hsl(0, 0%, 16.1%)', + }, + 'background-surface-400': { + cssVariable: 'var(--background-surface-400)', + value: 'hsl(0, 0%, 16.1%)', + }, + 'background-overlay-DEFAULT': { + cssVariable: 'var(--background-overlay-default)', + value: 'hsl(0, 0%, 14.1%)', + }, + 'background-overlay-hover': { + cssVariable: 'var(--background-overlay-hover)', + value: 'hsl(0, 0%, 18%)', + }, + 'background-muted': { + cssVariable: 'var(--background-muted)', + value: 'hsl(0, 0%, 14.1%)', + }, + 'background-button-DEFAULT': { + cssVariable: 'var(--background-button-default)', + value: 'hsl(0, 0%, 18%)', + }, + 'background-dialog-DEFAULT': { + cssVariable: 'var(--background-dialog-default)', + value: 'hsl(0, 0%, 7.1%)', + }, + 'background-dash-sidebar': { + cssVariable: 'var(--background-dash-sidebar)', + value: 'hsl(0, 0%, 9%)', + }, + 'background-dash-canvas': { + cssVariable: 'var(--background-dash-canvas)', + value: 'hsl(0, 0%, 7.1%)', + }, + 'border-DEFAULT': { + cssVariable: 'var(--border-default)', + value: 'hsl(0, 0%, 18%)', + }, + 'border-muted': { + cssVariable: 'var(--border-muted)', + value: 'hsl(0, 0%, 14.1%)', + }, + 'border-secondary': { + cssVariable: 'var(--border-secondary)', + value: 'hsl(0, 0%, 14.1%)', + }, + 'border-overlay': { + cssVariable: 'var(--border-overlay)', + value: 'hsl(0, 0%, 20%)', + }, + 'border-control': { + cssVariable: 'var(--border-control)', + value: 'hsl(0, 0%, 22.4%)', + }, + 'border-alternative': { + cssVariable: 'var(--border-alternative)', + value: 'hsl(0, 0%, 26.7%)', + }, + 'border-strong': { + cssVariable: 'var(--border-strong)', + value: 'hsl(0, 0%, 21.2%)', + }, + 'border-stronger': { + cssVariable: 'var(--border-stronger)', + value: 'hsl(0, 0%, 27.1%)', + }, + 'border-button-DEFAULT': { + cssVariable: 'var(--border-button-default)', + value: 'hsl(0, 0%, 24.3%)', + }, + 'border-button-hover': { + cssVariable: 'var(--border-button-hover)', + value: 'hsl(0, 0%, 31.4%)', + }, + 'destructive-200': { + cssVariable: 'var(--destructive-200)', + value: 'hsl(10.899999999999977, 23.4%, 9.2%)', + }, + 'destructive-300': { + cssVariable: 'var(--destructive-300)', + value: 'hsl(7.5, 51.3%, 15.3%)', + }, + 'destructive-400': { + cssVariable: 'var(--destructive-400)', + value: 'hsl(6.699999999999989, 60%, 20.6%)', + }, + 'destructive-500': { + cssVariable: 'var(--destructive-500)', + value: 'hsl(7.899999999999977, 71.6%, 29%)', + }, + 'destructive-600': { + cssVariable: 'var(--destructive-600)', + value: 'hsl(9.699999999999989, 85.2%, 62.9%)', + }, + 'destructive-DEFAULT': { + cssVariable: 'var(--destructive-default)', + value: 'hsl(10.199999999999989, 77.9%, 53.9%)', + }, + 'warning-200': { + cssVariable: 'var(--warning-200)', + value: 'hsl(36.60000000000002, 100%, 8%)', + }, + 'warning-300': { + cssVariable: 'var(--warning-300)', + value: 'hsl(32.30000000000001, 100%, 10.2%)', + }, + 'warning-400': { + cssVariable: 'var(--warning-400)', + value: 'hsl(33.19999999999999, 100%, 14.5%)', + }, + 'warning-500': { + cssVariable: 'var(--warning-500)', + value: 'hsl(34.80000000000001, 90.9%, 21.6%)', + }, + 'warning-600': { + cssVariable: 'var(--warning-600)', + value: 'hsl(38.89999999999998, 100%, 42.9%)', + }, + 'warning-DEFAULT': { + cssVariable: 'var(--warning-default)', + value: 'hsl(38.89999999999998, 100%, 42.9%)', + }, + 'brand-200': { + cssVariable: 'var(--brand-200)', + value: 'hsl(162, 100%, 2%)', + }, + 'brand-300': { + cssVariable: 'var(--brand-300)', + value: 'hsl(155.10000000000002, 100%, 8%)', + }, + 'brand-400': { + cssVariable: 'var(--brand-400)', + value: 'hsl(155.5, 100%, 9.6%)', + }, + 'brand-500': { + cssVariable: 'var(--brand-500)', + value: 'hsl(154.89999999999998, 100%, 19.2%)', + }, + 'brand-600': { + cssVariable: 'var(--brand-600)', + value: 'hsl(154.89999999999998, 59.5%, 70%)', + }, + 'brand-DEFAULT': { + cssVariable: 'var(--brand-default)', + value: 'hsl(153.10000000000002, 60.2%, 52.7%)', + }, + 'brand-button': { + cssVariable: 'var(--brand-button)', + value: 'hsl(154.89999999999998, 100%, 19.2%)', + }, + 'brand-link': { + cssVariable: 'var(--brand-link)', + value: 'hsl(155, 100%, 38.6%)', + }, + '_secondary-200': { + cssVariable: 'var(--secondary-200)', + value: 'hsl(248, 53.6%, 11%)', + }, + '_secondary-400': { + cssVariable: 'var(--secondary-400)', + value: 'hsl(248.29999999999995, 54.5%, 25.9%)', + }, + '_secondary-DEFAULT': { + cssVariable: 'var(--secondary-default)', + value: 'hsl(247.79999999999995, 100%, 70%)', + }, + 'code_block-1': { + cssVariable: 'var(--code-block-1)', + value: 'hsl(170.79999999999995, 43.1%, 61.4%)', + }, + 'code_block-2': { + cssVariable: 'var(--code-block-2)', + value: 'hsl(33.19999999999999, 90.3%, 75.7%)', + }, + 'code_block-3': { + cssVariable: 'var(--code-block-3)', + value: 'hsl(83.80000000000001, 61.7%, 63.1%)', + }, + 'code_block-4': { + cssVariable: 'var(--code-block-4)', + value: 'hsl(276.1, 67.7%, 74.5%)', + }, + 'code_block-5': { + cssVariable: 'var(--code-block-5)', + value: 'hsl(13.800000000000011, 89.7%, 69.6%)', + }, } -} \ No newline at end of file diff --git a/packages/ui/components.json b/packages/ui/components.json index 9f1db7ce50e..f850184173f 100644 --- a/packages/ui/components.json +++ b/packages/ui/components.json @@ -12,4 +12,4 @@ "components": "src/components/shadcn", "utils": "src/lib/utils" } -} \ No newline at end of file +} diff --git a/packages/ui/internals/transform/common/camelCaseHelper.js b/packages/ui/internals/transform/common/camelCaseHelper.js index 69d260dca17..6ee7dec94d7 100644 --- a/packages/ui/internals/transform/common/camelCaseHelper.js +++ b/packages/ui/internals/transform/common/camelCaseHelper.js @@ -1,3 +1,4 @@ const changeCase = require('change-case') -module.exports = name => changeCase.camelCase(name, { transform: changeCase.camelCaseTransformMerge }) +module.exports = (name) => + changeCase.camelCase(name, { transform: changeCase.camelCaseTransformMerge }) diff --git a/packages/ui/internals/transform/common/colorToHex8.js b/packages/ui/internals/transform/common/colorToHex8.js index 42b6fd71ac7..64096af5c23 100644 --- a/packages/ui/internals/transform/common/colorToHex8.js +++ b/packages/ui/internals/transform/common/colorToHex8.js @@ -7,5 +7,5 @@ module.exports = { }, transformer: function ({ value }) { return `${new TinyColor.TinyColor(value).toHex8String()}` - } + }, } diff --git a/packages/ui/internals/transform/common/colorToRgbaString.js b/packages/ui/internals/transform/common/colorToRgbaString.js index 01819adbede..bc97f942a46 100644 --- a/packages/ui/internals/transform/common/colorToRgbaString.js +++ b/packages/ui/internals/transform/common/colorToRgbaString.js @@ -7,5 +7,5 @@ module.exports = { }, transformer: function ({ value }) { return `${new TinyColor.TinyColor(value).toRgbString()}` - } + }, } diff --git a/packages/ui/internals/transform/common/copyFileOrFolder.js b/packages/ui/internals/transform/common/copyFileOrFolder.js index 62ba766a3b6..3a8c2793f2a 100644 --- a/packages/ui/internals/transform/common/copyFileOrFolder.js +++ b/packages/ui/internals/transform/common/copyFileOrFolder.js @@ -12,5 +12,5 @@ module.exports = { console.log(`Cleaning ${destination}`) fs.removeSync(destination) }) - } + }, } diff --git a/packages/ui/internals/transform/web/createPropertyFormatter.js b/packages/ui/internals/transform/web/createPropertyFormatter.js index 31687131d6a..a3c129f4ee0 100644 --- a/packages/ui/internals/transform/web/createPropertyFormatter.js +++ b/packages/ui/internals/transform/web/createPropertyFormatter.js @@ -16,7 +16,7 @@ const defaultFormatting = { commentStyle: 'long', indentation: '', separator: ' =', - suffix: ';' + suffix: ';', } /** @@ -47,38 +47,44 @@ const defaultFormatting = { * @param {Object} options.formatting - Custom formatting properties that define parts of a declaration line in code. The configurable strings are: prefix, indentation, separator, suffix, and commentStyle. Those are used to generate a line like this: `${indentation}${prefix}${prop.name}${separator} ${prop.value}${suffix}` * @returns {Function} */ -function createPropertyFormatter({outputReferences, dictionary, format, formatting={}}) { - let {prefix, commentStyle, indentation, separator, suffix} = Object.assign({}, defaultFormatting, formatting); +function createPropertyFormatter({ outputReferences, dictionary, format, formatting = {} }) { + let { prefix, commentStyle, indentation, separator, suffix } = Object.assign( + {}, + defaultFormatting, + formatting + ) - switch(format) { + switch (format) { case 'css': - prefix = '--'; - indentation = ' '; - separator = ':'; - break; + prefix = '--' + indentation = ' ' + separator = ':' + break case 'sass': - prefix = '$'; - commentStyle = 'short'; - indentation = ''; - separator = ':'; - break; + prefix = '$' + commentStyle = 'short' + indentation = '' + separator = ':' + break case 'less': - prefix = '@'; - commentStyle = 'short'; - indentation = ''; - separator = ':'; - break; + prefix = '@' + commentStyle = 'short' + indentation = '' + separator = ':' + break case 'stylus': - prefix = '$'; - commentStyle = 'short'; - indentation = ''; - separator = '='; - break; + prefix = '$' + commentStyle = 'short' + indentation = '' + separator = '=' + break } - return function(prop) { - let to_ret_prop = `${indentation}${prefix}${prop.name}${separator} `.replace('--dark-', '--').replace('--light-', '--'); - let value = prop.value; + return function (prop) { + let to_ret_prop = `${indentation}${prefix}${prop.name}${separator} ` + .replace('--dark-', '--') + .replace('--light-', '--') + let value = prop.value /** * A single value can have multiple references either by interpolation: @@ -96,43 +102,43 @@ function createPropertyFormatter({outputReferences, dictionary, format, formatti // Formats that use this function expect `value` to be a string // or else you will get '[object Object]' in the output if (typeof value === 'string') { - const refs = dictionary.getReferences(prop.original.value); - refs.forEach(ref => { + const refs = dictionary.getReferences(prop.original.value) + refs.forEach((ref) => { // value should be a string that contains the resolved reference // because Style Dictionary resolved this in the resolution step. // Here we are undoing that by replacing the value with // the reference's name if (ref.value && ref.name) { - value = value.replace(ref.value, function() { + value = value.replace(ref.value, function () { if (format === 'css') { return `var(${prefix}${ref.name})` } else { - return `${prefix}${ref.name}`; + return `${prefix}${ref.name}` } - }); + }) } - }); + }) } } - to_ret_prop += prop.attributes.category === 'asset' ? `"${value}"` : value; + to_ret_prop += prop.attributes.category === 'asset' ? `"${value}"` : value if (format == 'sass' && prop.themeable === true) { - to_ret_prop += ' !default'; + to_ret_prop += ' !default' } - to_ret_prop += suffix; + to_ret_prop += suffix if (prop.comment && commentStyle !== 'none') { if (commentStyle === 'short') { - to_ret_prop = to_ret_prop.concat(` // ${prop.comment}`); + to_ret_prop = to_ret_prop.concat(` // ${prop.comment}`) } else { - to_ret_prop = to_ret_prop.concat(` /* ${prop.comment} */`); + to_ret_prop = to_ret_prop.concat(` /* ${prop.comment} */`) } } - return to_ret_prop; + return to_ret_prop } } -module.exports = createPropertyFormatter; +module.exports = createPropertyFormatter diff --git a/packages/ui/internals/transform/web/fileHeader.js b/packages/ui/internals/transform/web/fileHeader.js index 153922ace66..c48930e2916 100644 --- a/packages/ui/internals/transform/web/fileHeader.js +++ b/packages/ui/internals/transform/web/fileHeader.js @@ -19,7 +19,7 @@ const defaultFormatting = { lineSeparator, prefix: ' * ', header: `/**${lineSeparator}`, - footer: `${lineSeparator} */${lineSeparator}${lineSeparator}` + footer: `${lineSeparator} */${lineSeparator}${lineSeparator}`, } /** @@ -45,7 +45,7 @@ const defaultFormatting = { * }); * ``` */ -function fileHeader ({ file = {}, commentStyle, formatting = {} }) { +function fileHeader({ file = {}, commentStyle, formatting = {} }) { // showFileHeader is true by default let showFileHeader = true if (file.options && typeof file.options.showFileHeader !== 'undefined') { @@ -61,10 +61,7 @@ function fileHeader ({ file = {}, commentStyle, formatting = {} }) { } // default header - const defaultHeader = [ - 'Do not edit directly', - `Generated on ${new Date().toString()}` - ] + const defaultHeader = ['Do not edit directly', `Generated on ${new Date().toString()}`] let { prefix, lineSeparator, header, footer } = Object.assign({}, defaultFormatting, formatting) @@ -79,7 +76,7 @@ function fileHeader ({ file = {}, commentStyle, formatting = {} }) { } return `${header}${fn(defaultHeader) - .map(line => `${prefix}${line}`) + .map((line) => `${prefix}${line}`) .join(lineSeparator)}${footer}` } diff --git a/packages/ui/internals/transform/web/filterWeb.js b/packages/ui/internals/transform/web/filterWeb.js index 6246ae733d1..f03fc479b0d 100644 --- a/packages/ui/internals/transform/web/filterWeb.js +++ b/packages/ui/internals/transform/web/filterWeb.js @@ -1,3 +1,11 @@ -const acceptedTypes = ['color', 'dimension', 'font', 'custom-radius', 'custom-fontStyle', 'custom-shadow', 'custom-gradient'] +const acceptedTypes = [ + 'color', + 'dimension', + 'font', + 'custom-radius', + 'custom-fontStyle', + 'custom-shadow', + 'custom-gradient', +] module.exports = (token) => acceptedTypes.includes(token.type) diff --git a/packages/ui/internals/transform/web/formatCss.js b/packages/ui/internals/transform/web/formatCss.js index 87fec87c828..17a70e1d206 100644 --- a/packages/ui/internals/transform/web/formatCss.js +++ b/packages/ui/internals/transform/web/formatCss.js @@ -2,13 +2,13 @@ const formattedVariables = require('./formattedVariables') const fileHeader = require('./fileHeader') const filteredTokens = (dictionary, filterFn) => { - const filtered = dictionary.allTokens.filter(token => filterFn(token)) + const filtered = dictionary.allTokens.filter((token) => filterFn(token)) return { ...dictionary, ...{ allProperties: filtered, - allTokens: filtered - } + allTokens: filtered, + }, } } @@ -19,27 +19,30 @@ module.exports = ({ dictionary, options, file }) => { // if you export the prefixes use token.path[0] instead of [1] light: filteredTokens(dictionary, (token) => token.path[1].toLowerCase() === 'light'), dark: filteredTokens(dictionary, (token) => token.path[1].toLowerCase() === 'dark'), - rest: filteredTokens(dictionary, (token) => !['light', 'dark'].includes(token.path[1].toLowerCase())) + rest: filteredTokens( + dictionary, + (token) => !['light', 'dark'].includes(token.path[1].toLowerCase()) + ), } return ( fileHeader({ file }) + - ':root {\n' + - formattedVariables({ format: 'css', dictionary: groupedTokens.rest, outputReferences }) + - '\n}\n\n' + - '@media (prefers-color-scheme: light) {\n' + - ' :root {\n' + - formattedVariables({ format: 'css', dictionary: groupedTokens.light, outputReferences }) + - '\n }\n}\n\n' + - '@media (prefers-color-scheme: dark) {\n' + - ' :root {\n' + - formattedVariables({ format: 'css', dictionary: groupedTokens.dark, outputReferences }) + - '\n }\n}\n\n' + - 'html[data-theme="light"] {\n' + - formattedVariables({ format: 'css', dictionary: groupedTokens.light, outputReferences }) + - '\n}\n\n' + - 'html[data-theme="dark"] {\n' + - formattedVariables({ format: 'css', dictionary: groupedTokens.dark, outputReferences }) + - '\n}\n' + ':root {\n' + + formattedVariables({ format: 'css', dictionary: groupedTokens.rest, outputReferences }) + + '\n}\n\n' + + '@media (prefers-color-scheme: light) {\n' + + ' :root {\n' + + formattedVariables({ format: 'css', dictionary: groupedTokens.light, outputReferences }) + + '\n }\n}\n\n' + + '@media (prefers-color-scheme: dark) {\n' + + ' :root {\n' + + formattedVariables({ format: 'css', dictionary: groupedTokens.dark, outputReferences }) + + '\n }\n}\n\n' + + 'html[data-theme="light"] {\n' + + formattedVariables({ format: 'css', dictionary: groupedTokens.light, outputReferences }) + + '\n}\n\n' + + 'html[data-theme="dark"] {\n' + + formattedVariables({ format: 'css', dictionary: groupedTokens.dark, outputReferences }) + + '\n}\n' ) } diff --git a/packages/ui/internals/transform/web/formattedVariables.js b/packages/ui/internals/transform/web/formattedVariables.js index b73b817b382..195d6a9f83a 100644 --- a/packages/ui/internals/transform/web/formattedVariables.js +++ b/packages/ui/internals/transform/web/formattedVariables.js @@ -15,7 +15,7 @@ const createPropertyFormatter = require('./createPropertyFormatter') const sortByReference = require('./sortByReference') const defaultFormatting = { - lineSeparator: '\n' + lineSeparator: '\n', } /** @@ -38,7 +38,7 @@ const defaultFormatting = { * }); * ``` */ -function formattedVariables ({ format, dictionary, outputReferences = false, formatting = {} }) { +function formattedVariables({ format, dictionary, outputReferences = false, formatting = {} }) { let { allTokens } = dictionary const { lineSeparator } = Object.assign({}, defaultFormatting, formatting) @@ -57,7 +57,9 @@ function formattedVariables ({ format, dictionary, outputReferences = false, for return allTokens .map(createPropertyFormatter({ outputReferences, dictionary, format, formatting })) - .filter(function (strVal) { return !!strVal }) + .filter(function (strVal) { + return !!strVal + }) .join(lineSeparator) } diff --git a/packages/ui/internals/transform/web/sizePx.js b/packages/ui/internals/transform/web/sizePx.js index b19899f0b86..04fe72999eb 100644 --- a/packages/ui/internals/transform/web/sizePx.js +++ b/packages/ui/internals/transform/web/sizePx.js @@ -5,5 +5,5 @@ module.exports = { }, transformer: function (token) { return `${token.value}px` - } + }, } diff --git a/packages/ui/internals/transform/web/sortByReference.js b/packages/ui/internals/transform/web/sortByReference.js index 16eeb80a248..5dd4af79b99 100644 --- a/packages/ui/internals/transform/web/sortByReference.js +++ b/packages/ui/internals/transform/web/sortByReference.js @@ -24,48 +24,48 @@ * @param {Dictionary} dictionary * @returns {Function} */ - function sortByReference(dictionary) { +function sortByReference(dictionary) { // The sorter function is recursive to account for multiple levels of nesting function sorter(a, b) { - const aComesFirst = -1; - const bComesFirst = 1; + const aComesFirst = -1 + const bComesFirst = 1 // If token a uses a reference and token b doesn't, b might come before a // read on.. if (a.original && dictionary.usesReference(a.original.value)) { // Both a and b have references, we need to see if the reference each other if (b.original && dictionary.usesReference(b.original.value)) { - const aRefs = dictionary.getReferences(a.original.value); - const bRefs = dictionary.getReferences(b.original.value); + const aRefs = dictionary.getReferences(a.original.value) + const bRefs = dictionary.getReferences(b.original.value) - aRefs.forEach(aRef => { + aRefs.forEach((aRef) => { // a references b, we want b to come first if (aRef.name === b.name) { - return bComesFirst; + return bComesFirst } - }); + }) - bRefs.forEach(bRef => { + bRefs.forEach((bRef) => { // ditto but opposite if (bRef.name === a.name) { - return aComesFirst; + return aComesFirst } - }); + }) // both a and b have references and don't reference each other // we go further down the rabbit hole (reference chain) - return sorter(aRefs[0], bRefs[0]); - // a has a reference and b does not: + return sorter(aRefs[0], bRefs[0]) + // a has a reference and b does not: } else { - return bComesFirst; + return bComesFirst } - // a does not have a reference it should come first regardless if b has one + // a does not have a reference it should come first regardless if b has one } else { - return aComesFirst; + return aComesFirst } } - return sorter; + return sorter } -module.exports = sortByReference; \ No newline at end of file +module.exports = sortByReference diff --git a/packages/ui/internals/transform/web/webFont.js b/packages/ui/internals/transform/web/webFont.js index 808a9e9a160..4bebf5e80f5 100644 --- a/packages/ui/internals/transform/web/webFont.js +++ b/packages/ui/internals/transform/web/webFont.js @@ -1,6 +1,7 @@ -const notDefault = (value, defaultValue) => (value !== defaultValue) ? value : '' +const notDefault = (value, defaultValue) => (value !== defaultValue ? value : '') -const fontFamily = ({ fontFamily }, { fontFamilies } = {}) => fontFamilies && fontFamilies[fontFamily] ? fontFamilies[fontFamily] : fontFamily +const fontFamily = ({ fontFamily }, { fontFamilies } = {}) => + fontFamilies && fontFamilies[fontFamily] ? fontFamilies[fontFamily] : fontFamily module.exports = { type: 'value', @@ -10,5 +11,5 @@ module.exports = { transformer: function ({ value: font }, { options }) { // font: font-style font-variant font-weight font-size/line-height font-family; return `${notDefault(font.fontStretch, 'normal')} ${notDefault(font.fontStyle, 'normal')} ${font.fontWeight} ${font.fontSize}/${font.lineHeight} ${fontFamily(font, options)}`.trim() - } + }, } diff --git a/packages/ui/internals/transform/web/webGradient.js b/packages/ui/internals/transform/web/webGradient.js index 8c4ee2f19f4..1325b271a0a 100644 --- a/packages/ui/internals/transform/web/webGradient.js +++ b/packages/ui/internals/transform/web/webGradient.js @@ -6,14 +6,16 @@ module.exports = { return token.type === 'custom-gradient' }, transformer: function ({ value }) { - const stopsString = value.stops.map(stop => { - return `${new TinyColor.TinyColor(stop.color).toRgbString()} ${stop.position * 100}%` - }).join(', ') + const stopsString = value.stops + .map((stop) => { + return `${new TinyColor.TinyColor(stop.color).toRgbString()} ${stop.position * 100}%` + }) + .join(', ') if (value.gradientType === 'linear') { return `linear-gradient(${value.rotation}deg, ${stopsString})` } if (value.gradientType === 'radial') { return `radial-gradient(${stopsString})` } - } + }, } diff --git a/packages/ui/internals/transform/web/webPadding.js b/packages/ui/internals/transform/web/webPadding.js index 0aff7bf248d..29826a90911 100644 --- a/packages/ui/internals/transform/web/webPadding.js +++ b/packages/ui/internals/transform/web/webPadding.js @@ -4,9 +4,9 @@ module.exports = { return token.type === 'custom-spacing' }, transformer: ({ value: { top, left, bottom, right } }) => { - if ([bottom, left, right].every(v => v === top)) { + if ([bottom, left, right].every((v) => v === top)) { return `${top}px` } return `${top}px ${right}px ${bottom}px ${left}px` - } + }, } diff --git a/packages/ui/internals/transform/web/webRadius.js b/packages/ui/internals/transform/web/webRadius.js index 730be6d3bca..0b72b06d01a 100644 --- a/packages/ui/internals/transform/web/webRadius.js +++ b/packages/ui/internals/transform/web/webRadius.js @@ -4,9 +4,9 @@ module.exports = { return token.type === 'custom-radius' }, transformer: function ({ value }) { - if ([value.topRight, value.bottomLeft, value.bottomRight].every(v => v === value.topLeft)) { + if ([value.topRight, value.bottomLeft, value.bottomRight].every((v) => v === value.topLeft)) { return `${value.topLeft}px` } return `${value.topLeft}px ${value.topRight}px ${value.bottomLeft}px ${value.bottomRight}px` - } + }, } diff --git a/packages/ui/internals/transform/web/webShadows.js b/packages/ui/internals/transform/web/webShadows.js index 997cddd5cb8..3268c2232fd 100644 --- a/packages/ui/internals/transform/web/webShadows.js +++ b/packages/ui/internals/transform/web/webShadows.js @@ -7,5 +7,5 @@ module.exports = { }, transformer: function ({ value }) { return `${value.shadowType === 'innerShadow' ? 'inset ' : ''}${value.offsetX}px ${value.offsetY}px ${value.radius}px ${value.spread}px ${new TinyColor.TinyColor(value.color).toRgbString()}` - } + }, } diff --git a/packages/ui/package.json b/packages/ui/package.json index 231a7414948..6c51230bbc2 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -101,6 +101,7 @@ "@tokens-studio/sd-transforms": "^0.8.5", "@types/common-tags": "^1.8.1", "@types/lodash": "4.17.5", + "@types/node": "catalog:", "@types/react": "^18.2.24", "@types/react-copy-to-clipboard": "^5.0.4", "@types/react-dom": "^18.2.8", @@ -114,11 +115,10 @@ "tsconfig": "workspace:*", "tsconfig-paths-webpack-plugin": "^4.0.1", "typescript": "~5.5.0", - "vite": "^5.0.0", "vitest": "^2.0.0" }, "peerDependencies": { - "next": "*", + "next": "catalog:", "react": "*", "react-dom": "*" } diff --git a/packages/ui/src/components/Breadcrumb/Breadcrumb.test.jsx b/packages/ui/src/components/Breadcrumb/Breadcrumb.test.jsx index c560eb50a02..a6c2b316c56 100644 --- a/packages/ui/src/components/Breadcrumb/Breadcrumb.test.jsx +++ b/packages/ui/src/components/Breadcrumb/Breadcrumb.test.jsx @@ -1,8 +1,8 @@ -import { render, screen } from '@testing-library/react'; -import React from 'react'; -import { describe, expect, it } from 'vitest'; +import { render, screen } from '@testing-library/react' +import React from 'react' +import { describe, expect, it } from 'vitest' -import Breadcrumb from './Breadcrumb'; +import Breadcrumb from './Breadcrumb' describe('#Breadcrumb', () => { it.skip('should render breadcrumb correctly', async () => { diff --git a/packages/ui/src/components/ContextMenu/ContextMenu.module.css b/packages/ui/src/components/ContextMenu/ContextMenu.module.css index c4651c0ef7a..3c8a401fe73 100644 --- a/packages/ui/src/components/ContextMenu/ContextMenu.module.css +++ b/packages/ui/src/components/ContextMenu/ContextMenu.module.css @@ -46,12 +46,12 @@ @keyframes transition { /* 0% { */ - /* opacity: 0; */ - /* transform: scale(0.95); */ + /* opacity: 0; */ + /* transform: scale(0.95); */ /* } */ /* 100% { */ - /* opacity: 1; */ - /* transform: scale(1); */ + /* opacity: 1; */ + /* transform: scale(1); */ /* } */ } diff --git a/packages/ui/src/components/InputOld/Input.test.jsx b/packages/ui/src/components/InputOld/Input.test.jsx index fb3ec4ec06e..ae0df1ee953 100644 --- a/packages/ui/src/components/InputOld/Input.test.jsx +++ b/packages/ui/src/components/InputOld/Input.test.jsx @@ -1,6 +1,5 @@ import { describe, it } from 'vitest' - describe('#Input', () => { it.skip('should render input correctly', async () => { // render() @@ -13,7 +12,7 @@ describe('#Input', () => { }) // it.each(SIZES)('should have "form-input--%s" class', (size) => { - // render() - // expect(screen.queryByTestId('form-input')).toHaveClass(`form-input border-solid form-input--${size}`) + // render() + // expect(screen.queryByTestId('form-input')).toHaveClass(`form-input border-solid form-input--${size}`) // }) -}) \ No newline at end of file +}) diff --git a/packages/ui/src/components/RadioOld/Radio.test.jsx b/packages/ui/src/components/RadioOld/Radio.test.jsx index e9fb5d9f0ae..511e0f47452 100644 --- a/packages/ui/src/components/RadioOld/Radio.test.jsx +++ b/packages/ui/src/components/RadioOld/Radio.test.jsx @@ -1,19 +1,17 @@ import { describe, it } from 'vitest' - describe('#Radio', () => { - it('should render radio correctly', () => { - // render( - // // - // ) - // expect(screen.queryByTestId('form-radio')).toBeInTheDocument() + // render( + // // + // ) + // expect(screen.queryByTestId('form-radio')).toBeInTheDocument() }) it('should show label', () => { - // render( - // - // ) - // expect(screen.queryByText('JavaScript')).toBeInTheDocument() + // render( + // + // ) + // expect(screen.queryByText('JavaScript')).toBeInTheDocument() }) -}) \ No newline at end of file +}) diff --git a/packages/ui/src/components/Typography/index.tsx b/packages/ui/src/components/Typography/index.tsx index 3b869c1aab7..4761fd9f69e 100644 --- a/packages/ui/src/components/Typography/index.tsx +++ b/packages/ui/src/components/Typography/index.tsx @@ -1,6 +1,3 @@ - import Typography from './Typography' export default Typography export { default as Typography } from './Typography' - - diff --git a/packages/ui/src/components/Upload/Upload.module.css b/packages/ui/src/components/Upload/Upload.module.css index c6f6109ae27..56056bde222 100644 --- a/packages/ui/src/components/Upload/Upload.module.css +++ b/packages/ui/src/components/Upload/Upload.module.css @@ -4,4 +4,4 @@ .sbui-upload-dragger--dragged { @apply bg-brand-100; -} \ No newline at end of file +} diff --git a/packages/ui/src/components/shadcn/ui/aspect-ratio.tsx b/packages/ui/src/components/shadcn/ui/aspect-ratio.tsx index d6a5226f5e9..794c6f4cd34 100644 --- a/packages/ui/src/components/shadcn/ui/aspect-ratio.tsx +++ b/packages/ui/src/components/shadcn/ui/aspect-ratio.tsx @@ -1,6 +1,6 @@ -"use client" +'use client' -import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio" +import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio' const AspectRatio = AspectRatioPrimitive.Root diff --git a/packages/ui/src/lib/Spinner/styles.module.css b/packages/ui/src/lib/Spinner/styles.module.css index 0bf8d819238..ed2d7f5c929 100644 --- a/packages/ui/src/lib/Spinner/styles.module.css +++ b/packages/ui/src/lib/Spinner/styles.module.css @@ -1,51 +1,52 @@ html { - background: #009688; + background: #009688; } - html, body { - height: 100%; +html, +body { + height: 100%; } - body { - display: flex; - align-items: center; - justify-content: center; +body { + display: flex; + align-items: center; + justify-content: center; } - .spin-loader { - border-radius: 80%; - display: block; - height: 50px; - width: 50px; - position: relative; - animation: spin 0.675s linear 0s infinite normal; - background: #26a69a; +.spin-loader { + border-radius: 80%; + display: block; + height: 50px; + width: 50px; + position: relative; + animation: spin 0.675s linear 0s infinite normal; + background: #26a69a; } - .spin-loader:before, .spin-loader:after { - content: ""; - display: block; - position: absolute; +.spin-loader:before, +.spin-loader:after { + content: ''; + display: block; + position: absolute; } - .spin-loader:before { - border-radius: 0 90px 90px 0; - height: 50px; - width: 50%; - top: 0; - right: 0; - z-index: 1; - background: #005041; - background-image: linear-gradient(#26a69a, #005041); +.spin-loader:before { + border-radius: 0 90px 90px 0; + height: 50px; + width: 50%; + top: 0; + right: 0; + z-index: 1; + background: #005041; + background-image: linear-gradient(#26a69a, #005041); } - .spin-loader:after { - border-radius: 80%; - height: 40px; - width: 40px; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - z-index: 1; - background: #009688; +.spin-loader:after { + border-radius: 80%; + height: 40px; + width: 40px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 1; + background: #009688; } - @keyframes spin { - to { - transform: rotate(360deg); - } +@keyframes spin { + to { + transform: rotate(360deg); + } } - \ No newline at end of file diff --git a/packages/ui/src/lib/tailwind-demo-classes.ts b/packages/ui/src/lib/tailwind-demo-classes.ts index 3312dbf86cc..015278bf9b4 100644 --- a/packages/ui/src/lib/tailwind-demo-classes.ts +++ b/packages/ui/src/lib/tailwind-demo-classes.ts @@ -1,173 +1,167 @@ export default { - "background": [ - "bg-200", - "bg", - "bg-alternative-200", - "bg-alternative", - "bg-selection", - "bg-control", - "bg-surface-75", - "bg-surface-100", - "bg-surface-200", - "bg-surface-300", - "bg-surface-400", - "bg-overlay", - "bg-overlay-hover", - "bg-muted", - "bg-button", - "bg-dialog", - "bg-dash-sidebar", - "bg-dash-canvas" + background: [ + 'bg-200', + 'bg', + 'bg-alternative-200', + 'bg-alternative', + 'bg-selection', + 'bg-control', + 'bg-surface-75', + 'bg-surface-100', + 'bg-surface-200', + 'bg-surface-300', + 'bg-surface-400', + 'bg-overlay', + 'bg-overlay-hover', + 'bg-muted', + 'bg-button', + 'bg-dialog', + 'bg-dash-sidebar', + 'bg-dash-canvas', ], - "border": [ - "border", - "border-muted", - "border-secondary", - "border-overlay", - "border-control", - "border-alternative", - "border-strong", - "border-stronger", - "border-button", - "border-button-hover" + border: [ + 'border', + 'border-muted', + 'border-secondary', + 'border-overlay', + 'border-control', + 'border-alternative', + 'border-strong', + 'border-stronger', + 'border-button', + 'border-button-hover', ], - "text": [ - "text", - "text-light", - "text-lighter", - "text-muted", - "text-contrast" + text: ['text', 'text-light', 'text-lighter', 'text-muted', 'text-contrast'], + colors: [ + 'bg-destructive-200', + 'bg-destructive-300', + 'bg-destructive-400', + 'bg-destructive-500', + 'bg-destructive-600', + 'bg-destructive', + 'bg-warning-200', + 'bg-warning-300', + 'bg-warning-400', + 'bg-warning-500', + 'bg-warning-600', + 'bg-warning', + 'bg-brand-200', + 'bg-brand-300', + 'bg-brand-400', + 'bg-brand-500', + 'bg-brand-600', + 'bg-brand', + 'bg-brand-button', + 'bg-brand-link', + 'bg-_secondary-200', + 'bg-_secondary-400', + 'bg-_secondary', + 'bg-code_block-1', + 'bg-code_block-2', + 'bg-code_block-3', + 'bg-code_block-4', + 'bg-code_block-5', ], - "colors": [ - "bg-destructive-200", - "bg-destructive-300", - "bg-destructive-400", - "bg-destructive-500", - "bg-destructive-600", - "bg-destructive", - "bg-warning-200", - "bg-warning-300", - "bg-warning-400", - "bg-warning-500", - "bg-warning-600", - "bg-warning", - "bg-brand-200", - "bg-brand-300", - "bg-brand-400", - "bg-brand-500", - "bg-brand-600", - "bg-brand", - "bg-brand-button", - "bg-brand-link", - "bg-_secondary-200", - "bg-_secondary-400", - "bg-_secondary", - "bg-code_block-1", - "bg-code_block-2", - "bg-code_block-3", - "bg-code_block-4", - "bg-code_block-5" + palletes: [ + 'bg-black', + 'bg-white', + 'bg-gray-dark-100', + 'bg-gray-dark-200', + 'bg-gray-dark-300', + 'bg-gray-dark-400', + 'bg-gray-dark-500', + 'bg-gray-dark-600', + 'bg-gray-dark-700', + 'bg-gray-dark-800', + 'bg-gray-dark-900', + 'bg-gray-dark-1000', + 'bg-gray-dark-1100', + 'bg-gray-dark-1200', + 'bg-gray-dark-alpha-100', + 'bg-gray-dark-alpha-200', + 'bg-gray-dark-alpha-300', + 'bg-gray-dark-alpha-400', + 'bg-gray-dark-alpha-500', + 'bg-gray-dark-alpha-600', + 'bg-gray-dark-alpha-700', + 'bg-gray-dark-alpha-800', + 'bg-gray-dark-alpha-900', + 'bg-gray-dark-alpha-1000', + 'bg-gray-dark-alpha-1100', + 'bg-gray-dark-alpha-1200', + 'bg-gray-light-100', + 'bg-gray-light-200', + 'bg-gray-light-300', + 'bg-gray-light-400', + 'bg-gray-light-500', + 'bg-gray-light-600', + 'bg-gray-light-700', + 'bg-gray-light-800', + 'bg-gray-light-900', + 'bg-gray-light-1000', + 'bg-gray-light-1100', + 'bg-gray-light-1200', + 'bg-gray-light-alpha-100', + 'bg-gray-light-alpha-200', + 'bg-gray-light-alpha-300', + 'bg-gray-light-alpha-400', + 'bg-gray-light-alpha-500', + 'bg-gray-light-alpha-600', + 'bg-gray-light-alpha-700', + 'bg-gray-light-alpha-800', + 'bg-gray-light-alpha-900', + 'bg-gray-light-alpha-1000', + 'bg-gray-light-alpha-1100', + 'bg-gray-light-alpha-1200', + 'bg-slate-dark-100', + 'bg-slate-dark-200', + 'bg-slate-dark-300', + 'bg-slate-dark-400', + 'bg-slate-dark-500', + 'bg-slate-dark-600', + 'bg-slate-dark-700', + 'bg-slate-dark-800', + 'bg-slate-dark-900', + 'bg-slate-dark-1000', + 'bg-slate-dark-1100', + 'bg-slate-dark-1200', + 'bg-slate-dark-alpha-100', + 'bg-slate-dark-alpha-200', + 'bg-slate-dark-alpha-300', + 'bg-slate-dark-alpha-400', + 'bg-slate-dark-alpha-500', + 'bg-slate-dark-alpha-600', + 'bg-slate-dark-alpha-700', + 'bg-slate-dark-alpha-800', + 'bg-slate-dark-alpha-900', + 'bg-slate-dark-alpha-1000', + 'bg-slate-dark-alpha-1100', + 'bg-slate-dark-alpha-1200', + 'bg-slate-light-100', + 'bg-slate-light-200', + 'bg-slate-light-300', + 'bg-slate-light-400', + 'bg-slate-light-500', + 'bg-slate-light-600', + 'bg-slate-light-700', + 'bg-slate-light-800', + 'bg-slate-light-900', + 'bg-slate-light-1000', + 'bg-slate-light-1100', + 'bg-slate-light-1200', + 'bg-slate-light-alpha-100', + 'bg-slate-light-alpha-200', + 'bg-slate-light-alpha-300', + 'bg-slate-light-alpha-400', + 'bg-slate-light-alpha-500', + 'bg-slate-light-alpha-600', + 'bg-slate-light-alpha-700', + 'bg-slate-light-alpha-800', + 'bg-slate-light-alpha-900', + 'bg-slate-light-alpha-1000', + 'bg-slate-light-alpha-1100', + 'bg-slate-light-alpha-1200', + 'variables-bg-brand-primary', + 'variables-bg-brand-accent', ], - "palletes": [ - "bg-black", - "bg-white", - "bg-gray-dark-100", - "bg-gray-dark-200", - "bg-gray-dark-300", - "bg-gray-dark-400", - "bg-gray-dark-500", - "bg-gray-dark-600", - "bg-gray-dark-700", - "bg-gray-dark-800", - "bg-gray-dark-900", - "bg-gray-dark-1000", - "bg-gray-dark-1100", - "bg-gray-dark-1200", - "bg-gray-dark-alpha-100", - "bg-gray-dark-alpha-200", - "bg-gray-dark-alpha-300", - "bg-gray-dark-alpha-400", - "bg-gray-dark-alpha-500", - "bg-gray-dark-alpha-600", - "bg-gray-dark-alpha-700", - "bg-gray-dark-alpha-800", - "bg-gray-dark-alpha-900", - "bg-gray-dark-alpha-1000", - "bg-gray-dark-alpha-1100", - "bg-gray-dark-alpha-1200", - "bg-gray-light-100", - "bg-gray-light-200", - "bg-gray-light-300", - "bg-gray-light-400", - "bg-gray-light-500", - "bg-gray-light-600", - "bg-gray-light-700", - "bg-gray-light-800", - "bg-gray-light-900", - "bg-gray-light-1000", - "bg-gray-light-1100", - "bg-gray-light-1200", - "bg-gray-light-alpha-100", - "bg-gray-light-alpha-200", - "bg-gray-light-alpha-300", - "bg-gray-light-alpha-400", - "bg-gray-light-alpha-500", - "bg-gray-light-alpha-600", - "bg-gray-light-alpha-700", - "bg-gray-light-alpha-800", - "bg-gray-light-alpha-900", - "bg-gray-light-alpha-1000", - "bg-gray-light-alpha-1100", - "bg-gray-light-alpha-1200", - "bg-slate-dark-100", - "bg-slate-dark-200", - "bg-slate-dark-300", - "bg-slate-dark-400", - "bg-slate-dark-500", - "bg-slate-dark-600", - "bg-slate-dark-700", - "bg-slate-dark-800", - "bg-slate-dark-900", - "bg-slate-dark-1000", - "bg-slate-dark-1100", - "bg-slate-dark-1200", - "bg-slate-dark-alpha-100", - "bg-slate-dark-alpha-200", - "bg-slate-dark-alpha-300", - "bg-slate-dark-alpha-400", - "bg-slate-dark-alpha-500", - "bg-slate-dark-alpha-600", - "bg-slate-dark-alpha-700", - "bg-slate-dark-alpha-800", - "bg-slate-dark-alpha-900", - "bg-slate-dark-alpha-1000", - "bg-slate-dark-alpha-1100", - "bg-slate-dark-alpha-1200", - "bg-slate-light-100", - "bg-slate-light-200", - "bg-slate-light-300", - "bg-slate-light-400", - "bg-slate-light-500", - "bg-slate-light-600", - "bg-slate-light-700", - "bg-slate-light-800", - "bg-slate-light-900", - "bg-slate-light-1000", - "bg-slate-light-1100", - "bg-slate-light-1200", - "bg-slate-light-alpha-100", - "bg-slate-light-alpha-200", - "bg-slate-light-alpha-300", - "bg-slate-light-alpha-400", - "bg-slate-light-alpha-500", - "bg-slate-light-alpha-600", - "bg-slate-light-alpha-700", - "bg-slate-light-alpha-800", - "bg-slate-light-alpha-900", - "bg-slate-light-alpha-1000", - "bg-slate-light-alpha-1100", - "bg-slate-light-alpha-1200", - "variables-bg-brand-primary", - "variables-bg-brand-accent" - ] -}; +} diff --git a/packages/ui/tailwind-theming.md b/packages/ui/tailwind-theming.md index 38a34bf4639..6d572aa15a9 100644 --- a/packages/ui/tailwind-theming.md +++ b/packages/ui/tailwind-theming.md @@ -62,9 +62,9 @@ bg-foreground-light | ------------------------------- | ------------------------------------------------------------ | | `{background}-{DEFAULT}` | Main body background (**DEFAULT** is optional) | | `{background}-surface-100` | Panels and surfaces on the same level of the main background | -| `{background}-surface-200` | Surfaces that overlap the main content (ex. dropdowns) | +| `{background}-surface-200` | Surfaces that overlap the main content (ex. dropdowns) | | `{background}-surface-300` | Surfaces that are stacked above {background}-surface-200 | -| `{background}-alternative` | Alternative background (inverted) | +| `{background}-alternative` | Alternative background (inverted) | | `{background}-overlay` | Overlays, Dropdowns, Popovers | | `{background}-control` | Inputs, Radios, Checkboxes | | `{background}-button-{DEFAULT}` | Button default | @@ -88,7 +88,7 @@ text-background-surface-100 | ------------------------- | ---------------------------------------- | | `border-{DEFAULT}` | Default border (**DEFAULT** is optional) | | `border-secondary` | Secondary border | -| `border-alternative` | Alternative border (inverted) | +| `border-alternative` | Alternative border (inverted) | | `border-overlay` | Overlays, Dropdowns, Popovers | | `border-control` | Inputs, Radios, Checkboxes | | `border-strong` | Hover, Focus | diff --git a/packages/ui/vitest.config.ts b/packages/ui/vitest.config.ts index 8623a6c59bf..8506bb4f23a 100644 --- a/packages/ui/vitest.config.ts +++ b/packages/ui/vitest.config.ts @@ -1,6 +1,4 @@ -/// - -import { defineConfig } from 'vite' +import { defineConfig } from 'vitest/config' export default defineConfig({ test: { diff --git a/packages/ui/vitest.setup.ts b/packages/ui/vitest.setup.ts index a4f40c8d8d0..aa5d0c82e44 100644 --- a/packages/ui/vitest.setup.ts +++ b/packages/ui/vitest.setup.ts @@ -1,10 +1,8 @@ /// -import * as matchers from '@testing-library/jest-dom/matchers' +import '@testing-library/jest-dom/vitest' import { cleanup } from '@testing-library/react' -import { afterEach, expect, vi } from 'vitest' - -expect.extend(matchers) +import { afterEach, vi } from 'vitest' Object.defineProperty(window, 'matchMedia', { writable: true, diff --git a/playwright-tests/package.json b/playwright-tests/package.json index f4ca31fe459..5fae3769ec1 100644 --- a/playwright-tests/package.json +++ b/playwright-tests/package.json @@ -17,7 +17,6 @@ "author": "", "license": "ISC", "devDependencies": { - "@playwright/test": "^1.41.2", - "@types/node": "^20.11.16" + "@playwright/test": "^1.41.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ff0b329e992..e9d6303de2e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,13 +4,25 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +catalogs: + default: + '@types/node': + specifier: ^20.0.0 + version: 20.12.11 + next: + specifier: 14.2.15 + version: 14.2.15 + importers: .: devDependencies: + '@types/node': + specifier: 'catalog:' + version: 20.12.11 eslint: specifier: ^8.57.0 - version: 8.57.0 + version: 8.57.0(supports-color@8.1.1) prettier: specifier: 3.2.4 version: 3.2.4 @@ -25,10 +37,13 @@ importers: version: 1.72.0 supabase: specifier: ^1.151.1 - version: 1.151.1 + version: 1.151.1(supports-color@8.1.1) + supports-color: + specifier: ^8.0.0 + version: 8.1.1 turbo: - specifier: 2.0.4 - version: 2.0.4 + specifier: 2.3.3 + version: 2.3.3 typescript: specifier: ~5.5.0 version: 5.5.2 @@ -40,7 +55,7 @@ importers: version: 3.3.1(react-hook-form@7.47.0(react@18.2.0)) contentlayer2: specifier: 0.4.6 - version: 0.4.6(esbuild@0.20.2)(markdown-wasm@1.2.0) + version: 0.4.6(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) eslint-config-supabase: specifier: workspace:* version: link:../../packages/eslint-config-supabase @@ -60,11 +75,11 @@ importers: specifier: ^1.2.0 version: 1.2.0 next: - specifier: ^14.2.10 - version: 14.2.13(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + specifier: 'catalog:' + version: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) next-contentlayer2: specifier: 0.4.6 - version: 0.4.6(contentlayer2@0.4.6(esbuild@0.20.2)(markdown-wasm@1.2.0))(esbuild@0.20.2)(markdown-wasm@1.2.0)(next@14.2.13(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 0.4.6(contentlayer2@0.4.6(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.20.2)(markdown-wasm@1.2.0)(next@14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(supports-color@8.1.1) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -73,7 +88,7 @@ importers: version: 18.2.0 react-docgen: specifier: ^7.0.3 - version: 7.0.3 + version: 7.0.3(supports-color@8.1.1) react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) @@ -100,13 +115,13 @@ importers: version: 6.0.0 remark: specifier: ^14.0.3 - version: 14.0.3 + version: 14.0.3(supports-color@8.1.1) remark-code-import: specifier: ^1.2.0 version: 1.2.0 remark-gfm: specifier: ^4.0.0 - version: 4.0.0 + version: 4.0.0(supports-color@8.1.1) sonner: specifier: ^1.5.0 version: 1.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -132,9 +147,6 @@ importers: '@types/lodash.template': specifier: 4.5.0 version: 4.5.0 - '@types/node': - specifier: ^20 - version: 20.12.11 '@types/react': specifier: ^18.2.65 version: 18.3.3 @@ -185,7 +197,7 @@ importers: version: 2.2.0 '@mdx-js/loader': specifier: ^2.1.5 - version: 2.3.0(webpack@5.94.0) + version: 2.3.0(supports-color@8.1.1)(webpack@5.94.0) '@mdx-js/react': specifier: ^2.3.0 version: 2.3.0(react@18.2.0) @@ -194,7 +206,7 @@ importers: version: 14.2.3 '@next/mdx': specifier: ^14.2.3 - version: 14.2.3(@mdx-js/loader@2.3.0(webpack@5.94.0))(@mdx-js/react@2.3.0(react@18.2.0)) + version: 14.2.3(@mdx-js/loader@2.3.0(supports-color@8.1.1)(webpack@5.94.0))(@mdx-js/react@2.3.0(react@18.2.0)) '@octokit/auth-app': specifier: ^6.0.3 version: 6.0.3 @@ -276,6 +288,9 @@ importers: katex: specifier: ^0.16.10 version: 0.16.10 + libpg-query: + specifier: 15.2.0 + version: 15.2.0(encoding@0.1.13)(supports-color@8.1.1) lodash: specifier: ^4.17.21 version: 4.17.21 @@ -290,16 +305,16 @@ importers: version: 3.0.0 mdast-util-from-markdown: specifier: ^1.2.0 - version: 1.3.1(supports-color@5.5.0) + version: 1.3.1(supports-color@8.1.1) mdast-util-gfm: specifier: ^2.0.2 - version: 2.0.2(supports-color@5.5.0) + version: 2.0.2(supports-color@8.1.1) mdast-util-mdx: specifier: ^2.0.0 - version: 2.0.1 + version: 2.0.1(supports-color@8.1.1) mdast-util-mdx-jsx: specifier: ^2.0.0 - version: 2.1.4 + version: 2.1.4(supports-color@8.1.1) mdast-util-to-hast: specifier: ^12.3.0 version: 12.3.0 @@ -316,23 +331,23 @@ importers: specifier: ^1.0.0 version: 1.0.1 next: - specifier: ^14.2.10 - version: 14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + specifier: 'catalog:' + version: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) next-mdx-remote: specifier: ^4.4.1 - version: 4.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 4.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(supports-color@8.1.1) next-plugin-yaml: specifier: ^1.0.1 version: 1.0.1 next-seo: specifier: ^6.5.0 - version: 6.5.0(next@14.2.13(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 6.5.0(next@14.2.15(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) nuqs: specifier: ^1.19.1 - version: 1.19.1(next@14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0)) + version: 1.19.1(next@14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0)) openai: specifier: ^4.20.1 version: 4.71.1(encoding@0.1.13)(zod@3.23.8) @@ -356,7 +371,7 @@ importers: version: 9.8.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-markdown: specifier: ^8.0.3 - version: 8.0.7(@types/react@18.3.3)(react@18.2.0)(supports-color@5.5.0) + version: 8.0.7(@types/react@18.3.3)(react@18.2.0)(supports-color@8.1.1) react-use: specifier: ^17.5.0 version: 17.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -368,16 +383,16 @@ importers: version: 5.1.0 remark: specifier: ^14.0.2 - version: 14.0.3 + version: 14.0.3(supports-color@8.1.1) remark-emoji: specifier: ^3.1.2 version: 3.1.2 remark-gfm: specifier: ^3.0.1 - version: 3.0.1(supports-color@5.5.0) + version: 3.0.1(supports-color@8.1.1) remark-math: specifier: ^6.0.0 - version: 6.0.0 + version: 6.0.0(supports-color@8.1.1) server-only: specifier: ^0.0.1 version: 0.0.1 @@ -434,7 +449,7 @@ importers: specifier: ^3.0.0 version: 3.0.15 '@types/node': - specifier: ^20.11.16 + specifier: 'catalog:' version: 20.12.11 '@types/react': specifier: ^18.2.24 @@ -460,9 +475,6 @@ importers: globby: specifier: ^13.2.2 version: 13.2.2 - nextjs-node-loader: - specifier: ^1.1.5 - version: 1.1.5(webpack@5.94.0) npm-run-all: specifier: ^4.1.5 version: 4.1.5 @@ -471,7 +483,7 @@ importers: version: 12.1.3 simple-git: specifier: ^3.24.0 - version: 3.24.0 + version: 3.24.0(supports-color@8.1.1) slugify: specifier: ^1.6.6 version: 1.6.6 @@ -492,10 +504,10 @@ importers: version: 5.1.3 vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.5.2)(vite@5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0)) + version: 4.3.2(supports-color@8.1.1)(typescript@5.5.2)(vite@5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0)) vitest: specifier: ^2.0.2 - version: 2.1.8(@types/node@20.12.11)(jsdom@20.0.3)(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(terser@5.32.0) + version: 2.1.8(@types/node@20.12.11)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0) apps/studio: dependencies: @@ -507,10 +519,10 @@ importers: version: 1.0.4 '@graphiql/react': specifier: ^0.19.4 - version: 0.19.4(@codemirror/language@6.0.0)(@types/node@22.7.5)(@types/react-dom@18.3.0)(@types/react@18.3.3)(graphql-ws@5.14.1(graphql@16.8.1))(graphql@16.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 0.19.4(@codemirror/language@6.0.0)(@types/node@20.12.11)(@types/react-dom@18.3.0)(@types/react@18.3.3)(graphql-ws@5.14.1(graphql@16.8.1))(graphql@16.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@graphiql/toolkit': specifier: ^0.9.1 - version: 0.9.1(@types/node@22.7.5)(graphql-ws@5.14.1(graphql@16.8.1))(graphql@16.8.1) + version: 0.9.1(@types/node@20.12.11)(graphql-ws@5.14.1(graphql@16.8.1))(graphql@16.8.1) '@hcaptcha/react-hcaptcha': specifier: ^1.8.1 version: 1.9.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -540,7 +552,7 @@ importers: version: 1.0.7(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@sentry/nextjs': specifier: ^8.34.0 - version: 8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react@18.2.0)(supports-color@5.5.0)(webpack@5.94.0) + version: 8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react@18.2.0)(supports-color@8.1.1)(webpack@5.94.0) '@stripe/react-stripe-js': specifier: ^2.5.0 version: 2.5.0(@stripe/stripe-js@3.0.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -564,7 +576,7 @@ importers: version: 0.1.74 '@supabase/sql-to-rest': specifier: ^0.1.6 - version: 0.1.6(encoding@0.1.13)(supports-color@5.5.0) + version: 0.1.6(encoding@0.1.13)(supports-color@8.1.1) '@supabase/supabase-js': specifier: ^2.44.3 version: 2.44.3 @@ -582,10 +594,10 @@ importers: version: 10.3.1(react@18.2.0) '@vercel/flags': specifier: ^2.6.0 - version: 2.6.0(next@14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.6.0(next@14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@vitejs/plugin-react': specifier: ^4.2.1 - version: 4.2.1(supports-color@5.5.0)(vite@5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0)) + version: 4.2.1(supports-color@8.1.1)(vite@5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0)) '@zip.js/zip.js': specifier: ^2.7.29 version: 2.7.30 @@ -674,14 +686,14 @@ importers: specifier: 0.33.0 version: 0.33.0 next: - specifier: ^14.2.10 - version: 14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + specifier: 'catalog:' + version: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) nuqs: specifier: ^1.17.8 - version: 1.19.1(next@14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0)) + version: 1.19.1(next@14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0)) openai: specifier: ^4.20.1 version: 4.71.1(encoding@0.1.13)(zod@3.23.8) @@ -723,7 +735,7 @@ importers: version: 4.18.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-dnd: specifier: ^16.0.1 - version: 16.0.1(@types/hoist-non-react-statics@3.3.2)(@types/node@22.7.5)(@types/react@18.3.3)(react@18.2.0) + version: 16.0.1(@types/hoist-non-react-statics@3.3.2)(@types/node@20.12.11)(@types/react@18.3.3)(react@18.2.0) react-dnd-html5-backend: specifier: ^16.0.1 version: 16.0.1 @@ -747,7 +759,7 @@ importers: version: 9.8.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-markdown: specifier: ^8.0.3 - version: 8.0.7(@types/react@18.3.3)(react@18.2.0)(supports-color@5.5.0) + version: 8.0.7(@types/react@18.3.3)(react@18.2.0)(supports-color@8.1.1) react-simple-maps: specifier: 4.0.0-beta.6 version: 4.0.0-beta.6(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -774,7 +786,7 @@ importers: version: 2.12.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) remark-gfm: specifier: ^3.0.1 - version: 3.0.1(supports-color@5.5.0) + version: 3.0.1(supports-color@8.1.1) semver: specifier: ^6.3.1 version: 6.3.1 @@ -810,10 +822,10 @@ importers: version: 1.12.0(@types/react@18.3.3)(react@18.2.0) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(supports-color@5.5.0)(typescript@5.5.2)(vite@5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0)) + version: 4.3.2(supports-color@8.1.1)(typescript@5.5.2)(vite@5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0)) vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@22.7.5)(@vitest/ui@1.6.0)(jsdom@20.0.3(supports-color@5.5.0))(sass@1.72.0)(supports-color@5.5.0)(terser@5.32.0) + version: 1.6.0(@types/node@20.12.11)(@vitest/ui@1.6.0)(jsdom@20.0.3(supports-color@8.1.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0) yup: specifier: ^1.4.0 version: 1.4.0 @@ -838,13 +850,13 @@ importers: version: 1.1.0(@types/react@18.3.3)(react@18.2.0) '@supabase/postgres-meta': specifier: ^0.64.4 - version: 0.64.6(encoding@0.1.13)(supports-color@5.5.0) + version: 0.64.6(encoding@0.1.13)(supports-color@8.1.1) '@testing-library/dom': specifier: ^9.3.3 version: 9.3.4 '@testing-library/jest-dom': specifier: ^6.4.6 - version: 6.4.6(@jest/globals@29.7.0(supports-color@5.5.0))(@types/jest@29.5.5)(jest@29.7.0(@types/node@22.7.5)(supports-color@5.5.0))(vitest@1.6.0(@types/node@22.7.5)(@vitest/ui@1.6.0)(jsdom@20.0.3(supports-color@5.5.0))(sass@1.72.0)(supports-color@5.5.0)(terser@5.32.0)) + version: 6.4.6(@jest/globals@29.7.0(supports-color@8.1.1))(@types/jest@29.5.5)(jest@29.7.0(@types/node@20.12.11)(supports-color@8.1.1))(vitest@1.6.0(@types/node@20.12.11)(@vitest/ui@1.6.0)(jsdom@20.0.3(supports-color@8.1.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0)) '@testing-library/react': specifier: ^14.0.0 version: 14.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -869,6 +881,9 @@ importers: '@types/mime-db': specifier: ^1.43.5 version: 1.43.5 + '@types/node': + specifier: 'catalog:' + version: 20.12.11 '@types/papaparse': specifier: ^5.3.1 version: 5.3.9 @@ -940,7 +955,7 @@ importers: version: link:../../packages/eslint-config-supabase eslint-plugin-barrel-files: specifier: ^2.0.7 - version: 2.0.7(eslint@8.57.0(supports-color@5.5.0)) + version: 2.0.7(eslint@8.57.0(supports-color@8.1.1)) graphql-ws: specifier: 5.14.1 version: 5.14.1(graphql@16.8.1) @@ -949,16 +964,13 @@ importers: version: 2.4.11(typescript@5.5.2) next-router-mock: specifier: ^0.9.13 - version: 0.9.13(next@14.2.13(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react@18.2.0) + version: 0.9.13(next@14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react@18.2.0) postcss: specifier: ^8.4.31 version: 8.4.38 prettier: specifier: 3.2.4 version: 3.2.4 - supports-color: - specifier: 5.5.0 - version: 5.5.0 tailwindcss: specifier: ^3.4.1 version: 3.4.1 @@ -982,7 +994,7 @@ importers: version: 14.2.3 '@next/mdx': specifier: ^14.2.3 - version: 14.2.3(@mdx-js/loader@2.3.0(webpack@5.94.0(esbuild@0.20.2)))(@mdx-js/react@2.3.0(react@18.2.0)) + version: 14.2.3(@mdx-js/loader@2.3.0(supports-color@8.1.1)(webpack@5.94.0(esbuild@0.20.2)))(@mdx-js/react@2.3.0(react@18.2.0)) '@octokit/auth-app': specifier: ^6.0.3 version: 6.0.3 @@ -1001,9 +1013,6 @@ importers: '@radix-ui/react-dialog': specifier: ^1.0.5 version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-three/fiber': - specifier: ^7.0.29 - version: 7.0.29(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(three@0.170.0) '@supabase/auth-helpers-react': specifier: ^0.4.2 version: 0.4.2(@supabase/supabase-js@2.44.3) @@ -1042,10 +1051,7 @@ importers: version: link:../../packages/config contentlayer2: specifier: 0.5.3 - version: 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0) - dat.gui: - specifier: ^0.7.9 - version: 0.7.9 + version: 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) dayjs: specifier: ^1.11.12 version: 1.11.13 @@ -1074,17 +1080,17 @@ importers: specifier: ^1.2.0 version: 1.2.0 next: - specifier: ^14.2.10 - version: 14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + specifier: 'catalog:' + version: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) next-contentlayer2: specifier: 0.5.3 - version: 0.5.3(contentlayer2@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0))(esbuild@0.20.2)(markdown-wasm@1.2.0)(next@14.2.13(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 0.5.3(contentlayer2@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.20.2)(markdown-wasm@1.2.0)(next@14.2.15(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(supports-color@8.1.1) next-mdx-remote: specifier: ^4.4.1 - version: 4.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 4.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(supports-color@8.1.1) next-seo: specifier: ^6.5.0 - version: 6.5.0(next@14.2.13(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 6.5.0(next@14.2.15(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -1108,7 +1114,7 @@ importers: version: 18.2.0(react@18.2.0) react-markdown: specifier: ^8.0.3 - version: 8.0.7(@types/react@18.3.3)(react@18.2.0)(supports-color@5.5.0) + version: 8.0.7(@types/react@18.3.3)(react@18.2.0)(supports-color@8.1.1) react-syntax-highlighter: specifier: ^15.5.0 version: 15.5.0(react@18.2.0) @@ -1129,10 +1135,10 @@ importers: version: 5.1.0 remark: specifier: ^15.0.1 - version: 15.0.1 + version: 15.0.1(supports-color@8.1.1) remark-gfm: specifier: ^3.0.1 - version: 3.0.1(supports-color@5.5.0) + version: 3.0.1(supports-color@8.1.1) remark-html: specifier: ^16.0.1 version: 16.0.1 @@ -1179,18 +1185,12 @@ importers: '@types/common-tags': specifier: ^1.8.4 version: 1.8.4 - '@types/dat.gui': - specifier: ^0.7.10 - version: 0.7.12 '@types/lodash': specifier: ^4.0.0 version: 4.17.5 '@types/mdx-js__react': specifier: ^1.5.6 version: 1.5.6 - '@types/node': - specifier: ^20.11.16 - version: 20.12.11 '@types/parse-numeric-range': specifier: ^0.0.1 version: 0.0.1 @@ -1267,6 +1267,9 @@ importers: '@types/common-tags': specifier: ^1.8.4 version: 1.8.4 + '@types/node': + specifier: 'catalog:' + version: 20.12.11 api-types: specifier: workspace:* version: link:../api-types @@ -1278,10 +1281,10 @@ importers: version: 16.3.1 libpg-query: specifier: 15.2.0 - version: 15.2.0(encoding@0.1.13)(supports-color@5.5.0) + version: 15.2.0(encoding@0.1.13)(supports-color@8.1.1) mdast-util-from-markdown: specifier: ^2.0.0 - version: 2.0.0 + version: 2.0.0(supports-color@8.1.1) sql-formatter: specifier: ^15.0.2 version: 15.3.1 @@ -1293,7 +1296,7 @@ importers: version: 5.5.2 vitest: specifier: ^2.0.0 - version: 2.1.8(@types/node@22.7.5)(jsdom@20.0.3)(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(terser@5.32.0) + version: 2.1.8(@types/node@20.12.11)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0) packages/api-types: devDependencies: @@ -1343,8 +1346,8 @@ importers: specifier: ^4.17.21 version: 4.17.21 next: - specifier: '*' - version: 14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + specifier: 'catalog:' + version: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -1409,19 +1412,19 @@ importers: dependencies: eslint-config-next: specifier: ^14.2.3 - version: 14.2.4(eslint@8.57.0)(typescript@5.5.2) + version: 14.2.4(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) + version: 9.1.0(eslint@8.57.0(supports-color@8.1.1)) eslint-config-turbo: specifier: ^2.0.4 - version: 2.0.4(eslint@8.57.0) + version: 2.0.4(eslint@8.57.0(supports-color@8.1.1)) packages/generator: devDependencies: '@redocly/cli': specifier: ^1.6.0 - version: 1.6.0(encoding@0.1.13) + version: 1.6.0(encoding@0.1.13)(supports-color@8.1.1) '@types/json-stringify-safe': specifier: ^5.0.0 version: 5.0.3 @@ -1612,8 +1615,8 @@ importers: specifier: ^0.436.0 version: 0.436.0(react@18.2.0) next: - specifier: '*' - version: 14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + specifier: 'catalog:' + version: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -1655,7 +1658,7 @@ importers: version: 9.8.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-markdown: specifier: ^8.0.3 - version: 8.0.7(@types/react@18.3.3)(react@18.2.0)(supports-color@5.5.0) + version: 8.0.7(@types/react@18.3.3)(react@18.2.0)(supports-color@8.1.1) react-medium-image-zoom: specifier: ^5.2.4 version: 5.2.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -1679,7 +1682,7 @@ importers: version: 2.12.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) remark-gfm: specifier: ^3.0.1 - version: 3.0.1(supports-color@5.5.0) + version: 3.0.1(supports-color@8.1.1) sonner: specifier: ^1.5.0 version: 1.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -1713,7 +1716,7 @@ importers: version: 3.6.1 '@testing-library/jest-dom': specifier: ^6.1.3 - version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.5)(jest@29.7.0(@types/node@22.7.5))(vitest@2.1.8(@types/node@22.7.5)(jsdom@20.0.3)(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(terser@5.32.0)) + version: 6.4.6(@jest/globals@29.7.0(supports-color@8.1.1))(@types/jest@29.5.5)(jest@29.7.0(@types/node@20.12.11)(supports-color@8.1.1))(vitest@2.1.8(@types/node@20.12.11)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0)) '@testing-library/react': specifier: ^14.0.0 version: 14.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -1726,6 +1729,9 @@ importers: '@types/lodash': specifier: 4.17.5 version: 4.17.5 + '@types/node': + specifier: 'catalog:' + version: 20.12.11 '@types/react': specifier: ^18.2.24 version: 18.3.3 @@ -1765,12 +1771,9 @@ importers: typescript: specifier: ~5.5.0 version: 5.5.2 - vite: - specifier: ^5.0.0 - version: 5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0) vitest: specifier: ^2.0.0 - version: 2.1.8(@types/node@22.7.5)(jsdom@20.0.3)(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(terser@5.32.0) + version: 2.1.8(@types/node@20.12.11)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0) packages/ui-patterns: dependencies: @@ -1782,7 +1785,7 @@ importers: version: 4.6.0(monaco-editor@0.33.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@supabase/sql-to-rest': specifier: ^0.1.6 - version: 0.1.6(encoding@0.1.13)(supports-color@5.5.0) + version: 0.1.6(encoding@0.1.13)(supports-color@8.1.1) class-variance-authority: specifier: ^0.6.0 version: 0.6.1 @@ -1814,8 +1817,8 @@ importers: specifier: '*' version: 0.33.0 next: - specifier: '*' - version: 14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + specifier: 'catalog:' + version: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) next-themes: specifier: '*' version: 0.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -1839,7 +1842,7 @@ importers: version: 9.8.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-markdown: specifier: ^9.0.1 - version: 9.0.1(@types/react@18.3.3)(react@18.2.0) + version: 9.0.1(@types/react@18.3.3)(react@18.2.0)(supports-color@8.1.1) react-syntax-highlighter: specifier: ^15.5.0 version: 15.5.0(react@18.2.0) @@ -1854,7 +1857,7 @@ importers: version: 11.10.1(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) remark-gfm: specifier: ^4.0.0 - version: 4.0.0 + version: 4.0.0(supports-color@8.1.1) sonner: specifier: ^1.5.0 version: 1.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -1885,7 +1888,7 @@ importers: version: 10.1.0 '@testing-library/jest-dom': specifier: ^6.4.6 - version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.5)(jest@29.7.0(@types/node@22.7.5))(vitest@2.1.8(@types/node@22.7.5)(jsdom@20.0.3)(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(terser@5.32.0)) + version: 6.4.6(@jest/globals@29.7.0(supports-color@8.1.1))(@types/jest@29.5.5)(jest@29.7.0(@types/node@20.12.11)(supports-color@8.1.1))(vitest@2.1.8(@types/node@20.12.11)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0)) '@testing-library/react': specifier: ^16.0.0 version: 16.0.0(@testing-library/dom@10.1.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -1898,6 +1901,9 @@ importers: '@types/lodash': specifier: ^4.17.5 version: 4.17.5 + '@types/node': + specifier: 'catalog:' + version: 20.12.11 '@types/react': specifier: ^18.3.3 version: 18.3.3 @@ -1909,25 +1915,19 @@ importers: version: link:../api-types next-router-mock: specifier: ^0.9.13 - version: 0.9.13(next@14.2.13(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react@18.2.0) + version: 0.9.13(next@14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react@18.2.0) typescript: specifier: ~5.5.0 version: 5.5.2 - vite: - specifier: ^5.2.14 - version: 5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0) vitest: specifier: ^2.0.3 - version: 2.1.8(@types/node@22.7.5)(jsdom@20.0.3)(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(terser@5.32.0) + version: 2.1.8(@types/node@20.12.11)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0) playwright-tests: devDependencies: '@playwright/test': specifier: ^1.41.2 version: 1.41.2 - '@types/node': - specifier: ^20.11.16 - version: 20.12.11 tests: devDependencies: @@ -1944,14 +1944,14 @@ importers: specifier: ^29.5.4 version: 29.5.5 '@types/node': - specifier: ^20.11.16 + specifier: ^20.0.0 version: 20.12.11 '@typescript-eslint/eslint-plugin': specifier: ^6.19.1 - version: 6.19.1(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2) + version: 6.19.1(@typescript-eslint/parser@6.19.1(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2) '@typescript-eslint/parser': specifier: ^6.19.1 - version: 6.19.1(eslint@8.57.0)(typescript@5.5.2) + version: 6.19.1(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2) allure-commandline: specifier: ^2.17.2 version: 2.24.0 @@ -1963,19 +1963,19 @@ importers: version: 3.1.5(encoding@0.1.13) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.12.11) + version: 29.7.0(@types/node@20.12.11)(supports-color@8.1.1) jest-allure2-adapter: specifier: ^0.3.12 version: 0.3.12 jest-environment-jsdom: specifier: ^29.7.0 - version: 29.7.0 + version: 29.7.0(supports-color@8.1.1) postgres: specifier: ^3.0.5 version: 3.3.5 ts-jest: specifier: ^29.1.1 - version: 29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.12.11))(typescript@5.5.2) + version: 29.1.2(@babel/core@7.24.7(supports-color@8.1.1))(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7(supports-color@8.1.1))(supports-color@8.1.1))(jest@29.7.0(@types/node@20.12.11)(supports-color@8.1.1))(typescript@5.5.2) typescript: specifier: ~5.5.0 version: 5.5.2 @@ -3146,8 +3146,8 @@ packages: '@next/bundle-analyzer@14.2.3': resolution: {integrity: sha512-Z88hbbngMs7njZKI8kTJIlpdLKYfMSLwnsqYe54AP4aLmgL70/Ynx/J201DQ+q2Lr6FxFw1uCeLGImDrHOl2ZA==} - '@next/env@14.2.13': - resolution: {integrity: sha512-s3lh6K8cbW1h5Nga7NNeXrbe0+2jIIYK9YaA9T7IufDWnZpozdFUp6Hf0d5rNWUKu4fEuSX2rCKlGjCrtylfDw==} + '@next/env@14.2.15': + resolution: {integrity: sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==} '@next/eslint-plugin-next@14.2.4': resolution: {integrity: sha512-svSFxW9f3xDaZA3idQmlFw7SusOuWTpDTAeBlO3AEPDltrraV+lqs7mAc6A27YdnpQVVIA3sODqUAAHdWhVWsA==} @@ -3163,56 +3163,56 @@ packages: '@mdx-js/react': optional: true - '@next/swc-darwin-arm64@14.2.13': - resolution: {integrity: sha512-IkAmQEa2Htq+wHACBxOsslt+jMoV3msvxCn0WFSfJSkv/scy+i/EukBKNad36grRxywaXUYJc9mxEGkeIs8Bzg==} + '@next/swc-darwin-arm64@14.2.15': + resolution: {integrity: sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@14.2.13': - resolution: {integrity: sha512-Dv1RBGs2TTjkwEnFMVL5XIfJEavnLqqwYSD6LXgTPdEy/u6FlSrLBSSfe1pcfqhFEXRAgVL3Wpjibe5wXJzWog==} + '@next/swc-darwin-x64@14.2.15': + resolution: {integrity: sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@14.2.13': - resolution: {integrity: sha512-yB1tYEFFqo4ZNWkwrJultbsw7NPAAxlPXURXioRl9SdW6aIefOLS+0TEsKrWBtbJ9moTDgU3HRILL6QBQnMevg==} + '@next/swc-linux-arm64-gnu@14.2.15': + resolution: {integrity: sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@14.2.13': - resolution: {integrity: sha512-v5jZ/FV/eHGoWhMKYrsAweQ7CWb8xsWGM/8m1mwwZQ/sutJjoFaXchwK4pX8NqwImILEvQmZWyb8pPTcP7htWg==} + '@next/swc-linux-arm64-musl@14.2.15': + resolution: {integrity: sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@14.2.13': - resolution: {integrity: sha512-aVc7m4YL7ViiRv7SOXK3RplXzOEe/qQzRA5R2vpXboHABs3w8vtFslGTz+5tKiQzWUmTmBNVW0UQdhkKRORmGA==} + '@next/swc-linux-x64-gnu@14.2.15': + resolution: {integrity: sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@14.2.13': - resolution: {integrity: sha512-4wWY7/OsSaJOOKvMsu1Teylku7vKyTuocvDLTZQq0TYv9OjiYYWt63PiE1nTuZnqQ4RPvME7Xai+9enoiN0Wrg==} + '@next/swc-linux-x64-musl@14.2.15': + resolution: {integrity: sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@14.2.13': - resolution: {integrity: sha512-uP1XkqCqV2NVH9+g2sC7qIw+w2tRbcMiXFEbMihkQ8B1+V6m28sshBwAB0SDmOe0u44ne1vFU66+gx/28RsBVQ==} + '@next/swc-win32-arm64-msvc@14.2.15': + resolution: {integrity: sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-ia32-msvc@14.2.13': - resolution: {integrity: sha512-V26ezyjPqQpDBV4lcWIh8B/QICQ4v+M5Bo9ykLN+sqeKKBxJVDpEc6biDVyluTXTC40f5IqCU0ttth7Es2ZuMw==} + '@next/swc-win32-ia32-msvc@14.2.15': + resolution: {integrity: sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - '@next/swc-win32-x64-msvc@14.2.13': - resolution: {integrity: sha512-WwzOEAFBGhlDHE5Z73mNU8CO8mqMNLqaG+AO9ETmzdCQlJhVtWZnOl2+rqgVQS+YHunjOWptdFmNfbpwcUuEsw==} + '@next/swc-win32-x64-msvc@14.2.15': + resolution: {integrity: sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -4482,16 +4482,6 @@ packages: '@react-dnd/shallowequal@4.0.2': resolution: {integrity: sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==} - '@react-three/fiber@7.0.29': - resolution: {integrity: sha512-TE+/iaGrjluGsPwN2RkLXxKD4ak+unsh0YKIFKGcuAOW9jYcAyMGKAtgFO8MS7/HNCrZZQQSg23sJ8IPgtdkDg==} - peerDependencies: - react: '>=17.0' - react-dom: '>=17.0' - three: '>=0.133' - peerDependenciesMeta: - react-dom: - optional: true - '@reactflow/background@11.3.6': resolution: {integrity: sha512-06FPlSUOOMALEEs+2PqPAbpqmL7WDjrkbG2UsDr2d6mbcDDhHiV4tu9FYoz44SQvXo7ma9VRotlsaR4OiRcYsg==} peerDependencies: @@ -5539,9 +5529,6 @@ packages: '@types/react-grid-layout@1.3.3': resolution: {integrity: sha512-VLgUoEN0PaAL3GeRsmYbHuoN0tpDNoRhlkdzHK4Ll8shHW6e16YpNCZWb7P9vrlZdzFtY75cM/hPr8p0ukZQCw==} - '@types/react-reconciler@0.26.7': - resolution: {integrity: sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==} - '@types/react-redux@7.1.27': resolution: {integrity: sha512-xj7d9z32p1K/eBmO+OEy+qfaWXtcPlN8f1Xk3Ne0p/ZRQ867RI5bQ/bpBtxbqU1AHNhKJSgGvld/P2myU2uYkg==} @@ -8817,10 +8804,6 @@ packages: resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} engines: {node: '>=4.0.0'} - loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} @@ -9687,8 +9670,8 @@ packages: react: ^16.8 || ^17 || ^18 react-dom: ^16.8 || ^17 || ^18 - next@14.2.13: - resolution: {integrity: sha512-BseY9YNw8QJSwLYD7hlZzl6QVDoSFHL/URN5K64kVEVpCsSOWeyjbIGK+dZUaRViHTaMQX8aqmnn0PHBbGZezg==} + next@14.2.15: + resolution: {integrity: sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -9705,12 +9688,6 @@ packages: sass: optional: true - nextjs-node-loader@1.1.5: - resolution: {integrity: sha512-tS2wWPh8QsQHBVNG8w7xzL3ua+OFnmFvcOFxrAQsfK4T017nOiCUrybVWVieilEn1z8CqODcRw1z70mFRPQi1Q==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^5.76.0 - nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} @@ -10606,9 +10583,6 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-merge-refs@1.1.0: - resolution: {integrity: sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==} - react-onclickoutside@6.13.0: resolution: {integrity: sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==} peerDependencies: @@ -10622,12 +10596,6 @@ packages: react: ^16.8.0 || ^17 || ^18 react-dom: ^16.8.0 || ^17 || ^18 - react-reconciler@0.26.2: - resolution: {integrity: sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==} - engines: {node: '>=0.10.0'} - peerDependencies: - react: ^17.0.2 - react-redux@7.2.9: resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==} peerDependencies: @@ -10718,9 +10686,6 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-0 || ^18.0.0 - react-three-fiber@0.0.0-deprecated: - resolution: {integrity: sha512-EblIqTAsIpkYeM8bZtC4lcpTE0A2zCEGipFB52RgcQq/q+0oryrk7Sxt+sqhIjUu6xMNEVywV8dr74lz5yWO6A==} - react-tooltip@4.5.1: resolution: {integrity: sha512-Zo+CSFUGXar1uV+bgXFFDe7VeS2iByeIp5rTgTcc2HqtuOS5D76QapejNNfx320MCY91TlhTQat36KGFTqgcvw==} engines: {npm: '>=6.13'} @@ -10753,12 +10718,6 @@ packages: react: '*' tslib: '*' - react-use-measure@2.1.1: - resolution: {integrity: sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==} - peerDependencies: - react: '>=16.13' - react-dom: '>=16.13' - react-use@17.5.0: resolution: {integrity: sha512-PbfwSPMwp/hoL847rLnm/qkjg3sTRCvn6YhUZiHaUa3FA6/aNoFX79ul5Xt70O1rK+9GxSVqkY0eTwMdsR/bWg==} peerDependencies: @@ -11096,9 +11055,6 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - scheduler@0.20.2: - resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} - scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -11887,38 +11843,38 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - turbo-darwin-64@2.0.4: - resolution: {integrity: sha512-x9mvmh4wudBstML8Z8IOmokLWglIhSfhQwnh2gBCSqabgVBKYvzl8Y+i+UCNPxheCGTgtsPepTcIaKBIyFIcvw==} + turbo-darwin-64@2.3.3: + resolution: {integrity: sha512-bxX82xe6du/3rPmm4aCC5RdEilIN99VUld4HkFQuw+mvFg6darNBuQxyWSHZTtc25XgYjQrjsV05888w1grpaA==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.0.4: - resolution: {integrity: sha512-/B1Ih8zPRGVw5vw4SlclOf3C/woJ/2T6ieH6u54KT4wypoaVyaiyMqBcziIXycdObIYr7jQ+raHO7q3mhay9/A==} + turbo-darwin-arm64@2.3.3: + resolution: {integrity: sha512-DYbQwa3NsAuWkCUYVzfOUBbSUBVQzH5HWUFy2Kgi3fGjIWVZOFk86ss+xsWu//rlEAfYwEmopigsPYSmW4X15A==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.0.4: - resolution: {integrity: sha512-6aG670e5zOWu6RczEYcB81nEl8EhiGJEvWhUrnAfNEUIMBEH1pR5SsMmG2ol5/m3PgiRM12r13dSqTxCLcHrVg==} + turbo-linux-64@2.3.3: + resolution: {integrity: sha512-eHj9OIB0dFaP6BxB88jSuaCLsOQSYWBgmhy2ErCu6D2GG6xW3b6e2UWHl/1Ho9FsTg4uVgo4DB9wGsKa5erjUA==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.0.4: - resolution: {integrity: sha512-AXfVOjst+mCtPDFT4tCu08Qrfv12Nj7NDd33AjGwV79NYN1Y1rcFY59UQ4nO3ij3rbcvV71Xc+TZJ4csEvRCSg==} + turbo-linux-arm64@2.3.3: + resolution: {integrity: sha512-NmDE/NjZoDj1UWBhMtOPmqFLEBKhzGS61KObfrDEbXvU3lekwHeoPvAMfcovzswzch+kN2DrtbNIlz+/rp8OCg==} cpu: [arm64] os: [linux] - turbo-windows-64@2.0.4: - resolution: {integrity: sha512-QOnUR9hKl0T5gq5h1fAhVEqBSjpcBi/BbaO71YGQNgsr6pAnCQdbG8/r3MYXet53efM0KTdOhieWeO3KLNKybA==} + turbo-windows-64@2.3.3: + resolution: {integrity: sha512-O2+BS4QqjK3dOERscXqv7N2GXNcqHr9hXumkMxDj/oGx9oCatIwnnwx34UmzodloSnJpgSqjl8iRWiY65SmYoQ==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.0.4: - resolution: {integrity: sha512-3v8WpdZy1AxZw0gha0q3caZmm+0gveBQ40OspD6mxDBIS+oBtO5CkxhIXkFJJW+jDKmDlM7wXDIGfMEq+QyNCQ==} + turbo-windows-arm64@2.3.3: + resolution: {integrity: sha512-dW4ZK1r6XLPNYLIKjC4o87HxYidtRRcBeo/hZ9Wng2XM/MqqYkAyzJXJGgRMsc0MMEN9z4+ZIfnSNBrA0b08ag==} cpu: [arm64] os: [win32] - turbo@2.0.4: - resolution: {integrity: sha512-Ilme/2Q5kYw0AeRr+aw3s02+WrEYaY7U8vPnqSZU/jaDG/qd6jHVN6nRWyd/9KXvJGYM69vE6JImoGoyNjLwaw==} + turbo@2.3.3: + resolution: {integrity: sha512-DUHWQAcC8BTiUZDRzAYGvpSpGLiaOQPfYXlCieQbwUvmml/LRGIe3raKdrOPOoiX0DYlzxs2nH6BoWJoZrj8hA==} hasBin: true tus-js-client@4.1.0: @@ -12139,11 +12095,6 @@ packages: url-template@2.0.8: resolution: {integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==} - use-asset@1.0.4: - resolution: {integrity: sha512-7/hqDrWa0iMnCoET9W1T07EmD4Eg/Wmoj/X8TGBc++ECRK4m5yTsjP4O6s0yagbxfqIOuUkIxe2/sA+VR2GxZA==} - peerDependencies: - react: '>=17.0' - use-callback-ref@1.3.0: resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} @@ -12196,10 +12147,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - utility-types@3.10.0: - resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==} - engines: {node: '>= 4'} - uuid-by-string@3.0.7: resolution: {integrity: sha512-9xf+GAcwzLLGL2Z2Vb7hmi7jWIAKSiuaI5cLFsKw1IIlm7S5VpqvdJ5S7N36hqdy0v7DAwnnENJVAeev57/H1A==} @@ -12632,15 +12579,6 @@ packages: zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - zustand@3.7.2: - resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} - engines: {node: '>=12.7.0'} - peerDependencies: - react: '>=16.8' - peerDependenciesMeta: - react: - optional: true - zustand@4.4.7: resolution: {integrity: sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==} engines: {node: '>=12.7.0'} @@ -13132,40 +13070,20 @@ snapshots: '@babel/compat-data@7.24.7': {} - '@babel/core@7.24.7': + '@babel/core@7.24.7(supports-color@8.1.1)': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 '@babel/generator': 7.24.7 '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helpers': 7.24.7 '@babel/parser': 7.24.7 '@babel/template': 7.24.7 - '@babel/traverse': 7.24.7(supports-color@5.5.0) + '@babel/traverse': 7.24.7(supports-color@8.1.1) '@babel/types': 7.24.7 convert-source-map: 2.0.0 - debug: 4.3.7(supports-color@5.5.0) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.24.7(supports-color@5.5.0)': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7(supports-color@5.5.0))(supports-color@5.5.0) - '@babel/helpers': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/template': 7.24.7 - '@babel/traverse': 7.24.7(supports-color@5.5.0) - '@babel/types': 7.24.7 - convert-source-map: 2.0.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -13200,30 +13118,19 @@ snapshots: dependencies: '@babel/types': 7.24.7 - '@babel/helper-module-imports@7.24.7(supports-color@5.5.0)': + '@babel/helper-module-imports@7.24.7(supports-color@8.1.1)': dependencies: - '@babel/traverse': 7.24.7(supports-color@5.5.0) + '@babel/traverse': 7.24.7(supports-color@8.1.1) '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7(supports-color@5.5.0))(supports-color@5.5.0)': + '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) - '@babel/helper-simple-access': 7.24.7(supports-color@5.5.0) - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-module-imports': 7.24.7(supports-color@5.5.0) - '@babel/helper-simple-access': 7.24.7(supports-color@5.5.0) + '@babel/helper-module-imports': 7.24.7(supports-color@8.1.1) + '@babel/helper-simple-access': 7.24.7(supports-color@8.1.1) '@babel/helper-split-export-declaration': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 transitivePeerDependencies: @@ -13231,9 +13138,9 @@ snapshots: '@babel/helper-plugin-utils@7.24.8': {} - '@babel/helper-simple-access@7.24.7(supports-color@5.5.0)': + '@babel/helper-simple-access@7.24.7(supports-color@8.1.1)': dependencies: - '@babel/traverse': 7.24.7(supports-color@5.5.0) + '@babel/traverse': 7.24.7(supports-color@8.1.1) '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -13264,168 +13171,84 @@ snapshots: dependencies: '@babel/types': 7.24.7 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.24.8 - optional: true - - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.7(supports-color@5.5.0))': + '@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.8 '@babel/runtime@7.24.7': @@ -13438,7 +13261,7 @@ snapshots: '@babel/parser': 7.24.7 '@babel/types': 7.24.7 - '@babel/traverse@7.24.7(supports-color@5.5.0)': + '@babel/traverse@7.24.7(supports-color@8.1.1)': dependencies: '@babel/code-frame': 7.24.7 '@babel/generator': 7.24.7 @@ -13448,7 +13271,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.7 '@babel/parser': 7.24.7 '@babel/types': 7.24.7 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -13501,9 +13324,9 @@ snapshots: style-mod: 4.1.0 w3c-keyname: 2.2.8 - '@contentlayer2/cli@0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)': + '@contentlayer2/cli@0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1)': dependencies: - '@contentlayer2/core': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0) + '@contentlayer2/core': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) '@contentlayer2/utils': 0.4.3 clipanion: 3.2.1(typanion@3.14.0) typanion: 3.14.0 @@ -13513,9 +13336,9 @@ snapshots: - markdown-wasm - supports-color - '@contentlayer2/cli@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)': + '@contentlayer2/cli@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1)': dependencies: - '@contentlayer2/core': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0) + '@contentlayer2/core': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) '@contentlayer2/utils': 0.5.3 clipanion: 3.2.1(typanion@3.14.0) typanion: 3.14.0 @@ -13525,34 +13348,34 @@ snapshots: - markdown-wasm - supports-color - '@contentlayer2/client@0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)': + '@contentlayer2/client@0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1)': dependencies: - '@contentlayer2/core': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0) + '@contentlayer2/core': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) transitivePeerDependencies: - '@effect-ts/otel-node' - esbuild - markdown-wasm - supports-color - '@contentlayer2/client@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)': + '@contentlayer2/client@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1)': dependencies: - '@contentlayer2/core': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0) + '@contentlayer2/core': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) transitivePeerDependencies: - '@effect-ts/otel-node' - esbuild - markdown-wasm - supports-color - '@contentlayer2/core@0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)': + '@contentlayer2/core@0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1)': dependencies: '@contentlayer2/utils': 0.4.3 camel-case: 4.1.2 comment-json: 4.2.3 gray-matter: 4.0.3 - mdx-bundler: 10.0.2(esbuild@0.20.2) + mdx-bundler: 10.0.2(esbuild@0.20.2)(supports-color@8.1.1) rehype-stringify: 10.0.0 - remark-frontmatter: 5.0.0 - remark-parse: 11.0.0 + remark-frontmatter: 5.0.0(supports-color@8.1.1) + remark-parse: 11.0.0(supports-color@8.1.1) remark-rehype: 11.1.1 source-map-support: 0.5.21 type-fest: 4.30.0 @@ -13564,16 +13387,16 @@ snapshots: - '@effect-ts/otel-node' - supports-color - '@contentlayer2/core@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)': + '@contentlayer2/core@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1)': dependencies: '@contentlayer2/utils': 0.5.3 camel-case: 4.1.2 comment-json: 4.2.3 gray-matter: 4.0.3 - mdx-bundler: 10.0.2(esbuild@0.20.2) + mdx-bundler: 10.0.2(esbuild@0.20.2)(supports-color@8.1.1) rehype-stringify: 10.0.0 - remark-frontmatter: 5.0.0 - remark-parse: 11.0.0 + remark-frontmatter: 5.0.0(supports-color@8.1.1) + remark-parse: 11.0.0(supports-color@8.1.1) remark-rehype: 11.1.1 source-map-support: 0.5.21 type-fest: 4.30.0 @@ -13585,9 +13408,9 @@ snapshots: - '@effect-ts/otel-node' - supports-color - '@contentlayer2/source-files@0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)': + '@contentlayer2/source-files@0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1)': dependencies: - '@contentlayer2/core': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0) + '@contentlayer2/core': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) '@contentlayer2/utils': 0.4.3 chokidar: 3.5.3 fast-glob: 3.3.2 @@ -13604,9 +13427,9 @@ snapshots: - markdown-wasm - supports-color - '@contentlayer2/source-files@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)': + '@contentlayer2/source-files@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1)': dependencies: - '@contentlayer2/core': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0) + '@contentlayer2/core': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) '@contentlayer2/utils': 0.5.3 chokidar: 3.5.3 fast-glob: 3.3.2 @@ -13623,10 +13446,10 @@ snapshots: - markdown-wasm - supports-color - '@contentlayer2/source-remote-files@0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)': + '@contentlayer2/source-remote-files@0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1)': dependencies: - '@contentlayer2/core': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0) - '@contentlayer2/source-files': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0) + '@contentlayer2/core': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + '@contentlayer2/source-files': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) '@contentlayer2/utils': 0.4.3 transitivePeerDependencies: - '@effect-ts/otel-node' @@ -13634,10 +13457,10 @@ snapshots: - markdown-wasm - supports-color - '@contentlayer2/source-remote-files@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)': + '@contentlayer2/source-remote-files@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1)': dependencies: - '@contentlayer2/core': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0) - '@contentlayer2/source-files': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0) + '@contentlayer2/core': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + '@contentlayer2/source-files': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) '@contentlayer2/utils': 0.5.3 transitivePeerDependencies: - '@effect-ts/otel-node' @@ -13739,10 +13562,10 @@ snapshots: '@emotion/unitless@0.8.0': {} - '@esbuild-plugins/node-resolve@0.2.2(esbuild@0.20.2)': + '@esbuild-plugins/node-resolve@0.2.2(esbuild@0.20.2)(supports-color@8.1.1)': dependencies: '@types/resolve': 1.20.6 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) esbuild: 0.20.2 escape-string-regexp: 4.0.0 resolve: 1.22.8 @@ -13887,22 +13710,17 @@ snapshots: '@esbuild/win32-x64@0.20.2': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0(supports-color@5.5.0))': + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0(supports-color@8.1.1))': dependencies: - eslint: 8.57.0(supports-color@5.5.0) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': - dependencies: - eslint: 8.57.0 + eslint: 8.57.0(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.9.1': {} - '@eslint/eslintrc@2.1.4(supports-color@5.5.0)': + '@eslint/eslintrc@2.1.4(supports-color@8.1.1)': dependencies: ajv: 6.12.6 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 ignore: 5.2.4 @@ -13942,9 +13760,9 @@ snapshots: '@gar/promisify@1.1.3': {} - '@graphiql/react@0.19.4(@codemirror/language@6.0.0)(@types/node@22.7.5)(@types/react-dom@18.3.0)(@types/react@18.3.3)(graphql-ws@5.14.1(graphql@16.8.1))(graphql@16.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@graphiql/react@0.19.4(@codemirror/language@6.0.0)(@types/node@20.12.11)(@types/react-dom@18.3.0)(@types/react@18.3.3)(graphql-ws@5.14.1(graphql@16.8.1))(graphql@16.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@graphiql/toolkit': 0.9.1(@types/node@22.7.5)(graphql-ws@5.14.1(graphql@16.8.1))(graphql@16.8.1) + '@graphiql/toolkit': 0.9.1(@types/node@20.12.11)(graphql-ws@5.14.1(graphql@16.8.1))(graphql@16.8.1) '@headlessui/react': 1.7.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-dropdown-menu': 2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -13969,11 +13787,11 @@ snapshots: - '@types/react-dom' - graphql-ws - '@graphiql/toolkit@0.9.1(@types/node@22.7.5)(graphql-ws@5.14.1(graphql@16.8.1))(graphql@16.8.1)': + '@graphiql/toolkit@0.9.1(@types/node@20.12.11)(graphql-ws@5.14.1(graphql@16.8.1))(graphql@16.8.1)': dependencies: '@n1ru4l/push-pull-async-iterable-iterator': 3.2.0 graphql: 16.8.1 - meros: 1.3.0(@types/node@22.7.5) + meros: 1.3.0(@types/node@20.12.11) optionalDependencies: graphql-ws: 5.14.1(graphql@16.8.1) transitivePeerDependencies: @@ -14031,10 +13849,10 @@ snapshots: dependencies: react-hook-form: 7.47.0(react@18.2.0) - '@humanwhocodes/config-array@0.11.14(supports-color@5.5.0)': + '@humanwhocodes/config-array@0.11.14(supports-color@8.1.1)': dependencies: '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -14095,35 +13913,35 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.7.5 + '@types/node': 20.12.11 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0': + '@jest/core@29.7.0(supports-color@8.1.1)': dependencies: '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 + '@jest/reporters': 29.7.0(supports-color@8.1.1) '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 + '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 - '@types/node': 22.7.5 + '@types/node': 20.12.11 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.7.5) + jest-config: 29.7.0(@types/node@20.12.11)(supports-color@8.1.1) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 + jest-resolve-dependencies: 29.7.0(supports-color@8.1.1) + jest-runner: 29.7.0(supports-color@8.1.1) + jest-runtime: 29.7.0(supports-color@8.1.1) + jest-snapshot: 29.7.0(supports-color@8.1.1) jest-util: 29.7.0 jest-validate: 29.7.0 jest-watcher: 29.7.0 @@ -14136,114 +13954,60 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(supports-color@5.5.0)': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0(supports-color@5.5.0) - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0(supports-color@5.5.0) - '@jest/types': 29.6.3 - '@types/node': 22.7.5 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.8.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.7.5)(supports-color@5.5.0) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0(supports-color@5.5.0) - jest-runner: 29.7.0(supports-color@5.5.0) - jest-runtime: 29.7.0(supports-color@5.5.0) - jest-snapshot: 29.7.0(supports-color@5.5.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - optional: true - '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.7.5 + '@types/node': 20.12.11 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 - '@jest/expect@29.7.0': + '@jest/expect@29.7.0(supports-color@8.1.1)': dependencies: expect: 29.7.0 - jest-snapshot: 29.7.0 + jest-snapshot: 29.7.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@jest/expect@29.7.0(supports-color@5.5.0)': - dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - optional: true - '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.7.5 + '@types/node': 20.12.11 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 - '@jest/globals@29.7.0': + '@jest/globals@29.7.0(supports-color@8.1.1)': dependencies: '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 + '@jest/expect': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 jest-mock: 29.7.0 transitivePeerDependencies: - supports-color - '@jest/globals@29.7.0(supports-color@5.5.0)': - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0(supports-color@5.5.0) - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color - optional: true - - '@jest/reporters@29.7.0': + '@jest/reporters@29.7.0(supports-color@8.1.1)': dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 29.7.0 '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 + '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.7.5 + '@types/node': 20.12.11 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 6.0.0 + istanbul-lib-instrument: 6.0.0(supports-color@8.1.1) istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1(supports-color@5.5.0) + istanbul-lib-source-maps: 4.0.1(supports-color@8.1.1) istanbul-reports: 3.1.6 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -14255,36 +14019,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/reporters@29.7.0(supports-color@5.5.0)': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0(supports-color@5.5.0) - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.7.5 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 6.0.0(supports-color@5.5.0) - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1(supports-color@5.5.0) - istanbul-reports: 3.1.6 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.1.0 - transitivePeerDependencies: - - supports-color - optional: true - '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 @@ -14309,12 +14043,12 @@ snapshots: jest-haste-map: 29.7.0 slash: 3.0.0 - '@jest/transform@29.7.0': + '@jest/transform@29.7.0(supports-color@8.1.1)': dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 6.1.1 + babel-plugin-istanbul: 6.1.1(supports-color@8.1.1) chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 @@ -14329,33 +14063,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/transform@29.7.0(supports-color@5.5.0)': - dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 6.1.1(supports-color@5.5.0) - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.8 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - optional: true - '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.2 - '@types/node': 22.7.5 + '@types/node': 20.12.11 '@types/yargs': 17.0.26 chalk: 4.1.2 @@ -14404,9 +14117,9 @@ snapshots: dependencies: tslib: 2.6.2 - '@kwsites/file-exists@1.1.1': + '@kwsites/file-exists@1.1.1(supports-color@8.1.1)': dependencies: - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -14422,10 +14135,10 @@ snapshots: dependencies: '@lezer/common': 1.1.0 - '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)(supports-color@5.5.0)': + '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)(supports-color@8.1.1)': dependencies: detect-libc: 2.0.3 - https-proxy-agent: 5.0.1(supports-color@5.5.0) + https-proxy-agent: 5.0.1(supports-color@8.1.1) make-dir: 3.1.0 node-fetch: 2.7.0(encoding@0.1.13) nopt: 5.0.0 @@ -14437,9 +14150,9 @@ snapshots: - encoding - supports-color - '@mdx-js/esbuild@3.0.1(esbuild@0.20.2)': + '@mdx-js/esbuild@3.0.1(esbuild@0.20.2)(supports-color@8.1.1)': dependencies: - '@mdx-js/mdx': 3.0.1 + '@mdx-js/mdx': 3.0.1(supports-color@8.1.1) '@types/unist': 3.0.3 esbuild: 0.20.2 vfile: 6.0.3 @@ -14447,24 +14160,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/loader@2.3.0(webpack@5.94.0(esbuild@0.20.2))': + '@mdx-js/loader@2.3.0(supports-color@8.1.1)(webpack@5.94.0(esbuild@0.20.2))': dependencies: - '@mdx-js/mdx': 2.3.0 + '@mdx-js/mdx': 2.3.0(supports-color@8.1.1) source-map: 0.7.4 webpack: 5.94.0(esbuild@0.20.2) transitivePeerDependencies: - supports-color optional: true - '@mdx-js/loader@2.3.0(webpack@5.94.0)': + '@mdx-js/loader@2.3.0(supports-color@8.1.1)(webpack@5.94.0)': dependencies: - '@mdx-js/mdx': 2.3.0 + '@mdx-js/mdx': 2.3.0(supports-color@8.1.1) source-map: 0.7.4 webpack: 5.94.0 transitivePeerDependencies: - supports-color - '@mdx-js/mdx@2.3.0': + '@mdx-js/mdx@2.3.0(supports-color@8.1.1)': dependencies: '@types/estree-jsx': 1.0.1 '@types/mdx': 2.0.10 @@ -14472,11 +14185,11 @@ snapshots: estree-util-is-identifier-name: 2.1.0 estree-util-to-js: 1.2.0 estree-walker: 3.0.3 - hast-util-to-estree: 2.3.3 + hast-util-to-estree: 2.3.3(supports-color@8.1.1) markdown-extensions: 1.1.1 periscopic: 3.1.0 - remark-mdx: 2.3.0 - remark-parse: 10.0.2(supports-color@5.5.0) + remark-mdx: 2.3.0(supports-color@8.1.1) + remark-parse: 10.0.2(supports-color@8.1.1) remark-rehype: 10.1.0 unified: 10.1.2 unist-util-position-from-estree: 1.1.2 @@ -14486,7 +14199,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/mdx@3.0.1': + '@mdx-js/mdx@3.0.1(supports-color@8.1.1)': dependencies: '@types/estree': 1.0.5 '@types/estree-jsx': 1.0.1 @@ -14498,12 +14211,12 @@ snapshots: estree-util-is-identifier-name: 3.0.0 estree-util-to-js: 2.0.0 estree-walker: 3.0.3 - hast-util-to-estree: 3.1.0 - hast-util-to-jsx-runtime: 2.3.0 + hast-util-to-estree: 3.1.0(supports-color@8.1.1) + hast-util-to-jsx-runtime: 2.3.0(supports-color@8.1.1) markdown-extensions: 2.0.0 periscopic: 3.1.0 - remark-mdx: 3.0.1 - remark-parse: 11.0.0 + remark-mdx: 3.0.1(supports-color@8.1.1) + remark-parse: 11.0.0(supports-color@8.1.1) remark-rehype: 11.1.1 source-map: 0.7.4 unified: 11.0.5 @@ -14591,51 +14304,51 @@ snapshots: - bufferutil - utf-8-validate - '@next/env@14.2.13': {} + '@next/env@14.2.15': {} '@next/eslint-plugin-next@14.2.4': dependencies: glob: 10.3.10 - '@next/mdx@14.2.3(@mdx-js/loader@2.3.0(webpack@5.94.0(esbuild@0.20.2)))(@mdx-js/react@2.3.0(react@18.2.0))': + '@next/mdx@14.2.3(@mdx-js/loader@2.3.0(supports-color@8.1.1)(webpack@5.94.0(esbuild@0.20.2)))(@mdx-js/react@2.3.0(react@18.2.0))': dependencies: source-map: 0.7.4 optionalDependencies: - '@mdx-js/loader': 2.3.0(webpack@5.94.0(esbuild@0.20.2)) + '@mdx-js/loader': 2.3.0(supports-color@8.1.1)(webpack@5.94.0(esbuild@0.20.2)) '@mdx-js/react': 2.3.0(react@18.2.0) - '@next/mdx@14.2.3(@mdx-js/loader@2.3.0(webpack@5.94.0))(@mdx-js/react@2.3.0(react@18.2.0))': + '@next/mdx@14.2.3(@mdx-js/loader@2.3.0(supports-color@8.1.1)(webpack@5.94.0))(@mdx-js/react@2.3.0(react@18.2.0))': dependencies: source-map: 0.7.4 optionalDependencies: - '@mdx-js/loader': 2.3.0(webpack@5.94.0) + '@mdx-js/loader': 2.3.0(supports-color@8.1.1)(webpack@5.94.0) '@mdx-js/react': 2.3.0(react@18.2.0) - '@next/swc-darwin-arm64@14.2.13': + '@next/swc-darwin-arm64@14.2.15': optional: true - '@next/swc-darwin-x64@14.2.13': + '@next/swc-darwin-x64@14.2.15': optional: true - '@next/swc-linux-arm64-gnu@14.2.13': + '@next/swc-linux-arm64-gnu@14.2.15': optional: true - '@next/swc-linux-arm64-musl@14.2.13': + '@next/swc-linux-arm64-musl@14.2.15': optional: true - '@next/swc-linux-x64-gnu@14.2.13': + '@next/swc-linux-x64-gnu@14.2.15': optional: true - '@next/swc-linux-x64-musl@14.2.13': + '@next/swc-linux-x64-musl@14.2.15': optional: true - '@next/swc-win32-arm64-msvc@14.2.13': + '@next/swc-win32-arm64-msvc@14.2.15': optional: true - '@next/swc-win32-ia32-msvc@14.2.13': + '@next/swc-win32-ia32-msvc@14.2.15': optional: true - '@next/swc-win32-x64-msvc@14.2.13': + '@next/swc-win32-x64-msvc@14.2.15': optional: true '@nodelib/fs.scandir@2.1.5': @@ -14650,13 +14363,13 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - '@npmcli/agent@2.2.2(supports-color@5.5.0)': + '@npmcli/agent@2.2.2(supports-color@8.1.1)': dependencies: - agent-base: 7.1.1(supports-color@5.5.0) - http-proxy-agent: 7.0.2(supports-color@5.5.0) - https-proxy-agent: 7.0.4(supports-color@5.5.0) + agent-base: 7.1.1(supports-color@8.1.1) + http-proxy-agent: 7.0.2(supports-color@8.1.1) + https-proxy-agent: 7.0.4(supports-color@8.1.1) lru-cache: 10.4.3 - socks-proxy-agent: 8.0.3(supports-color@5.5.0) + socks-proxy-agent: 8.0.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -14846,172 +14559,172 @@ snapshots: '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-amqplib@0.42.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-amqplib@0.42.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-connect@0.39.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-connect@0.39.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 '@types/connect': 3.4.36 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-dataloader@0.12.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-dataloader@0.12.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-express@0.42.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-express@0.42.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-fastify@0.39.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-fastify@0.39.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-fs@0.15.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-fs@0.15.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-generic-pool@0.39.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-generic-pool@0.39.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-graphql@0.43.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-graphql@0.43.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-hapi@0.41.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-hapi@0.41.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-http@0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-http@0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 semver: 7.6.3 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-ioredis@0.43.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-ioredis@0.43.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/redis-common': 0.36.2 '@opentelemetry/semantic-conventions': 1.27.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-kafkajs@0.3.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-kafkajs@0.3.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-koa@0.43.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-koa@0.43.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-lru-memoizer@0.40.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-lru-memoizer@0.40.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mongodb@0.47.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-mongodb@0.47.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/sdk-metrics': 1.26.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.27.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mongoose@0.42.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-mongoose@0.42.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mysql2@0.41.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-mysql2@0.41.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mysql@0.41.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-mysql@0.41.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 '@types/mysql': 2.15.26 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-nestjs-core@0.40.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-nestjs-core@0.40.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-pg@0.44.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-pg@0.44.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) '@types/pg': 8.6.1 @@ -15019,42 +14732,42 @@ snapshots: transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-redis-4@0.42.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-redis-4@0.42.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/redis-common': 0.36.2 '@opentelemetry/semantic-conventions': 1.27.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-undici@0.6.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation-undici@0.6.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/api-logs': 0.52.1 '@types/shimmer': 1.2.0 import-in-the-middle: 1.11.2 - require-in-the-middle: 7.4.0(supports-color@5.5.0) + require-in-the-middle: 7.4.0(supports-color@8.1.1) semver: 7.6.3 shimmer: 1.2.1 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0)': + '@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/api-logs': 0.53.0 '@types/shimmer': 1.2.0 import-in-the-middle: 1.11.2 - require-in-the-middle: 7.4.0(supports-color@5.5.0) + require-in-the-middle: 7.4.0(supports-color@8.1.1) semver: 7.6.3 shimmer: 1.2.1 transitivePeerDependencies: @@ -15173,10 +14886,10 @@ snapshots: '@popperjs/core@2.11.8': {} - '@prisma/instrumentation@5.19.1(supports-color@5.5.0)': + '@prisma/instrumentation@5.19.1(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/sdk-trace-base': 1.26.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color @@ -16058,24 +15771,6 @@ snapshots: '@react-dnd/shallowequal@4.0.2': {} - '@react-three/fiber@7.0.29(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(three@0.170.0)': - dependencies: - '@babel/runtime': 7.24.7 - '@types/react-reconciler': 0.26.7 - react: 18.2.0 - react-merge-refs: 1.1.0 - react-reconciler: 0.26.2(react@18.2.0) - react-three-fiber: 0.0.0-deprecated - react-use-measure: 2.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - resize-observer-polyfill: 1.5.1 - scheduler: 0.20.2 - three: 0.170.0 - use-asset: 1.0.4(react@18.2.0) - utility-types: 3.10.0 - zustand: 3.7.2(react@18.2.0) - optionalDependencies: - react-dom: 18.2.0(react@18.2.0) - '@reactflow/background@11.3.6(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@reactflow/core': 11.10.1(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -16161,7 +15856,7 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 - '@redocly/cli@1.6.0(encoding@0.1.13)': + '@redocly/cli@1.6.0(encoding@0.1.13)(supports-color@8.1.1)': dependencies: '@redocly/openapi-core': 1.6.0(encoding@0.1.13) chokidar: 3.5.3 @@ -16176,7 +15871,7 @@ snapshots: react-dom: 18.2.0(react@18.2.0) redoc: 2.1.3(core-js@3.35.0)(encoding@0.1.13)(mobx@6.11.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(styled-components@6.1.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) semver: 7.6.3 - simple-websocket: 9.1.0 + simple-websocket: 9.1.0(supports-color@8.1.1) styled-components: 6.1.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) yargs: 17.0.1 transitivePeerDependencies: @@ -16310,11 +16005,11 @@ snapshots: '@sentry/types': 8.34.0 '@sentry/utils': 8.34.0 - '@sentry/bundler-plugin-core@2.22.3(encoding@0.1.13)(supports-color@5.5.0)': + '@sentry/bundler-plugin-core@2.22.3(encoding@0.1.13)(supports-color@8.1.1)': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) + '@babel/core': 7.24.7(supports-color@8.1.1) '@sentry/babel-plugin-component-annotate': 2.22.3 - '@sentry/cli': 2.37.0(encoding@0.1.13)(supports-color@5.5.0) + '@sentry/cli': 2.37.0(encoding@0.1.13)(supports-color@8.1.1) dotenv: 16.3.1 find-up: 5.0.0 glob: 9.3.5 @@ -16345,9 +16040,9 @@ snapshots: '@sentry/cli-win32-x64@2.37.0': optional: true - '@sentry/cli@2.37.0(encoding@0.1.13)(supports-color@5.5.0)': + '@sentry/cli@2.37.0(encoding@0.1.13)(supports-color@8.1.1)': dependencies: - https-proxy-agent: 5.0.1(supports-color@5.5.0) + https-proxy-agent: 5.0.1(supports-color@8.1.1) node-fetch: 2.7.0(encoding@0.1.13) progress: 2.0.3 proxy-from-env: 1.1.0 @@ -16369,22 +16064,22 @@ snapshots: '@sentry/types': 8.34.0 '@sentry/utils': 8.34.0 - '@sentry/nextjs@8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react@18.2.0)(supports-color@5.5.0)(webpack@5.94.0)': + '@sentry/nextjs@8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react@18.2.0)(supports-color@8.1.1)(webpack@5.94.0)': dependencies: - '@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/semantic-conventions': 1.27.0 '@rollup/plugin-commonjs': 26.0.1(rollup@3.29.5) '@sentry-internal/browser-utils': 8.34.0 '@sentry/core': 8.34.0 - '@sentry/node': 8.34.0(supports-color@5.5.0) - '@sentry/opentelemetry': 8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0) + '@sentry/node': 8.34.0(supports-color@8.1.1) + '@sentry/opentelemetry': 8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0) '@sentry/react': 8.34.0(react@18.2.0) '@sentry/types': 8.34.0 '@sentry/utils': 8.34.0 '@sentry/vercel-edge': 8.34.0 - '@sentry/webpack-plugin': 2.22.3(encoding@0.1.13)(supports-color@5.5.0)(webpack@5.94.0) + '@sentry/webpack-plugin': 2.22.3(encoding@0.1.13)(supports-color@8.1.1)(webpack@5.94.0) chalk: 3.0.0 - next: 14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + next: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) resolve: 1.22.8 rollup: 3.29.5 stacktrace-parser: 0.1.10 @@ -16399,51 +16094,51 @@ snapshots: - react - supports-color - '@sentry/node@8.34.0(supports-color@5.5.0)': + '@sentry/node@8.34.0(supports-color@8.1.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 1.26.0(@opentelemetry/api@1.9.0) '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-amqplib': 0.42.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-connect': 0.39.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-dataloader': 0.12.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-express': 0.42.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-fastify': 0.39.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-fs': 0.15.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-generic-pool': 0.39.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-graphql': 0.43.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-hapi': 0.41.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-ioredis': 0.43.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-kafkajs': 0.3.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-koa': 0.43.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-lru-memoizer': 0.40.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-mongodb': 0.47.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-mongoose': 0.42.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-mysql': 0.41.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-mysql2': 0.41.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-nestjs-core': 0.40.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-pg': 0.44.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-redis-4': 0.42.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) - '@opentelemetry/instrumentation-undici': 0.6.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-amqplib': 0.42.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-connect': 0.39.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-dataloader': 0.12.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-express': 0.42.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-fastify': 0.39.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-fs': 0.15.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-generic-pool': 0.39.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-graphql': 0.43.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-hapi': 0.41.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-ioredis': 0.43.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-kafkajs': 0.3.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-koa': 0.43.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-lru-memoizer': 0.40.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-mongodb': 0.47.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-mongoose': 0.42.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-mysql': 0.41.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-mysql2': 0.41.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-nestjs-core': 0.40.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-pg': 0.44.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-redis-4': 0.42.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) + '@opentelemetry/instrumentation-undici': 0.6.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/resources': 1.26.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.26.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.27.0 - '@prisma/instrumentation': 5.19.1(supports-color@5.5.0) + '@prisma/instrumentation': 5.19.1(supports-color@8.1.1) '@sentry/core': 8.34.0 - '@sentry/opentelemetry': 8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0) + '@sentry/opentelemetry': 8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0) '@sentry/types': 8.34.0 '@sentry/utils': 8.34.0 import-in-the-middle: 1.11.2 transitivePeerDependencies: - supports-color - '@sentry/opentelemetry@8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0)': + '@sentry/opentelemetry@8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@5.5.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0)(supports-color@8.1.1) '@opentelemetry/sdk-trace-base': 1.26.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.27.0 '@sentry/core': 8.34.0 @@ -16471,9 +16166,9 @@ snapshots: '@sentry/types': 8.34.0 '@sentry/utils': 8.34.0 - '@sentry/webpack-plugin@2.22.3(encoding@0.1.13)(supports-color@5.5.0)(webpack@5.94.0)': + '@sentry/webpack-plugin@2.22.3(encoding@0.1.13)(supports-color@8.1.1)(webpack@5.94.0)': dependencies: - '@sentry/bundler-plugin-core': 2.22.3(encoding@0.1.13)(supports-color@5.5.0) + '@sentry/bundler-plugin-core': 2.22.3(encoding@0.1.13)(supports-color@8.1.1) unplugin: 1.0.1 uuid: 9.0.1 webpack: 5.94.0 @@ -16801,12 +16496,12 @@ snapshots: dependencies: whatwg-url: 5.0.0 - '@supabase/postgres-meta@0.64.6(encoding@0.1.13)(supports-color@5.5.0)': + '@supabase/postgres-meta@0.64.6(encoding@0.1.13)(supports-color@8.1.1)': dependencies: '@sinclair/typebox': 0.25.24 pg: 8.11.3 pg-format: 1.0.4 - pgsql-parser: 13.5.0(encoding@0.1.13)(supports-color@5.5.0) + pgsql-parser: 13.5.0(encoding@0.1.13)(supports-color@8.1.1) postgres-array: 3.0.2 prettier: 2.8.8 prettier-plugin-sql: 0.13.0(prettier@2.8.8) @@ -16832,10 +16527,10 @@ snapshots: '@supabase/shared-types@0.1.74': {} - '@supabase/sql-to-rest@0.1.6(encoding@0.1.13)(supports-color@5.5.0)': + '@supabase/sql-to-rest@0.1.6(encoding@0.1.13)(supports-color@8.1.1)': dependencies: '@babel/parser': 7.24.7 - libpg-query: 15.2.0(encoding@0.1.13)(supports-color@5.5.0) + libpg-query: 15.2.0(encoding@0.1.13)(supports-color@8.1.1) prettier: 3.2.5 transitivePeerDependencies: - encoding @@ -16970,7 +16665,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0(supports-color@5.5.0))(@types/jest@29.5.5)(jest@29.7.0(@types/node@22.7.5)(supports-color@5.5.0))(vitest@1.6.0(@types/node@22.7.5)(@vitest/ui@1.6.0)(jsdom@20.0.3(supports-color@5.5.0))(sass@1.72.0)(supports-color@5.5.0)(terser@5.32.0))': + '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0(supports-color@8.1.1))(@types/jest@29.5.5)(jest@29.7.0(@types/node@20.12.11)(supports-color@8.1.1))(vitest@1.6.0(@types/node@20.12.11)(@vitest/ui@1.6.0)(jsdom@20.0.3(supports-color@8.1.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0))': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.24.7 @@ -16981,12 +16676,12 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 optionalDependencies: - '@jest/globals': 29.7.0(supports-color@5.5.0) + '@jest/globals': 29.7.0(supports-color@8.1.1) '@types/jest': 29.5.5 - jest: 29.7.0(@types/node@22.7.5)(supports-color@5.5.0) - vitest: 1.6.0(@types/node@22.7.5)(@vitest/ui@1.6.0)(jsdom@20.0.3(supports-color@5.5.0))(sass@1.72.0)(supports-color@5.5.0)(terser@5.32.0) + jest: 29.7.0(@types/node@20.12.11)(supports-color@8.1.1) + vitest: 1.6.0(@types/node@20.12.11)(@vitest/ui@1.6.0)(jsdom@20.0.3(supports-color@8.1.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0) - '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.5)(jest@29.7.0(@types/node@22.7.5))(vitest@2.1.8(@types/node@22.7.5)(jsdom@20.0.3)(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(terser@5.32.0))': + '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0(supports-color@8.1.1))(@types/jest@29.5.5)(jest@29.7.0(@types/node@20.12.11)(supports-color@8.1.1))(vitest@2.1.8(@types/node@20.12.11)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0))': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.24.7 @@ -16997,10 +16692,10 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 optionalDependencies: - '@jest/globals': 29.7.0 + '@jest/globals': 29.7.0(supports-color@8.1.1) '@types/jest': 29.5.5 - jest: 29.7.0(@types/node@22.7.5) - vitest: 2.1.8(@types/node@22.7.5)(jsdom@20.0.3)(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(terser@5.32.0) + jest: 29.7.0(@types/node@20.12.11)(supports-color@8.1.1) + vitest: 2.1.8(@types/node@20.12.11)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0) '@testing-library/react@14.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: @@ -17115,7 +16810,7 @@ snapshots: '@types/connect@3.4.36': dependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 '@types/cookie@0.6.0': {} @@ -17283,7 +16978,7 @@ snapshots: '@types/graceful-fs@4.1.7': dependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 '@types/hast@2.3.6': dependencies: @@ -17319,7 +17014,7 @@ snapshots: '@types/jsdom@20.0.1': dependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 @@ -17333,7 +17028,7 @@ snapshots: '@types/jsonwebtoken@9.0.5': dependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 '@types/jsrsasign@10.5.12': {} @@ -17369,15 +17064,15 @@ snapshots: '@types/mute-stream@0.0.4': dependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 '@types/mysql@2.15.26': dependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 '@types/node-fetch@2.6.6': dependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 form-data: 4.0.0 '@types/node@10.17.60': {} @@ -17398,7 +17093,7 @@ snapshots: '@types/papaparse@5.3.9': dependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 '@types/parse-numeric-range@0.0.1': {} @@ -17408,7 +17103,7 @@ snapshots: '@types/pg@8.6.1': dependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 pg-protocol: 1.6.0 pg-types: 2.2.0 @@ -17420,7 +17115,7 @@ snapshots: '@types/randombytes@2.0.3': dependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 '@types/react-beautiful-dnd@13.1.5': dependencies: @@ -17452,10 +17147,6 @@ snapshots: dependencies: '@types/react': 18.3.3 - '@types/react-reconciler@0.26.7': - dependencies: - '@types/react': 18.3.3 - '@types/react-redux@7.1.27': dependencies: '@types/hoist-non-react-statics': 3.3.2 @@ -17546,7 +17237,7 @@ snapshots: '@types/ws@8.5.10': dependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 '@types/yargs-parser@21.0.1': {} @@ -17556,16 +17247,16 @@ snapshots: '@types/zxcvbn@4.4.2': {} - '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2)': + '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2)': dependencies: '@eslint-community/regexpp': 4.9.1 - '@typescript-eslint/parser': 6.19.1(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/parser': 6.19.1(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2) '@typescript-eslint/scope-manager': 6.19.1 - '@typescript-eslint/type-utils': 6.19.1(eslint@8.57.0)(typescript@5.5.2) - '@typescript-eslint/utils': 6.19.1(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/type-utils': 6.19.1(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2) + '@typescript-eslint/utils': 6.19.1(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2) '@typescript-eslint/visitor-keys': 6.19.1 - debug: 4.3.7(supports-color@5.5.0) - eslint: 8.57.0 + debug: 4.3.7(supports-color@8.1.1) + eslint: 8.57.0(supports-color@8.1.1) graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -17576,27 +17267,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.5.2)': + '@typescript-eslint/parser@6.19.1(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2)': dependencies: '@typescript-eslint/scope-manager': 6.19.1 '@typescript-eslint/types': 6.19.1 - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.5.2) + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.5.2) '@typescript-eslint/visitor-keys': 6.19.1 - debug: 4.3.7(supports-color@5.5.0) - eslint: 8.57.0 + debug: 4.3.7(supports-color@8.1.1) + eslint: 8.57.0(supports-color@8.1.1) optionalDependencies: typescript: 5.5.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2)': + '@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2)': dependencies: '@typescript-eslint/scope-manager': 7.2.0 '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.5.2) + '@typescript-eslint/typescript-estree': 7.2.0(supports-color@8.1.1)(typescript@5.5.2) '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.3.7(supports-color@5.5.0) - eslint: 8.57.0 + debug: 4.3.7(supports-color@8.1.1) + eslint: 8.57.0(supports-color@8.1.1) optionalDependencies: typescript: 5.5.2 transitivePeerDependencies: @@ -17612,12 +17303,12 @@ snapshots: '@typescript-eslint/types': 7.2.0 '@typescript-eslint/visitor-keys': 7.2.0 - '@typescript-eslint/type-utils@6.19.1(eslint@8.57.0)(typescript@5.5.2)': + '@typescript-eslint/type-utils@6.19.1(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2)': dependencies: - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.5.2) - '@typescript-eslint/utils': 6.19.1(eslint@8.57.0)(typescript@5.5.2) - debug: 4.3.7(supports-color@5.5.0) - eslint: 8.57.0 + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.5.2) + '@typescript-eslint/utils': 6.19.1(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2) + debug: 4.3.7(supports-color@8.1.1) + eslint: 8.57.0(supports-color@8.1.1) ts-api-utils: 1.0.3(typescript@5.5.2) optionalDependencies: typescript: 5.5.2 @@ -17628,11 +17319,11 @@ snapshots: '@typescript-eslint/types@7.2.0': {} - '@typescript-eslint/typescript-estree@6.19.1(typescript@5.5.2)': + '@typescript-eslint/typescript-estree@6.19.1(supports-color@8.1.1)(typescript@5.5.2)': dependencies: '@typescript-eslint/types': 6.19.1 '@typescript-eslint/visitor-keys': 6.19.1 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -17643,11 +17334,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@7.2.0(typescript@5.5.2)': + '@typescript-eslint/typescript-estree@7.2.0(supports-color@8.1.1)(typescript@5.5.2)': dependencies: '@typescript-eslint/types': 7.2.0 '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -17658,15 +17349,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.19.1(eslint@8.57.0)(typescript@5.5.2)': + '@typescript-eslint/utils@6.19.1(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0(supports-color@8.1.1)) '@types/json-schema': 7.0.13 '@types/semver': 7.5.3 '@typescript-eslint/scope-manager': 6.19.1 '@typescript-eslint/types': 6.19.1 - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.5.2) - eslint: 8.57.0 + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.5.2) + eslint: 8.57.0(supports-color@8.1.1) semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -17696,11 +17387,11 @@ snapshots: '@use-gesture/core': 10.3.1 react: 18.2.0 - '@vercel/flags@2.6.0(next@14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@vercel/flags@2.6.0(next@14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: jose: 5.2.1 optionalDependencies: - next: 14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + next: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -17710,14 +17401,14 @@ snapshots: satori: 0.10.9 yoga-wasm-web: 0.3.3 - '@vitejs/plugin-react@4.2.1(supports-color@5.5.0)(vite@5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0))': + '@vitejs/plugin-react@4.2.1(supports-color@8.1.1)(vite@5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0))': dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.7(supports-color@5.5.0)) + '@babel/core': 7.24.7(supports-color@8.1.1) + '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.7(supports-color@8.1.1)) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.7(supports-color@8.1.1)) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0) + vite: 5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -17743,15 +17434,6 @@ snapshots: msw: 2.4.11(typescript@5.5.2) vite: 5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0) - '@vitest/mocker@2.1.8(msw@2.4.11(typescript@5.5.2))(vite@5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0))': - dependencies: - '@vitest/spy': 2.1.8 - estree-walker: 3.0.3 - magic-string: 0.30.12 - optionalDependencies: - msw: 2.4.11(typescript@5.5.2) - vite: 5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0) - '@vitest/pretty-format@2.1.8': dependencies: tinyrainbow: 1.2.0 @@ -17796,7 +17478,7 @@ snapshots: pathe: 1.1.2 picocolors: 1.0.1 sirv: 2.0.4 - vitest: 1.6.0(@types/node@22.7.5)(@vitest/ui@1.6.0)(jsdom@20.0.3(supports-color@5.5.0))(sass@1.72.0)(supports-color@5.5.0)(terser@5.32.0) + vitest: 1.6.0(@types/node@20.12.11)(@vitest/ui@1.6.0)(jsdom@20.0.3(supports-color@8.1.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0) '@vitest/utils@1.6.0': dependencies: @@ -17989,15 +17671,15 @@ snapshots: acorn@8.11.3: {} - agent-base@6.0.2(supports-color@5.5.0): + agent-base@6.0.2(supports-color@8.1.1): dependencies: - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color - agent-base@7.1.1(supports-color@5.5.0): + agent-base@7.1.1(supports-color@8.1.1): dependencies: - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -18261,106 +17943,57 @@ snapshots: axobject-query@4.1.0: {} - babel-jest@29.7.0(@babel/core@7.24.7(supports-color@5.5.0))(supports-color@5.5.0): + babel-jest@29.7.0(@babel/core@7.24.7(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@jest/transform': 29.7.0(supports-color@5.5.0) - '@types/babel__core': 7.20.2 - babel-plugin-istanbul: 6.1.1(supports-color@5.5.0) - babel-preset-jest: 29.6.3(@babel/core@7.24.7(supports-color@5.5.0)) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - optional: true - - babel-jest@29.7.0(@babel/core@7.24.7): - dependencies: - '@babel/core': 7.24.7 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.2 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.24.7) + '@babel/core': 7.24.7(supports-color@8.1.1) + '@jest/transform': 29.7.0(supports-color@8.1.1) + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1(supports-color@8.1.1) + babel-preset-jest: 29.6.3(@babel/core@7.24.7(supports-color@8.1.1)) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - babel-plugin-istanbul@6.1.1: + babel-plugin-istanbul@6.1.1(supports-color@8.1.1): dependencies: '@babel/helper-plugin-utils': 7.24.8 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 + istanbul-lib-instrument: 5.2.1(supports-color@8.1.1) test-exclude: 6.0.0 transitivePeerDependencies: - supports-color - babel-plugin-istanbul@6.1.1(supports-color@5.5.0): - dependencies: - '@babel/helper-plugin-utils': 7.24.8 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1(supports-color@5.5.0) - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - optional: true - babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.24.7 '@babel/types': 7.24.7 - '@types/babel__core': 7.20.2 + '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.2 - babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.7(supports-color@5.5.0)): + babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.7(supports-color@8.1.1)): dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7(supports-color@5.5.0)) - optional: true + '@babel/core': 7.24.7(supports-color@8.1.1) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7(supports-color@8.1.1)) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.7(supports-color@8.1.1)) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7(supports-color@8.1.1)) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7(supports-color@8.1.1)) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7(supports-color@8.1.1)) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7(supports-color@8.1.1)) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7(supports-color@8.1.1)) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7(supports-color@8.1.1)) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7(supports-color@8.1.1)) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7(supports-color@8.1.1)) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7(supports-color@8.1.1)) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7(supports-color@8.1.1)) - babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.7): + babel-preset-jest@29.6.3(@babel/core@7.24.7(supports-color@8.1.1)): dependencies: - '@babel/core': 7.24.7 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7) - - babel-preset-jest@29.6.3(@babel/core@7.24.7(supports-color@5.5.0)): - dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) + '@babel/core': 7.24.7(supports-color@8.1.1) babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7(supports-color@5.5.0)) - optional: true - - babel-preset-jest@29.6.3(@babel/core@7.24.7): - dependencies: - '@babel/core': 7.24.7 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7(supports-color@8.1.1)) bail@2.0.2: {} @@ -18794,13 +18427,13 @@ snapshots: tslib: 2.6.2 upper-case: 2.0.2 - contentlayer2@0.4.6(esbuild@0.20.2)(markdown-wasm@1.2.0): + contentlayer2@0.4.6(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1): dependencies: - '@contentlayer2/cli': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0) - '@contentlayer2/client': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0) - '@contentlayer2/core': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0) - '@contentlayer2/source-files': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0) - '@contentlayer2/source-remote-files': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0) + '@contentlayer2/cli': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + '@contentlayer2/client': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + '@contentlayer2/core': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + '@contentlayer2/source-files': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + '@contentlayer2/source-remote-files': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) '@contentlayer2/utils': 0.4.3 transitivePeerDependencies: - '@effect-ts/otel-node' @@ -18808,13 +18441,13 @@ snapshots: - markdown-wasm - supports-color - contentlayer2@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0): + contentlayer2@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1): dependencies: - '@contentlayer2/cli': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0) - '@contentlayer2/client': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0) - '@contentlayer2/core': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0) - '@contentlayer2/source-files': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0) - '@contentlayer2/source-remote-files': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0) + '@contentlayer2/cli': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + '@contentlayer2/client': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + '@contentlayer2/core': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + '@contentlayer2/source-files': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + '@contentlayer2/source-remote-files': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) '@contentlayer2/utils': 0.5.3 transitivePeerDependencies: - '@effect-ts/otel-node' @@ -18852,13 +18485,13 @@ snapshots: core-util-is@1.0.3: {} - create-jest@29.7.0(@types/node@20.12.11): + create-jest@29.7.0(@types/node@20.12.11)(supports-color@8.1.1): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.12.11) + jest-config: 29.7.0(@types/node@20.12.11)(supports-color@8.1.1) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -18867,38 +18500,6 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@22.7.5): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.7.5) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - - create-jest@29.7.0(@types/node@22.7.5)(supports-color@5.5.0): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.7.5)(supports-color@5.5.0) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - cron-parser@4.9.0: dependencies: luxon: 3.5.0 @@ -19098,15 +18699,17 @@ snapshots: debounce@1.2.1: {} - debug@3.2.7: - dependencies: - ms: 2.1.3 - - debug@4.3.7(supports-color@5.5.0): + debug@3.2.7(supports-color@8.1.1): dependencies: ms: 2.1.3 optionalDependencies: - supports-color: 5.5.0 + supports-color: 8.1.1 + + debug@4.3.7(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 decimal.js-light@2.5.1: {} @@ -19557,48 +19160,48 @@ snapshots: eslint-barrel-file-utils-win32-ia32-msvc: 0.0.10 eslint-barrel-file-utils-win32-x64-msvc: 0.0.10 - eslint-config-next@14.2.4(eslint@8.57.0)(typescript@5.5.2): + eslint-config-next@14.2.4(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2): dependencies: '@next/eslint-plugin-next': 14.2.4 '@rushstack/eslint-patch': 1.10.3 - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.2) - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.34.2(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2) + eslint: 8.57.0(supports-color@8.1.1) + eslint-import-resolver-node: 0.3.9(supports-color@8.1.1) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-plugin-import@2.29.1)(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0(supports-color@8.1.1)) + eslint-plugin-react: 7.34.2(eslint@8.57.0(supports-color@8.1.1)) + eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0(supports-color@8.1.1)) optionalDependencies: typescript: 5.5.2 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color - eslint-config-prettier@9.1.0(eslint@8.57.0): + eslint-config-prettier@9.1.0(eslint@8.57.0(supports-color@8.1.1)): dependencies: - eslint: 8.57.0 + eslint: 8.57.0(supports-color@8.1.1) - eslint-config-turbo@2.0.4(eslint@8.57.0): + eslint-config-turbo@2.0.4(eslint@8.57.0(supports-color@8.1.1)): dependencies: - eslint: 8.57.0 - eslint-plugin-turbo: 2.0.4(eslint@8.57.0) + eslint: 8.57.0(supports-color@8.1.1) + eslint-plugin-turbo: 2.0.4(eslint@8.57.0(supports-color@8.1.1)) - eslint-import-resolver-node@0.3.9: + eslint-import-resolver-node@0.3.9(supports-color@8.1.1): dependencies: - debug: 3.2.7 + debug: 3.2.7(supports-color@8.1.1) is-core-module: 2.13.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-plugin-import@2.29.1)(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) enhanced-resolve: 5.17.1 - eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint: 8.57.0(supports-color@8.1.1) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-plugin-import@2.29.1)(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1))(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -19609,34 +19212,34 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-plugin-import@2.29.1)(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1))(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - debug: 3.2.7 + debug: 3.2.7(supports-color@8.1.1) optionalDependencies: - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.2) - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2) + eslint: 8.57.0(supports-color@8.1.1) + eslint-import-resolver-node: 0.3.9(supports-color@8.1.1) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-plugin-import@2.29.1)(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - eslint-plugin-barrel-files@2.0.7(eslint@8.57.0(supports-color@5.5.0)): + eslint-plugin-barrel-files@2.0.7(eslint@8.57.0(supports-color@8.1.1)): dependencies: - eslint: 8.57.0(supports-color@5.5.0) + eslint: 8.57.0(supports-color@8.1.1) eslint-barrel-file-utils: 0.0.10 requireindex: 1.2.0 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 - debug: 3.2.7 + debug: 3.2.7(supports-color@8.1.1) doctrine: 2.1.0 - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint: 8.57.0(supports-color@8.1.1) + eslint-import-resolver-node: 0.3.9(supports-color@8.1.1) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9(supports-color@8.1.1))(eslint-plugin-import@2.29.1)(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1))(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -19647,13 +19250,13 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.2) + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.5.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0(supports-color@8.1.1)): dependencies: '@babel/runtime': 7.24.7 aria-query: 5.3.0 @@ -19665,7 +19268,7 @@ snapshots: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.19 - eslint: 8.57.0 + eslint: 8.57.0(supports-color@8.1.1) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -19673,11 +19276,11 @@ snapshots: object.entries: 1.1.8 object.fromentries: 2.0.8 - eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): + eslint-plugin-react-hooks@4.6.2(eslint@8.57.0(supports-color@8.1.1)): dependencies: - eslint: 8.57.0 + eslint: 8.57.0(supports-color@8.1.1) - eslint-plugin-react@7.34.2(eslint@8.57.0): + eslint-plugin-react@7.34.2(eslint@8.57.0(supports-color@8.1.1)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -19686,7 +19289,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.0.19 - eslint: 8.57.0 + eslint: 8.57.0(supports-color@8.1.1) estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -19699,10 +19302,10 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.11 - eslint-plugin-turbo@2.0.4(eslint@8.57.0): + eslint-plugin-turbo@2.0.4(eslint@8.57.0(supports-color@8.1.1)): dependencies: dotenv: 16.0.3 - eslint: 8.57.0 + eslint: 8.57.0(supports-color@8.1.1) eslint-scope@5.1.1: dependencies: @@ -19716,63 +19319,20 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint@8.57.0: + eslint@8.57.0(supports-color@8.1.1): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0(supports-color@8.1.1)) '@eslint-community/regexpp': 4.9.1 - '@eslint/eslintrc': 2.1.4(supports-color@5.5.0) + '@eslint/eslintrc': 2.1.4(supports-color@8.1.1) '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14(supports-color@5.5.0) + '@humanwhocodes/config-array': 0.11.14(supports-color@8.1.1) '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.3.7(supports-color@5.5.0) - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.2.4 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - eslint@8.57.0(supports-color@5.5.0): - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0(supports-color@5.5.0)) - '@eslint-community/regexpp': 4.9.1 - '@eslint/eslintrc': 2.1.4(supports-color@5.5.0) - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14(supports-color@5.5.0) - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -20470,7 +20030,7 @@ snapshots: '@ungap/structured-clone': 1.2.0 unist-util-position: 5.0.0 - hast-util-to-estree@2.3.3: + hast-util-to-estree@2.3.3(supports-color@8.1.1): dependencies: '@types/estree': 1.0.5 '@types/estree-jsx': 1.0.1 @@ -20480,8 +20040,8 @@ snapshots: estree-util-attach-comments: 2.1.1 estree-util-is-identifier-name: 2.1.0 hast-util-whitespace: 2.0.1 - mdast-util-mdx-expression: 1.3.2 - mdast-util-mdxjs-esm: 1.3.1 + mdast-util-mdx-expression: 1.3.2(supports-color@8.1.1) + mdast-util-mdxjs-esm: 1.3.1(supports-color@8.1.1) property-information: 6.3.0 space-separated-tokens: 2.0.2 style-to-object: 0.4.2 @@ -20490,7 +20050,7 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-estree@3.1.0: + hast-util-to-estree@3.1.0(supports-color@8.1.1): dependencies: '@types/estree': 1.0.5 '@types/estree-jsx': 1.0.1 @@ -20500,9 +20060,9 @@ snapshots: estree-util-attach-comments: 3.0.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.2 - mdast-util-mdxjs-esm: 2.0.1 + mdast-util-mdx-expression: 2.0.0(supports-color@8.1.1) + mdast-util-mdx-jsx: 3.1.2(supports-color@8.1.1) + mdast-util-mdxjs-esm: 2.0.1(supports-color@8.1.1) property-information: 6.3.0 space-separated-tokens: 2.0.2 style-to-object: 0.4.2 @@ -20526,7 +20086,7 @@ snapshots: stringify-entities: 4.0.3 zwitch: 2.0.4 - hast-util-to-jsx-runtime@2.3.0: + hast-util-to-jsx-runtime@2.3.0(supports-color@8.1.1): dependencies: '@types/estree': 1.0.5 '@types/hast': 3.0.4 @@ -20535,9 +20095,9 @@ snapshots: devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.2 - mdast-util-mdxjs-esm: 2.0.1 + mdast-util-mdx-expression: 2.0.0(supports-color@8.1.1) + mdast-util-mdx-jsx: 3.1.2(supports-color@8.1.1) + mdast-util-mdxjs-esm: 2.0.1(supports-color@8.1.1) property-information: 6.3.0 space-separated-tokens: 2.0.2 style-to-object: 1.0.6 @@ -20635,42 +20195,42 @@ snapshots: http-cache-semantics@4.1.1: {} - http-proxy-agent@4.0.1(supports-color@5.5.0): + http-proxy-agent@4.0.1(supports-color@8.1.1): dependencies: '@tootallnate/once': 1.1.2 - agent-base: 6.0.2(supports-color@5.5.0) - debug: 4.3.7(supports-color@5.5.0) + agent-base: 6.0.2(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color - http-proxy-agent@5.0.0(supports-color@5.5.0): + http-proxy-agent@5.0.0(supports-color@8.1.1): dependencies: '@tootallnate/once': 2.0.0 - agent-base: 6.0.2(supports-color@5.5.0) - debug: 4.3.7(supports-color@5.5.0) + agent-base: 6.0.2(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color - http-proxy-agent@7.0.2(supports-color@5.5.0): + http-proxy-agent@7.0.2(supports-color@8.1.1): dependencies: - agent-base: 7.1.1(supports-color@5.5.0) - debug: 4.3.7(supports-color@5.5.0) + agent-base: 7.1.1(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color http2-client@1.3.5: {} - https-proxy-agent@5.0.1(supports-color@5.5.0): + https-proxy-agent@5.0.1(supports-color@8.1.1): dependencies: - agent-base: 6.0.2(supports-color@5.5.0) - debug: 4.3.7(supports-color@5.5.0) + agent-base: 6.0.2(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color - https-proxy-agent@7.0.4(supports-color@5.5.0): + https-proxy-agent@7.0.4(supports-color@8.1.1): dependencies: - agent-base: 7.1.1(supports-color@5.5.0) - debug: 4.3.7(supports-color@5.5.0) + agent-base: 7.1.1(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -20966,9 +20526,9 @@ snapshots: istanbul-lib-coverage@3.2.0: {} - istanbul-lib-instrument@5.2.1: + istanbul-lib-instrument@5.2.1(supports-color@8.1.1): dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/parser': 7.24.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -20976,20 +20536,9 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-lib-instrument@5.2.1(supports-color@5.5.0): + istanbul-lib-instrument@6.0.0(supports-color@8.1.1): dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/parser': 7.24.7 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - optional: true - - istanbul-lib-instrument@6.0.0: - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/parser': 7.24.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -20997,26 +20546,15 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-lib-instrument@6.0.0(supports-color@5.5.0): - dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/parser': 7.24.7 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - optional: true - istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.0 make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@4.0.1(supports-color@5.5.0): + istanbul-lib-source-maps@4.0.1(supports-color@8.1.1): dependencies: - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -21073,13 +20611,13 @@ snapshots: jest-util: 29.7.0 p-limit: 3.1.0 - jest-circus@29.7.0: + jest-circus@29.7.0(supports-color@8.1.1): dependencies: '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 + '@jest/expect': 29.7.0(supports-color@8.1.1) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.7.5 + '@types/node': 20.12.11 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -21087,8 +20625,8 @@ snapshots: jest-each: 29.7.0 jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 + jest-runtime: 29.7.0(supports-color@8.1.1) + jest-snapshot: 29.7.0(supports-color@8.1.1) jest-util: 29.7.0 p-limit: 3.1.0 pretty-format: 29.7.0 @@ -21099,43 +20637,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-circus@29.7.0(supports-color@5.5.0): + jest-cli@29.7.0(@types/node@20.12.11)(supports-color@8.1.1): dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0(supports-color@5.5.0) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.7.5 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.5.1 - is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0(supports-color@5.5.0) - jest-snapshot: 29.7.0(supports-color@5.5.0) - jest-util: 29.7.0 - p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.0.4 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - optional: true - - jest-cli@29.7.0(@types/node@20.12.11): - dependencies: - '@jest/core': 29.7.0 + '@jest/core': 29.7.0(supports-color@8.1.1) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.12.11) + create-jest: 29.7.0(@types/node@20.12.11)(supports-color@8.1.1) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.12.11) + jest-config: 29.7.0(@types/node@20.12.11)(supports-color@8.1.1) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -21145,63 +20656,23 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.7.5): + jest-config@29.7.0(@types/node@20.12.11)(supports-color@8.1.1): dependencies: - '@jest/core': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.7.5) - exit: 0.1.2 - import-local: 3.1.0 - jest-config: 29.7.0(@types/node@22.7.5) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - - jest-cli@29.7.0(@types/node@22.7.5)(supports-color@5.5.0): - dependencies: - '@jest/core': 29.7.0(supports-color@5.5.0) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.7.5)(supports-color@5.5.0) - exit: 0.1.2 - import-local: 3.1.0 - jest-config: 29.7.0(@types/node@22.7.5)(supports-color@5.5.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - - jest-config@29.7.0(@types/node@20.12.11): - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.7) + babel-jest: 29.7.0(@babel/core@7.24.7(supports-color@8.1.1))(supports-color@8.1.1) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-circus: 29.7.0 + jest-circus: 29.7.0(supports-color@8.1.1) jest-environment-node: 29.7.0 jest-get-type: 29.6.3 jest-regex-util: 29.6.3 jest-resolve: 29.7.0 - jest-runner: 29.7.0 + jest-runner: 29.7.0(supports-color@8.1.1) jest-util: 29.7.0 jest-validate: 29.7.0 micromatch: 4.0.8 @@ -21215,67 +20686,6 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@22.7.5): - dependencies: - '@babel/core': 7.24.7 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.7) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.7.5 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@22.7.5)(supports-color@5.5.0): - dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.7(supports-color@5.5.0))(supports-color@5.5.0) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(supports-color@5.5.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0(supports-color@5.5.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.7.5 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - optional: true - jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -21295,16 +20705,16 @@ snapshots: jest-util: 29.7.0 pretty-format: 29.7.0 - jest-environment-jsdom@29.7.0: + jest-environment-jsdom@29.7.0(supports-color@8.1.1): dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 22.7.5 + '@types/node': 20.12.11 jest-mock: 29.7.0 jest-util: 29.7.0 - jsdom: 20.0.3(supports-color@5.5.0) + jsdom: 20.0.3(supports-color@8.1.1) transitivePeerDependencies: - bufferutil - supports-color @@ -21315,7 +20725,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.7.5 + '@types/node': 20.12.11 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -21325,7 +20735,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.7 - '@types/node': 22.7.5 + '@types/node': 20.12.11 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -21364,7 +20774,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.7.5 + '@types/node': 20.12.11 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -21373,21 +20783,13 @@ snapshots: jest-regex-util@29.6.3: {} - jest-resolve-dependencies@29.7.0: + jest-resolve-dependencies@29.7.0(supports-color@8.1.1): dependencies: jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 + jest-snapshot: 29.7.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - jest-resolve-dependencies@29.7.0(supports-color@5.5.0): - dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - optional: true - jest-resolve@29.7.0: dependencies: chalk: 4.1.2 @@ -21400,14 +20802,14 @@ snapshots: resolve.exports: 2.0.2 slash: 3.0.0 - jest-runner@29.7.0: + jest-runner@29.7.0(supports-color@8.1.1): dependencies: '@jest/console': 29.7.0 '@jest/environment': 29.7.0 '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 + '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 - '@types/node': 22.7.5 + '@types/node': 20.12.11 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -21417,7 +20819,7 @@ snapshots: jest-leak-detector: 29.7.0 jest-message-util: 29.7.0 jest-resolve: 29.7.0 - jest-runtime: 29.7.0 + jest-runtime: 29.7.0(supports-color@8.1.1) jest-util: 29.7.0 jest-watcher: 29.7.0 jest-worker: 29.7.0 @@ -21426,43 +20828,16 @@ snapshots: transitivePeerDependencies: - supports-color - jest-runner@29.7.0(supports-color@5.5.0): - dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0(supports-color@5.5.0) - '@jest/types': 29.6.3 - '@types/node': 22.7.5 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0(supports-color@5.5.0) - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - optional: true - - jest-runtime@29.7.0: + jest-runtime@29.7.0(supports-color@8.1.1): dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 + '@jest/globals': 29.7.0(supports-color@8.1.1) '@jest/source-map': 29.6.3 '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 + '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 - '@types/node': 22.7.5 + '@types/node': 20.12.11 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -21473,52 +20848,24 @@ snapshots: jest-mock: 29.7.0 jest-regex-util: 29.6.3 jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 + jest-snapshot: 29.7.0(supports-color@8.1.1) jest-util: 29.7.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - jest-runtime@29.7.0(supports-color@5.5.0): + jest-snapshot@29.7.0(supports-color@8.1.1): dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0(supports-color@5.5.0) - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0(supports-color@5.5.0) - '@jest/types': 29.6.3 - '@types/node': 22.7.5 - chalk: 4.1.2 - cjs-module-lexer: 1.2.3 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0(supports-color@5.5.0) - jest-util: 29.7.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - optional: true - - jest-snapshot@29.7.0: - dependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@babel/generator': 7.24.7 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7(supports-color@8.1.1)) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7(supports-color@8.1.1)) '@babel/types': 7.24.7 '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 + '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7(supports-color@8.1.1)) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -21533,36 +20880,10 @@ snapshots: transitivePeerDependencies: - supports-color - jest-snapshot@29.7.0(supports-color@5.5.0): - dependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - '@babel/generator': 7.24.7 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7(supports-color@5.5.0)) - '@babel/types': 7.24.7 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0(supports-color@5.5.0) - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7(supports-color@5.5.0)) - chalk: 4.1.2 - expect: 29.7.0 - graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - optional: true - jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.7.5 + '@types/node': 20.12.11 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -21581,7 +20902,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.7.5 + '@types/node': 20.12.11 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -21596,49 +20917,23 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.12.11): + jest@29.7.0(@types/node@20.12.11)(supports-color@8.1.1): dependencies: - '@jest/core': 29.7.0 + '@jest/core': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.12.11) + jest-cli: 29.7.0(@types/node@20.12.11)(supports-color@8.1.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - jest@29.7.0(@types/node@22.7.5): - dependencies: - '@jest/core': 29.7.0 - '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@22.7.5) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - - jest@29.7.0(@types/node@22.7.5)(supports-color@5.5.0): - dependencies: - '@jest/core': 29.7.0(supports-color@5.5.0) - '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@22.7.5)(supports-color@5.5.0) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - jiti@1.20.0: {} jose@5.2.1: {} @@ -21685,7 +20980,7 @@ snapshots: jsbn@1.1.0: {} - jsdom@20.0.3(supports-color@5.5.0): + jsdom@20.0.3(supports-color@8.1.1): dependencies: abab: 2.0.6 acorn: 8.11.3 @@ -21698,8 +20993,8 @@ snapshots: escodegen: 2.1.0 form-data: 4.0.0 html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0(supports-color@5.5.0) - https-proxy-agent: 5.0.1(supports-color@5.5.0) + http-proxy-agent: 5.0.0(supports-color@8.1.1) + https-proxy-agent: 5.0.1(supports-color@8.1.1) is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.7 parse5: 7.1.2 @@ -21832,23 +21127,23 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - libpg-query@13.3.1(encoding@0.1.13)(supports-color@5.5.0): + libpg-query@13.3.1(encoding@0.1.13)(supports-color@8.1.1): dependencies: - '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13)(supports-color@5.5.0) + '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13)(supports-color@8.1.1) node-addon-api: 1.7.2 - node-gyp: 8.4.1(supports-color@5.5.0) + node-gyp: 8.4.1(supports-color@8.1.1) transitivePeerDependencies: - bluebird - encoding - supports-color - libpg-query@15.2.0(encoding@0.1.13)(supports-color@5.5.0): + libpg-query@15.2.0(encoding@0.1.13)(supports-color@8.1.1): dependencies: '@emnapi/runtime': 0.43.1 - '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13)(supports-color@5.5.0) + '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13)(supports-color@8.1.1) '@pgsql/types': 15.0.2 node-addon-api: 7.1.0 - node-gyp: 10.1.0(supports-color@5.5.0) + node-gyp: 10.1.0(supports-color@8.1.1) transitivePeerDependencies: - encoding - supports-color @@ -21888,12 +21183,6 @@ snapshots: emojis-list: 3.0.0 json5: 1.0.2 - loader-utils@2.0.4: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 - local-pkg@0.5.0: dependencies: mlly: 1.7.1 @@ -22037,9 +21326,9 @@ snapshots: make-error@1.3.6: {} - make-fetch-happen@13.0.1(supports-color@5.5.0): + make-fetch-happen@13.0.1(supports-color@8.1.1): dependencies: - '@npmcli/agent': 2.2.2(supports-color@5.5.0) + '@npmcli/agent': 2.2.2(supports-color@8.1.1) cacache: 18.0.3 http-cache-semantics: 4.1.1 is-lambda: 1.0.1 @@ -22054,13 +21343,13 @@ snapshots: transitivePeerDependencies: - supports-color - make-fetch-happen@9.1.0(supports-color@5.5.0): + make-fetch-happen@9.1.0(supports-color@8.1.1): dependencies: agentkeepalive: 4.5.0 cacache: 15.3.0 http-cache-semantics: 4.1.1 - http-proxy-agent: 4.0.1(supports-color@5.5.0) - https-proxy-agent: 5.0.1(supports-color@5.5.0) + http-proxy-agent: 4.0.1(supports-color@8.1.1) + https-proxy-agent: 5.0.1(supports-color@8.1.1) is-lambda: 1.0.1 lru-cache: 6.0.0 minipass: 3.3.6 @@ -22070,7 +21359,7 @@ snapshots: minipass-pipeline: 1.2.4 negotiator: 0.6.3 promise-retry: 2.0.1 - socks-proxy-agent: 6.2.1(supports-color@5.5.0) + socks-proxy-agent: 6.2.1(supports-color@8.1.1) ssri: 8.0.1 transitivePeerDependencies: - bluebird @@ -22143,13 +21432,13 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - mdast-util-from-markdown@1.3.1(supports-color@5.5.0): + mdast-util-from-markdown@1.3.1(supports-color@8.1.1): dependencies: '@types/mdast': 3.0.15 '@types/unist': 2.0.8 decode-named-character-reference: 1.0.2 mdast-util-to-string: 3.2.0 - micromark: 3.2.0(supports-color@5.5.0) + micromark: 3.2.0(supports-color@8.1.1) micromark-util-decode-numeric-character-reference: 1.1.0 micromark-util-decode-string: 1.1.0 micromark-util-normalize-identifier: 1.1.0 @@ -22160,14 +21449,14 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-from-markdown@2.0.0: + mdast-util-from-markdown@2.0.0(supports-color@8.1.1): dependencies: '@types/mdast': 4.0.1 '@types/unist': 3.0.3 decode-named-character-reference: 1.0.2 devlop: 1.1.0 mdast-util-to-string: 4.0.0 - micromark: 4.0.0 + micromark: 4.0.0(supports-color@8.1.1) micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-decode-string: 2.0.0 micromark-util-normalize-identifier: 2.0.0 @@ -22177,12 +21466,12 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-frontmatter@2.0.1: + mdast-util-frontmatter@2.0.1(supports-color@8.1.1): dependencies: '@types/mdast': 4.0.1 devlop: 1.1.0 escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.0(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 micromark-extension-frontmatter: 2.0.0 transitivePeerDependencies: @@ -22209,11 +21498,11 @@ snapshots: mdast-util-to-markdown: 1.5.0 micromark-util-normalize-identifier: 1.1.0 - mdast-util-gfm-footnote@2.0.0: + mdast-util-gfm-footnote@2.0.0(supports-color@8.1.1): dependencies: '@types/mdast': 4.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.0(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: @@ -22224,29 +21513,29 @@ snapshots: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 - mdast-util-gfm-strikethrough@2.0.0: + mdast-util-gfm-strikethrough@2.0.0(supports-color@8.1.1): dependencies: '@types/mdast': 4.0.1 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.0(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - mdast-util-gfm-table@1.0.7(supports-color@5.5.0): + mdast-util-gfm-table@1.0.7(supports-color@8.1.1): dependencies: '@types/mdast': 3.0.15 markdown-table: 3.0.3 - mdast-util-from-markdown: 1.3.1(supports-color@5.5.0) + mdast-util-from-markdown: 1.3.1(supports-color@8.1.1) mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color - mdast-util-gfm-table@2.0.0: + mdast-util-gfm-table@2.0.0(supports-color@8.1.1): dependencies: '@types/mdast': 4.0.1 devlop: 1.1.0 markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.0(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -22256,80 +21545,80 @@ snapshots: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 - mdast-util-gfm-task-list-item@2.0.0: + mdast-util-gfm-task-list-item@2.0.0(supports-color@8.1.1): dependencies: '@types/mdast': 4.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.0(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - mdast-util-gfm@2.0.2(supports-color@5.5.0): + mdast-util-gfm@2.0.2(supports-color@8.1.1): dependencies: - mdast-util-from-markdown: 1.3.1(supports-color@5.5.0) + mdast-util-from-markdown: 1.3.1(supports-color@8.1.1) mdast-util-gfm-autolink-literal: 1.0.3 mdast-util-gfm-footnote: 1.0.2 mdast-util-gfm-strikethrough: 1.0.3 - mdast-util-gfm-table: 1.0.7(supports-color@5.5.0) + mdast-util-gfm-table: 1.0.7(supports-color@8.1.1) mdast-util-gfm-task-list-item: 1.0.2 mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color - mdast-util-gfm@3.0.0: + mdast-util-gfm@3.0.0(supports-color@8.1.1): dependencies: - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.0(supports-color@8.1.1) mdast-util-gfm-autolink-literal: 2.0.0 - mdast-util-gfm-footnote: 2.0.0 - mdast-util-gfm-strikethrough: 2.0.0 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-gfm-footnote: 2.0.0(supports-color@8.1.1) + mdast-util-gfm-strikethrough: 2.0.0(supports-color@8.1.1) + mdast-util-gfm-table: 2.0.0(supports-color@8.1.1) + mdast-util-gfm-task-list-item: 2.0.0(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - mdast-util-math@3.0.0: + mdast-util-math@3.0.0(supports-color@8.1.1): dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.1 devlop: 1.1.0 longest-streak: 3.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.0(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 unist-util-remove-position: 5.0.0 transitivePeerDependencies: - supports-color - mdast-util-mdx-expression@1.3.2: + mdast-util-mdx-expression@1.3.2(supports-color@8.1.1): dependencies: '@types/estree-jsx': 1.0.1 '@types/hast': 2.3.6 '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1(supports-color@5.5.0) + mdast-util-from-markdown: 1.3.1(supports-color@8.1.1) mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color - mdast-util-mdx-expression@2.0.0: + mdast-util-mdx-expression@2.0.0(supports-color@8.1.1): dependencies: '@types/estree-jsx': 1.0.1 '@types/hast': 3.0.4 '@types/mdast': 4.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.0(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - mdast-util-mdx-jsx@2.1.4: + mdast-util-mdx-jsx@2.1.4(supports-color@8.1.1): dependencies: '@types/estree-jsx': 1.0.1 '@types/hast': 2.3.6 '@types/mdast': 3.0.15 '@types/unist': 2.0.8 ccount: 2.0.1 - mdast-util-from-markdown: 1.3.1(supports-color@5.5.0) + mdast-util-from-markdown: 1.3.1(supports-color@8.1.1) mdast-util-to-markdown: 1.5.0 parse-entities: 4.0.1 stringify-entities: 4.0.3 @@ -22339,7 +21628,7 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-mdx-jsx@3.1.2: + mdast-util-mdx-jsx@3.1.2(supports-color@8.1.1): dependencies: '@types/estree-jsx': 1.0.1 '@types/hast': 3.0.4 @@ -22347,7 +21636,7 @@ snapshots: '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.0(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 parse-entities: 4.0.1 stringify-entities: 4.0.3 @@ -22357,43 +21646,43 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-mdx@2.0.1: + mdast-util-mdx@2.0.1(supports-color@8.1.1): dependencies: - mdast-util-from-markdown: 1.3.1(supports-color@5.5.0) - mdast-util-mdx-expression: 1.3.2 - mdast-util-mdx-jsx: 2.1.4 - mdast-util-mdxjs-esm: 1.3.1 + mdast-util-from-markdown: 1.3.1(supports-color@8.1.1) + mdast-util-mdx-expression: 1.3.2(supports-color@8.1.1) + mdast-util-mdx-jsx: 2.1.4(supports-color@8.1.1) + mdast-util-mdxjs-esm: 1.3.1(supports-color@8.1.1) mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color - mdast-util-mdx@3.0.0: + mdast-util-mdx@3.0.0(supports-color@8.1.1): dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.2 - mdast-util-mdxjs-esm: 2.0.1 + mdast-util-from-markdown: 2.0.0(supports-color@8.1.1) + mdast-util-mdx-expression: 2.0.0(supports-color@8.1.1) + mdast-util-mdx-jsx: 3.1.2(supports-color@8.1.1) + mdast-util-mdxjs-esm: 2.0.1(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - mdast-util-mdxjs-esm@1.3.1: + mdast-util-mdxjs-esm@1.3.1(supports-color@8.1.1): dependencies: '@types/estree-jsx': 1.0.1 '@types/hast': 2.3.6 '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1(supports-color@5.5.0) + mdast-util-from-markdown: 1.3.1(supports-color@8.1.1) mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color - mdast-util-mdxjs-esm@2.0.1: + mdast-util-mdxjs-esm@2.0.1(supports-color@8.1.1): dependencies: '@types/estree-jsx': 1.0.1 '@types/hast': 3.0.4 '@types/mdast': 4.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.0(supports-color@8.1.1) mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -22481,15 +21770,15 @@ snapshots: mdurl@1.0.1: {} - mdx-bundler@10.0.2(esbuild@0.20.2): + mdx-bundler@10.0.2(esbuild@0.20.2)(supports-color@8.1.1): dependencies: '@babel/runtime': 7.24.7 - '@esbuild-plugins/node-resolve': 0.2.2(esbuild@0.20.2) + '@esbuild-plugins/node-resolve': 0.2.2(esbuild@0.20.2)(supports-color@8.1.1) '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@mdx-js/esbuild': 3.0.1(esbuild@0.20.2) + '@mdx-js/esbuild': 3.0.1(esbuild@0.20.2)(supports-color@8.1.1) esbuild: 0.20.2 gray-matter: 4.0.3 - remark-frontmatter: 5.0.0 + remark-frontmatter: 5.0.0(supports-color@8.1.1) remark-mdx-frontmatter: 4.0.0 uuid: 9.0.1 vfile: 6.0.3 @@ -22511,9 +21800,9 @@ snapshots: merge2@1.4.1: {} - meros@1.3.0(@types/node@22.7.5): + meros@1.3.0(@types/node@20.12.11): optionalDependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 meshoptimizer@0.18.1: {} @@ -23018,10 +22307,10 @@ snapshots: micromark-util-types@2.0.0: {} - micromark@3.2.0(supports-color@5.5.0): + micromark@3.2.0(supports-color@8.1.1): dependencies: '@types/debug': 4.1.9 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -23040,10 +22329,10 @@ snapshots: transitivePeerDependencies: - supports-color - micromark@4.0.0: + micromark@4.0.0(supports-color@8.1.1): dependencies: '@types/debug': 4.1.9 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -23273,12 +22562,12 @@ snapshots: neo-async@2.6.2: {} - next-contentlayer2@0.4.6(contentlayer2@0.4.6(esbuild@0.20.2)(markdown-wasm@1.2.0))(esbuild@0.20.2)(markdown-wasm@1.2.0)(next@14.2.13(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next-contentlayer2@0.4.6(contentlayer2@0.4.6(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.20.2)(markdown-wasm@1.2.0)(next@14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(supports-color@8.1.1): dependencies: - '@contentlayer2/core': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0) + '@contentlayer2/core': 0.4.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) '@contentlayer2/utils': 0.4.3 - contentlayer2: 0.4.6(esbuild@0.20.2)(markdown-wasm@1.2.0) - next: 14.2.13(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + contentlayer2: 0.4.6(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + next: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -23287,12 +22576,12 @@ snapshots: - markdown-wasm - supports-color - next-contentlayer2@0.5.3(contentlayer2@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0))(esbuild@0.20.2)(markdown-wasm@1.2.0)(next@14.2.13(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next-contentlayer2@0.5.3(contentlayer2@0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1))(esbuild@0.20.2)(markdown-wasm@1.2.0)(next@14.2.15(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(supports-color@8.1.1): dependencies: - '@contentlayer2/core': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0) + '@contentlayer2/core': 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) '@contentlayer2/utils': 0.5.3 - contentlayer2: 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0) - next: 14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + contentlayer2: 0.5.3(esbuild@0.20.2)(markdown-wasm@1.2.0)(supports-color@8.1.1) + next: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -23301,9 +22590,9 @@ snapshots: - markdown-wasm - supports-color - next-mdx-remote@4.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next-mdx-remote@4.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(supports-color@8.1.1): dependencies: - '@mdx-js/mdx': 2.3.0 + '@mdx-js/mdx': 2.3.0(supports-color@8.1.1) '@mdx-js/react': 2.3.0(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -23316,14 +22605,14 @@ snapshots: dependencies: js-yaml-loader: 1.2.2 - next-router-mock@0.9.13(next@14.2.13(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react@18.2.0): + next-router-mock@0.9.13(next@14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react@18.2.0): dependencies: - next: 14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + next: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) react: 18.2.0 - next-seo@6.5.0(next@14.2.13(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next-seo@6.5.0(next@14.2.15(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - next: 14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + next: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -23332,9 +22621,9 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - next@14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0): + next@14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0): dependencies: - '@next/env': 14.2.13 + '@next/env': 14.2.15 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001651 @@ -23342,17 +22631,17 @@ snapshots: postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.24.7(supports-color@5.5.0))(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.24.7(supports-color@8.1.1))(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.13 - '@next/swc-darwin-x64': 14.2.13 - '@next/swc-linux-arm64-gnu': 14.2.13 - '@next/swc-linux-arm64-musl': 14.2.13 - '@next/swc-linux-x64-gnu': 14.2.13 - '@next/swc-linux-x64-musl': 14.2.13 - '@next/swc-win32-arm64-msvc': 14.2.13 - '@next/swc-win32-ia32-msvc': 14.2.13 - '@next/swc-win32-x64-msvc': 14.2.13 + '@next/swc-darwin-arm64': 14.2.15 + '@next/swc-darwin-x64': 14.2.15 + '@next/swc-linux-arm64-gnu': 14.2.15 + '@next/swc-linux-arm64-musl': 14.2.15 + '@next/swc-linux-x64-gnu': 14.2.15 + '@next/swc-linux-x64-musl': 14.2.15 + '@next/swc-win32-arm64-msvc': 14.2.15 + '@next/swc-win32-ia32-msvc': 14.2.15 + '@next/swc-win32-x64-msvc': 14.2.15 '@opentelemetry/api': 1.9.0 '@playwright/test': 1.41.2 sass: 1.72.0 @@ -23360,39 +22649,6 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@14.2.13(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0): - dependencies: - '@next/env': 14.2.13 - '@swc/helpers': 0.5.5 - busboy: 1.6.0 - caniuse-lite: 1.0.30001651 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.24.7)(react@18.2.0) - optionalDependencies: - '@next/swc-darwin-arm64': 14.2.13 - '@next/swc-darwin-x64': 14.2.13 - '@next/swc-linux-arm64-gnu': 14.2.13 - '@next/swc-linux-arm64-musl': 14.2.13 - '@next/swc-linux-x64-gnu': 14.2.13 - '@next/swc-linux-x64-musl': 14.2.13 - '@next/swc-win32-arm64-msvc': 14.2.13 - '@next/swc-win32-ia32-msvc': 14.2.13 - '@next/swc-win32-x64-msvc': 14.2.13 - '@opentelemetry/api': 1.9.0 - '@playwright/test': 1.41.2 - sass: 1.72.0 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - - nextjs-node-loader@1.1.5(webpack@5.94.0): - dependencies: - loader-utils: 2.0.4 - webpack: 5.94.0 - nice-try@1.0.5: {} no-case@3.0.4: @@ -23432,13 +22688,13 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-gyp@10.1.0(supports-color@5.5.0): + node-gyp@10.1.0(supports-color@8.1.1): dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.1 glob: 10.4.5 graceful-fs: 4.2.11 - make-fetch-happen: 13.0.1(supports-color@5.5.0) + make-fetch-happen: 13.0.1(supports-color@8.1.1) nopt: 7.2.1 proc-log: 3.0.0 semver: 7.6.3 @@ -23447,12 +22703,12 @@ snapshots: transitivePeerDependencies: - supports-color - node-gyp@8.4.1(supports-color@5.5.0): + node-gyp@8.4.1(supports-color@8.1.1): dependencies: env-paths: 2.2.1 glob: 7.2.3 graceful-fs: 4.2.11 - make-fetch-happen: 9.1.0(supports-color@5.5.0) + make-fetch-happen: 9.1.0(supports-color@8.1.1) nopt: 5.0.0 npmlog: 6.0.2 rimraf: 3.0.2 @@ -23543,10 +22799,10 @@ snapshots: number-flow@0.3.7: {} - nuqs@1.19.1(next@14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0)): + nuqs@1.19.1(next@14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0)): dependencies: mitt: 3.0.1 - next: 14.2.13(@babel/core@7.24.7(supports-color@5.5.0))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) + next: 14.2.15(@babel/core@7.24.7(supports-color@8.1.1))(@opentelemetry/api@1.9.0)(@playwright/test@1.41.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.72.0) nwsapi@2.2.7: {} @@ -23903,10 +23159,10 @@ snapshots: dependencies: '@babel/runtime': 7.24.7 - pgsql-parser@13.5.0(encoding@0.1.13)(supports-color@5.5.0): + pgsql-parser@13.5.0(encoding@0.1.13)(supports-color@8.1.1): dependencies: '@babel/runtime': 7.24.7 - libpg-query: 13.3.1(encoding@0.1.13)(supports-color@5.5.0) + libpg-query: 13.3.1(encoding@0.1.13)(supports-color@8.1.1) minimist: 1.2.8 pgsql-deparser: 13.4.0 pgsql-enums: 13.1.3 @@ -24126,7 +23382,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.7.5 + '@types/node': 20.12.11 long: 5.2.3 proxy-compare@2.4.0: {} @@ -24236,7 +23492,7 @@ snapshots: dependencies: dnd-core: 16.0.1 - react-dnd@16.0.1(@types/hoist-non-react-statics@3.3.2)(@types/node@22.7.5)(@types/react@18.3.3)(react@18.2.0): + react-dnd@16.0.1(@types/hoist-non-react-statics@3.3.2)(@types/node@20.12.11)(@types/react@18.3.3)(react@18.2.0): dependencies: '@react-dnd/invariant': 4.0.2 '@react-dnd/shallowequal': 4.0.2 @@ -24246,13 +23502,13 @@ snapshots: react: 18.2.0 optionalDependencies: '@types/hoist-non-react-statics': 3.3.2 - '@types/node': 22.7.5 + '@types/node': 20.12.11 '@types/react': 18.3.3 - react-docgen@7.0.3: + react-docgen@7.0.3(supports-color@8.1.1): dependencies: - '@babel/core': 7.24.7 - '@babel/traverse': 7.24.7(supports-color@5.5.0) + '@babel/core': 7.24.7(supports-color@8.1.1) + '@babel/traverse': 7.24.7(supports-color@8.1.1) '@babel/types': 7.24.7 '@types/babel__core': 7.20.2 '@types/babel__traverse': 7.20.2 @@ -24322,7 +23578,7 @@ snapshots: react-is@18.3.1: {} - react-markdown@8.0.7(@types/react@18.3.3)(react@18.2.0)(supports-color@5.5.0): + react-markdown@8.0.7(@types/react@18.3.3)(react@18.2.0)(supports-color@8.1.1): dependencies: '@types/hast': 2.3.6 '@types/prop-types': 15.7.8 @@ -24334,7 +23590,7 @@ snapshots: property-information: 6.3.0 react: 18.2.0 react-is: 18.3.1 - remark-parse: 10.0.2(supports-color@5.5.0) + remark-parse: 10.0.2(supports-color@8.1.1) remark-rehype: 10.1.0 space-separated-tokens: 2.0.2 style-to-object: 0.4.2 @@ -24344,16 +23600,16 @@ snapshots: transitivePeerDependencies: - supports-color - react-markdown@9.0.1(@types/react@18.3.3)(react@18.2.0): + react-markdown@9.0.1(@types/react@18.3.3)(react@18.2.0)(supports-color@8.1.1): dependencies: '@types/hast': 3.0.4 '@types/react': 18.3.3 devlop: 1.1.0 - hast-util-to-jsx-runtime: 2.3.0 + hast-util-to-jsx-runtime: 2.3.0(supports-color@8.1.1) html-url-attributes: 3.0.0 mdast-util-to-hast: 13.2.0 react: 18.2.0 - remark-parse: 11.0.0 + remark-parse: 11.0.0(supports-color@8.1.1) remark-rehype: 11.1.1 unified: 11.0.5 unist-util-visit: 5.0.0 @@ -24366,8 +23622,6 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-merge-refs@1.1.0: {} - react-onclickoutside@6.13.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: react: 18.2.0 @@ -24381,13 +23635,6 @@ snapshots: react-fast-compare: 3.2.2 warning: 4.0.3 - react-reconciler@0.26.2(react@18.2.0): - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react: 18.2.0 - scheduler: 0.20.2 - react-redux@7.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.24.7 @@ -24487,8 +23734,6 @@ snapshots: prop-types: 15.8.1 react: 18.2.0 - react-three-fiber@0.0.0-deprecated: {} - react-tooltip@4.5.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: prop-types: 15.8.1 @@ -24519,12 +23764,6 @@ snapshots: react: 18.2.0 tslib: 2.6.2 - react-use-measure@2.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - debounce: 1.2.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-use@17.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@types/js-cookie': 2.2.7 @@ -24769,30 +24008,30 @@ snapshots: mdast-util-find-and-replace: 2.2.2 node-emoji: 1.11.0 - remark-frontmatter@5.0.0: + remark-frontmatter@5.0.0(supports-color@8.1.1): dependencies: '@types/mdast': 4.0.1 - mdast-util-frontmatter: 2.0.1 + mdast-util-frontmatter: 2.0.1(supports-color@8.1.1) micromark-extension-frontmatter: 2.0.0 unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-gfm@3.0.1(supports-color@5.5.0): + remark-gfm@3.0.1(supports-color@8.1.1): dependencies: '@types/mdast': 3.0.15 - mdast-util-gfm: 2.0.2(supports-color@5.5.0) + mdast-util-gfm: 2.0.2(supports-color@8.1.1) micromark-extension-gfm: 2.0.3 unified: 10.1.2 transitivePeerDependencies: - supports-color - remark-gfm@4.0.0: + remark-gfm@4.0.0(supports-color@8.1.1): dependencies: '@types/mdast': 4.0.1 - mdast-util-gfm: 3.0.0 + mdast-util-gfm: 3.0.0(supports-color@8.1.1) micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 + remark-parse: 11.0.0(supports-color@8.1.1) remark-stringify: 11.0.0 unified: 11.0.5 transitivePeerDependencies: @@ -24806,10 +24045,10 @@ snapshots: mdast-util-to-hast: 13.2.0 unified: 11.0.5 - remark-math@6.0.0: + remark-math@6.0.0(supports-color@8.1.1): dependencies: '@types/mdast': 4.0.1 - mdast-util-math: 3.0.0 + mdast-util-math: 3.0.0(supports-color@8.1.1) micromark-extension-math: 3.0.0 unified: 11.0.5 transitivePeerDependencies: @@ -24824,32 +24063,32 @@ snapshots: unified: 11.0.5 yaml: 2.4.5 - remark-mdx@2.3.0: + remark-mdx@2.3.0(supports-color@8.1.1): dependencies: - mdast-util-mdx: 2.0.1 + mdast-util-mdx: 2.0.1(supports-color@8.1.1) micromark-extension-mdxjs: 1.0.1 transitivePeerDependencies: - supports-color - remark-mdx@3.0.1: + remark-mdx@3.0.1(supports-color@8.1.1): dependencies: - mdast-util-mdx: 3.0.0 + mdast-util-mdx: 3.0.0(supports-color@8.1.1) micromark-extension-mdxjs: 3.0.0 transitivePeerDependencies: - supports-color - remark-parse@10.0.2(supports-color@5.5.0): + remark-parse@10.0.2(supports-color@8.1.1): dependencies: '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1(supports-color@5.5.0) + mdast-util-from-markdown: 1.3.1(supports-color@8.1.1) unified: 10.1.2 transitivePeerDependencies: - supports-color - remark-parse@11.0.0: + remark-parse@11.0.0(supports-color@8.1.1): dependencies: '@types/mdast': 4.0.1 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.0(supports-color@8.1.1) micromark-util-types: 2.0.0 unified: 11.0.5 transitivePeerDependencies: @@ -24882,19 +24121,19 @@ snapshots: mdast-util-to-markdown: 2.1.0 unified: 11.0.5 - remark@14.0.3: + remark@14.0.3(supports-color@8.1.1): dependencies: '@types/mdast': 3.0.15 - remark-parse: 10.0.2(supports-color@5.5.0) + remark-parse: 10.0.2(supports-color@8.1.1) remark-stringify: 10.0.3 unified: 10.1.2 transitivePeerDependencies: - supports-color - remark@15.0.1: + remark@15.0.1(supports-color@8.1.1): dependencies: '@types/mdast': 4.0.1 - remark-parse: 11.0.0 + remark-parse: 11.0.0(supports-color@8.1.1) remark-stringify: 11.0.0 unified: 11.0.5 transitivePeerDependencies: @@ -24917,9 +24156,9 @@ snapshots: require-from-string@2.0.2: {} - require-in-the-middle@7.4.0(supports-color@5.5.0): + require-in-the-middle@7.4.0(supports-color@8.1.1): dependencies: - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) module-details-from-path: 1.0.3 resolve: 1.22.8 transitivePeerDependencies: @@ -25056,11 +24295,6 @@ snapshots: dependencies: xmlchars: 2.2.0 - scheduler@0.20.2: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - scheduler@0.23.0: dependencies: loose-envify: 1.4.0 @@ -25188,11 +24422,11 @@ snapshots: signal-exit@4.1.0: {} - simple-git@3.24.0: + simple-git@3.24.0(supports-color@8.1.1): dependencies: - '@kwsites/file-exists': 1.1.1 + '@kwsites/file-exists': 1.1.1(supports-color@8.1.1) '@kwsites/promise-deferred': 1.1.1 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -25200,9 +24434,9 @@ snapshots: dependencies: is-arrayish: 0.3.2 - simple-websocket@9.1.0: + simple-websocket@9.1.0(supports-color@8.1.1): dependencies: - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) queue-microtask: 1.2.3 randombytes: 2.1.0 readable-stream: 3.6.2 @@ -25237,18 +24471,18 @@ snapshots: dot-case: 3.0.4 tslib: 2.6.2 - socks-proxy-agent@6.2.1(supports-color@5.5.0): + socks-proxy-agent@6.2.1(supports-color@8.1.1): dependencies: - agent-base: 6.0.2(supports-color@5.5.0) - debug: 4.3.7(supports-color@5.5.0) + agent-base: 6.0.2(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) socks: 2.8.3 transitivePeerDependencies: - supports-color - socks-proxy-agent@8.0.3(supports-color@5.5.0): + socks-proxy-agent@8.0.3(supports-color@8.1.1): dependencies: - agent-base: 7.1.1(supports-color@5.5.0) - debug: 4.3.7(supports-color@5.5.0) + agent-base: 7.1.1(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -25544,19 +24778,12 @@ snapshots: stylis: 4.3.1 tslib: 2.5.0 - styled-jsx@5.1.1(@babel/core@7.24.7(supports-color@5.5.0))(react@18.2.0): + styled-jsx@5.1.1(@babel/core@7.24.7(supports-color@8.1.1))(react@18.2.0): dependencies: client-only: 0.0.1 react: 18.2.0 optionalDependencies: - '@babel/core': 7.24.7(supports-color@5.5.0) - - styled-jsx@5.1.1(@babel/core@7.24.7)(react@18.2.0): - dependencies: - client-only: 0.0.1 - react: 18.2.0 - optionalDependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) stylis@4.3.1: {} @@ -25570,10 +24797,10 @@ snapshots: pirates: 4.0.6 ts-interface-checker: 0.1.13 - supabase@1.151.1: + supabase@1.151.1(supports-color@8.1.1): dependencies: bin-links: 4.0.3 - https-proxy-agent: 7.0.4(supports-color@5.5.0) + https-proxy-agent: 7.0.4(supports-color@8.1.1) node-fetch: 3.3.2 tar: 6.2.1 transitivePeerDependencies: @@ -25856,11 +25083,11 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.12.11))(typescript@5.5.2): + ts-jest@29.1.2(@babel/core@7.24.7(supports-color@8.1.1))(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7(supports-color@8.1.1))(supports-color@8.1.1))(jest@29.7.0(@types/node@20.12.11)(supports-color@8.1.1))(typescript@5.5.2): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.12.11) + jest: 29.7.0(@types/node@20.12.11)(supports-color@8.1.1) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -25869,9 +25096,9 @@ snapshots: typescript: 5.5.2 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.24.7 + '@babel/core': 7.24.7(supports-color@8.1.1) '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.7) + babel-jest: 29.7.0(@babel/core@7.24.7(supports-color@8.1.1))(supports-color@8.1.1) ts-morph@22.0.0: dependencies: @@ -25916,32 +25143,32 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - turbo-darwin-64@2.0.4: + turbo-darwin-64@2.3.3: optional: true - turbo-darwin-arm64@2.0.4: + turbo-darwin-arm64@2.3.3: optional: true - turbo-linux-64@2.0.4: + turbo-linux-64@2.3.3: optional: true - turbo-linux-arm64@2.0.4: + turbo-linux-arm64@2.3.3: optional: true - turbo-windows-64@2.0.4: + turbo-windows-64@2.3.3: optional: true - turbo-windows-arm64@2.0.4: + turbo-windows-arm64@2.3.3: optional: true - turbo@2.0.4: + turbo@2.3.3: optionalDependencies: - turbo-darwin-64: 2.0.4 - turbo-darwin-arm64: 2.0.4 - turbo-linux-64: 2.0.4 - turbo-linux-arm64: 2.0.4 - turbo-windows-64: 2.0.4 - turbo-windows-arm64: 2.0.4 + turbo-darwin-64: 2.3.3 + turbo-darwin-arm64: 2.3.3 + turbo-linux-64: 2.3.3 + turbo-linux-arm64: 2.3.3 + turbo-windows-64: 2.3.3 + turbo-windows-arm64: 2.3.3 tus-js-client@4.1.0: dependencies: @@ -26210,11 +25437,6 @@ snapshots: url-template@2.0.8: {} - use-asset@1.0.4(react@18.2.0): - dependencies: - fast-deep-equal: 3.1.3 - react: 18.2.0 - use-callback-ref@1.3.0(@types/react@18.3.3)(react@18.2.0): dependencies: react: 18.2.0 @@ -26251,8 +25473,6 @@ snapshots: util-deprecate@1.0.2: {} - utility-types@3.10.0: {} - uuid-by-string@3.0.7: dependencies: js-md5: 0.7.3 @@ -26370,13 +25590,13 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vite-node@1.6.0(@types/node@22.7.5)(sass@1.72.0)(supports-color@5.5.0)(terser@5.32.0): + vite-node@1.6.0(@types/node@20.12.11)(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0): dependencies: cac: 6.7.14 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0) + vite: 5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -26387,10 +25607,10 @@ snapshots: - supports-color - terser - vite-node@2.1.8(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0): + vite-node@2.1.8(@types/node@20.12.11)(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0): dependencies: cac: 6.7.14 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) es-module-lexer: 1.5.4 pathe: 1.1.2 vite: 5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0) @@ -26404,37 +25624,9 @@ snapshots: - supports-color - terser - vite-node@2.1.8(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0): + vite-tsconfig-paths@4.3.2(supports-color@8.1.1)(typescript@5.5.2)(vite@5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0)): dependencies: - cac: 6.7.14 - debug: 4.3.7(supports-color@5.5.0) - es-module-lexer: 1.5.4 - pathe: 1.1.2 - vite: 5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite-tsconfig-paths@4.3.2(supports-color@5.5.0)(typescript@5.5.2)(vite@5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0)): - dependencies: - debug: 4.3.7(supports-color@5.5.0) - globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.5.2) - optionalDependencies: - vite: 5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0) - transitivePeerDependencies: - - supports-color - - typescript - - vite-tsconfig-paths@4.3.2(typescript@5.5.2)(vite@5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0)): - dependencies: - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.5.2) optionalDependencies: @@ -26454,18 +25646,7 @@ snapshots: sass: 1.72.0 terser: 5.32.0 - vite@5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0): - dependencies: - esbuild: 0.20.2 - postcss: 8.4.38 - rollup: 4.22.4 - optionalDependencies: - '@types/node': 22.7.5 - fsevents: 2.3.3 - sass: 1.72.0 - terser: 5.32.0 - - vitest@1.6.0(@types/node@22.7.5)(@vitest/ui@1.6.0)(jsdom@20.0.3(supports-color@5.5.0))(sass@1.72.0)(supports-color@5.5.0)(terser@5.32.0): + vitest@1.6.0(@types/node@20.12.11)(@vitest/ui@1.6.0)(jsdom@20.0.3(supports-color@8.1.1))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -26474,7 +25655,7 @@ snapshots: '@vitest/utils': 1.6.0 acorn-walk: 8.3.2 chai: 4.4.1 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) execa: 8.0.1 local-pkg: 0.5.0 magic-string: 0.30.12 @@ -26484,13 +25665,13 @@ snapshots: strip-literal: 2.0.0 tinybench: 2.9.0 tinypool: 0.8.3 - vite: 5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0) - vite-node: 1.6.0(@types/node@22.7.5)(sass@1.72.0)(supports-color@5.5.0)(terser@5.32.0) + vite: 5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0) + vite-node: 1.6.0(@types/node@20.12.11)(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.7.5 + '@types/node': 20.12.11 '@vitest/ui': 1.6.0(vitest@1.6.0) - jsdom: 20.0.3(supports-color@5.5.0) + jsdom: 20.0.3(supports-color@8.1.1) transitivePeerDependencies: - less - lightningcss @@ -26500,7 +25681,7 @@ snapshots: - supports-color - terser - vitest@2.1.8(@types/node@20.12.11)(jsdom@20.0.3)(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(terser@5.32.0): + vitest@2.1.8(@types/node@20.12.11)(jsdom@20.0.3(supports-color@8.1.1))(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0): dependencies: '@vitest/expect': 2.1.8 '@vitest/mocker': 2.1.8(msw@2.4.11(typescript@5.5.2))(vite@5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0)) @@ -26510,7 +25691,7 @@ snapshots: '@vitest/spy': 2.1.8 '@vitest/utils': 2.1.8 chai: 5.1.2 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@8.1.1) expect-type: 1.1.0 magic-string: 0.30.12 pathe: 1.1.2 @@ -26520,46 +25701,11 @@ snapshots: tinypool: 1.0.2 tinyrainbow: 1.2.0 vite: 5.2.14(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0) - vite-node: 2.1.8(@types/node@20.12.11)(sass@1.72.0)(terser@5.32.0) + vite-node: 2.1.8(@types/node@20.12.11)(sass@1.72.0)(supports-color@8.1.1)(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.12.11 - jsdom: 20.0.3(supports-color@5.5.0) - transitivePeerDependencies: - - less - - lightningcss - - msw - - sass - - stylus - - sugarss - - supports-color - - terser - - vitest@2.1.8(@types/node@22.7.5)(jsdom@20.0.3)(msw@2.4.11(typescript@5.5.2))(sass@1.72.0)(terser@5.32.0): - dependencies: - '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(msw@2.4.11(typescript@5.5.2))(vite@5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0)) - '@vitest/pretty-format': 2.1.8 - '@vitest/runner': 2.1.8 - '@vitest/snapshot': 2.1.8 - '@vitest/spy': 2.1.8 - '@vitest/utils': 2.1.8 - chai: 5.1.2 - debug: 4.3.7(supports-color@5.5.0) - expect-type: 1.1.0 - magic-string: 0.30.12 - pathe: 1.1.2 - std-env: 3.8.0 - tinybench: 2.9.0 - tinyexec: 0.3.1 - tinypool: 1.0.2 - tinyrainbow: 1.2.0 - vite: 5.2.14(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0) - vite-node: 2.1.8(@types/node@22.7.5)(sass@1.72.0)(terser@5.32.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 22.7.5 - jsdom: 20.0.3(supports-color@5.5.0) + jsdom: 20.0.3(supports-color@8.1.1) transitivePeerDependencies: - less - lightningcss @@ -26890,10 +26036,6 @@ snapshots: zod@3.23.8: {} - zustand@3.7.2(react@18.2.0): - optionalDependencies: - react: 18.2.0 - zustand@4.4.7(@types/react@18.3.3)(react@18.2.0): dependencies: use-sync-external-store: 1.2.0(react@18.2.0) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index f1804f8014a..2aeb07628b3 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,4 +2,8 @@ packages: - "apps/*" - "packages/*" - "tests" - - "playwright-tests" \ No newline at end of file + - "playwright-tests" + +catalog: + '@types/node': ^20.0.0 + next: 14.2.15 diff --git a/tests/package.json b/tests/package.json index 13207948e74..354f06f3799 100644 --- a/tests/package.json +++ b/tests/package.json @@ -23,7 +23,7 @@ "@supabase/supabase-js": "^2.44.3", "@testdeck/jest": "^0.3.3", "@types/jest": "^29.5.4", - "@types/node": "^20.11.16", + "@types/node": "^20.0.0", "@typescript-eslint/eslint-plugin": "^6.19.1", "@typescript-eslint/parser": "^6.19.1", "allure-commandline": "^2.17.2",